diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d0577f5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,98 @@ +# Changelog + +All notable changes to this provider are documented here. + +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +This package bridges +[terraform-provider-dokploy](https://gitea.coolify.vojtkov.dev/usr_unknown/terraform-provider-dokploy); +its versions track that provider's. + +## [0.2.0] — 2026-08-26 + +Tracks **Dokploy v0.30.x** through terraform-provider-dokploy v0.2.0. Verified +end-to-end with `pulumi up` against a live v0.30.2 instance. + +### Fixed + +- **A `Mount` with `type: "volume"` and no `volumeName` is now refused at + preview time.** Dokploy accepted such a mount and rendered it for Docker with + an empty source, which Docker reads as an *anonymous* volume: every deploy + created a new one and orphaned the last, so the data never survived a + redeploy while disk usage grew. Nothing errored anywhere along the way. + + `pulumi preview` now fails with an explanation instead: + + ``` + error: dokploy:index/mount:Mount resource 'data' has a problem: + Missing volume_name. `volume_name` must be set to a non-empty value + when `type` is `volume`. + + Dokploy passes an unset volume_name to Docker as an empty source, which + creates a new anonymous volume on every deploy. … Examine values at + 'data.volumeName'. + ``` + + The same check covers `type: "bind"` without `hostPath` and `type: "file"` + without `filePath`. If you already have such a mount, add a `volumeName` and + redeploy; the contents of the current anonymous volume are **not** migrated. + +- **Resource and property documentation now reaches the generated SDKs.** The + bridge was looking for the upstream provider's `docs/` in the Go module + cache, where a locally `replace`d dependency never appears, so every resource + arrived in TypeScript, Python, Go and .NET with no description at all — the + volume warning above included. `UpstreamRepoPath` now points at the upstream + checkout, and all 445 resource inputs carry documentation, with property + names rendered per language (`volumeName` in TypeScript, `volume_name` in + Python). + +### Added + +New resources, mirroring Dokploy v0.30.0: + +- **`Network`** — Docker networks as first-class objects (`bridge` or + `overlay`, with `internal`, `attachable`, IPv4/IPv6, `mtu`, custom `ipam`). + Attach services with `networkIds`. Docker networks are immutable, so every + property forces replacement. +- **`DnsProvider`** — a Cloudflare or AWS Route53 connection, so adding a + domain creates its DNS record. +- **`VaultProvider`** — environment values resolved at deploy time from + HashiCorp Vault/OpenBao, Infisical, AWS Secrets Manager, Doppler, Azure Key + Vault or Scaleway, referenced as `${{vault..}}`. The secret never + reaches Dokploy or your Pulumi state. +- **`Schedule`** — cron jobs in an application container, a Compose service, a + remote server, or on the Dokploy host. +- **`VolumeBackup`** — scheduled backups of a Docker volume to a `Destination`. +- **`Libsql`** — the sixth managed database engine. + +New properties on existing resources: + +- `Domain` gains **`enabled`**, the v0.30.0 toggle that pulls a route out of + Traefik while keeping certificates, paths and middleware intact. +- `Compose` gains `createEnvFile`, `icon` and **`serviceNetworks`**, which + attaches individual services in a stack to specific networks. +- `Application` gains `icon` and `previewRequireCollaboratorPermissions`. +- `Mount` and `VolumeBackup` accept `libsql` as a `serviceType`. + +### Changed + +- `networkIds` and `detachDokployNetwork` are the supported way to control + service networking. Compose's `isolatedDeployment` is **deprecated upstream** + in v0.30.0 — per-service network attachment covers the same ground and + survives restarts. The property still works; prefer `networkIds` for new + programs. + +### Notes + +- `config` on `DnsProvider` and `VaultProvider` is masked by Dokploy on read, + so Pulumi keeps the value your program supplied and does **not** detect drift + in those credentials. Both are marked secret. + +## [0.1.0] — 2026-08-09 + +Initial release: 18 resources and 5 data sources across TypeScript, Python, Go +and .NET, bridged from terraform-provider-dokploy v0.1.0. + +[0.2.0]: https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/tag/v0.2.0 +[0.1.0]: https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/tag/v0.1.0 diff --git a/README.md b/README.md index 816da37..9739e3e 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ an `_authToken` in `.npmrc`, `--extra-index-url` with basic auth for pip, and Before the first release, build and install it locally instead: ```bash -make install VERSION=0.1.0 +make install VERSION=0.2.0 ``` That drops `pulumi-resource-dokploy` into the local plugin cache, so @@ -146,13 +146,42 @@ pulumi config set --secret dokploy:apiKey "$DOKPLOY_API_KEY" | ------------ | ------------------------------------------------------------------------- | | Structure | `Project`, `Environment` | | Services | `Application`, `Compose` | -| Databases | `Postgres`, `MySql`, `MariaDb`, `Mongo`, `Redis` | -| Networking | `Domain`, `Mount`, `Port`, `Redirect`, `Security` | +| Databases | `Postgres`, `MySql`, `MariaDb`, `Mongo`, `Redis`, `Libsql` | +| Networking | `Domain`, `Mount`, `Port`, `Redirect`, `Security`, `Network` | +| Scheduling | `Schedule`, `VolumeBackup` | +| Integrations | `DnsProvider`, `VaultProvider` | | Account | `Registry`, `SshKey`, `Certificate`, `Destination` | Data sources: `getProject`, `getProjects`, `getEnvironment`, `getApplication`, `getServers`. +### Volumes that actually persist + +A `Mount` with `type: "volume"` **must** set `volumeName`: + +```typescript +new dokploy.Mount("uploads", { + type: "volume", + volumeName: "shop-uploads", // required — see below + mountPath: "/app/uploads", + serviceType: "application", + serviceId: api.id, +}); +``` + +Dokploy turns a mount into a Docker mount with +`{Source: volumeName || "", Target: mountPath}`. With no `volumeName` the +source is the empty string, which Docker reads as an *anonymous* volume: a new +one on every deploy, with the previous one orphaned on disk. Nothing errors — +the service starts and the path is writable — but the data is gone again after +the next deployment. + +Dokploy's API accepts that mount, so this provider rejects it during +`pulumi preview` instead, along with `type: "bind"` without `hostPath` and +`type: "file"` without `filePath`. + +Pair a named volume with `VolumeBackup` to get it off the host on a schedule. + ## Deploying from CI Like the Terraform provider, this one manages *configuration*, not *rollouts*. @@ -240,7 +269,7 @@ Gitea's Go registry, at which point the module resolves through `GOPROXY`: export GOPROXY=https://gitea.coolify.vojtkov.dev/api/packages/usr_unknown/go,direct export GONOSUMDB='github.com/maxvojtkov/*' cd provider && go mod edit -dropreplace github.com/maxvojtkov/terraform-provider-dokploy \ - && go get github.com/maxvojtkov/terraform-provider-dokploy@v0.1.0 + && go get github.com/maxvojtkov/terraform-provider-dokploy@v0.2.0 ``` The upstream provider exposes itself through its `shim` package @@ -252,7 +281,7 @@ from outside that module. Tag the repository and the `release` workflow does the rest: ```bash -git tag v0.1.0 && git push origin v0.1.0 +git tag v0.2.0 && git push origin v0.2.0 ``` GoReleaser publishes the plugin binaries to a Gitea release first — Pulumi diff --git a/provider/cmd/pulumi-resource-dokploy/bridge-metadata.json b/provider/cmd/pulumi-resource-dokploy/bridge-metadata.json index 50b4a33..48bff80 100644 --- a/provider/cmd/pulumi-resource-dokploy/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-dokploy/bridge-metadata.json @@ -37,6 +37,9 @@ } } }, + "dokploy_dns_provider": { + "current": "dokploy:index/dnsProvider:DnsProvider" + }, "dokploy_domain": { "current": "dokploy:index/domain:Domain", "fields": { @@ -48,6 +51,14 @@ "dokploy_environment": { "current": "dokploy:index/environment:Environment" }, + "dokploy_libsql": { + "current": "dokploy:index/libsql:Libsql", + "fields": { + "network_ids": { + "maxItemsOne": false + } + } + }, "dokploy_mariadb": { "current": "dokploy:index/mariaDb:MariaDb", "fields": { @@ -84,6 +95,9 @@ } } }, + "dokploy_network": { + "current": "dokploy:index/network:Network" + }, "dokploy_port": { "current": "dokploy:index/port:Port" }, @@ -118,11 +132,20 @@ "dokploy_registry": { "current": "dokploy:index/registry:Registry" }, + "dokploy_schedule": { + "current": "dokploy:index/schedule:Schedule" + }, "dokploy_security": { "current": "dokploy:index/security:Security" }, "dokploy_ssh_key": { "current": "dokploy:index/sshKey:SshKey" + }, + "dokploy_vault_provider": { + "current": "dokploy:index/vaultProvider:VaultProvider" + }, + "dokploy_volume_backup": { + "current": "dokploy:index/volumeBackup:VolumeBackup" } }, "datasources": { diff --git a/provider/cmd/pulumi-resource-dokploy/schema.json b/provider/cmd/pulumi-resource-dokploy/schema.json index ec93821..b07738c 100644 --- a/provider/cmd/pulumi-resource-dokploy/schema.json +++ b/provider/cmd/pulumi-resource-dokploy/schema.json @@ -37,7 +37,7 @@ }, "nodejs": { "packageName": "@maxvojtkov/pulumi-dokploy", - "packageDescription": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.1.0", + "packageDescription": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.2.0", "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/maxvojtkov/terraform-provider-dokploy)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-dokploy` repo](https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-dokploy` repo](https://github.com/maxvojtkov/terraform-provider-dokploy/issues).", "dependencies": { "@pulumi/pulumi": "^3.0.0" @@ -242,405 +242,414 @@ }, "resources": { "dokploy:index/application:Application": { + "description": "A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact.\n\nDokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`.\n\n\u003e Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a \u003cspan pulumi-lang-nodejs=\"`terraformData`\" pulumi-lang-dotnet=\"`TerraformData`\" pulumi-lang-go=\"`terraformData`\" pulumi-lang-python=\"`terraform_data`\" pulumi-lang-yaml=\"`terraformData`\" pulumi-lang-java=\"`terraformData`\" pulumi-lang-hcl=\"`terraform_data`\"\u003e`terraformData`\u003c/span\u003e provisioner calling `application.deploy`.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "autoDeploy": { "type": "boolean", - "description": "Deploy automatically when the configured trigger fires." + "description": "Deploy automatically when the configured trigger fires.\n" }, "bitbucketBranch": { "type": "string", - "description": "Bitbucket branch to build." + "description": "Bitbucket branch to build.\n" }, "bitbucketBuildPath": { "type": "string", - "description": "Path within the Bitbucket repository to build from." + "description": "Path within the Bitbucket repository to build from.\n" }, "bitbucketId": { "type": "string", - "description": "ID of the configured Bitbucket provider connection." + "description": "ID of the configured Bitbucket provider connection.\n" }, "bitbucketOwner": { "type": "string", - "description": "Bitbucket repository owner." + "description": "Bitbucket repository owner.\n" }, "bitbucketRepository": { "type": "string", - "description": "Bitbucket repository name." + "description": "Bitbucket repository name.\n" }, "bitbucketRepositorySlug": { "type": "string", - "description": "Bitbucket repository slug." + "description": "Bitbucket repository slug.\n" }, "branch": { "type": "string", - "description": "GitHub branch to build." + "description": "GitHub branch to build.\n" }, "buildArgs": { "type": "string", - "description": "Docker build arguments in `KEY=value` format, one per line." + "description": "Docker build arguments in `KEY=value` format, one per line.\n" }, "buildPath": { "type": "string", - "description": "Path within the GitHub repository to build from." + "description": "Path within the GitHub repository to build from.\n" }, "buildRegistryId": { "type": "string", - "description": "Registry used by a dedicated build server." + "description": "Registry used by a dedicated build server.\n" }, "buildSecrets": { "type": "string", - "description": "Docker build secrets in `KEY=value` format, one per line.", + "description": "Docker build secrets in `KEY=value` format, one per line.\n", "secret": true }, "buildServerId": { "type": "string", - "description": "Server that performs builds, when separate from the deploy server." + "description": "Server that performs builds, when separate from the deploy server.\n" }, "buildType": { "type": "string", - "description": "How the application is built. Valid values: \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`herokuBuildpacks`\" pulumi-lang-dotnet=\"`HerokuBuildpacks`\" pulumi-lang-go=\"`herokuBuildpacks`\" pulumi-lang-python=\"`heroku_buildpacks`\" pulumi-lang-yaml=\"`herokuBuildpacks`\" pulumi-lang-java=\"`herokuBuildpacks`\" pulumi-lang-hcl=\"`heroku_buildpacks`\"\u003e`herokuBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paketoBuildpacks`\" pulumi-lang-dotnet=\"`PaketoBuildpacks`\" pulumi-lang-go=\"`paketoBuildpacks`\" pulumi-lang-python=\"`paketo_buildpacks`\" pulumi-lang-yaml=\"`paketoBuildpacks`\" pulumi-lang-java=\"`paketoBuildpacks`\" pulumi-lang-hcl=\"`paketo_buildpacks`\"\u003e`paketoBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nixpacks`\" pulumi-lang-dotnet=\"`Nixpacks`\" pulumi-lang-go=\"`nixpacks`\" pulumi-lang-python=\"`nixpacks`\" pulumi-lang-yaml=\"`nixpacks`\" pulumi-lang-java=\"`nixpacks`\" pulumi-lang-hcl=\"`nixpacks`\"\u003e`nixpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`railpack`\" pulumi-lang-dotnet=\"`Railpack`\" pulumi-lang-go=\"`railpack`\" pulumi-lang-python=\"`railpack`\" pulumi-lang-yaml=\"`railpack`\" pulumi-lang-java=\"`railpack`\" pulumi-lang-hcl=\"`railpack`\"\u003e`railpack`\u003c/span\u003e." + "description": "How the application is built. Valid values: \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`herokuBuildpacks`\" pulumi-lang-dotnet=\"`HerokuBuildpacks`\" pulumi-lang-go=\"`herokuBuildpacks`\" pulumi-lang-python=\"`heroku_buildpacks`\" pulumi-lang-yaml=\"`herokuBuildpacks`\" pulumi-lang-java=\"`herokuBuildpacks`\" pulumi-lang-hcl=\"`heroku_buildpacks`\"\u003e`herokuBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paketoBuildpacks`\" pulumi-lang-dotnet=\"`PaketoBuildpacks`\" pulumi-lang-go=\"`paketoBuildpacks`\" pulumi-lang-python=\"`paketo_buildpacks`\" pulumi-lang-yaml=\"`paketoBuildpacks`\" pulumi-lang-java=\"`paketoBuildpacks`\" pulumi-lang-hcl=\"`paketo_buildpacks`\"\u003e`paketoBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nixpacks`\" pulumi-lang-dotnet=\"`Nixpacks`\" pulumi-lang-go=\"`nixpacks`\" pulumi-lang-python=\"`nixpacks`\" pulumi-lang-yaml=\"`nixpacks`\" pulumi-lang-java=\"`nixpacks`\" pulumi-lang-hcl=\"`nixpacks`\"\u003e`nixpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`railpack`\" pulumi-lang-dotnet=\"`Railpack`\" pulumi-lang-go=\"`railpack`\" pulumi-lang-python=\"`railpack`\" pulumi-lang-yaml=\"`railpack`\" pulumi-lang-java=\"`railpack`\" pulumi-lang-hcl=\"`railpack`\"\u003e`railpack`\u003c/span\u003e.\n" }, "cleanCache": { "type": "boolean", - "description": "Discard the build cache on the next deployment." + "description": "Discard the build cache on the next deployment.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createEnvFile": { "type": "boolean", - "description": "Write the environment variables to a `.env` file in the container." + "description": "Write the environment variables to a `.env` file in the container.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the application was created." + "description": "RFC 3339 timestamp of when the application was created.\n" }, "customGitBranch": { "type": "string", - "description": "Branch to build for a custom Git remote." + "description": "Branch to build for a custom Git remote.\n" }, "customGitBuildPath": { "type": "string", - "description": "Path within a custom Git repository to build from." + "description": "Path within a custom Git repository to build from.\n" }, "customGitSshKeyId": { "type": "string", - "description": "SSH key used to clone a private custom Git remote." + "description": "SSH key used to clone a private custom Git remote.\n" }, "customGitUrl": { "type": "string", - "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e." + "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerBuildStage": { "type": "string", - "description": "Target stage for a multi-stage Docker build." + "description": "Target stage for a multi-stage Docker build.\n" }, "dockerContextPath": { "type": "string", - "description": "Docker build context path." + "description": "Docker build context path.\n" }, "dockerImage": { "type": "string", - "description": "Docker image reference, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e." + "description": "Docker image reference, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e.\n" }, "dockerfile": { "type": "string", - "description": "Path to the Dockerfile, when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e." + "description": "Path to the Dockerfile, when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e.\n" }, "enableSubmodules": { "type": "boolean", - "description": "Clone Git submodules when checking out the repository." + "description": "Clone Git submodules when checking out the repository.\n" }, "enabled": { "type": "boolean", - "description": "Whether the application is enabled." + "description": "Whether the application is enabled.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Runtime environment variables in `KEY=value` format, one per line." + "description": "Runtime environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this application belongs to." + "description": "Environment this application belongs to.\n" }, "giteaBranch": { "type": "string", - "description": "Gitea branch to build." + "description": "Gitea branch to build.\n" }, "giteaBuildPath": { "type": "string", - "description": "Path within the Gitea repository to build from." + "description": "Path within the Gitea repository to build from.\n" }, "giteaId": { "type": "string", - "description": "ID of the configured Gitea provider connection." + "description": "ID of the configured Gitea provider connection.\n" }, "giteaOwner": { "type": "string", - "description": "Gitea repository owner." + "description": "Gitea repository owner.\n" }, "giteaRepository": { "type": "string", - "description": "Gitea repository name." + "description": "Gitea repository name.\n" }, "githubId": { "type": "string", - "description": "ID of the configured GitHub provider connection." + "description": "ID of the configured GitHub provider connection.\n" }, "gitlabBranch": { "type": "string", - "description": "GitLab branch to build." + "description": "GitLab branch to build.\n" }, "gitlabBuildPath": { "type": "string", - "description": "Path within the GitLab repository to build from." + "description": "Path within the GitLab repository to build from.\n" }, "gitlabId": { "type": "string", - "description": "ID of the configured GitLab provider connection." + "description": "ID of the configured GitLab provider connection.\n" }, "gitlabOwner": { "type": "string", - "description": "GitLab repository owner." + "description": "GitLab repository owner.\n" }, "gitlabPathNamespace": { "type": "string", - "description": "Full GitLab namespace path." + "description": "Full GitLab namespace path.\n" }, "gitlabProjectId": { "type": "integer", - "description": "Numeric GitLab project ID." + "description": "Numeric GitLab project ID.\n" }, "gitlabRepository": { "type": "string", - "description": "GitLab repository name." + "description": "GitLab repository name.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "herokuVersion": { "type": "string", - "description": "Heroku buildpack stack version." + "description": "Heroku buildpack stack version.\n" + }, + "icon": { + "type": "string", + "description": "Icon shown next to the service in the Dokploy UI.\n" }, "isPreviewDeploymentsActive": { "type": "boolean", - "description": "Build a preview deployment for each pull request." + "description": "Build a preview deployment for each pull request.\n" }, "isStaticSpa": { "type": "boolean", - "description": "Serve a static build as a single-page application." + "description": "Serve a static build as a single-page application.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the application." + "description": "Display name of the application.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "owner": { "type": "string", - "description": "GitHub repository owner." + "description": "GitHub repository owner.\n" }, "password": { "type": "string", - "description": "Registry password, when pulling a private image.", + "description": "Registry password, when pulling a private image.\n", "secret": true }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "previewBuildArgs": { "type": "string", - "description": "Build arguments applied to preview deployments." + "description": "Build arguments applied to preview deployments.\n" }, "previewBuildSecrets": { "type": "string", - "description": "Build secrets applied to preview deployments.", + "description": "Build secrets applied to preview deployments.\n", "secret": true }, "previewCertificateType": { "type": "string", - "description": "Certificate strategy for preview deployments. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "Certificate strategy for preview deployments. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "previewCustomCertResolver": { "type": "string", - "description": "Traefik certificate resolver for preview deployments." + "description": "Traefik certificate resolver for preview deployments.\n" }, "previewEnv": { "type": "string", - "description": "Environment variables applied to preview deployments." + "description": "Environment variables applied to preview deployments.\n" }, "previewHttps": { "type": "boolean", - "description": "Serve preview deployments over HTTPS." + "description": "Serve preview deployments over HTTPS.\n" }, "previewLabels": { "type": "array", "items": { "type": "string" }, - "description": "Pull request labels that opt into preview deployments." + "description": "Pull request labels that opt into preview deployments.\n" }, "previewLimit": { "type": "integer", - "description": "Maximum number of concurrent preview deployments." + "description": "Maximum number of concurrent preview deployments.\n" }, "previewPath": { "type": "string", - "description": "Base path for preview deployments." + "description": "Base path for preview deployments.\n" }, "previewPort": { "type": "integer", - "description": "Container port exposed by preview deployments." + "description": "Container port exposed by preview deployments.\n" + }, + "previewRequireCollaboratorPermissions": { + "type": "boolean", + "description": "Only build previews for pull requests opened by users with repository collaborator permissions.\n" }, "previewWildcard": { "type": "string", - "description": "Wildcard domain used to expose preview deployments." + "description": "Wildcard domain used to expose preview deployments.\n" }, "publishDirectory": { "type": "string", - "description": "Directory served when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e." + "description": "Directory served when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e.\n" }, "railpackVersion": { "type": "string", - "description": "Railpack version." + "description": "Railpack version.\n" }, "registryId": { "type": "string", - "description": "Registry used to push the built image." + "description": "Registry used to push the built image.\n" }, "registryUrl": { "type": "string", - "description": "Registry URL, when pulling a private image." + "description": "Registry URL, when pulling a private image.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "repository": { "type": "string", - "description": "GitHub repository name." + "description": "GitHub repository name.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackActive": { "type": "boolean", - "description": "Keep previous images so deployments can be rolled back." + "description": "Keep previous images so deployments can be rolled back.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "rollbackRegistryId": { "type": "string", - "description": "Registry used to store rollback images." + "description": "Registry used to store rollback images.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "sourceType": { "type": "string", - "description": "Where the application's code or image comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\" pulumi-lang-hcl=\"`drop`\"\u003e`drop`\u003c/span\u003e." + "description": "Where the application's code or image comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\" pulumi-lang-hcl=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "subtitle": { "type": "string", - "description": "Display subtitle shown in the Dokploy UI." + "description": "Display subtitle shown in the Dokploy UI.\n" }, "title": { "type": "string", - "description": "Display title shown in the Dokploy UI." + "description": "Display title shown in the Dokploy UI.\n" }, "triggerType": { "type": "string", - "description": "What triggers an automatic GitHub deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e." + "description": "What triggers an automatic GitHub deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" }, "username": { "type": "string", - "description": "Registry username, when pulling a private image." + "description": "Registry username, when pulling a private image.\n" }, "watchPaths": { "type": "array", "items": { "type": "string" }, - "description": "Glob patterns that limit which changed paths trigger an automatic deployment." + "description": "Glob patterns that limit which changed paths trigger an automatic deployment.\n" } }, "required": [ @@ -675,6 +684,7 @@ "previewLimit", "previewPath", "previewPort", + "previewRequireCollaboratorPermissions", "railpackVersion", "replicas", "rollbackActive", @@ -685,394 +695,402 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "autoDeploy": { "type": "boolean", - "description": "Deploy automatically when the configured trigger fires." + "description": "Deploy automatically when the configured trigger fires.\n" }, "bitbucketBranch": { "type": "string", - "description": "Bitbucket branch to build." + "description": "Bitbucket branch to build.\n" }, "bitbucketBuildPath": { "type": "string", - "description": "Path within the Bitbucket repository to build from." + "description": "Path within the Bitbucket repository to build from.\n" }, "bitbucketId": { "type": "string", - "description": "ID of the configured Bitbucket provider connection." + "description": "ID of the configured Bitbucket provider connection.\n" }, "bitbucketOwner": { "type": "string", - "description": "Bitbucket repository owner." + "description": "Bitbucket repository owner.\n" }, "bitbucketRepository": { "type": "string", - "description": "Bitbucket repository name." + "description": "Bitbucket repository name.\n" }, "bitbucketRepositorySlug": { "type": "string", - "description": "Bitbucket repository slug." + "description": "Bitbucket repository slug.\n" }, "branch": { "type": "string", - "description": "GitHub branch to build." + "description": "GitHub branch to build.\n" }, "buildArgs": { "type": "string", - "description": "Docker build arguments in `KEY=value` format, one per line." + "description": "Docker build arguments in `KEY=value` format, one per line.\n" }, "buildPath": { "type": "string", - "description": "Path within the GitHub repository to build from." + "description": "Path within the GitHub repository to build from.\n" }, "buildRegistryId": { "type": "string", - "description": "Registry used by a dedicated build server." + "description": "Registry used by a dedicated build server.\n" }, "buildSecrets": { "type": "string", - "description": "Docker build secrets in `KEY=value` format, one per line.", + "description": "Docker build secrets in `KEY=value` format, one per line.\n", "secret": true }, "buildServerId": { "type": "string", - "description": "Server that performs builds, when separate from the deploy server." + "description": "Server that performs builds, when separate from the deploy server.\n" }, "buildType": { "type": "string", - "description": "How the application is built. Valid values: \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`herokuBuildpacks`\" pulumi-lang-dotnet=\"`HerokuBuildpacks`\" pulumi-lang-go=\"`herokuBuildpacks`\" pulumi-lang-python=\"`heroku_buildpacks`\" pulumi-lang-yaml=\"`herokuBuildpacks`\" pulumi-lang-java=\"`herokuBuildpacks`\" pulumi-lang-hcl=\"`heroku_buildpacks`\"\u003e`herokuBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paketoBuildpacks`\" pulumi-lang-dotnet=\"`PaketoBuildpacks`\" pulumi-lang-go=\"`paketoBuildpacks`\" pulumi-lang-python=\"`paketo_buildpacks`\" pulumi-lang-yaml=\"`paketoBuildpacks`\" pulumi-lang-java=\"`paketoBuildpacks`\" pulumi-lang-hcl=\"`paketo_buildpacks`\"\u003e`paketoBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nixpacks`\" pulumi-lang-dotnet=\"`Nixpacks`\" pulumi-lang-go=\"`nixpacks`\" pulumi-lang-python=\"`nixpacks`\" pulumi-lang-yaml=\"`nixpacks`\" pulumi-lang-java=\"`nixpacks`\" pulumi-lang-hcl=\"`nixpacks`\"\u003e`nixpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`railpack`\" pulumi-lang-dotnet=\"`Railpack`\" pulumi-lang-go=\"`railpack`\" pulumi-lang-python=\"`railpack`\" pulumi-lang-yaml=\"`railpack`\" pulumi-lang-java=\"`railpack`\" pulumi-lang-hcl=\"`railpack`\"\u003e`railpack`\u003c/span\u003e." + "description": "How the application is built. Valid values: \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`herokuBuildpacks`\" pulumi-lang-dotnet=\"`HerokuBuildpacks`\" pulumi-lang-go=\"`herokuBuildpacks`\" pulumi-lang-python=\"`heroku_buildpacks`\" pulumi-lang-yaml=\"`herokuBuildpacks`\" pulumi-lang-java=\"`herokuBuildpacks`\" pulumi-lang-hcl=\"`heroku_buildpacks`\"\u003e`herokuBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paketoBuildpacks`\" pulumi-lang-dotnet=\"`PaketoBuildpacks`\" pulumi-lang-go=\"`paketoBuildpacks`\" pulumi-lang-python=\"`paketo_buildpacks`\" pulumi-lang-yaml=\"`paketoBuildpacks`\" pulumi-lang-java=\"`paketoBuildpacks`\" pulumi-lang-hcl=\"`paketo_buildpacks`\"\u003e`paketoBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nixpacks`\" pulumi-lang-dotnet=\"`Nixpacks`\" pulumi-lang-go=\"`nixpacks`\" pulumi-lang-python=\"`nixpacks`\" pulumi-lang-yaml=\"`nixpacks`\" pulumi-lang-java=\"`nixpacks`\" pulumi-lang-hcl=\"`nixpacks`\"\u003e`nixpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`railpack`\" pulumi-lang-dotnet=\"`Railpack`\" pulumi-lang-go=\"`railpack`\" pulumi-lang-python=\"`railpack`\" pulumi-lang-yaml=\"`railpack`\" pulumi-lang-java=\"`railpack`\" pulumi-lang-hcl=\"`railpack`\"\u003e`railpack`\u003c/span\u003e.\n" }, "cleanCache": { "type": "boolean", - "description": "Discard the build cache on the next deployment." + "description": "Discard the build cache on the next deployment.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createEnvFile": { "type": "boolean", - "description": "Write the environment variables to a `.env` file in the container." + "description": "Write the environment variables to a `.env` file in the container.\n" }, "customGitBranch": { "type": "string", - "description": "Branch to build for a custom Git remote." + "description": "Branch to build for a custom Git remote.\n" }, "customGitBuildPath": { "type": "string", - "description": "Path within a custom Git repository to build from." + "description": "Path within a custom Git repository to build from.\n" }, "customGitSshKeyId": { "type": "string", - "description": "SSH key used to clone a private custom Git remote." + "description": "SSH key used to clone a private custom Git remote.\n" }, "customGitUrl": { "type": "string", - "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e." + "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerBuildStage": { "type": "string", - "description": "Target stage for a multi-stage Docker build." + "description": "Target stage for a multi-stage Docker build.\n" }, "dockerContextPath": { "type": "string", - "description": "Docker build context path." + "description": "Docker build context path.\n" }, "dockerImage": { "type": "string", - "description": "Docker image reference, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e." + "description": "Docker image reference, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e.\n" }, "dockerfile": { "type": "string", - "description": "Path to the Dockerfile, when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e." + "description": "Path to the Dockerfile, when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e.\n" }, "enableSubmodules": { "type": "boolean", - "description": "Clone Git submodules when checking out the repository." + "description": "Clone Git submodules when checking out the repository.\n" }, "enabled": { "type": "boolean", - "description": "Whether the application is enabled." + "description": "Whether the application is enabled.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Runtime environment variables in `KEY=value` format, one per line." + "description": "Runtime environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this application belongs to." + "description": "Environment this application belongs to.\n" }, "giteaBranch": { "type": "string", - "description": "Gitea branch to build." + "description": "Gitea branch to build.\n" }, "giteaBuildPath": { "type": "string", - "description": "Path within the Gitea repository to build from." + "description": "Path within the Gitea repository to build from.\n" }, "giteaId": { "type": "string", - "description": "ID of the configured Gitea provider connection." + "description": "ID of the configured Gitea provider connection.\n" }, "giteaOwner": { "type": "string", - "description": "Gitea repository owner." + "description": "Gitea repository owner.\n" }, "giteaRepository": { "type": "string", - "description": "Gitea repository name." + "description": "Gitea repository name.\n" }, "githubId": { "type": "string", - "description": "ID of the configured GitHub provider connection." + "description": "ID of the configured GitHub provider connection.\n" }, "gitlabBranch": { "type": "string", - "description": "GitLab branch to build." + "description": "GitLab branch to build.\n" }, "gitlabBuildPath": { "type": "string", - "description": "Path within the GitLab repository to build from." + "description": "Path within the GitLab repository to build from.\n" }, "gitlabId": { "type": "string", - "description": "ID of the configured GitLab provider connection." + "description": "ID of the configured GitLab provider connection.\n" }, "gitlabOwner": { "type": "string", - "description": "GitLab repository owner." + "description": "GitLab repository owner.\n" }, "gitlabPathNamespace": { "type": "string", - "description": "Full GitLab namespace path." + "description": "Full GitLab namespace path.\n" }, "gitlabProjectId": { "type": "integer", - "description": "Numeric GitLab project ID." + "description": "Numeric GitLab project ID.\n" }, "gitlabRepository": { "type": "string", - "description": "GitLab repository name." + "description": "GitLab repository name.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "herokuVersion": { "type": "string", - "description": "Heroku buildpack stack version." + "description": "Heroku buildpack stack version.\n" + }, + "icon": { + "type": "string", + "description": "Icon shown next to the service in the Dokploy UI.\n" }, "isPreviewDeploymentsActive": { "type": "boolean", - "description": "Build a preview deployment for each pull request." + "description": "Build a preview deployment for each pull request.\n" }, "isStaticSpa": { "type": "boolean", - "description": "Serve a static build as a single-page application." + "description": "Serve a static build as a single-page application.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the application." + "description": "Display name of the application.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "owner": { "type": "string", - "description": "GitHub repository owner." + "description": "GitHub repository owner.\n" }, "password": { "type": "string", - "description": "Registry password, when pulling a private image.", + "description": "Registry password, when pulling a private image.\n", "secret": true }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "previewBuildArgs": { "type": "string", - "description": "Build arguments applied to preview deployments." + "description": "Build arguments applied to preview deployments.\n" }, "previewBuildSecrets": { "type": "string", - "description": "Build secrets applied to preview deployments.", + "description": "Build secrets applied to preview deployments.\n", "secret": true }, "previewCertificateType": { "type": "string", - "description": "Certificate strategy for preview deployments. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "Certificate strategy for preview deployments. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "previewCustomCertResolver": { "type": "string", - "description": "Traefik certificate resolver for preview deployments." + "description": "Traefik certificate resolver for preview deployments.\n" }, "previewEnv": { "type": "string", - "description": "Environment variables applied to preview deployments." + "description": "Environment variables applied to preview deployments.\n" }, "previewHttps": { "type": "boolean", - "description": "Serve preview deployments over HTTPS." + "description": "Serve preview deployments over HTTPS.\n" }, "previewLabels": { "type": "array", "items": { "type": "string" }, - "description": "Pull request labels that opt into preview deployments." + "description": "Pull request labels that opt into preview deployments.\n" }, "previewLimit": { "type": "integer", - "description": "Maximum number of concurrent preview deployments." + "description": "Maximum number of concurrent preview deployments.\n" }, "previewPath": { "type": "string", - "description": "Base path for preview deployments." + "description": "Base path for preview deployments.\n" }, "previewPort": { "type": "integer", - "description": "Container port exposed by preview deployments." + "description": "Container port exposed by preview deployments.\n" + }, + "previewRequireCollaboratorPermissions": { + "type": "boolean", + "description": "Only build previews for pull requests opened by users with repository collaborator permissions.\n" }, "previewWildcard": { "type": "string", - "description": "Wildcard domain used to expose preview deployments." + "description": "Wildcard domain used to expose preview deployments.\n" }, "publishDirectory": { "type": "string", - "description": "Directory served when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e." + "description": "Directory served when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e.\n" }, "railpackVersion": { "type": "string", - "description": "Railpack version." + "description": "Railpack version.\n" }, "registryId": { "type": "string", - "description": "Registry used to push the built image." + "description": "Registry used to push the built image.\n" }, "registryUrl": { "type": "string", - "description": "Registry URL, when pulling a private image." + "description": "Registry URL, when pulling a private image.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "repository": { "type": "string", - "description": "GitHub repository name." + "description": "GitHub repository name.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackActive": { "type": "boolean", - "description": "Keep previous images so deployments can be rolled back." + "description": "Keep previous images so deployments can be rolled back.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "rollbackRegistryId": { "type": "string", - "description": "Registry used to store rollback images." + "description": "Registry used to store rollback images.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "sourceType": { "type": "string", - "description": "Where the application's code or image comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\" pulumi-lang-hcl=\"`drop`\"\u003e`drop`\u003c/span\u003e." + "description": "Where the application's code or image comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\" pulumi-lang-hcl=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "subtitle": { "type": "string", - "description": "Display subtitle shown in the Dokploy UI." + "description": "Display subtitle shown in the Dokploy UI.\n" }, "title": { "type": "string", - "description": "Display title shown in the Dokploy UI." + "description": "Display title shown in the Dokploy UI.\n" }, "triggerType": { "type": "string", - "description": "What triggers an automatic GitHub deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e." + "description": "What triggers an automatic GitHub deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" }, "username": { "type": "string", - "description": "Registry username, when pulling a private image." + "description": "Registry username, when pulling a private image.\n" }, "watchPaths": { "type": "array", "items": { "type": "string" }, - "description": "Glob patterns that limit which changed paths trigger an automatic deployment." + "description": "Glob patterns that limit which changed paths trigger an automatic deployment.\n" } }, "requiredInputs": [ @@ -1083,433 +1101,442 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "autoDeploy": { "type": "boolean", - "description": "Deploy automatically when the configured trigger fires." + "description": "Deploy automatically when the configured trigger fires.\n" }, "bitbucketBranch": { "type": "string", - "description": "Bitbucket branch to build." + "description": "Bitbucket branch to build.\n" }, "bitbucketBuildPath": { "type": "string", - "description": "Path within the Bitbucket repository to build from." + "description": "Path within the Bitbucket repository to build from.\n" }, "bitbucketId": { "type": "string", - "description": "ID of the configured Bitbucket provider connection." + "description": "ID of the configured Bitbucket provider connection.\n" }, "bitbucketOwner": { "type": "string", - "description": "Bitbucket repository owner." + "description": "Bitbucket repository owner.\n" }, "bitbucketRepository": { "type": "string", - "description": "Bitbucket repository name." + "description": "Bitbucket repository name.\n" }, "bitbucketRepositorySlug": { "type": "string", - "description": "Bitbucket repository slug." + "description": "Bitbucket repository slug.\n" }, "branch": { "type": "string", - "description": "GitHub branch to build." + "description": "GitHub branch to build.\n" }, "buildArgs": { "type": "string", - "description": "Docker build arguments in `KEY=value` format, one per line." + "description": "Docker build arguments in `KEY=value` format, one per line.\n" }, "buildPath": { "type": "string", - "description": "Path within the GitHub repository to build from." + "description": "Path within the GitHub repository to build from.\n" }, "buildRegistryId": { "type": "string", - "description": "Registry used by a dedicated build server." + "description": "Registry used by a dedicated build server.\n" }, "buildSecrets": { "type": "string", - "description": "Docker build secrets in `KEY=value` format, one per line.", + "description": "Docker build secrets in `KEY=value` format, one per line.\n", "secret": true }, "buildServerId": { "type": "string", - "description": "Server that performs builds, when separate from the deploy server." + "description": "Server that performs builds, when separate from the deploy server.\n" }, "buildType": { "type": "string", - "description": "How the application is built. Valid values: \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`herokuBuildpacks`\" pulumi-lang-dotnet=\"`HerokuBuildpacks`\" pulumi-lang-go=\"`herokuBuildpacks`\" pulumi-lang-python=\"`heroku_buildpacks`\" pulumi-lang-yaml=\"`herokuBuildpacks`\" pulumi-lang-java=\"`herokuBuildpacks`\" pulumi-lang-hcl=\"`heroku_buildpacks`\"\u003e`herokuBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paketoBuildpacks`\" pulumi-lang-dotnet=\"`PaketoBuildpacks`\" pulumi-lang-go=\"`paketoBuildpacks`\" pulumi-lang-python=\"`paketo_buildpacks`\" pulumi-lang-yaml=\"`paketoBuildpacks`\" pulumi-lang-java=\"`paketoBuildpacks`\" pulumi-lang-hcl=\"`paketo_buildpacks`\"\u003e`paketoBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nixpacks`\" pulumi-lang-dotnet=\"`Nixpacks`\" pulumi-lang-go=\"`nixpacks`\" pulumi-lang-python=\"`nixpacks`\" pulumi-lang-yaml=\"`nixpacks`\" pulumi-lang-java=\"`nixpacks`\" pulumi-lang-hcl=\"`nixpacks`\"\u003e`nixpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`railpack`\" pulumi-lang-dotnet=\"`Railpack`\" pulumi-lang-go=\"`railpack`\" pulumi-lang-python=\"`railpack`\" pulumi-lang-yaml=\"`railpack`\" pulumi-lang-java=\"`railpack`\" pulumi-lang-hcl=\"`railpack`\"\u003e`railpack`\u003c/span\u003e." + "description": "How the application is built. Valid values: \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`herokuBuildpacks`\" pulumi-lang-dotnet=\"`HerokuBuildpacks`\" pulumi-lang-go=\"`herokuBuildpacks`\" pulumi-lang-python=\"`heroku_buildpacks`\" pulumi-lang-yaml=\"`herokuBuildpacks`\" pulumi-lang-java=\"`herokuBuildpacks`\" pulumi-lang-hcl=\"`heroku_buildpacks`\"\u003e`herokuBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paketoBuildpacks`\" pulumi-lang-dotnet=\"`PaketoBuildpacks`\" pulumi-lang-go=\"`paketoBuildpacks`\" pulumi-lang-python=\"`paketo_buildpacks`\" pulumi-lang-yaml=\"`paketoBuildpacks`\" pulumi-lang-java=\"`paketoBuildpacks`\" pulumi-lang-hcl=\"`paketo_buildpacks`\"\u003e`paketoBuildpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nixpacks`\" pulumi-lang-dotnet=\"`Nixpacks`\" pulumi-lang-go=\"`nixpacks`\" pulumi-lang-python=\"`nixpacks`\" pulumi-lang-yaml=\"`nixpacks`\" pulumi-lang-java=\"`nixpacks`\" pulumi-lang-hcl=\"`nixpacks`\"\u003e`nixpacks`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`railpack`\" pulumi-lang-dotnet=\"`Railpack`\" pulumi-lang-go=\"`railpack`\" pulumi-lang-python=\"`railpack`\" pulumi-lang-yaml=\"`railpack`\" pulumi-lang-java=\"`railpack`\" pulumi-lang-hcl=\"`railpack`\"\u003e`railpack`\u003c/span\u003e.\n" }, "cleanCache": { "type": "boolean", - "description": "Discard the build cache on the next deployment." + "description": "Discard the build cache on the next deployment.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createEnvFile": { "type": "boolean", - "description": "Write the environment variables to a `.env` file in the container." + "description": "Write the environment variables to a `.env` file in the container.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the application was created." + "description": "RFC 3339 timestamp of when the application was created.\n" }, "customGitBranch": { "type": "string", - "description": "Branch to build for a custom Git remote." + "description": "Branch to build for a custom Git remote.\n" }, "customGitBuildPath": { "type": "string", - "description": "Path within a custom Git repository to build from." + "description": "Path within a custom Git repository to build from.\n" }, "customGitSshKeyId": { "type": "string", - "description": "SSH key used to clone a private custom Git remote." + "description": "SSH key used to clone a private custom Git remote.\n" }, "customGitUrl": { "type": "string", - "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e." + "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerBuildStage": { "type": "string", - "description": "Target stage for a multi-stage Docker build." + "description": "Target stage for a multi-stage Docker build.\n" }, "dockerContextPath": { "type": "string", - "description": "Docker build context path." + "description": "Docker build context path.\n" }, "dockerImage": { "type": "string", - "description": "Docker image reference, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e." + "description": "Docker image reference, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e.\n" }, "dockerfile": { "type": "string", - "description": "Path to the Dockerfile, when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e." + "description": "Path to the Dockerfile, when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`dockerfile`\" pulumi-lang-dotnet=\"`Dockerfile`\" pulumi-lang-go=\"`dockerfile`\" pulumi-lang-python=\"`dockerfile`\" pulumi-lang-yaml=\"`dockerfile`\" pulumi-lang-java=\"`dockerfile`\" pulumi-lang-hcl=\"`dockerfile`\"\u003e`dockerfile`\u003c/span\u003e.\n" }, "enableSubmodules": { "type": "boolean", - "description": "Clone Git submodules when checking out the repository." + "description": "Clone Git submodules when checking out the repository.\n" }, "enabled": { "type": "boolean", - "description": "Whether the application is enabled." + "description": "Whether the application is enabled.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Runtime environment variables in `KEY=value` format, one per line." + "description": "Runtime environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this application belongs to." + "description": "Environment this application belongs to.\n" }, "giteaBranch": { "type": "string", - "description": "Gitea branch to build." + "description": "Gitea branch to build.\n" }, "giteaBuildPath": { "type": "string", - "description": "Path within the Gitea repository to build from." + "description": "Path within the Gitea repository to build from.\n" }, "giteaId": { "type": "string", - "description": "ID of the configured Gitea provider connection." + "description": "ID of the configured Gitea provider connection.\n" }, "giteaOwner": { "type": "string", - "description": "Gitea repository owner." + "description": "Gitea repository owner.\n" }, "giteaRepository": { "type": "string", - "description": "Gitea repository name." + "description": "Gitea repository name.\n" }, "githubId": { "type": "string", - "description": "ID of the configured GitHub provider connection." + "description": "ID of the configured GitHub provider connection.\n" }, "gitlabBranch": { "type": "string", - "description": "GitLab branch to build." + "description": "GitLab branch to build.\n" }, "gitlabBuildPath": { "type": "string", - "description": "Path within the GitLab repository to build from." + "description": "Path within the GitLab repository to build from.\n" }, "gitlabId": { "type": "string", - "description": "ID of the configured GitLab provider connection." + "description": "ID of the configured GitLab provider connection.\n" }, "gitlabOwner": { "type": "string", - "description": "GitLab repository owner." + "description": "GitLab repository owner.\n" }, "gitlabPathNamespace": { "type": "string", - "description": "Full GitLab namespace path." + "description": "Full GitLab namespace path.\n" }, "gitlabProjectId": { "type": "integer", - "description": "Numeric GitLab project ID." + "description": "Numeric GitLab project ID.\n" }, "gitlabRepository": { "type": "string", - "description": "GitLab repository name." + "description": "GitLab repository name.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "herokuVersion": { "type": "string", - "description": "Heroku buildpack stack version." + "description": "Heroku buildpack stack version.\n" + }, + "icon": { + "type": "string", + "description": "Icon shown next to the service in the Dokploy UI.\n" }, "isPreviewDeploymentsActive": { "type": "boolean", - "description": "Build a preview deployment for each pull request." + "description": "Build a preview deployment for each pull request.\n" }, "isStaticSpa": { "type": "boolean", - "description": "Serve a static build as a single-page application." + "description": "Serve a static build as a single-page application.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the application." + "description": "Display name of the application.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "owner": { "type": "string", - "description": "GitHub repository owner." + "description": "GitHub repository owner.\n" }, "password": { "type": "string", - "description": "Registry password, when pulling a private image.", + "description": "Registry password, when pulling a private image.\n", "secret": true }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "previewBuildArgs": { "type": "string", - "description": "Build arguments applied to preview deployments." + "description": "Build arguments applied to preview deployments.\n" }, "previewBuildSecrets": { "type": "string", - "description": "Build secrets applied to preview deployments.", + "description": "Build secrets applied to preview deployments.\n", "secret": true }, "previewCertificateType": { "type": "string", - "description": "Certificate strategy for preview deployments. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "Certificate strategy for preview deployments. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "previewCustomCertResolver": { "type": "string", - "description": "Traefik certificate resolver for preview deployments." + "description": "Traefik certificate resolver for preview deployments.\n" }, "previewEnv": { "type": "string", - "description": "Environment variables applied to preview deployments." + "description": "Environment variables applied to preview deployments.\n" }, "previewHttps": { "type": "boolean", - "description": "Serve preview deployments over HTTPS." + "description": "Serve preview deployments over HTTPS.\n" }, "previewLabels": { "type": "array", "items": { "type": "string" }, - "description": "Pull request labels that opt into preview deployments." + "description": "Pull request labels that opt into preview deployments.\n" }, "previewLimit": { "type": "integer", - "description": "Maximum number of concurrent preview deployments." + "description": "Maximum number of concurrent preview deployments.\n" }, "previewPath": { "type": "string", - "description": "Base path for preview deployments." + "description": "Base path for preview deployments.\n" }, "previewPort": { "type": "integer", - "description": "Container port exposed by preview deployments." + "description": "Container port exposed by preview deployments.\n" + }, + "previewRequireCollaboratorPermissions": { + "type": "boolean", + "description": "Only build previews for pull requests opened by users with repository collaborator permissions.\n" }, "previewWildcard": { "type": "string", - "description": "Wildcard domain used to expose preview deployments." + "description": "Wildcard domain used to expose preview deployments.\n" }, "publishDirectory": { "type": "string", - "description": "Directory served when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e." + "description": "Directory served when \u003cspan pulumi-lang-nodejs=\"`buildType`\" pulumi-lang-dotnet=\"`BuildType`\" pulumi-lang-go=\"`buildType`\" pulumi-lang-python=\"`build_type`\" pulumi-lang-yaml=\"`buildType`\" pulumi-lang-java=\"`buildType`\" pulumi-lang-hcl=\"`build_type`\"\u003e`buildType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\" pulumi-lang-hcl=\"`static`\"\u003e`static`\u003c/span\u003e.\n" }, "railpackVersion": { "type": "string", - "description": "Railpack version." + "description": "Railpack version.\n" }, "registryId": { "type": "string", - "description": "Registry used to push the built image." + "description": "Registry used to push the built image.\n" }, "registryUrl": { "type": "string", - "description": "Registry URL, when pulling a private image." + "description": "Registry URL, when pulling a private image.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "repository": { "type": "string", - "description": "GitHub repository name." + "description": "GitHub repository name.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackActive": { "type": "boolean", - "description": "Keep previous images so deployments can be rolled back." + "description": "Keep previous images so deployments can be rolled back.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "rollbackRegistryId": { "type": "string", - "description": "Registry used to store rollback images." + "description": "Registry used to store rollback images.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "sourceType": { "type": "string", - "description": "Where the application's code or image comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\" pulumi-lang-hcl=\"`drop`\"\u003e`drop`\u003c/span\u003e." + "description": "Where the application's code or image comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`docker`\" pulumi-lang-dotnet=\"`Docker`\" pulumi-lang-go=\"`docker`\" pulumi-lang-python=\"`docker`\" pulumi-lang-yaml=\"`docker`\" pulumi-lang-java=\"`docker`\" pulumi-lang-hcl=\"`docker`\"\u003e`docker`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\" pulumi-lang-hcl=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "subtitle": { "type": "string", - "description": "Display subtitle shown in the Dokploy UI." + "description": "Display subtitle shown in the Dokploy UI.\n" }, "title": { "type": "string", - "description": "Display title shown in the Dokploy UI." + "description": "Display title shown in the Dokploy UI.\n" }, "triggerType": { "type": "string", - "description": "What triggers an automatic GitHub deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e." + "description": "What triggers an automatic GitHub deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" }, "username": { "type": "string", - "description": "Registry username, when pulling a private image." + "description": "Registry username, when pulling a private image.\n" }, "watchPaths": { "type": "array", "items": { "type": "string" }, - "description": "Glob patterns that limit which changed paths trigger an automatic deployment." + "description": "Glob patterns that limit which changed paths trigger an automatic deployment.\n" } }, "type": "object" } }, "dokploy:index/certificate:Certificate": { + "description": "A TLS certificate uploaded to Dokploy, for domains that use \u003cspan pulumi-lang-nodejs=\"`certificateType \" pulumi-lang-dotnet=\"`CertificateType \" pulumi-lang-go=\"`certificateType \" pulumi-lang-python=\"`certificate_type \" pulumi-lang-yaml=\"`certificateType \" pulumi-lang-java=\"`certificateType \" pulumi-lang-hcl=\"`certificate_type \"\u003e`certificateType \u003c/span\u003e= \"custom\"`.\n\n\u003e The private key is stored in Terraform state. Use a state backend with encryption at rest.\n", "properties": { "autoRenew": { "type": "boolean", - "description": "Whether Dokploy should renew this certificate automatically." + "description": "Whether Dokploy should renew this certificate automatically.\n" }, "certificateData": { "type": "string", - "description": "PEM-encoded certificate chain." + "description": "PEM-encoded certificate chain.\n" }, "certificatePath": { "type": "string", - "description": "Path where Dokploy writes the certificate on disk." + "description": "Path where Dokploy writes the certificate on disk.\n" }, "name": { "type": "string", - "description": "Display name of the certificate." + "description": "Display name of the certificate.\n" }, "privateKey": { "type": "string", - "description": "PEM-encoded private key.", + "description": "PEM-encoded private key.\n", "secret": true }, "serverId": { "type": "string", - "description": "Server this certificate is installed on." + "description": "Server this certificate is installed on.\n" } }, "required": [ @@ -1522,24 +1549,24 @@ "inputProperties": { "autoRenew": { "type": "boolean", - "description": "Whether Dokploy should renew this certificate automatically." + "description": "Whether Dokploy should renew this certificate automatically.\n" }, "certificateData": { "type": "string", - "description": "PEM-encoded certificate chain." + "description": "PEM-encoded certificate chain.\n" }, "name": { "type": "string", - "description": "Display name of the certificate." + "description": "Display name of the certificate.\n" }, "privateKey": { "type": "string", - "description": "PEM-encoded private key.", + "description": "PEM-encoded private key.\n", "secret": true }, "serverId": { "type": "string", - "description": "Server this certificate is installed on." + "description": "Server this certificate is installed on.\n" } }, "requiredInputs": [ @@ -1551,213 +1578,226 @@ "properties": { "autoRenew": { "type": "boolean", - "description": "Whether Dokploy should renew this certificate automatically." + "description": "Whether Dokploy should renew this certificate automatically.\n" }, "certificateData": { "type": "string", - "description": "PEM-encoded certificate chain." + "description": "PEM-encoded certificate chain.\n" }, "certificatePath": { "type": "string", - "description": "Path where Dokploy writes the certificate on disk." + "description": "Path where Dokploy writes the certificate on disk.\n" }, "name": { "type": "string", - "description": "Display name of the certificate." + "description": "Display name of the certificate.\n" }, "privateKey": { "type": "string", - "description": "PEM-encoded private key.", + "description": "PEM-encoded private key.\n", "secret": true }, "serverId": { "type": "string", - "description": "Server this certificate is installed on." + "description": "Server this certificate is installed on.\n" } }, "type": "object" } }, "dokploy:index/compose:Compose": { + "description": "A Docker Compose or Docker Swarm stack managed by Dokploy.\n\nSet \u003cspan pulumi-lang-nodejs=\"`composeFile`\" pulumi-lang-dotnet=\"`ComposeFile`\" pulumi-lang-go=\"`composeFile`\" pulumi-lang-python=\"`compose_file`\" pulumi-lang-yaml=\"`composeFile`\" pulumi-lang-java=\"`composeFile`\" pulumi-lang-hcl=\"`compose_file`\"\u003e`composeFile`\u003c/span\u003e to manage the stack definition inline (with \u003cspan pulumi-lang-nodejs=\"`sourceType \" pulumi-lang-dotnet=\"`SourceType \" pulumi-lang-go=\"`sourceType \" pulumi-lang-python=\"`source_type \" pulumi-lang-yaml=\"`sourceType \" pulumi-lang-java=\"`sourceType \" pulumi-lang-hcl=\"`source_type \"\u003e`sourceType \u003c/span\u003e= \"raw\"`), or point the stack at a Git repository and set \u003cspan pulumi-lang-nodejs=\"`composePath`\" pulumi-lang-dotnet=\"`ComposePath`\" pulumi-lang-go=\"`composePath`\" pulumi-lang-python=\"`compose_path`\" pulumi-lang-yaml=\"`composePath`\" pulumi-lang-java=\"`composePath`\" pulumi-lang-hcl=\"`compose_path`\"\u003e`composePath`\u003c/span\u003e.\n\n\u003e Creating this resource does **not** deploy the stack.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack." + "description": "Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.\n" }, "autoDeploy": { "type": "boolean", - "description": "Deploy automatically when the configured trigger fires." + "description": "Deploy automatically when the configured trigger fires.\n" }, "bitbucketBranch": { "type": "string", - "description": "Bitbucket branch to deploy." + "description": "Bitbucket branch to deploy.\n" }, "bitbucketId": { "type": "string", - "description": "ID of the configured Bitbucket provider connection." + "description": "ID of the configured Bitbucket provider connection.\n" }, "bitbucketOwner": { "type": "string", - "description": "Bitbucket repository owner." + "description": "Bitbucket repository owner.\n" }, "bitbucketRepository": { "type": "string", - "description": "Bitbucket repository name." + "description": "Bitbucket repository name.\n" }, "bitbucketRepositorySlug": { "type": "string", - "description": "Bitbucket repository slug." + "description": "Bitbucket repository slug.\n" }, "branch": { "type": "string", - "description": "GitHub branch to deploy." + "description": "GitHub branch to deploy.\n" }, "command": { "type": "string", - "description": "Custom `docker compose` command to run." + "description": "Custom `docker compose` command to run.\n" }, "composeFile": { "type": "string", - "description": "Inline Compose file contents. Used when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e." + "description": "Inline Compose file contents. Used when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e.\n" }, "composePath": { "type": "string", - "description": "Path to the Compose file within the repository." + "description": "Path to the Compose file within the repository.\n" }, "composeStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "composeType": { "type": "string", - "description": "Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, \u003cspan pulumi-lang-nodejs=\"`stack`\" pulumi-lang-dotnet=\"`Stack`\" pulumi-lang-go=\"`stack`\" pulumi-lang-python=\"`stack`\" pulumi-lang-yaml=\"`stack`\" pulumi-lang-java=\"`stack`\" pulumi-lang-hcl=\"`stack`\"\u003e`stack`\u003c/span\u003e." + "description": "Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, \u003cspan pulumi-lang-nodejs=\"`stack`\" pulumi-lang-dotnet=\"`Stack`\" pulumi-lang-go=\"`stack`\" pulumi-lang-python=\"`stack`\" pulumi-lang-yaml=\"`stack`\" pulumi-lang-java=\"`stack`\" pulumi-lang-hcl=\"`stack`\"\u003e`stack`\u003c/span\u003e.\n" + }, + "createEnvFile": { + "type": "boolean", + "description": "Write the environment variables to a `.env` file next to the Compose file.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the stack was created." + "description": "RFC 3339 timestamp of when the stack was created.\n" }, "customGitBranch": { "type": "string", - "description": "Branch to deploy for a custom Git remote." + "description": "Branch to deploy for a custom Git remote.\n" }, "customGitSshKeyId": { "type": "string", - "description": "SSH key used to clone a private custom Git remote." + "description": "SSH key used to clone a private custom Git remote.\n" }, "customGitUrl": { "type": "string", - "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e." + "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e.\n" }, "deleteVolumes": { "type": "boolean", - "description": "Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, which preserves the data." + "description": "Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, which preserves the data.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "enableSubmodules": { "type": "boolean", - "description": "Clone Git submodules when checking out the repository." + "description": "Clone Git submodules when checking out the repository.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this stack belongs to." + "description": "Environment this stack belongs to.\n" }, "giteaBranch": { "type": "string", - "description": "Gitea branch to deploy." + "description": "Gitea branch to deploy.\n" }, "giteaId": { "type": "string", - "description": "ID of the configured Gitea provider connection." + "description": "ID of the configured Gitea provider connection.\n" }, "giteaOwner": { "type": "string", - "description": "Gitea repository owner." + "description": "Gitea repository owner.\n" }, "giteaRepository": { "type": "string", - "description": "Gitea repository name." + "description": "Gitea repository name.\n" }, "githubId": { "type": "string", - "description": "ID of the configured GitHub provider connection." + "description": "ID of the configured GitHub provider connection.\n" }, "gitlabBranch": { "type": "string", - "description": "GitLab branch to deploy." + "description": "GitLab branch to deploy.\n" }, "gitlabId": { "type": "string", - "description": "ID of the configured GitLab provider connection." + "description": "ID of the configured GitLab provider connection.\n" }, "gitlabOwner": { "type": "string", - "description": "GitLab repository owner." + "description": "GitLab repository owner.\n" }, "gitlabPathNamespace": { "type": "string", - "description": "Full GitLab namespace path." + "description": "Full GitLab namespace path.\n" }, "gitlabProjectId": { "type": "integer", - "description": "Numeric GitLab project ID." + "description": "Numeric GitLab project ID.\n" }, "gitlabRepository": { "type": "string", - "description": "GitLab repository name." + "description": "GitLab repository name.\n" + }, + "icon": { + "type": "string", + "description": "Icon shown next to the stack in the Dokploy UI.\n" }, "isolatedDeployment": { "type": "boolean", - "description": "Run the stack on its own isolated Docker network." + "description": "Run the stack on its own isolated Docker network.\n" }, "isolatedDeploymentsVolume": { "type": "boolean", - "description": "Prefix volume names for isolated deployments. Retained for backwards compatibility." + "description": "Prefix volume names for isolated deployments. Retained for backwards compatibility.\n" }, "name": { "type": "string", - "description": "Display name of the stack." + "description": "Display name of the stack.\n" }, "owner": { "type": "string", - "description": "GitHub repository owner." + "description": "GitHub repository owner.\n" }, "randomize": { "type": "boolean", - "description": "Append a random suffix to service and volume names." + "description": "Append a random suffix to service and volume names.\n" }, "repository": { "type": "string", - "description": "GitHub repository name." + "description": "GitHub repository name.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "serviceNetworks": { + "type": "string", + "description": "Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.\n" }, "sourceType": { "type": "string", - "description": "Where the Compose file comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e." + "description": "Where the Compose file comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e.\n" }, "suffix": { "type": "string", - "description": "Suffix appended to generated resource names." + "description": "Suffix appended to generated resource names.\n" }, "triggerType": { "type": "string", - "description": "What triggers an automatic deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e." + "description": "What triggers an automatic deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e.\n" }, "watchPaths": { "type": "array", "items": { "type": "string" }, - "description": "Glob patterns that limit which changed paths trigger an automatic deployment." + "description": "Glob patterns that limit which changed paths trigger an automatic deployment.\n" } }, "required": [ @@ -1768,6 +1808,7 @@ "composePath", "composeStatus", "composeType", + "createEnvFile", "createdAt", "enableSubmodules", "environmentId", @@ -1783,174 +1824,186 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack." + "description": "Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.\n" }, "autoDeploy": { "type": "boolean", - "description": "Deploy automatically when the configured trigger fires." + "description": "Deploy automatically when the configured trigger fires.\n" }, "bitbucketBranch": { "type": "string", - "description": "Bitbucket branch to deploy." + "description": "Bitbucket branch to deploy.\n" }, "bitbucketId": { "type": "string", - "description": "ID of the configured Bitbucket provider connection." + "description": "ID of the configured Bitbucket provider connection.\n" }, "bitbucketOwner": { "type": "string", - "description": "Bitbucket repository owner." + "description": "Bitbucket repository owner.\n" }, "bitbucketRepository": { "type": "string", - "description": "Bitbucket repository name." + "description": "Bitbucket repository name.\n" }, "bitbucketRepositorySlug": { "type": "string", - "description": "Bitbucket repository slug." + "description": "Bitbucket repository slug.\n" }, "branch": { "type": "string", - "description": "GitHub branch to deploy." + "description": "GitHub branch to deploy.\n" }, "command": { "type": "string", - "description": "Custom `docker compose` command to run." + "description": "Custom `docker compose` command to run.\n" }, "composeFile": { "type": "string", - "description": "Inline Compose file contents. Used when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e." + "description": "Inline Compose file contents. Used when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e.\n" }, "composePath": { "type": "string", - "description": "Path to the Compose file within the repository." + "description": "Path to the Compose file within the repository.\n" }, "composeType": { "type": "string", - "description": "Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, \u003cspan pulumi-lang-nodejs=\"`stack`\" pulumi-lang-dotnet=\"`Stack`\" pulumi-lang-go=\"`stack`\" pulumi-lang-python=\"`stack`\" pulumi-lang-yaml=\"`stack`\" pulumi-lang-java=\"`stack`\" pulumi-lang-hcl=\"`stack`\"\u003e`stack`\u003c/span\u003e." + "description": "Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, \u003cspan pulumi-lang-nodejs=\"`stack`\" pulumi-lang-dotnet=\"`Stack`\" pulumi-lang-go=\"`stack`\" pulumi-lang-python=\"`stack`\" pulumi-lang-yaml=\"`stack`\" pulumi-lang-java=\"`stack`\" pulumi-lang-hcl=\"`stack`\"\u003e`stack`\u003c/span\u003e.\n" + }, + "createEnvFile": { + "type": "boolean", + "description": "Write the environment variables to a `.env` file next to the Compose file.\n" }, "customGitBranch": { "type": "string", - "description": "Branch to deploy for a custom Git remote." + "description": "Branch to deploy for a custom Git remote.\n" }, "customGitSshKeyId": { "type": "string", - "description": "SSH key used to clone a private custom Git remote." + "description": "SSH key used to clone a private custom Git remote.\n" }, "customGitUrl": { "type": "string", - "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e." + "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e.\n" }, "deleteVolumes": { "type": "boolean", - "description": "Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, which preserves the data." + "description": "Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, which preserves the data.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "enableSubmodules": { "type": "boolean", - "description": "Clone Git submodules when checking out the repository." + "description": "Clone Git submodules when checking out the repository.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this stack belongs to." + "description": "Environment this stack belongs to.\n" }, "giteaBranch": { "type": "string", - "description": "Gitea branch to deploy." + "description": "Gitea branch to deploy.\n" }, "giteaId": { "type": "string", - "description": "ID of the configured Gitea provider connection." + "description": "ID of the configured Gitea provider connection.\n" }, "giteaOwner": { "type": "string", - "description": "Gitea repository owner." + "description": "Gitea repository owner.\n" }, "giteaRepository": { "type": "string", - "description": "Gitea repository name." + "description": "Gitea repository name.\n" }, "githubId": { "type": "string", - "description": "ID of the configured GitHub provider connection." + "description": "ID of the configured GitHub provider connection.\n" }, "gitlabBranch": { "type": "string", - "description": "GitLab branch to deploy." + "description": "GitLab branch to deploy.\n" }, "gitlabId": { "type": "string", - "description": "ID of the configured GitLab provider connection." + "description": "ID of the configured GitLab provider connection.\n" }, "gitlabOwner": { "type": "string", - "description": "GitLab repository owner." + "description": "GitLab repository owner.\n" }, "gitlabPathNamespace": { "type": "string", - "description": "Full GitLab namespace path." + "description": "Full GitLab namespace path.\n" }, "gitlabProjectId": { "type": "integer", - "description": "Numeric GitLab project ID." + "description": "Numeric GitLab project ID.\n" }, "gitlabRepository": { "type": "string", - "description": "GitLab repository name." + "description": "GitLab repository name.\n" + }, + "icon": { + "type": "string", + "description": "Icon shown next to the stack in the Dokploy UI.\n" }, "isolatedDeployment": { "type": "boolean", - "description": "Run the stack on its own isolated Docker network." + "description": "Run the stack on its own isolated Docker network.\n" }, "isolatedDeploymentsVolume": { "type": "boolean", - "description": "Prefix volume names for isolated deployments. Retained for backwards compatibility." + "description": "Prefix volume names for isolated deployments. Retained for backwards compatibility.\n" }, "name": { "type": "string", - "description": "Display name of the stack." + "description": "Display name of the stack.\n" }, "owner": { "type": "string", - "description": "GitHub repository owner." + "description": "GitHub repository owner.\n" }, "randomize": { "type": "boolean", - "description": "Append a random suffix to service and volume names." + "description": "Append a random suffix to service and volume names.\n" }, "repository": { "type": "string", - "description": "GitHub repository name." + "description": "GitHub repository name.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "serviceNetworks": { + "type": "string", + "description": "Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.\n" }, "sourceType": { "type": "string", - "description": "Where the Compose file comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e." + "description": "Where the Compose file comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e.\n" }, "suffix": { "type": "string", - "description": "Suffix appended to generated resource names." + "description": "Suffix appended to generated resource names.\n" }, "triggerType": { "type": "string", - "description": "What triggers an automatic deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e." + "description": "What triggers an automatic deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e.\n" }, "watchPaths": { "type": "array", "items": { "type": "string" }, - "description": "Glob patterns that limit which changed paths trigger an automatic deployment." + "description": "Glob patterns that limit which changed paths trigger an automatic deployment.\n" } }, "requiredInputs": [ @@ -1961,232 +2014,245 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack." + "description": "Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.\n" }, "autoDeploy": { "type": "boolean", - "description": "Deploy automatically when the configured trigger fires." + "description": "Deploy automatically when the configured trigger fires.\n" }, "bitbucketBranch": { "type": "string", - "description": "Bitbucket branch to deploy." + "description": "Bitbucket branch to deploy.\n" }, "bitbucketId": { "type": "string", - "description": "ID of the configured Bitbucket provider connection." + "description": "ID of the configured Bitbucket provider connection.\n" }, "bitbucketOwner": { "type": "string", - "description": "Bitbucket repository owner." + "description": "Bitbucket repository owner.\n" }, "bitbucketRepository": { "type": "string", - "description": "Bitbucket repository name." + "description": "Bitbucket repository name.\n" }, "bitbucketRepositorySlug": { "type": "string", - "description": "Bitbucket repository slug." + "description": "Bitbucket repository slug.\n" }, "branch": { "type": "string", - "description": "GitHub branch to deploy." + "description": "GitHub branch to deploy.\n" }, "command": { "type": "string", - "description": "Custom `docker compose` command to run." + "description": "Custom `docker compose` command to run.\n" }, "composeFile": { "type": "string", - "description": "Inline Compose file contents. Used when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e." + "description": "Inline Compose file contents. Used when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e.\n" }, "composePath": { "type": "string", - "description": "Path to the Compose file within the repository." + "description": "Path to the Compose file within the repository.\n" }, "composeStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "composeType": { "type": "string", - "description": "Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, \u003cspan pulumi-lang-nodejs=\"`stack`\" pulumi-lang-dotnet=\"`Stack`\" pulumi-lang-go=\"`stack`\" pulumi-lang-python=\"`stack`\" pulumi-lang-yaml=\"`stack`\" pulumi-lang-java=\"`stack`\" pulumi-lang-hcl=\"`stack`\"\u003e`stack`\u003c/span\u003e." + "description": "Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, \u003cspan pulumi-lang-nodejs=\"`stack`\" pulumi-lang-dotnet=\"`Stack`\" pulumi-lang-go=\"`stack`\" pulumi-lang-python=\"`stack`\" pulumi-lang-yaml=\"`stack`\" pulumi-lang-java=\"`stack`\" pulumi-lang-hcl=\"`stack`\"\u003e`stack`\u003c/span\u003e.\n" + }, + "createEnvFile": { + "type": "boolean", + "description": "Write the environment variables to a `.env` file next to the Compose file.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the stack was created." + "description": "RFC 3339 timestamp of when the stack was created.\n" }, "customGitBranch": { "type": "string", - "description": "Branch to deploy for a custom Git remote." + "description": "Branch to deploy for a custom Git remote.\n" }, "customGitSshKeyId": { "type": "string", - "description": "SSH key used to clone a private custom Git remote." + "description": "SSH key used to clone a private custom Git remote.\n" }, "customGitUrl": { "type": "string", - "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e." + "description": "Git remote URL, when \u003cspan pulumi-lang-nodejs=\"`sourceType`\" pulumi-lang-dotnet=\"`SourceType`\" pulumi-lang-go=\"`sourceType`\" pulumi-lang-python=\"`source_type`\" pulumi-lang-yaml=\"`sourceType`\" pulumi-lang-java=\"`sourceType`\" pulumi-lang-hcl=\"`source_type`\"\u003e`sourceType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e.\n" }, "deleteVolumes": { "type": "boolean", - "description": "Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, which preserves the data." + "description": "Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, which preserves the data.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "enableSubmodules": { "type": "boolean", - "description": "Clone Git submodules when checking out the repository." + "description": "Clone Git submodules when checking out the repository.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this stack belongs to." + "description": "Environment this stack belongs to.\n" }, "giteaBranch": { "type": "string", - "description": "Gitea branch to deploy." + "description": "Gitea branch to deploy.\n" }, "giteaId": { "type": "string", - "description": "ID of the configured Gitea provider connection." + "description": "ID of the configured Gitea provider connection.\n" }, "giteaOwner": { "type": "string", - "description": "Gitea repository owner." + "description": "Gitea repository owner.\n" }, "giteaRepository": { "type": "string", - "description": "Gitea repository name." + "description": "Gitea repository name.\n" }, "githubId": { "type": "string", - "description": "ID of the configured GitHub provider connection." + "description": "ID of the configured GitHub provider connection.\n" }, "gitlabBranch": { "type": "string", - "description": "GitLab branch to deploy." + "description": "GitLab branch to deploy.\n" }, "gitlabId": { "type": "string", - "description": "ID of the configured GitLab provider connection." + "description": "ID of the configured GitLab provider connection.\n" }, "gitlabOwner": { "type": "string", - "description": "GitLab repository owner." + "description": "GitLab repository owner.\n" }, "gitlabPathNamespace": { "type": "string", - "description": "Full GitLab namespace path." + "description": "Full GitLab namespace path.\n" }, "gitlabProjectId": { "type": "integer", - "description": "Numeric GitLab project ID." + "description": "Numeric GitLab project ID.\n" }, "gitlabRepository": { "type": "string", - "description": "GitLab repository name." + "description": "GitLab repository name.\n" + }, + "icon": { + "type": "string", + "description": "Icon shown next to the stack in the Dokploy UI.\n" }, "isolatedDeployment": { "type": "boolean", - "description": "Run the stack on its own isolated Docker network." + "description": "Run the stack on its own isolated Docker network.\n" }, "isolatedDeploymentsVolume": { "type": "boolean", - "description": "Prefix volume names for isolated deployments. Retained for backwards compatibility." + "description": "Prefix volume names for isolated deployments. Retained for backwards compatibility.\n" }, "name": { "type": "string", - "description": "Display name of the stack." + "description": "Display name of the stack.\n" }, "owner": { "type": "string", - "description": "GitHub repository owner." + "description": "GitHub repository owner.\n" }, "randomize": { "type": "boolean", - "description": "Append a random suffix to service and volume names." + "description": "Append a random suffix to service and volume names.\n" }, "repository": { "type": "string", - "description": "GitHub repository name." + "description": "GitHub repository name.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "serviceNetworks": { + "type": "string", + "description": "Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs.\n" }, "sourceType": { "type": "string", - "description": "Where the Compose file comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e." + "description": "Where the Compose file comes from. Valid values: \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\" pulumi-lang-hcl=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\" pulumi-lang-hcl=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\" pulumi-lang-hcl=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\" pulumi-lang-hcl=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitea`\" pulumi-lang-dotnet=\"`Gitea`\" pulumi-lang-go=\"`gitea`\" pulumi-lang-python=\"`gitea`\" pulumi-lang-yaml=\"`gitea`\" pulumi-lang-java=\"`gitea`\" pulumi-lang-hcl=\"`gitea`\"\u003e`gitea`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\" pulumi-lang-hcl=\"`raw`\"\u003e`raw`\u003c/span\u003e.\n" }, "suffix": { "type": "string", - "description": "Suffix appended to generated resource names." + "description": "Suffix appended to generated resource names.\n" }, "triggerType": { "type": "string", - "description": "What triggers an automatic deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e." + "description": "What triggers an automatic deployment. Valid values: \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\" pulumi-lang-hcl=\"`tag`\"\u003e`tag`\u003c/span\u003e.\n" }, "watchPaths": { "type": "array", "items": { "type": "string" }, - "description": "Glob patterns that limit which changed paths trigger an automatic deployment." + "description": "Glob patterns that limit which changed paths trigger an automatic deployment.\n" } }, "type": "object" } }, "dokploy:index/destination:Destination": { + "description": "An S3-compatible bucket that Dokploy writes database and volume backups to.\n\n\u003e The secret access key is stored in Terraform state. Use a state backend with encryption at rest.\n", "properties": { "accessKey": { "type": "string", - "description": "S3 access key ID." + "description": "S3 access key ID.\n" }, "additionalFlags": { "type": "array", "items": { "type": "string" }, - "description": "Extra flags passed to the underlying \u003cspan pulumi-lang-nodejs=\"`rclone`\" pulumi-lang-dotnet=\"`Rclone`\" pulumi-lang-go=\"`rclone`\" pulumi-lang-python=\"`rclone`\" pulumi-lang-yaml=\"`rclone`\" pulumi-lang-java=\"`rclone`\" pulumi-lang-hcl=\"`rclone`\"\u003e`rclone`\u003c/span\u003e invocation." + "description": "Extra flags passed to the underlying \u003cspan pulumi-lang-nodejs=\"`rclone`\" pulumi-lang-dotnet=\"`Rclone`\" pulumi-lang-go=\"`rclone`\" pulumi-lang-python=\"`rclone`\" pulumi-lang-yaml=\"`rclone`\" pulumi-lang-java=\"`rclone`\" pulumi-lang-hcl=\"`rclone`\"\u003e`rclone`\u003c/span\u003e invocation.\n" }, "bucket": { "type": "string", - "description": "Bucket name." + "description": "Bucket name.\n" }, "createdAt": { "type": "string", - "description": "Timestamp of when the destination was created." + "description": "Timestamp of when the destination was created.\n" }, "endpoint": { "type": "string", - "description": "S3 endpoint URL." + "description": "S3 endpoint URL.\n" }, "name": { "type": "string", - "description": "Display name of the destination." + "description": "Display name of the destination.\n" }, "providerName": { "type": "string", - "description": "Provider label, for example \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\" pulumi-lang-hcl=\"`s3`\"\u003e`s3`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e. Named \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\" pulumi-lang-hcl=\"`provider_name`\"\u003e`providerName`\u003c/span\u003e because \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\" pulumi-lang-hcl=\"`provider`\"\u003e`provider`\u003c/span\u003e is reserved by Terraform." + "description": "Provider label, for example \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\" pulumi-lang-hcl=\"`s3`\"\u003e`s3`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e. Named \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\" pulumi-lang-hcl=\"`provider_name`\"\u003e`providerName`\u003c/span\u003e because \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\" pulumi-lang-hcl=\"`provider`\"\u003e`provider`\u003c/span\u003e is reserved by Terraform.\n" }, "region": { "type": "string", - "description": "Bucket region, for example `us-east-1`." + "description": "Bucket region, for example `us-east-1`.\n" }, "secretAccessKey": { "type": "string", - "description": "S3 secret access key.", + "description": "S3 secret access key.\n", "secret": true }, "serverId": { "type": "string", - "description": "Server this destination is scoped to." + "description": "Server this destination is scoped to.\n" } }, "required": [ @@ -2202,43 +2268,43 @@ "inputProperties": { "accessKey": { "type": "string", - "description": "S3 access key ID." + "description": "S3 access key ID.\n" }, "additionalFlags": { "type": "array", "items": { "type": "string" }, - "description": "Extra flags passed to the underlying \u003cspan pulumi-lang-nodejs=\"`rclone`\" pulumi-lang-dotnet=\"`Rclone`\" pulumi-lang-go=\"`rclone`\" pulumi-lang-python=\"`rclone`\" pulumi-lang-yaml=\"`rclone`\" pulumi-lang-java=\"`rclone`\" pulumi-lang-hcl=\"`rclone`\"\u003e`rclone`\u003c/span\u003e invocation." + "description": "Extra flags passed to the underlying \u003cspan pulumi-lang-nodejs=\"`rclone`\" pulumi-lang-dotnet=\"`Rclone`\" pulumi-lang-go=\"`rclone`\" pulumi-lang-python=\"`rclone`\" pulumi-lang-yaml=\"`rclone`\" pulumi-lang-java=\"`rclone`\" pulumi-lang-hcl=\"`rclone`\"\u003e`rclone`\u003c/span\u003e invocation.\n" }, "bucket": { "type": "string", - "description": "Bucket name." + "description": "Bucket name.\n" }, "endpoint": { "type": "string", - "description": "S3 endpoint URL." + "description": "S3 endpoint URL.\n" }, "name": { "type": "string", - "description": "Display name of the destination." + "description": "Display name of the destination.\n" }, "providerName": { "type": "string", - "description": "Provider label, for example \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\" pulumi-lang-hcl=\"`s3`\"\u003e`s3`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e. Named \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\" pulumi-lang-hcl=\"`provider_name`\"\u003e`providerName`\u003c/span\u003e because \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\" pulumi-lang-hcl=\"`provider`\"\u003e`provider`\u003c/span\u003e is reserved by Terraform." + "description": "Provider label, for example \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\" pulumi-lang-hcl=\"`s3`\"\u003e`s3`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e. Named \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\" pulumi-lang-hcl=\"`provider_name`\"\u003e`providerName`\u003c/span\u003e because \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\" pulumi-lang-hcl=\"`provider`\"\u003e`provider`\u003c/span\u003e is reserved by Terraform.\n" }, "region": { "type": "string", - "description": "Bucket region, for example `us-east-1`." + "description": "Bucket region, for example `us-east-1`.\n" }, "secretAccessKey": { "type": "string", - "description": "S3 secret access key.", + "description": "S3 secret access key.\n", "secret": true }, "serverId": { "type": "string", - "description": "Server this destination is scoped to." + "description": "Server this destination is scoped to.\n" } }, "requiredInputs": [ @@ -2253,130 +2319,210 @@ "properties": { "accessKey": { "type": "string", - "description": "S3 access key ID." + "description": "S3 access key ID.\n" }, "additionalFlags": { "type": "array", "items": { "type": "string" }, - "description": "Extra flags passed to the underlying \u003cspan pulumi-lang-nodejs=\"`rclone`\" pulumi-lang-dotnet=\"`Rclone`\" pulumi-lang-go=\"`rclone`\" pulumi-lang-python=\"`rclone`\" pulumi-lang-yaml=\"`rclone`\" pulumi-lang-java=\"`rclone`\" pulumi-lang-hcl=\"`rclone`\"\u003e`rclone`\u003c/span\u003e invocation." + "description": "Extra flags passed to the underlying \u003cspan pulumi-lang-nodejs=\"`rclone`\" pulumi-lang-dotnet=\"`Rclone`\" pulumi-lang-go=\"`rclone`\" pulumi-lang-python=\"`rclone`\" pulumi-lang-yaml=\"`rclone`\" pulumi-lang-java=\"`rclone`\" pulumi-lang-hcl=\"`rclone`\"\u003e`rclone`\u003c/span\u003e invocation.\n" }, "bucket": { "type": "string", - "description": "Bucket name." + "description": "Bucket name.\n" }, "createdAt": { "type": "string", - "description": "Timestamp of when the destination was created." + "description": "Timestamp of when the destination was created.\n" }, "endpoint": { "type": "string", - "description": "S3 endpoint URL." + "description": "S3 endpoint URL.\n" }, "name": { "type": "string", - "description": "Display name of the destination." + "description": "Display name of the destination.\n" }, "providerName": { "type": "string", - "description": "Provider label, for example \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\" pulumi-lang-hcl=\"`s3`\"\u003e`s3`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e. Named \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\" pulumi-lang-hcl=\"`provider_name`\"\u003e`providerName`\u003c/span\u003e because \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\" pulumi-lang-hcl=\"`provider`\"\u003e`provider`\u003c/span\u003e is reserved by Terraform." + "description": "Provider label, for example \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\" pulumi-lang-hcl=\"`s3`\"\u003e`s3`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e. Named \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\" pulumi-lang-hcl=\"`provider_name`\"\u003e`providerName`\u003c/span\u003e because \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\" pulumi-lang-hcl=\"`provider`\"\u003e`provider`\u003c/span\u003e is reserved by Terraform.\n" }, "region": { "type": "string", - "description": "Bucket region, for example `us-east-1`." + "description": "Bucket region, for example `us-east-1`.\n" }, "secretAccessKey": { "type": "string", - "description": "S3 secret access key.", + "description": "S3 secret access key.\n", "secret": true }, "serverId": { "type": "string", - "description": "Server this destination is scoped to." + "description": "Server this destination is scoped to.\n" + } + }, + "type": "object" + } + }, + "dokploy:index/dnsProvider:DnsProvider": { + "description": "A DNS provider connection Dokploy uses to create records for domains automatically.\n\n\u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\" pulumi-lang-hcl=\"`config`\"\u003e`config`\u003c/span\u003e is a JSON object whose shape depends on `providerType`:\n\n", + "properties": { + "config": { + "type": "string", + "description": "Provider credentials as a JSON object, including the `providerType` discriminator.\n", + "secret": true + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the connection was created.\n" + }, + "name": { + "type": "string", + "description": "Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.\n" + }, + "organizationId": { + "type": "string", + "description": "Organization that owns the connection.\n" + }, + "providerType": { + "type": "string", + "description": "Provider kind derived from \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\" pulumi-lang-hcl=\"`config`\"\u003e`config`\u003c/span\u003e: \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`route53`\" pulumi-lang-dotnet=\"`Route53`\" pulumi-lang-go=\"`route53`\" pulumi-lang-python=\"`route53`\" pulumi-lang-yaml=\"`route53`\" pulumi-lang-java=\"`route53`\" pulumi-lang-hcl=\"`route53`\"\u003e`route53`\u003c/span\u003e.\n" + } + }, + "required": [ + "config", + "createdAt", + "name", + "organizationId", + "providerType" + ], + "inputProperties": { + "config": { + "type": "string", + "description": "Provider credentials as a JSON object, including the `providerType` discriminator.\n", + "secret": true + }, + "name": { + "type": "string", + "description": "Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.\n" + } + }, + "requiredInputs": [ + "config" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering DnsProvider resources.\n", + "properties": { + "config": { + "type": "string", + "description": "Provider credentials as a JSON object, including the `providerType` discriminator.\n", + "secret": true + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the connection was created.\n" + }, + "name": { + "type": "string", + "description": "Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`.\n" + }, + "organizationId": { + "type": "string", + "description": "Organization that owns the connection.\n" + }, + "providerType": { + "type": "string", + "description": "Provider kind derived from \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\" pulumi-lang-hcl=\"`config`\"\u003e`config`\u003c/span\u003e: \u003cspan pulumi-lang-nodejs=\"`cloudflare`\" pulumi-lang-dotnet=\"`Cloudflare`\" pulumi-lang-go=\"`cloudflare`\" pulumi-lang-python=\"`cloudflare`\" pulumi-lang-yaml=\"`cloudflare`\" pulumi-lang-java=\"`cloudflare`\" pulumi-lang-hcl=\"`cloudflare`\"\u003e`cloudflare`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`route53`\" pulumi-lang-dotnet=\"`Route53`\" pulumi-lang-go=\"`route53`\" pulumi-lang-python=\"`route53`\" pulumi-lang-yaml=\"`route53`\" pulumi-lang-java=\"`route53`\" pulumi-lang-hcl=\"`route53`\"\u003e`route53`\u003c/span\u003e.\n" } }, "type": "object" } }, "dokploy:index/domain:Domain": { + "description": "A domain routed to an application or a Compose service through Dokploy's Traefik instance.\n\nSet exactly one of \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\" pulumi-lang-hcl=\"`application_id`\"\u003e`applicationId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e. When targeting a Compose stack, \u003cspan pulumi-lang-nodejs=\"`serviceName`\" pulumi-lang-dotnet=\"`ServiceName`\" pulumi-lang-go=\"`serviceName`\" pulumi-lang-python=\"`service_name`\" pulumi-lang-yaml=\"`serviceName`\" pulumi-lang-java=\"`serviceName`\" pulumi-lang-hcl=\"`service_name`\"\u003e`serviceName`\u003c/span\u003e selects which service in the stack receives the traffic.\n", "properties": { "applicationId": { "type": "string", - "description": "Application this domain routes to." + "description": "Application this domain routes to.\n" }, "certificateType": { "type": "string", - "description": "How TLS certificates are obtained. Use \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e for automatic certificates. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "How TLS certificates are obtained. Use \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e for automatic certificates. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "composeId": { "type": "string", - "description": "Compose stack this domain routes to." + "description": "Compose stack this domain routes to.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the domain was created." + "description": "RFC 3339 timestamp of when the domain was created.\n" }, "customCertResolver": { "type": "string", - "description": "Traefik certificate resolver name, when \u003cspan pulumi-lang-nodejs=\"`certificateType`\" pulumi-lang-dotnet=\"`CertificateType`\" pulumi-lang-go=\"`certificateType`\" pulumi-lang-python=\"`certificate_type`\" pulumi-lang-yaml=\"`certificateType`\" pulumi-lang-java=\"`certificateType`\" pulumi-lang-hcl=\"`certificate_type`\"\u003e`certificateType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "Traefik certificate resolver name, when \u003cspan pulumi-lang-nodejs=\"`certificateType`\" pulumi-lang-dotnet=\"`CertificateType`\" pulumi-lang-go=\"`certificateType`\" pulumi-lang-python=\"`certificate_type`\" pulumi-lang-yaml=\"`certificateType`\" pulumi-lang-java=\"`certificateType`\" pulumi-lang-hcl=\"`certificate_type`\"\u003e`certificateType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "customEntrypoint": { "type": "string", - "description": "Traefik entrypoint to bind, when not using the defaults." + "description": "Traefik entrypoint to bind, when not using the defaults.\n" }, "domainType": { "type": "string", - "description": "What kind of target this domain points at. Valid values: \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\" pulumi-lang-hcl=\"`preview`\"\u003e`preview`\u003c/span\u003e." + "description": "What kind of target this domain points at. Valid values: \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\" pulumi-lang-hcl=\"`preview`\"\u003e`preview`\u003c/span\u003e.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the domain is served. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.\n" }, "forwardAuthEnabled": { "type": "boolean", - "description": "Protect this domain with Dokploy's forward auth." + "description": "Protect this domain with Dokploy's forward auth.\n" }, "host": { "type": "string", - "description": "Fully-qualified hostname, for example `api.example.com`." + "description": "Fully-qualified hostname, for example `api.example.com`.\n" }, "https": { "type": "boolean", - "description": "Serve the domain over HTTPS and redirect HTTP traffic to it." + "description": "Serve the domain over HTTPS and redirect HTTP traffic to it.\n" }, "internalPath": { "type": "string", - "description": "Path the request is rewritten to before it reaches the container, defaults to `/`." + "description": "Path the request is rewritten to before it reaches the container, defaults to `/`.\n" }, "middlewares": { "type": "array", "items": { "type": "string" }, - "description": "Names of Traefik middlewares to apply." + "description": "Names of Traefik middlewares to apply.\n" }, "path": { "type": "string", - "description": "Path prefix this domain routes, defaults to `/`." + "description": "Path prefix this domain routes, defaults to `/`.\n" }, "port": { "type": "integer", - "description": "Container port that receives the traffic, defaults to \u003cspan pulumi-lang-nodejs=\"`3000`\" pulumi-lang-dotnet=\"`3000`\" pulumi-lang-go=\"`3000`\" pulumi-lang-python=\"`3000`\" pulumi-lang-yaml=\"`3000`\" pulumi-lang-java=\"`3000`\" pulumi-lang-hcl=\"`3000`\"\u003e`3000`\u003c/span\u003e." + "description": "Container port that receives the traffic, defaults to \u003cspan pulumi-lang-nodejs=\"`3000`\" pulumi-lang-dotnet=\"`3000`\" pulumi-lang-go=\"`3000`\" pulumi-lang-python=\"`3000`\" pulumi-lang-yaml=\"`3000`\" pulumi-lang-java=\"`3000`\" pulumi-lang-hcl=\"`3000`\"\u003e`3000`\u003c/span\u003e.\n" }, "previewDeploymentId": { "type": "string", - "description": "Preview deployment this domain routes to." + "description": "Preview deployment this domain routes to.\n" }, "serviceName": { "type": "string", - "description": "Name of the service inside a Compose stack that receives the traffic. Required when \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e is set." + "description": "Name of the service inside a Compose stack that receives the traffic. Required when \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e is set.\n" }, "stripPath": { "type": "boolean", - "description": "Strip \u003cspan pulumi-lang-nodejs=\"`path`\" pulumi-lang-dotnet=\"`Path`\" pulumi-lang-go=\"`path`\" pulumi-lang-python=\"`path`\" pulumi-lang-yaml=\"`path`\" pulumi-lang-java=\"`path`\" pulumi-lang-hcl=\"`path`\"\u003e`path`\u003c/span\u003e from the request before forwarding it." + "description": "Strip \u003cspan pulumi-lang-nodejs=\"`path`\" pulumi-lang-dotnet=\"`Path`\" pulumi-lang-go=\"`path`\" pulumi-lang-python=\"`path`\" pulumi-lang-yaml=\"`path`\" pulumi-lang-java=\"`path`\" pulumi-lang-hcl=\"`path`\"\u003e`path`\u003c/span\u003e from the request before forwarding it.\n" } }, "required": [ "certificateType", "createdAt", "domainType", + "enabled", "forwardAuthEnabled", "host", "https", @@ -2389,70 +2535,74 @@ "inputProperties": { "applicationId": { "type": "string", - "description": "Application this domain routes to." + "description": "Application this domain routes to.\n" }, "certificateType": { "type": "string", - "description": "How TLS certificates are obtained. Use \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e for automatic certificates. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "How TLS certificates are obtained. Use \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e for automatic certificates. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "composeId": { "type": "string", - "description": "Compose stack this domain routes to." + "description": "Compose stack this domain routes to.\n" }, "customCertResolver": { "type": "string", - "description": "Traefik certificate resolver name, when \u003cspan pulumi-lang-nodejs=\"`certificateType`\" pulumi-lang-dotnet=\"`CertificateType`\" pulumi-lang-go=\"`certificateType`\" pulumi-lang-python=\"`certificate_type`\" pulumi-lang-yaml=\"`certificateType`\" pulumi-lang-java=\"`certificateType`\" pulumi-lang-hcl=\"`certificate_type`\"\u003e`certificateType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "Traefik certificate resolver name, when \u003cspan pulumi-lang-nodejs=\"`certificateType`\" pulumi-lang-dotnet=\"`CertificateType`\" pulumi-lang-go=\"`certificateType`\" pulumi-lang-python=\"`certificate_type`\" pulumi-lang-yaml=\"`certificateType`\" pulumi-lang-java=\"`certificateType`\" pulumi-lang-hcl=\"`certificate_type`\"\u003e`certificateType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "customEntrypoint": { "type": "string", - "description": "Traefik entrypoint to bind, when not using the defaults." + "description": "Traefik entrypoint to bind, when not using the defaults.\n" }, "domainType": { "type": "string", - "description": "What kind of target this domain points at. Valid values: \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\" pulumi-lang-hcl=\"`preview`\"\u003e`preview`\u003c/span\u003e." + "description": "What kind of target this domain points at. Valid values: \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\" pulumi-lang-hcl=\"`preview`\"\u003e`preview`\u003c/span\u003e.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the domain is served. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.\n" }, "forwardAuthEnabled": { "type": "boolean", - "description": "Protect this domain with Dokploy's forward auth." + "description": "Protect this domain with Dokploy's forward auth.\n" }, "host": { "type": "string", - "description": "Fully-qualified hostname, for example `api.example.com`." + "description": "Fully-qualified hostname, for example `api.example.com`.\n" }, "https": { "type": "boolean", - "description": "Serve the domain over HTTPS and redirect HTTP traffic to it." + "description": "Serve the domain over HTTPS and redirect HTTP traffic to it.\n" }, "internalPath": { "type": "string", - "description": "Path the request is rewritten to before it reaches the container, defaults to `/`." + "description": "Path the request is rewritten to before it reaches the container, defaults to `/`.\n" }, "middlewares": { "type": "array", "items": { "type": "string" }, - "description": "Names of Traefik middlewares to apply." + "description": "Names of Traefik middlewares to apply.\n" }, "path": { "type": "string", - "description": "Path prefix this domain routes, defaults to `/`." + "description": "Path prefix this domain routes, defaults to `/`.\n" }, "port": { "type": "integer", - "description": "Container port that receives the traffic, defaults to \u003cspan pulumi-lang-nodejs=\"`3000`\" pulumi-lang-dotnet=\"`3000`\" pulumi-lang-go=\"`3000`\" pulumi-lang-python=\"`3000`\" pulumi-lang-yaml=\"`3000`\" pulumi-lang-java=\"`3000`\" pulumi-lang-hcl=\"`3000`\"\u003e`3000`\u003c/span\u003e." + "description": "Container port that receives the traffic, defaults to \u003cspan pulumi-lang-nodejs=\"`3000`\" pulumi-lang-dotnet=\"`3000`\" pulumi-lang-go=\"`3000`\" pulumi-lang-python=\"`3000`\" pulumi-lang-yaml=\"`3000`\" pulumi-lang-java=\"`3000`\" pulumi-lang-hcl=\"`3000`\"\u003e`3000`\u003c/span\u003e.\n" }, "previewDeploymentId": { "type": "string", - "description": "Preview deployment this domain routes to." + "description": "Preview deployment this domain routes to.\n" }, "serviceName": { "type": "string", - "description": "Name of the service inside a Compose stack that receives the traffic. Required when \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e is set." + "description": "Name of the service inside a Compose stack that receives the traffic. Required when \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e is set.\n" }, "stripPath": { "type": "boolean", - "description": "Strip \u003cspan pulumi-lang-nodejs=\"`path`\" pulumi-lang-dotnet=\"`Path`\" pulumi-lang-go=\"`path`\" pulumi-lang-python=\"`path`\" pulumi-lang-yaml=\"`path`\" pulumi-lang-java=\"`path`\" pulumi-lang-hcl=\"`path`\"\u003e`path`\u003c/span\u003e from the request before forwarding it." + "description": "Strip \u003cspan pulumi-lang-nodejs=\"`path`\" pulumi-lang-dotnet=\"`Path`\" pulumi-lang-go=\"`path`\" pulumi-lang-python=\"`path`\" pulumi-lang-yaml=\"`path`\" pulumi-lang-java=\"`path`\" pulumi-lang-hcl=\"`path`\"\u003e`path`\u003c/span\u003e from the request before forwarding it.\n" } }, "requiredInputs": [ @@ -2463,104 +2613,109 @@ "properties": { "applicationId": { "type": "string", - "description": "Application this domain routes to." + "description": "Application this domain routes to.\n" }, "certificateType": { "type": "string", - "description": "How TLS certificates are obtained. Use \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e for automatic certificates. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "How TLS certificates are obtained. Use \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e for automatic certificates. Valid values: \u003cspan pulumi-lang-nodejs=\"`letsencrypt`\" pulumi-lang-dotnet=\"`Letsencrypt`\" pulumi-lang-go=\"`letsencrypt`\" pulumi-lang-python=\"`letsencrypt`\" pulumi-lang-yaml=\"`letsencrypt`\" pulumi-lang-java=\"`letsencrypt`\" pulumi-lang-hcl=\"`letsencrypt`\"\u003e`letsencrypt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\" pulumi-lang-hcl=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "composeId": { "type": "string", - "description": "Compose stack this domain routes to." + "description": "Compose stack this domain routes to.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the domain was created." + "description": "RFC 3339 timestamp of when the domain was created.\n" }, "customCertResolver": { "type": "string", - "description": "Traefik certificate resolver name, when \u003cspan pulumi-lang-nodejs=\"`certificateType`\" pulumi-lang-dotnet=\"`CertificateType`\" pulumi-lang-go=\"`certificateType`\" pulumi-lang-python=\"`certificate_type`\" pulumi-lang-yaml=\"`certificateType`\" pulumi-lang-java=\"`certificateType`\" pulumi-lang-hcl=\"`certificate_type`\"\u003e`certificateType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e." + "description": "Traefik certificate resolver name, when \u003cspan pulumi-lang-nodejs=\"`certificateType`\" pulumi-lang-dotnet=\"`CertificateType`\" pulumi-lang-go=\"`certificateType`\" pulumi-lang-python=\"`certificate_type`\" pulumi-lang-yaml=\"`certificateType`\" pulumi-lang-java=\"`certificateType`\" pulumi-lang-hcl=\"`certificate_type`\"\u003e`certificateType`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\" pulumi-lang-hcl=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n" }, "customEntrypoint": { "type": "string", - "description": "Traefik entrypoint to bind, when not using the defaults." + "description": "Traefik entrypoint to bind, when not using the defaults.\n" }, "domainType": { "type": "string", - "description": "What kind of target this domain points at. Valid values: \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\" pulumi-lang-hcl=\"`preview`\"\u003e`preview`\u003c/span\u003e." + "description": "What kind of target this domain points at. Valid values: \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\" pulumi-lang-hcl=\"`preview`\"\u003e`preview`\u003c/span\u003e.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the domain is served. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it.\n" }, "forwardAuthEnabled": { "type": "boolean", - "description": "Protect this domain with Dokploy's forward auth." + "description": "Protect this domain with Dokploy's forward auth.\n" }, "host": { "type": "string", - "description": "Fully-qualified hostname, for example `api.example.com`." + "description": "Fully-qualified hostname, for example `api.example.com`.\n" }, "https": { "type": "boolean", - "description": "Serve the domain over HTTPS and redirect HTTP traffic to it." + "description": "Serve the domain over HTTPS and redirect HTTP traffic to it.\n" }, "internalPath": { "type": "string", - "description": "Path the request is rewritten to before it reaches the container, defaults to `/`." + "description": "Path the request is rewritten to before it reaches the container, defaults to `/`.\n" }, "middlewares": { "type": "array", "items": { "type": "string" }, - "description": "Names of Traefik middlewares to apply." + "description": "Names of Traefik middlewares to apply.\n" }, "path": { "type": "string", - "description": "Path prefix this domain routes, defaults to `/`." + "description": "Path prefix this domain routes, defaults to `/`.\n" }, "port": { "type": "integer", - "description": "Container port that receives the traffic, defaults to \u003cspan pulumi-lang-nodejs=\"`3000`\" pulumi-lang-dotnet=\"`3000`\" pulumi-lang-go=\"`3000`\" pulumi-lang-python=\"`3000`\" pulumi-lang-yaml=\"`3000`\" pulumi-lang-java=\"`3000`\" pulumi-lang-hcl=\"`3000`\"\u003e`3000`\u003c/span\u003e." + "description": "Container port that receives the traffic, defaults to \u003cspan pulumi-lang-nodejs=\"`3000`\" pulumi-lang-dotnet=\"`3000`\" pulumi-lang-go=\"`3000`\" pulumi-lang-python=\"`3000`\" pulumi-lang-yaml=\"`3000`\" pulumi-lang-java=\"`3000`\" pulumi-lang-hcl=\"`3000`\"\u003e`3000`\u003c/span\u003e.\n" }, "previewDeploymentId": { "type": "string", - "description": "Preview deployment this domain routes to." + "description": "Preview deployment this domain routes to.\n" }, "serviceName": { "type": "string", - "description": "Name of the service inside a Compose stack that receives the traffic. Required when \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e is set." + "description": "Name of the service inside a Compose stack that receives the traffic. Required when \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e is set.\n" }, "stripPath": { "type": "boolean", - "description": "Strip \u003cspan pulumi-lang-nodejs=\"`path`\" pulumi-lang-dotnet=\"`Path`\" pulumi-lang-go=\"`path`\" pulumi-lang-python=\"`path`\" pulumi-lang-yaml=\"`path`\" pulumi-lang-java=\"`path`\" pulumi-lang-hcl=\"`path`\"\u003e`path`\u003c/span\u003e from the request before forwarding it." + "description": "Strip \u003cspan pulumi-lang-nodejs=\"`path`\" pulumi-lang-dotnet=\"`Path`\" pulumi-lang-go=\"`path`\" pulumi-lang-python=\"`path`\" pulumi-lang-yaml=\"`path`\" pulumi-lang-java=\"`path`\" pulumi-lang-hcl=\"`path`\"\u003e`path`\u003c/span\u003e from the request before forwarding it.\n" } }, "type": "object" } }, "dokploy:index/environment:Environment": { + "description": "An environment inside a Dokploy project, such as \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e. Services belong to an environment rather than directly to a project.\n\nDokploy creates a default \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e environment with every project; reference it via `dokploy_project.\u003cname\u003e.default_environment_id` instead of declaring it here.\n", "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the environment was created." + "description": "RFC 3339 timestamp of when the environment was created.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "env": { "type": "string", - "description": "Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment." + "description": "Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.\n" }, "isDefault": { "type": "boolean", - "description": "Whether this is the project's default environment." + "description": "Whether this is the project's default environment.\n" }, "name": { "type": "string", - "description": "Environment name, for example \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e." + "description": "Environment name, for example \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e.\n" }, "projectId": { "type": "string", - "description": "Project this environment belongs to." + "description": "Project this environment belongs to.\n" } }, "required": [ @@ -2573,19 +2728,19 @@ "inputProperties": { "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "env": { "type": "string", - "description": "Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment." + "description": "Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.\n" }, "name": { "type": "string", - "description": "Environment name, for example \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e." + "description": "Environment name, for example \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e.\n" }, "projectId": { "type": "string", - "description": "Project this environment belongs to." + "description": "Project this environment belongs to.\n" } }, "requiredInputs": [ @@ -2596,177 +2751,636 @@ "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the environment was created." + "description": "RFC 3339 timestamp of when the environment was created.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "env": { "type": "string", - "description": "Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment." + "description": "Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.\n" }, "isDefault": { "type": "boolean", - "description": "Whether this is the project's default environment." + "description": "Whether this is the project's default environment.\n" }, "name": { "type": "string", - "description": "Environment name, for example \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e." + "description": "Environment name, for example \u003cspan pulumi-lang-nodejs=\"`staging`\" pulumi-lang-dotnet=\"`Staging`\" pulumi-lang-go=\"`staging`\" pulumi-lang-python=\"`staging`\" pulumi-lang-yaml=\"`staging`\" pulumi-lang-java=\"`staging`\" pulumi-lang-hcl=\"`staging`\"\u003e`staging`\u003c/span\u003e.\n" }, "projectId": { "type": "string", - "description": "Project this environment belongs to." + "description": "Project this environment belongs to.\n" } }, "type": "object" } }, - "dokploy:index/mariaDb:MariaDb": { + "dokploy:index/libsql:Libsql": { + "description": "A managed libSQL instance running on Dokploy.\n\n\u003e Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.\n\n\u003e Credentials are stored in Terraform state. Use a state backend with encryption at rest.\n\nlibSQL runs as a \u003cspan pulumi-lang-nodejs=\"`sqld`\" pulumi-lang-dotnet=\"`Sqld`\" pulumi-lang-go=\"`sqld`\" pulumi-lang-python=\"`sqld`\" pulumi-lang-yaml=\"`sqld`\" pulumi-lang-java=\"`sqld`\" pulumi-lang-hcl=\"`sqld`\"\u003e`sqld`\u003c/span\u003e server. A \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e node owns the data; a \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e node follows a primary named by \u003cspan pulumi-lang-nodejs=\"`sqldPrimaryUrl`\" pulumi-lang-dotnet=\"`SqldPrimaryUrl`\" pulumi-lang-go=\"`sqldPrimaryUrl`\" pulumi-lang-python=\"`sqld_primary_url`\" pulumi-lang-yaml=\"`sqldPrimaryUrl`\" pulumi-lang-java=\"`sqldPrimaryUrl`\" pulumi-lang-hcl=\"`sqld_primary_url`\"\u003e`sqldPrimaryUrl`\u003c/span\u003e.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated from \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." - }, - "args": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Arguments appended to the container command." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." - }, - "databaseName": { - "type": "string", - "description": "Name of the database to create." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", - "secret": true - }, - "databaseRootPassword": { - "type": "string", - "description": "Password for the MariaDB \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.", + "description": "Password for the database user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MariaDB image to run, for example `mariadb:11`." + "description": "libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.\n" + }, + "enableNamespaces": { + "type": "boolean", + "description": "Serve multiple logical databases from one instance through libSQL namespaces.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" + }, + "externalAdminPort": { + "type": "integer", + "description": "Host port exposing the admin API.\n" + }, + "externalGrpcPort": { + "type": "integer", + "description": "Host port exposing the gRPC replication endpoint.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port exposing the HTTP API.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "sqldNode": { + "type": "string", + "description": "Role this node plays in a libSQL cluster. Valid values: \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e.\n" + }, + "sqldPrimaryUrl": { + "type": "string", + "description": "URL of the primary node, when \u003cspan pulumi-lang-nodejs=\"`sqldNode`\" pulumi-lang-dotnet=\"`SqldNode`\" pulumi-lang-go=\"`sqldNode`\" pulumi-lang-python=\"`sqld_node`\" pulumi-lang-yaml=\"`sqldNode`\" pulumi-lang-java=\"`sqldNode`\" pulumi-lang-hcl=\"`sqld_node`\"\u003e`sqldNode`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." - }, - "ulimitsSwarm": { - "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" + } + }, + "required": [ + "appName", + "applicationStatus", + "createdAt", + "databasePassword", + "databaseUser", + "detachDokployNetwork", + "dockerImage", + "enableNamespaces", + "environmentId", + "name", + "networkIds", + "replicas", + "sqldNode" + ], + "inputProperties": { + "appName": { + "type": "string", + "description": "Unique Docker service name. Generated from \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.\n" + }, + "command": { + "type": "string", + "description": "Override the container entrypoint command.\n" + }, + "cpuLimit": { + "type": "string", + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" + }, + "cpuReservation": { + "type": "string", + "description": "Soft CPU reservation, for example `0.5`.\n" + }, + "databasePassword": { + "type": "string", + "description": "Password for the database user.\n", + "secret": true + }, + "databaseUser": { + "type": "string", + "description": "Database user to create.\n" + }, + "description": { + "type": "string", + "description": "Free-form description.\n" + }, + "detachDokployNetwork": { + "type": "boolean", + "description": "Detach the service from the shared `dokploy-network`.\n" + }, + "dockerImage": { + "type": "string", + "description": "libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.\n" + }, + "enableNamespaces": { + "type": "boolean", + "description": "Serve multiple logical databases from one instance through libSQL namespaces.\n" + }, + "endpointSpecSwarm": { + "type": "string", + "description": "Docker Swarm endpoint specification, as a JSON object.\n" + }, + "env": { + "type": "string", + "description": "Environment variables in `KEY=value` format, one per line.\n" + }, + "environmentId": { + "type": "string", + "description": "Environment this database belongs to.\n" + }, + "externalAdminPort": { + "type": "integer", + "description": "Host port exposing the admin API.\n" + }, + "externalGrpcPort": { + "type": "integer", + "description": "Host port exposing the gRPC replication endpoint.\n" + }, + "externalPort": { + "type": "integer", + "description": "Host port exposing the HTTP API.\n" + }, + "healthCheckSwarm": { + "type": "string", + "description": "Docker Swarm health check configuration, as a JSON object.\n" + }, + "labelsSwarm": { + "type": "string", + "description": "Docker Swarm service labels, as a JSON object.\n" + }, + "memoryLimit": { + "type": "string", + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" + }, + "memoryReservation": { + "type": "string", + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" + }, + "modeSwarm": { + "type": "string", + "description": "Docker Swarm service mode, as a JSON object.\n" + }, + "name": { + "type": "string", + "description": "Display name of the database.\n" + }, + "networkIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "IDs of additional Docker networks to attach.\n" + }, + "networkSwarm": { + "type": "string", + "description": "Docker Swarm network attachments, as a JSON array.\n" + }, + "placementSwarm": { + "type": "string", + "description": "Docker Swarm placement constraints, as a JSON object.\n" + }, + "replicas": { + "type": "integer", + "description": "Number of replicas to run.\n" + }, + "restartPolicySwarm": { + "type": "string", + "description": "Docker Swarm restart policy, as a JSON object.\n" + }, + "rollbackConfigSwarm": { + "type": "string", + "description": "Docker Swarm rollback configuration, as a JSON object.\n" + }, + "serverId": { + "type": "string", + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "sqldNode": { + "type": "string", + "description": "Role this node plays in a libSQL cluster. Valid values: \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e.\n" + }, + "sqldPrimaryUrl": { + "type": "string", + "description": "URL of the primary node, when \u003cspan pulumi-lang-nodejs=\"`sqldNode`\" pulumi-lang-dotnet=\"`SqldNode`\" pulumi-lang-go=\"`sqldNode`\" pulumi-lang-python=\"`sqld_node`\" pulumi-lang-yaml=\"`sqldNode`\" pulumi-lang-java=\"`sqldNode`\" pulumi-lang-hcl=\"`sqld_node`\"\u003e`sqldNode`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e.\n" + }, + "stopGracePeriodSwarm": { + "type": "integer", + "description": "Grace period in nanoseconds before a container is killed.\n" + }, + "updateConfigSwarm": { + "type": "string", + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" + } + }, + "requiredInputs": [ + "databasePassword", + "databaseUser", + "dockerImage", + "environmentId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Libsql resources.\n", + "properties": { + "appName": { + "type": "string", + "description": "Unique Docker service name. Generated from \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database.\n" + }, + "applicationStatus": { + "type": "string", + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" + }, + "command": { + "type": "string", + "description": "Override the container entrypoint command.\n" + }, + "cpuLimit": { + "type": "string", + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" + }, + "cpuReservation": { + "type": "string", + "description": "Soft CPU reservation, for example `0.5`.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the database was created.\n" + }, + "databasePassword": { + "type": "string", + "description": "Password for the database user.\n", + "secret": true + }, + "databaseUser": { + "type": "string", + "description": "Database user to create.\n" + }, + "description": { + "type": "string", + "description": "Free-form description.\n" + }, + "detachDokployNetwork": { + "type": "boolean", + "description": "Detach the service from the shared `dokploy-network`.\n" + }, + "dockerImage": { + "type": "string", + "description": "libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`.\n" + }, + "enableNamespaces": { + "type": "boolean", + "description": "Serve multiple logical databases from one instance through libSQL namespaces.\n" + }, + "endpointSpecSwarm": { + "type": "string", + "description": "Docker Swarm endpoint specification, as a JSON object.\n" + }, + "env": { + "type": "string", + "description": "Environment variables in `KEY=value` format, one per line.\n" + }, + "environmentId": { + "type": "string", + "description": "Environment this database belongs to.\n" + }, + "externalAdminPort": { + "type": "integer", + "description": "Host port exposing the admin API.\n" + }, + "externalGrpcPort": { + "type": "integer", + "description": "Host port exposing the gRPC replication endpoint.\n" + }, + "externalPort": { + "type": "integer", + "description": "Host port exposing the HTTP API.\n" + }, + "healthCheckSwarm": { + "type": "string", + "description": "Docker Swarm health check configuration, as a JSON object.\n" + }, + "labelsSwarm": { + "type": "string", + "description": "Docker Swarm service labels, as a JSON object.\n" + }, + "memoryLimit": { + "type": "string", + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" + }, + "memoryReservation": { + "type": "string", + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" + }, + "modeSwarm": { + "type": "string", + "description": "Docker Swarm service mode, as a JSON object.\n" + }, + "name": { + "type": "string", + "description": "Display name of the database.\n" + }, + "networkIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "IDs of additional Docker networks to attach.\n" + }, + "networkSwarm": { + "type": "string", + "description": "Docker Swarm network attachments, as a JSON array.\n" + }, + "placementSwarm": { + "type": "string", + "description": "Docker Swarm placement constraints, as a JSON object.\n" + }, + "replicas": { + "type": "integer", + "description": "Number of replicas to run.\n" + }, + "restartPolicySwarm": { + "type": "string", + "description": "Docker Swarm restart policy, as a JSON object.\n" + }, + "rollbackConfigSwarm": { + "type": "string", + "description": "Docker Swarm rollback configuration, as a JSON object.\n" + }, + "serverId": { + "type": "string", + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "sqldNode": { + "type": "string", + "description": "Role this node plays in a libSQL cluster. Valid values: \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\" pulumi-lang-hcl=\"`primary`\"\u003e`primary`\u003c/span\u003e.\n" + }, + "sqldPrimaryUrl": { + "type": "string", + "description": "URL of the primary node, when \u003cspan pulumi-lang-nodejs=\"`sqldNode`\" pulumi-lang-dotnet=\"`SqldNode`\" pulumi-lang-go=\"`sqldNode`\" pulumi-lang-python=\"`sqld_node`\" pulumi-lang-yaml=\"`sqldNode`\" pulumi-lang-java=\"`sqldNode`\" pulumi-lang-hcl=\"`sqld_node`\"\u003e`sqldNode`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`replica`\" pulumi-lang-dotnet=\"`Replica`\" pulumi-lang-go=\"`replica`\" pulumi-lang-python=\"`replica`\" pulumi-lang-yaml=\"`replica`\" pulumi-lang-java=\"`replica`\" pulumi-lang-hcl=\"`replica`\"\u003e`replica`\u003c/span\u003e.\n" + }, + "stopGracePeriodSwarm": { + "type": "integer", + "description": "Grace period in nanoseconds before a container is killed.\n" + }, + "updateConfigSwarm": { + "type": "string", + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" + } + }, + "type": "object" + } + }, + "dokploy:index/mariaDb:MariaDb": { + "description": "A managed MariaDB instance running on Dokploy.\n\n\u003e Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.\n\n\u003e Credentials are stored in Terraform state. Use a state backend with encryption at rest.\n", + "properties": { + "appName": { + "type": "string", + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" + }, + "applicationStatus": { + "type": "string", + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" + }, + "args": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Arguments appended to the container command.\n" + }, + "command": { + "type": "string", + "description": "Override the container entrypoint command.\n" + }, + "cpuLimit": { + "type": "string", + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" + }, + "cpuReservation": { + "type": "string", + "description": "Soft CPU reservation, for example `0.5`.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the database was created.\n" + }, + "databaseName": { + "type": "string", + "description": "Name of the database to create.\n" + }, + "databasePassword": { + "type": "string", + "description": "Password for the database user.\n", + "secret": true + }, + "databaseRootPassword": { + "type": "string", + "description": "Password for the MariaDB \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.\n", + "secret": true + }, + "databaseUser": { + "type": "string", + "description": "Database user to create.\n" + }, + "description": { + "type": "string", + "description": "Free-form description.\n" + }, + "detachDokployNetwork": { + "type": "boolean", + "description": "Detach the service from the shared `dokploy-network`.\n" + }, + "dockerImage": { + "type": "string", + "description": "MariaDB image to run, for example `mariadb:11`.\n" + }, + "endpointSpecSwarm": { + "type": "string", + "description": "Docker Swarm endpoint specification, as a JSON object.\n" + }, + "env": { + "type": "string", + "description": "Environment variables in `KEY=value` format, one per line.\n" + }, + "environmentId": { + "type": "string", + "description": "Environment this database belongs to.\n" + }, + "externalPort": { + "type": "integer", + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" + }, + "healthCheckSwarm": { + "type": "string", + "description": "Docker Swarm health check configuration, as a JSON object.\n" + }, + "labelsSwarm": { + "type": "string", + "description": "Docker Swarm service labels, as a JSON object.\n" + }, + "memoryLimit": { + "type": "string", + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" + }, + "memoryReservation": { + "type": "string", + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" + }, + "modeSwarm": { + "type": "string", + "description": "Docker Swarm service mode, as a JSON object.\n" + }, + "name": { + "type": "string", + "description": "Display name of the database.\n" + }, + "networkIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "IDs of additional Docker networks to attach.\n" + }, + "networkSwarm": { + "type": "string", + "description": "Docker Swarm network attachments, as a JSON array.\n" + }, + "placementSwarm": { + "type": "string", + "description": "Docker Swarm placement constraints, as a JSON object.\n" + }, + "replicas": { + "type": "integer", + "description": "Number of replicas to run.\n" + }, + "restartPolicySwarm": { + "type": "string", + "description": "Docker Swarm restart policy, as a JSON object.\n" + }, + "rollbackConfigSwarm": { + "type": "string", + "description": "Docker Swarm rollback configuration, as a JSON object.\n" + }, + "serverId": { + "type": "string", + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" + }, + "stopGracePeriodSwarm": { + "type": "integer", + "description": "Grace period in nanoseconds before a container is killed.\n" + }, + "ulimitsSwarm": { + "type": "string", + "description": "Docker Swarm ulimits, as a JSON object.\n" + }, + "updateConfigSwarm": { + "type": "string", + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "required": [ @@ -2788,139 +3402,139 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseRootPassword": { "type": "string", - "description": "Password for the MariaDB \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.", + "description": "Password for the MariaDB \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MariaDB image to run, for example `mariadb:11`." + "description": "MariaDB image to run, for example `mariadb:11`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "requiredInputs": [ @@ -2936,292 +3550,293 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseRootPassword": { "type": "string", - "description": "Password for the MariaDB \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.", + "description": "Password for the MariaDB \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MariaDB image to run, for example `mariadb:11`." + "description": "MariaDB image to run, for example `mariadb:11`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "type": "object" } }, "dokploy:index/mongo:Mongo": { + "description": "A managed MongoDB instance running on Dokploy.\n\n\u003e Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.\n\n\u003e Credentials are stored in Terraform state. Use a state backend with encryption at rest.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databasePassword": { "type": "string", - "description": "Password for the root user.", + "description": "Password for the root user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Root username to create." + "description": "Root username to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MongoDB image to run. Defaults to `mongo:8`." + "description": "MongoDB image to run. Defaults to `mongo:8`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicaSets": { "type": "boolean", - "description": "Start the instance as a single-node replica set." + "description": "Start the instance as a single-node replica set.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "required": [ @@ -3242,134 +3857,134 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "databasePassword": { "type": "string", - "description": "Password for the root user.", + "description": "Password for the root user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Root username to create." + "description": "Root username to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MongoDB image to run. Defaults to `mongo:8`." + "description": "MongoDB image to run. Defaults to `mongo:8`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicaSets": { "type": "boolean", - "description": "Start the instance as a single-node replica set." + "description": "Start the instance as a single-node replica set.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "requiredInputs": [ @@ -3382,180 +3997,181 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databasePassword": { "type": "string", - "description": "Password for the root user.", + "description": "Password for the root user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Root username to create." + "description": "Root username to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MongoDB image to run. Defaults to `mongo:8`." + "description": "MongoDB image to run. Defaults to `mongo:8`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicaSets": { "type": "boolean", - "description": "Start the instance as a single-node replica set." + "description": "Start the instance as a single-node replica set.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "type": "object" } }, "dokploy:index/mount:Mount": { + "description": "A volume, bind mount, or config file attached to a Dokploy service.\n\n* `type = \"volume\"` — a named Docker volume; set \u003cspan pulumi-lang-nodejs=\"`volumeName`\" pulumi-lang-dotnet=\"`VolumeName`\" pulumi-lang-go=\"`volumeName`\" pulumi-lang-python=\"`volume_name`\" pulumi-lang-yaml=\"`volumeName`\" pulumi-lang-java=\"`volumeName`\" pulumi-lang-hcl=\"`volume_name`\"\u003e`volumeName`\u003c/span\u003e.\n* `type = \"bind\"` — a path on the host; set \u003cspan pulumi-lang-nodejs=\"`hostPath`\" pulumi-lang-dotnet=\"`HostPath`\" pulumi-lang-go=\"`hostPath`\" pulumi-lang-python=\"`host_path`\" pulumi-lang-yaml=\"`hostPath`\" pulumi-lang-java=\"`hostPath`\" pulumi-lang-hcl=\"`host_path`\"\u003e`hostPath`\u003c/span\u003e.\n* `type = \"file\"` — a file rendered from \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\" pulumi-lang-hcl=\"`content`\"\u003e`content`\u003c/span\u003e; set \u003cspan pulumi-lang-nodejs=\"`filePath`\" pulumi-lang-dotnet=\"`FilePath`\" pulumi-lang-go=\"`filePath`\" pulumi-lang-python=\"`file_path`\" pulumi-lang-yaml=\"`filePath`\" pulumi-lang-java=\"`filePath`\" pulumi-lang-hcl=\"`file_path`\"\u003e`filePath`\u003c/span\u003e.\n\n\u003e **A \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e mount must set \u003cspan pulumi-lang-nodejs=\"`volumeName`\" pulumi-lang-dotnet=\"`VolumeName`\" pulumi-lang-go=\"`volumeName`\" pulumi-lang-python=\"`volume_name`\" pulumi-lang-yaml=\"`volumeName`\" pulumi-lang-java=\"`volumeName`\" pulumi-lang-hcl=\"`volume_name`\"\u003e`volumeName`\u003c/span\u003e.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time.\n", "properties": { "content": { "type": "string", - "description": "Contents of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "Contents of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "filePath": { "type": "string", - "description": "Path of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "Path of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "hostPath": { "type": "string", - "description": "Path on the host, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e." + "description": "Path on the host, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e.\n" }, "mountPath": { "type": "string", - "description": "Path inside the container where the mount appears." + "description": "Path inside the container where the mount appears.\n" }, "serviceId": { "type": "string", - "description": "ID of the service this mount attaches to. Must match \u003cspan pulumi-lang-nodejs=\"`serviceType`\" pulumi-lang-dotnet=\"`ServiceType`\" pulumi-lang-go=\"`serviceType`\" pulumi-lang-python=\"`service_type`\" pulumi-lang-yaml=\"`serviceType`\" pulumi-lang-java=\"`serviceType`\" pulumi-lang-hcl=\"`service_type`\"\u003e`serviceType`\u003c/span\u003e — an application ID, a compose ID, a postgres ID, and so on." + "description": "ID of the service this mount attaches to. Must match \u003cspan pulumi-lang-nodejs=\"`serviceType`\" pulumi-lang-dotnet=\"`ServiceType`\" pulumi-lang-go=\"`serviceType`\" pulumi-lang-python=\"`service_type`\" pulumi-lang-yaml=\"`serviceType`\" pulumi-lang-java=\"`serviceType`\" pulumi-lang-hcl=\"`service_type`\"\u003e`serviceType`\u003c/span\u003e — an application ID, a compose ID, a postgres ID, and so on.\n" }, "serviceType": { "type": "string", - "description": "The kind of service this mount attaches to. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e." + "description": "The kind of service this mount attaches to. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`libsql`\" pulumi-lang-dotnet=\"`Libsql`\" pulumi-lang-go=\"`libsql`\" pulumi-lang-python=\"`libsql`\" pulumi-lang-yaml=\"`libsql`\" pulumi-lang-java=\"`libsql`\" pulumi-lang-hcl=\"`libsql`\"\u003e`libsql`\u003c/span\u003e.\n" }, "type": { "type": "string", - "description": "The kind of mount to create. Valid values: \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "The kind of mount to create. Valid values: \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "volumeName": { "type": "string", - "description": "Name of the Docker volume, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e." + "description": "Name of the Docker volume, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e.\n" } }, "required": [ @@ -3567,35 +4183,35 @@ "inputProperties": { "content": { "type": "string", - "description": "Contents of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "Contents of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "filePath": { "type": "string", - "description": "Path of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "Path of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "hostPath": { "type": "string", - "description": "Path on the host, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e." + "description": "Path on the host, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e.\n" }, "mountPath": { "type": "string", - "description": "Path inside the container where the mount appears." + "description": "Path inside the container where the mount appears.\n" }, "serviceId": { "type": "string", - "description": "ID of the service this mount attaches to. Must match \u003cspan pulumi-lang-nodejs=\"`serviceType`\" pulumi-lang-dotnet=\"`ServiceType`\" pulumi-lang-go=\"`serviceType`\" pulumi-lang-python=\"`service_type`\" pulumi-lang-yaml=\"`serviceType`\" pulumi-lang-java=\"`serviceType`\" pulumi-lang-hcl=\"`service_type`\"\u003e`serviceType`\u003c/span\u003e — an application ID, a compose ID, a postgres ID, and so on." + "description": "ID of the service this mount attaches to. Must match \u003cspan pulumi-lang-nodejs=\"`serviceType`\" pulumi-lang-dotnet=\"`ServiceType`\" pulumi-lang-go=\"`serviceType`\" pulumi-lang-python=\"`service_type`\" pulumi-lang-yaml=\"`serviceType`\" pulumi-lang-java=\"`serviceType`\" pulumi-lang-hcl=\"`service_type`\"\u003e`serviceType`\u003c/span\u003e — an application ID, a compose ID, a postgres ID, and so on.\n" }, "serviceType": { "type": "string", - "description": "The kind of service this mount attaches to. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e." + "description": "The kind of service this mount attaches to. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`libsql`\" pulumi-lang-dotnet=\"`Libsql`\" pulumi-lang-go=\"`libsql`\" pulumi-lang-python=\"`libsql`\" pulumi-lang-yaml=\"`libsql`\" pulumi-lang-java=\"`libsql`\" pulumi-lang-hcl=\"`libsql`\"\u003e`libsql`\u003c/span\u003e.\n" }, "type": { "type": "string", - "description": "The kind of mount to create. Valid values: \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "The kind of mount to create. Valid values: \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "volumeName": { "type": "string", - "description": "Name of the Docker volume, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e." + "description": "Name of the Docker volume, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e.\n" } }, "requiredInputs": [ @@ -3609,185 +4225,186 @@ "properties": { "content": { "type": "string", - "description": "Contents of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "Contents of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "filePath": { "type": "string", - "description": "Path of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "Path of the generated file, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "hostPath": { "type": "string", - "description": "Path on the host, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e." + "description": "Path on the host, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e.\n" }, "mountPath": { "type": "string", - "description": "Path inside the container where the mount appears." + "description": "Path inside the container where the mount appears.\n" }, "serviceId": { "type": "string", - "description": "ID of the service this mount attaches to. Must match \u003cspan pulumi-lang-nodejs=\"`serviceType`\" pulumi-lang-dotnet=\"`ServiceType`\" pulumi-lang-go=\"`serviceType`\" pulumi-lang-python=\"`service_type`\" pulumi-lang-yaml=\"`serviceType`\" pulumi-lang-java=\"`serviceType`\" pulumi-lang-hcl=\"`service_type`\"\u003e`serviceType`\u003c/span\u003e — an application ID, a compose ID, a postgres ID, and so on." + "description": "ID of the service this mount attaches to. Must match \u003cspan pulumi-lang-nodejs=\"`serviceType`\" pulumi-lang-dotnet=\"`ServiceType`\" pulumi-lang-go=\"`serviceType`\" pulumi-lang-python=\"`service_type`\" pulumi-lang-yaml=\"`serviceType`\" pulumi-lang-java=\"`serviceType`\" pulumi-lang-hcl=\"`service_type`\"\u003e`serviceType`\u003c/span\u003e — an application ID, a compose ID, a postgres ID, and so on.\n" }, "serviceType": { "type": "string", - "description": "The kind of service this mount attaches to. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e." + "description": "The kind of service this mount attaches to. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`libsql`\" pulumi-lang-dotnet=\"`Libsql`\" pulumi-lang-go=\"`libsql`\" pulumi-lang-python=\"`libsql`\" pulumi-lang-yaml=\"`libsql`\" pulumi-lang-java=\"`libsql`\" pulumi-lang-hcl=\"`libsql`\"\u003e`libsql`\u003c/span\u003e.\n" }, "type": { "type": "string", - "description": "The kind of mount to create. Valid values: \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e." + "description": "The kind of mount to create. Valid values: \u003cspan pulumi-lang-nodejs=\"`bind`\" pulumi-lang-dotnet=\"`Bind`\" pulumi-lang-go=\"`bind`\" pulumi-lang-python=\"`bind`\" pulumi-lang-yaml=\"`bind`\" pulumi-lang-java=\"`bind`\" pulumi-lang-hcl=\"`bind`\"\u003e`bind`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\" pulumi-lang-hcl=\"`file`\"\u003e`file`\u003c/span\u003e.\n" }, "volumeName": { "type": "string", - "description": "Name of the Docker volume, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e." + "description": "Name of the Docker volume, when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\" pulumi-lang-hcl=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e.\n" } }, "type": "object" } }, "dokploy:index/mySql:MySql": { + "description": "A managed MySQL instance running on Dokploy.\n\n\u003e Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.\n\n\u003e Credentials are stored in Terraform state. Use a state backend with encryption at rest.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseRootPassword": { "type": "string", - "description": "Password for the MySQL \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.", + "description": "Password for the MySQL \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MySQL image to run, for example `mysql:8`." + "description": "MySQL image to run, for example `mysql:8`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "required": [ @@ -3809,139 +4426,139 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseRootPassword": { "type": "string", - "description": "Password for the MySQL \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.", + "description": "Password for the MySQL \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MySQL image to run, for example `mysql:8`." + "description": "MySQL image to run, for example `mysql:8`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "requiredInputs": [ @@ -3957,173 +4574,321 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseRootPassword": { "type": "string", - "description": "Password for the MySQL \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.", + "description": "Password for the MySQL \u003cspan pulumi-lang-nodejs=\"`root`\" pulumi-lang-dotnet=\"`Root`\" pulumi-lang-go=\"`root`\" pulumi-lang-python=\"`root`\" pulumi-lang-yaml=\"`root`\" pulumi-lang-java=\"`root`\" pulumi-lang-hcl=\"`root`\"\u003e`root`\u003c/span\u003e user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "MySQL image to run, for example `mysql:8`." + "description": "MySQL image to run, for example `mysql:8`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" + } + }, + "type": "object" + } + }, + "dokploy:index/network:Network": { + "description": "A Docker network managed by Dokploy.\n\nAttach services to it with \u003cspan pulumi-lang-nodejs=\"`networkIds`\" pulumi-lang-dotnet=\"`NetworkIds`\" pulumi-lang-go=\"`networkIds`\" pulumi-lang-python=\"`network_ids`\" pulumi-lang-yaml=\"`networkIds`\" pulumi-lang-java=\"`networkIds`\" pulumi-lang-hcl=\"`network_ids`\"\u003e`networkIds`\u003c/span\u003e on \u003cspan pulumi-lang-nodejs=\"`dokploy.Application`\" pulumi-lang-dotnet=\"`dokploy.Application`\" pulumi-lang-go=\"`Application`\" pulumi-lang-python=\"`Application`\" pulumi-lang-yaml=\"`dokploy.Application`\" pulumi-lang-java=\"`dokploy.Application`\" pulumi-lang-hcl=\"`dokploy_application`\"\u003e`dokploy.Application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dokploy.Compose`\" pulumi-lang-dotnet=\"`dokploy.Compose`\" pulumi-lang-go=\"`Compose`\" pulumi-lang-python=\"`Compose`\" pulumi-lang-yaml=\"`dokploy.Compose`\" pulumi-lang-java=\"`dokploy.Compose`\" pulumi-lang-hcl=\"`dokploy_compose`\"\u003e`dokploy.Compose`\u003c/span\u003e and the database resources. Every service also joins the shared `dokploy-network` unless \u003cspan pulumi-lang-nodejs=\"`detachDokployNetwork`\" pulumi-lang-dotnet=\"`DetachDokployNetwork`\" pulumi-lang-go=\"`detachDokployNetwork`\" pulumi-lang-python=\"`detach_dokploy_network`\" pulumi-lang-yaml=\"`detachDokployNetwork`\" pulumi-lang-java=\"`detachDokployNetwork`\" pulumi-lang-hcl=\"`detach_dokploy_network`\"\u003e`detachDokployNetwork`\u003c/span\u003e is set.\n\n\u003e Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy.\n", + "properties": { + "attachable": { + "type": "boolean", + "description": "Allow standalone containers to attach to an overlay network.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the network was created.\n" + }, + "driver": { + "type": "string", + "description": "Network driver. Use \u003cspan pulumi-lang-nodejs=\"`overlay`\" pulumi-lang-dotnet=\"`Overlay`\" pulumi-lang-go=\"`overlay`\" pulumi-lang-python=\"`overlay`\" pulumi-lang-yaml=\"`overlay`\" pulumi-lang-java=\"`overlay`\" pulumi-lang-hcl=\"`overlay`\"\u003e`overlay`\u003c/span\u003e for multi-node Swarm clusters and \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\" pulumi-lang-hcl=\"`bridge`\"\u003e`bridge`\u003c/span\u003e for a single host. Valid values: \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\" pulumi-lang-hcl=\"`bridge`\"\u003e`bridge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`overlay`\" pulumi-lang-dotnet=\"`Overlay`\" pulumi-lang-go=\"`overlay`\" pulumi-lang-python=\"`overlay`\" pulumi-lang-yaml=\"`overlay`\" pulumi-lang-java=\"`overlay`\" pulumi-lang-hcl=\"`overlay`\"\u003e`overlay`\u003c/span\u003e.\n" + }, + "enableIpv4": { + "type": "boolean", + "description": "Enable IPv4 address allocation.\n" + }, + "enableIpv6": { + "type": "boolean", + "description": "Enable IPv6 address allocation.\n" + }, + "internal": { + "type": "boolean", + "description": "Isolate the network from external access.\n" + }, + "ipam": { + "type": "string", + "description": "Custom IP address management, as a JSON object with \u003cspan pulumi-lang-nodejs=\"`subnet`\" pulumi-lang-dotnet=\"`Subnet`\" pulumi-lang-go=\"`subnet`\" pulumi-lang-python=\"`subnet`\" pulumi-lang-yaml=\"`subnet`\" pulumi-lang-java=\"`subnet`\" pulumi-lang-hcl=\"`subnet`\"\u003e`subnet`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gateway`\" pulumi-lang-dotnet=\"`Gateway`\" pulumi-lang-go=\"`gateway`\" pulumi-lang-python=\"`gateway`\" pulumi-lang-yaml=\"`gateway`\" pulumi-lang-java=\"`gateway`\" pulumi-lang-hcl=\"`gateway`\"\u003e`gateway`\u003c/span\u003e and `ipRange` keys. Leave unset to let Docker choose a subnet.\n" + }, + "mtu": { + "type": "integer", + "description": "Maximum transmission unit for the network. Leave unset to use Docker's default.\n" + }, + "name": { + "type": "string", + "description": "Name of the Docker network.\n" + }, + "organizationId": { + "type": "string", + "description": "Organization that owns the network.\n" + }, + "serverId": { + "type": "string", + "description": "Remote server to create the network on. Omit to use the Dokploy host itself.\n" + } + }, + "required": [ + "attachable", + "createdAt", + "driver", + "enableIpv4", + "enableIpv6", + "internal", + "name", + "organizationId" + ], + "inputProperties": { + "attachable": { + "type": "boolean", + "description": "Allow standalone containers to attach to an overlay network.\n" + }, + "driver": { + "type": "string", + "description": "Network driver. Use \u003cspan pulumi-lang-nodejs=\"`overlay`\" pulumi-lang-dotnet=\"`Overlay`\" pulumi-lang-go=\"`overlay`\" pulumi-lang-python=\"`overlay`\" pulumi-lang-yaml=\"`overlay`\" pulumi-lang-java=\"`overlay`\" pulumi-lang-hcl=\"`overlay`\"\u003e`overlay`\u003c/span\u003e for multi-node Swarm clusters and \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\" pulumi-lang-hcl=\"`bridge`\"\u003e`bridge`\u003c/span\u003e for a single host. Valid values: \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\" pulumi-lang-hcl=\"`bridge`\"\u003e`bridge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`overlay`\" pulumi-lang-dotnet=\"`Overlay`\" pulumi-lang-go=\"`overlay`\" pulumi-lang-python=\"`overlay`\" pulumi-lang-yaml=\"`overlay`\" pulumi-lang-java=\"`overlay`\" pulumi-lang-hcl=\"`overlay`\"\u003e`overlay`\u003c/span\u003e.\n" + }, + "enableIpv4": { + "type": "boolean", + "description": "Enable IPv4 address allocation.\n" + }, + "enableIpv6": { + "type": "boolean", + "description": "Enable IPv6 address allocation.\n" + }, + "internal": { + "type": "boolean", + "description": "Isolate the network from external access.\n" + }, + "ipam": { + "type": "string", + "description": "Custom IP address management, as a JSON object with \u003cspan pulumi-lang-nodejs=\"`subnet`\" pulumi-lang-dotnet=\"`Subnet`\" pulumi-lang-go=\"`subnet`\" pulumi-lang-python=\"`subnet`\" pulumi-lang-yaml=\"`subnet`\" pulumi-lang-java=\"`subnet`\" pulumi-lang-hcl=\"`subnet`\"\u003e`subnet`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gateway`\" pulumi-lang-dotnet=\"`Gateway`\" pulumi-lang-go=\"`gateway`\" pulumi-lang-python=\"`gateway`\" pulumi-lang-yaml=\"`gateway`\" pulumi-lang-java=\"`gateway`\" pulumi-lang-hcl=\"`gateway`\"\u003e`gateway`\u003c/span\u003e and `ipRange` keys. Leave unset to let Docker choose a subnet.\n" + }, + "mtu": { + "type": "integer", + "description": "Maximum transmission unit for the network. Leave unset to use Docker's default.\n" + }, + "name": { + "type": "string", + "description": "Name of the Docker network.\n" + }, + "serverId": { + "type": "string", + "description": "Remote server to create the network on. Omit to use the Dokploy host itself.\n" + } + }, + "stateInputs": { + "description": "Input properties used for looking up and filtering Network resources.\n", + "properties": { + "attachable": { + "type": "boolean", + "description": "Allow standalone containers to attach to an overlay network.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the network was created.\n" + }, + "driver": { + "type": "string", + "description": "Network driver. Use \u003cspan pulumi-lang-nodejs=\"`overlay`\" pulumi-lang-dotnet=\"`Overlay`\" pulumi-lang-go=\"`overlay`\" pulumi-lang-python=\"`overlay`\" pulumi-lang-yaml=\"`overlay`\" pulumi-lang-java=\"`overlay`\" pulumi-lang-hcl=\"`overlay`\"\u003e`overlay`\u003c/span\u003e for multi-node Swarm clusters and \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\" pulumi-lang-hcl=\"`bridge`\"\u003e`bridge`\u003c/span\u003e for a single host. Valid values: \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\" pulumi-lang-hcl=\"`bridge`\"\u003e`bridge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`overlay`\" pulumi-lang-dotnet=\"`Overlay`\" pulumi-lang-go=\"`overlay`\" pulumi-lang-python=\"`overlay`\" pulumi-lang-yaml=\"`overlay`\" pulumi-lang-java=\"`overlay`\" pulumi-lang-hcl=\"`overlay`\"\u003e`overlay`\u003c/span\u003e.\n" + }, + "enableIpv4": { + "type": "boolean", + "description": "Enable IPv4 address allocation.\n" + }, + "enableIpv6": { + "type": "boolean", + "description": "Enable IPv6 address allocation.\n" + }, + "internal": { + "type": "boolean", + "description": "Isolate the network from external access.\n" + }, + "ipam": { + "type": "string", + "description": "Custom IP address management, as a JSON object with \u003cspan pulumi-lang-nodejs=\"`subnet`\" pulumi-lang-dotnet=\"`Subnet`\" pulumi-lang-go=\"`subnet`\" pulumi-lang-python=\"`subnet`\" pulumi-lang-yaml=\"`subnet`\" pulumi-lang-java=\"`subnet`\" pulumi-lang-hcl=\"`subnet`\"\u003e`subnet`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gateway`\" pulumi-lang-dotnet=\"`Gateway`\" pulumi-lang-go=\"`gateway`\" pulumi-lang-python=\"`gateway`\" pulumi-lang-yaml=\"`gateway`\" pulumi-lang-java=\"`gateway`\" pulumi-lang-hcl=\"`gateway`\"\u003e`gateway`\u003c/span\u003e and `ipRange` keys. Leave unset to let Docker choose a subnet.\n" + }, + "mtu": { + "type": "integer", + "description": "Maximum transmission unit for the network. Leave unset to use Docker's default.\n" + }, + "name": { + "type": "string", + "description": "Name of the Docker network.\n" + }, + "organizationId": { + "type": "string", + "description": "Organization that owns the network.\n" + }, + "serverId": { + "type": "string", + "description": "Remote server to create the network on. Omit to use the Dokploy host itself.\n" } }, "type": "object" } }, "dokploy:index/port:Port": { + "description": "A published port that exposes an application directly on the host, bypassing Traefik.\n", "properties": { "applicationId": { "type": "string", - "description": "Application this port belongs to." + "description": "Application this port belongs to.\n" }, "protocol": { "type": "string", - "description": "Transport protocol. Valid values: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\" pulumi-lang-hcl=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\" pulumi-lang-hcl=\"`udp`\"\u003e`udp`\u003c/span\u003e." + "description": "Transport protocol. Valid values: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\" pulumi-lang-hcl=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\" pulumi-lang-hcl=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n" }, "publishMode": { "type": "string", - "description": "Docker Swarm publish mode. \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e binds directly to the node; \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e uses the swarm routing mesh. Valid values: \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e." + "description": "Docker Swarm publish mode. \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e binds directly to the node; \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e uses the swarm routing mesh. Valid values: \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e.\n" }, "publishedPort": { "type": "integer", - "description": "Port exposed on the host." + "description": "Port exposed on the host.\n" }, "targetPort": { "type": "integer", - "description": "Port the container listens on." + "description": "Port the container listens on.\n" } }, "required": [ @@ -4136,23 +4901,23 @@ "inputProperties": { "applicationId": { "type": "string", - "description": "Application this port belongs to." + "description": "Application this port belongs to.\n" }, "protocol": { "type": "string", - "description": "Transport protocol. Valid values: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\" pulumi-lang-hcl=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\" pulumi-lang-hcl=\"`udp`\"\u003e`udp`\u003c/span\u003e." + "description": "Transport protocol. Valid values: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\" pulumi-lang-hcl=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\" pulumi-lang-hcl=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n" }, "publishMode": { "type": "string", - "description": "Docker Swarm publish mode. \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e binds directly to the node; \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e uses the swarm routing mesh. Valid values: \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e." + "description": "Docker Swarm publish mode. \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e binds directly to the node; \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e uses the swarm routing mesh. Valid values: \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e.\n" }, "publishedPort": { "type": "integer", - "description": "Port exposed on the host." + "description": "Port exposed on the host.\n" }, "targetPort": { "type": "integer", - "description": "Port the container listens on." + "description": "Port the container listens on.\n" } }, "requiredInputs": [ @@ -4166,168 +4931,169 @@ "properties": { "applicationId": { "type": "string", - "description": "Application this port belongs to." + "description": "Application this port belongs to.\n" }, "protocol": { "type": "string", - "description": "Transport protocol. Valid values: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\" pulumi-lang-hcl=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\" pulumi-lang-hcl=\"`udp`\"\u003e`udp`\u003c/span\u003e." + "description": "Transport protocol. Valid values: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\" pulumi-lang-hcl=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\" pulumi-lang-hcl=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n" }, "publishMode": { "type": "string", - "description": "Docker Swarm publish mode. \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e binds directly to the node; \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e uses the swarm routing mesh. Valid values: \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e." + "description": "Docker Swarm publish mode. \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e binds directly to the node; \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e uses the swarm routing mesh. Valid values: \u003cspan pulumi-lang-nodejs=\"`ingress`\" pulumi-lang-dotnet=\"`Ingress`\" pulumi-lang-go=\"`ingress`\" pulumi-lang-python=\"`ingress`\" pulumi-lang-yaml=\"`ingress`\" pulumi-lang-java=\"`ingress`\" pulumi-lang-hcl=\"`ingress`\"\u003e`ingress`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\" pulumi-lang-hcl=\"`host`\"\u003e`host`\u003c/span\u003e.\n" }, "publishedPort": { "type": "integer", - "description": "Port exposed on the host." + "description": "Port exposed on the host.\n" }, "targetPort": { "type": "integer", - "description": "Port the container listens on." + "description": "Port the container listens on.\n" } }, "type": "object" } }, "dokploy:index/postgres:Postgres": { + "description": "A managed PostgreSQL instance running on Dokploy.\n\n\u003e Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.\n\n\u003e Credentials are stored in Terraform state. Use a state backend with encryption at rest.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "PostgreSQL image to run, for example `postgres:16`." + "description": "PostgreSQL image to run, for example `postgres:16`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "required": [ @@ -4348,134 +5114,134 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "PostgreSQL image to run, for example `postgres:16`." + "description": "PostgreSQL image to run, for example `postgres:16`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "requiredInputs": [ @@ -4490,172 +5256,173 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databaseName": { "type": "string", - "description": "Name of the database to create." + "description": "Name of the database to create.\n" }, "databasePassword": { "type": "string", - "description": "Password for the database user.", + "description": "Password for the database user.\n", "secret": true }, "databaseUser": { "type": "string", - "description": "Database user to create." + "description": "Database user to create.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "PostgreSQL image to run, for example `postgres:16`." + "description": "PostgreSQL image to run, for example `postgres:16`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "type": "object" } }, "dokploy:index/project:Project": { + "description": "A Dokploy project: the top-level container for environments and services.\n\nCreating a project automatically creates a default \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e environment. Its ID is exposed as \u003cspan pulumi-lang-nodejs=\"`defaultEnvironmentId`\" pulumi-lang-dotnet=\"`DefaultEnvironmentId`\" pulumi-lang-go=\"`defaultEnvironmentId`\" pulumi-lang-python=\"`default_environment_id`\" pulumi-lang-yaml=\"`defaultEnvironmentId`\" pulumi-lang-java=\"`defaultEnvironmentId`\" pulumi-lang-hcl=\"`default_environment_id`\"\u003e`defaultEnvironmentId`\u003c/span\u003e, so services can be attached without declaring a separate \u003cspan pulumi-lang-nodejs=\"`dokploy.Environment`\" pulumi-lang-dotnet=\"`dokploy.Environment`\" pulumi-lang-go=\"`Environment`\" pulumi-lang-python=\"`Environment`\" pulumi-lang-yaml=\"`dokploy.Environment`\" pulumi-lang-java=\"`dokploy.Environment`\" pulumi-lang-hcl=\"`dokploy_environment`\"\u003e`dokploy.Environment`\u003c/span\u003e resource.\n", "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the project was created." + "description": "RFC 3339 timestamp of when the project was created.\n" }, "defaultEnvironmentId": { "type": "string", - "description": "ID of the \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e environment that Dokploy creates automatically with the project." + "description": "ID of the \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e environment that Dokploy creates automatically with the project.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "env": { "type": "string", - "description": "Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project." + "description": "Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.\n" }, "name": { "type": "string", - "description": "Display name of the project." + "description": "Display name of the project.\n" }, "organizationId": { "type": "string", - "description": "Organization that owns the project." + "description": "Organization that owns the project.\n" } }, "required": [ @@ -4668,15 +5435,15 @@ "inputProperties": { "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "env": { "type": "string", - "description": "Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project." + "description": "Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.\n" }, "name": { "type": "string", - "description": "Display name of the project." + "description": "Display name of the project.\n" } }, "stateInputs": { @@ -4684,53 +5451,54 @@ "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the project was created." + "description": "RFC 3339 timestamp of when the project was created.\n" }, "defaultEnvironmentId": { "type": "string", - "description": "ID of the \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e environment that Dokploy creates automatically with the project." + "description": "ID of the \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\" pulumi-lang-hcl=\"`production`\"\u003e`production`\u003c/span\u003e environment that Dokploy creates automatically with the project.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "env": { "type": "string", - "description": "Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project." + "description": "Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.\n" }, "name": { "type": "string", - "description": "Display name of the project." + "description": "Display name of the project.\n" }, "organizationId": { "type": "string", - "description": "Organization that owns the project." + "description": "Organization that owns the project.\n" } }, "type": "object" } }, "dokploy:index/redirect:Redirect": { + "description": "A Traefik redirect rule attached to an application.\n", "properties": { "applicationId": { "type": "string", - "description": "Application this redirect belongs to." + "description": "Application this redirect belongs to.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the redirect was created." + "description": "RFC 3339 timestamp of when the redirect was created.\n" }, "permanent": { "type": "boolean", - "description": "Issue a permanent (301) redirect instead of a temporary (302) one." + "description": "Issue a permanent (301) redirect instead of a temporary (302) one.\n" }, "regex": { "type": "string", - "description": "Regular expression matched against the incoming URL." + "description": "Regular expression matched against the incoming URL.\n" }, "replacement": { "type": "string", - "description": "Replacement URL, which may reference capture groups such as `${1}`." + "description": "Replacement URL, which may reference capture groups such as `${1}`.\n" } }, "required": [ @@ -4743,19 +5511,19 @@ "inputProperties": { "applicationId": { "type": "string", - "description": "Application this redirect belongs to." + "description": "Application this redirect belongs to.\n" }, "permanent": { "type": "boolean", - "description": "Issue a permanent (301) redirect instead of a temporary (302) one." + "description": "Issue a permanent (301) redirect instead of a temporary (302) one.\n" }, "regex": { "type": "string", - "description": "Regular expression matched against the incoming URL." + "description": "Regular expression matched against the incoming URL.\n" }, "replacement": { "type": "string", - "description": "Replacement URL, which may reference capture groups such as `${1}`." + "description": "Replacement URL, which may reference capture groups such as `${1}`.\n" } }, "requiredInputs": [ @@ -4768,160 +5536,161 @@ "properties": { "applicationId": { "type": "string", - "description": "Application this redirect belongs to." + "description": "Application this redirect belongs to.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the redirect was created." + "description": "RFC 3339 timestamp of when the redirect was created.\n" }, "permanent": { "type": "boolean", - "description": "Issue a permanent (301) redirect instead of a temporary (302) one." + "description": "Issue a permanent (301) redirect instead of a temporary (302) one.\n" }, "regex": { "type": "string", - "description": "Regular expression matched against the incoming URL." + "description": "Regular expression matched against the incoming URL.\n" }, "replacement": { "type": "string", - "description": "Replacement URL, which may reference capture groups such as `${1}`." + "description": "Replacement URL, which may reference capture groups such as `${1}`.\n" } }, "type": "object" } }, "dokploy:index/redis:Redis": { + "description": "A managed Redis instance running on Dokploy.\n\n\u003e Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI.\n\n\u003e Credentials are stored in Terraform state. Use a state backend with encryption at rest.\n", "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databasePassword": { "type": "string", - "description": "Password used to authenticate to Redis.", + "description": "Password used to authenticate to Redis.\n", "secret": true }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "Redis image to run, for example `redis:7`." + "description": "Redis image to run, for example `redis:7`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "required": [ @@ -4940,126 +5709,126 @@ "inputProperties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "databasePassword": { "type": "string", - "description": "Password used to authenticate to Redis.", + "description": "Password used to authenticate to Redis.\n", "secret": true }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "Redis image to run, for example `redis:7`." + "description": "Redis image to run, for example `redis:7`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "requiredInputs": [ @@ -5072,173 +5841,174 @@ "properties": { "appName": { "type": "string", - "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database." + "description": "Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.\n" }, "applicationStatus": { "type": "string", - "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e." + "description": "Current status reported by Dokploy: \u003cspan pulumi-lang-nodejs=\"`idle`\" pulumi-lang-dotnet=\"`Idle`\" pulumi-lang-go=\"`idle`\" pulumi-lang-python=\"`idle`\" pulumi-lang-yaml=\"`idle`\" pulumi-lang-java=\"`idle`\" pulumi-lang-hcl=\"`idle`\"\u003e`idle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\" pulumi-lang-hcl=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`done`\" pulumi-lang-dotnet=\"`Done`\" pulumi-lang-go=\"`done`\" pulumi-lang-python=\"`done`\" pulumi-lang-yaml=\"`done`\" pulumi-lang-java=\"`done`\" pulumi-lang-hcl=\"`done`\"\u003e`done`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\" pulumi-lang-hcl=\"`error`\"\u003e`error`\u003c/span\u003e.\n" }, "args": { "type": "array", "items": { "type": "string" }, - "description": "Arguments appended to the container command." + "description": "Arguments appended to the container command.\n" }, "command": { "type": "string", - "description": "Override the container entrypoint command." + "description": "Override the container entrypoint command.\n" }, "cpuLimit": { "type": "string", - "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e." + "description": "Hard CPU limit, for example \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\" pulumi-lang-hcl=\"`1`\"\u003e`1`\u003c/span\u003e.\n" }, "cpuReservation": { "type": "string", - "description": "Soft CPU reservation, for example `0.5`." + "description": "Soft CPU reservation, for example `0.5`.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the database was created." + "description": "RFC 3339 timestamp of when the database was created.\n" }, "databasePassword": { "type": "string", - "description": "Password used to authenticate to Redis.", + "description": "Password used to authenticate to Redis.\n", "secret": true }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "detachDokployNetwork": { "type": "boolean", - "description": "Detach the service from the shared `dokploy-network`." + "description": "Detach the service from the shared `dokploy-network`.\n" }, "dockerImage": { "type": "string", - "description": "Redis image to run, for example `redis:7`." + "description": "Redis image to run, for example `redis:7`.\n" }, "endpointSpecSwarm": { "type": "string", - "description": "Docker Swarm endpoint specification, as a JSON object." + "description": "Docker Swarm endpoint specification, as a JSON object.\n" }, "env": { "type": "string", - "description": "Environment variables in `KEY=value` format, one per line." + "description": "Environment variables in `KEY=value` format, one per line.\n" }, "environmentId": { "type": "string", - "description": "Environment this database belongs to." + "description": "Environment this database belongs to.\n" }, "externalPort": { "type": "integer", - "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network." + "description": "Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.\n" }, "healthCheckSwarm": { "type": "string", - "description": "Docker Swarm health check configuration, as a JSON object." + "description": "Docker Swarm health check configuration, as a JSON object.\n" }, "labelsSwarm": { "type": "string", - "description": "Docker Swarm service labels, as a JSON object." + "description": "Docker Swarm service labels, as a JSON object.\n" }, "memoryLimit": { "type": "string", - "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e." + "description": "Hard memory limit, for example \u003cspan pulumi-lang-nodejs=\"`512m`\" pulumi-lang-dotnet=\"`512m`\" pulumi-lang-go=\"`512m`\" pulumi-lang-python=\"`512m`\" pulumi-lang-yaml=\"`512m`\" pulumi-lang-java=\"`512m`\" pulumi-lang-hcl=\"`512m`\"\u003e`512m`\u003c/span\u003e.\n" }, "memoryReservation": { "type": "string", - "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e." + "description": "Soft memory reservation, for example \u003cspan pulumi-lang-nodejs=\"`256m`\" pulumi-lang-dotnet=\"`256m`\" pulumi-lang-go=\"`256m`\" pulumi-lang-python=\"`256m`\" pulumi-lang-yaml=\"`256m`\" pulumi-lang-java=\"`256m`\" pulumi-lang-hcl=\"`256m`\"\u003e`256m`\u003c/span\u003e.\n" }, "modeSwarm": { "type": "string", - "description": "Docker Swarm service mode, as a JSON object." + "description": "Docker Swarm service mode, as a JSON object.\n" }, "name": { "type": "string", - "description": "Display name of the database." + "description": "Display name of the database.\n" }, "networkIds": { "type": "array", "items": { "type": "string" }, - "description": "IDs of additional Docker networks to attach." + "description": "IDs of additional Docker networks to attach.\n" }, "networkSwarm": { "type": "string", - "description": "Docker Swarm network attachments, as a JSON array." + "description": "Docker Swarm network attachments, as a JSON array.\n" }, "placementSwarm": { "type": "string", - "description": "Docker Swarm placement constraints, as a JSON object." + "description": "Docker Swarm placement constraints, as a JSON object.\n" }, "replicas": { "type": "integer", - "description": "Number of replicas to run." + "description": "Number of replicas to run.\n" }, "restartPolicySwarm": { "type": "string", - "description": "Docker Swarm restart policy, as a JSON object." + "description": "Docker Swarm restart policy, as a JSON object.\n" }, "rollbackConfigSwarm": { "type": "string", - "description": "Docker Swarm rollback configuration, as a JSON object." + "description": "Docker Swarm rollback configuration, as a JSON object.\n" }, "serverId": { "type": "string", - "description": "Remote server to deploy on. Omit to use the Dokploy host itself." + "description": "Remote server to deploy on. Omit to use the Dokploy host itself.\n" }, "stopGracePeriodSwarm": { "type": "integer", - "description": "Grace period in nanoseconds before a container is killed." + "description": "Grace period in nanoseconds before a container is killed.\n" }, "ulimitsSwarm": { "type": "string", - "description": "Docker Swarm ulimits, as a JSON object." + "description": "Docker Swarm ulimits, as a JSON object.\n" }, "updateConfigSwarm": { "type": "string", - "description": "Docker Swarm rolling update configuration, as a JSON object." + "description": "Docker Swarm rolling update configuration, as a JSON object.\n" } }, "type": "object" } }, "dokploy:index/registry:Registry": { + "description": "A container registry that Dokploy pushes built images to and pulls them from.\n", "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the registry was created." + "description": "RFC 3339 timestamp of when the registry was created.\n" }, "imagePrefix": { "type": "string", - "description": "Prefix prepended to pushed image names, for example an organization or namespace." + "description": "Prefix prepended to pushed image names, for example an organization or namespace.\n" }, "password": { "type": "string", - "description": "Password or access token used to authenticate.", + "description": "Password or access token used to authenticate.\n", "secret": true }, "registryName": { "type": "string", - "description": "Display name of the registry." + "description": "Display name of the registry.\n" }, "registryType": { "type": "string", - "description": "Registry kind. Dokploy currently accepts only \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Valid values: \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e." + "description": "Registry kind. Dokploy currently accepts only \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Valid values: \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e.\n" }, "registryUrl": { "type": "string", - "description": "Registry hostname, for example `ghcr.io`." + "description": "Registry hostname, for example `ghcr.io`.\n" }, "serverId": { "type": "string", - "description": "Server this registry is scoped to." + "description": "Server this registry is scoped to.\n" }, "username": { "type": "string", - "description": "Username used to authenticate to the registry." + "description": "Username used to authenticate to the registry.\n" } }, "required": [ @@ -5252,32 +6022,32 @@ "inputProperties": { "imagePrefix": { "type": "string", - "description": "Prefix prepended to pushed image names, for example an organization or namespace." + "description": "Prefix prepended to pushed image names, for example an organization or namespace.\n" }, "password": { "type": "string", - "description": "Password or access token used to authenticate.", + "description": "Password or access token used to authenticate.\n", "secret": true }, "registryName": { "type": "string", - "description": "Display name of the registry." + "description": "Display name of the registry.\n" }, "registryType": { "type": "string", - "description": "Registry kind. Dokploy currently accepts only \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Valid values: \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e." + "description": "Registry kind. Dokploy currently accepts only \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Valid values: \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e.\n" }, "registryUrl": { "type": "string", - "description": "Registry hostname, for example `ghcr.io`." + "description": "Registry hostname, for example `ghcr.io`.\n" }, "serverId": { "type": "string", - "description": "Server this registry is scoped to." + "description": "Server this registry is scoped to.\n" }, "username": { "type": "string", - "description": "Username used to authenticate to the registry." + "description": "Username used to authenticate to the registry.\n" } }, "requiredInputs": [ @@ -5291,59 +6061,263 @@ "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the registry was created." + "description": "RFC 3339 timestamp of when the registry was created.\n" }, "imagePrefix": { "type": "string", - "description": "Prefix prepended to pushed image names, for example an organization or namespace." + "description": "Prefix prepended to pushed image names, for example an organization or namespace.\n" }, "password": { "type": "string", - "description": "Password or access token used to authenticate.", + "description": "Password or access token used to authenticate.\n", "secret": true }, "registryName": { "type": "string", - "description": "Display name of the registry." + "description": "Display name of the registry.\n" }, "registryType": { "type": "string", - "description": "Registry kind. Dokploy currently accepts only \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Valid values: \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e." + "description": "Registry kind. Dokploy currently accepts only \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Valid values: \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`cloud`\" pulumi-lang-dotnet=\"`Cloud`\" pulumi-lang-go=\"`cloud`\" pulumi-lang-python=\"`cloud`\" pulumi-lang-yaml=\"`cloud`\" pulumi-lang-java=\"`cloud`\" pulumi-lang-hcl=\"`cloud`\"\u003e`cloud`\u003c/span\u003e.\n" }, "registryUrl": { "type": "string", - "description": "Registry hostname, for example `ghcr.io`." + "description": "Registry hostname, for example `ghcr.io`.\n" }, "serverId": { "type": "string", - "description": "Server this registry is scoped to." + "description": "Server this registry is scoped to.\n" }, "username": { "type": "string", - "description": "Username used to authenticate to the registry." + "description": "Username used to authenticate to the registry.\n" + } + }, + "type": "object" + } + }, + "dokploy:index/schedule:Schedule": { + "description": "A cron job Dokploy runs on a schedule.\n\n\u003cspan pulumi-lang-nodejs=\"`scheduleType`\" pulumi-lang-dotnet=\"`ScheduleType`\" pulumi-lang-go=\"`scheduleType`\" pulumi-lang-python=\"`schedule_type`\" pulumi-lang-yaml=\"`scheduleType`\" pulumi-lang-java=\"`scheduleType`\" pulumi-lang-hcl=\"`schedule_type`\"\u003e`scheduleType`\u003c/span\u003e selects where the command runs:\n\n* \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e — inside a running application container; set \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\" pulumi-lang-hcl=\"`application_id`\"\u003e`applicationId`\u003c/span\u003e.\n* \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e — inside one service of a Compose stack; set \u003cspan pulumi-lang-nodejs=\"`composeId`\" pulumi-lang-dotnet=\"`ComposeId`\" pulumi-lang-go=\"`composeId`\" pulumi-lang-python=\"`compose_id`\" pulumi-lang-yaml=\"`composeId`\" pulumi-lang-java=\"`composeId`\" pulumi-lang-hcl=\"`compose_id`\"\u003e`composeId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`serviceName`\" pulumi-lang-dotnet=\"`ServiceName`\" pulumi-lang-go=\"`serviceName`\" pulumi-lang-python=\"`service_name`\" pulumi-lang-yaml=\"`serviceName`\" pulumi-lang-java=\"`serviceName`\" pulumi-lang-hcl=\"`service_name`\"\u003e`serviceName`\u003c/span\u003e.\n* \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\" pulumi-lang-hcl=\"`server`\"\u003e`server`\u003c/span\u003e — on a remote server; set \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\" pulumi-lang-hcl=\"`server_id`\"\u003e`serverId`\u003c/span\u003e.\n* `dokploy-server` — on the Dokploy host itself.\n\n\u003e A schedule targeting an application runs inside its container, so the container has to be running when the cron fires.\n", + "properties": { + "appName": { + "type": "string", + "description": "Docker service name the schedule targets. Derived by Dokploy when omitted.\n" + }, + "applicationId": { + "type": "string", + "description": "Application this schedule belongs to.\n" + }, + "command": { + "type": "string", + "description": "Command to run.\n" + }, + "composeId": { + "type": "string", + "description": "Compose stack this schedule belongs to.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the schedule was created.\n" + }, + "cronExpression": { + "type": "string", + "description": "Standard five-field cron expression, for example `0 3 * * *`.\n" + }, + "description": { + "type": "string", + "description": "Free-form description.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the schedule is active.\n" + }, + "name": { + "type": "string", + "description": "Display name of the schedule.\n" + }, + "scheduleType": { + "type": "string", + "description": "Where the command runs. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\" pulumi-lang-hcl=\"`server`\"\u003e`server`\u003c/span\u003e, `dokploy-server`. Defaults to \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e.\n" + }, + "script": { + "type": "string", + "description": "Multi-line script to run instead of a single command.\n" + }, + "serverId": { + "type": "string", + "description": "Server this schedule runs on.\n" + }, + "serviceName": { + "type": "string", + "description": "Service inside a Compose stack to run the command in.\n" + }, + "shellType": { + "type": "string", + "description": "Shell used to interpret the command. Valid values: \u003cspan pulumi-lang-nodejs=\"`bash`\" pulumi-lang-dotnet=\"`Bash`\" pulumi-lang-go=\"`bash`\" pulumi-lang-python=\"`bash`\" pulumi-lang-yaml=\"`bash`\" pulumi-lang-java=\"`bash`\" pulumi-lang-hcl=\"`bash`\"\u003e`bash`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sh`\" pulumi-lang-dotnet=\"`Sh`\" pulumi-lang-go=\"`sh`\" pulumi-lang-python=\"`sh`\" pulumi-lang-yaml=\"`sh`\" pulumi-lang-java=\"`sh`\" pulumi-lang-hcl=\"`sh`\"\u003e`sh`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`bash`\" pulumi-lang-dotnet=\"`Bash`\" pulumi-lang-go=\"`bash`\" pulumi-lang-python=\"`bash`\" pulumi-lang-yaml=\"`bash`\" pulumi-lang-java=\"`bash`\" pulumi-lang-hcl=\"`bash`\"\u003e`bash`\u003c/span\u003e.\n" + }, + "timezone": { + "type": "string", + "description": "IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.\n" + } + }, + "required": [ + "appName", + "command", + "createdAt", + "cronExpression", + "enabled", + "name", + "scheduleType", + "shellType" + ], + "inputProperties": { + "appName": { + "type": "string", + "description": "Docker service name the schedule targets. Derived by Dokploy when omitted.\n" + }, + "applicationId": { + "type": "string", + "description": "Application this schedule belongs to.\n" + }, + "command": { + "type": "string", + "description": "Command to run.\n" + }, + "composeId": { + "type": "string", + "description": "Compose stack this schedule belongs to.\n" + }, + "cronExpression": { + "type": "string", + "description": "Standard five-field cron expression, for example `0 3 * * *`.\n" + }, + "description": { + "type": "string", + "description": "Free-form description.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the schedule is active.\n" + }, + "name": { + "type": "string", + "description": "Display name of the schedule.\n" + }, + "scheduleType": { + "type": "string", + "description": "Where the command runs. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\" pulumi-lang-hcl=\"`server`\"\u003e`server`\u003c/span\u003e, `dokploy-server`. Defaults to \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e.\n" + }, + "script": { + "type": "string", + "description": "Multi-line script to run instead of a single command.\n" + }, + "serverId": { + "type": "string", + "description": "Server this schedule runs on.\n" + }, + "serviceName": { + "type": "string", + "description": "Service inside a Compose stack to run the command in.\n" + }, + "shellType": { + "type": "string", + "description": "Shell used to interpret the command. Valid values: \u003cspan pulumi-lang-nodejs=\"`bash`\" pulumi-lang-dotnet=\"`Bash`\" pulumi-lang-go=\"`bash`\" pulumi-lang-python=\"`bash`\" pulumi-lang-yaml=\"`bash`\" pulumi-lang-java=\"`bash`\" pulumi-lang-hcl=\"`bash`\"\u003e`bash`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sh`\" pulumi-lang-dotnet=\"`Sh`\" pulumi-lang-go=\"`sh`\" pulumi-lang-python=\"`sh`\" pulumi-lang-yaml=\"`sh`\" pulumi-lang-java=\"`sh`\" pulumi-lang-hcl=\"`sh`\"\u003e`sh`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`bash`\" pulumi-lang-dotnet=\"`Bash`\" pulumi-lang-go=\"`bash`\" pulumi-lang-python=\"`bash`\" pulumi-lang-yaml=\"`bash`\" pulumi-lang-java=\"`bash`\" pulumi-lang-hcl=\"`bash`\"\u003e`bash`\u003c/span\u003e.\n" + }, + "timezone": { + "type": "string", + "description": "IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.\n" + } + }, + "requiredInputs": [ + "command", + "cronExpression" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Schedule resources.\n", + "properties": { + "appName": { + "type": "string", + "description": "Docker service name the schedule targets. Derived by Dokploy when omitted.\n" + }, + "applicationId": { + "type": "string", + "description": "Application this schedule belongs to.\n" + }, + "command": { + "type": "string", + "description": "Command to run.\n" + }, + "composeId": { + "type": "string", + "description": "Compose stack this schedule belongs to.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the schedule was created.\n" + }, + "cronExpression": { + "type": "string", + "description": "Standard five-field cron expression, for example `0 3 * * *`.\n" + }, + "description": { + "type": "string", + "description": "Free-form description.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the schedule is active.\n" + }, + "name": { + "type": "string", + "description": "Display name of the schedule.\n" + }, + "scheduleType": { + "type": "string", + "description": "Where the command runs. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\" pulumi-lang-hcl=\"`server`\"\u003e`server`\u003c/span\u003e, `dokploy-server`. Defaults to \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e.\n" + }, + "script": { + "type": "string", + "description": "Multi-line script to run instead of a single command.\n" + }, + "serverId": { + "type": "string", + "description": "Server this schedule runs on.\n" + }, + "serviceName": { + "type": "string", + "description": "Service inside a Compose stack to run the command in.\n" + }, + "shellType": { + "type": "string", + "description": "Shell used to interpret the command. Valid values: \u003cspan pulumi-lang-nodejs=\"`bash`\" pulumi-lang-dotnet=\"`Bash`\" pulumi-lang-go=\"`bash`\" pulumi-lang-python=\"`bash`\" pulumi-lang-yaml=\"`bash`\" pulumi-lang-java=\"`bash`\" pulumi-lang-hcl=\"`bash`\"\u003e`bash`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sh`\" pulumi-lang-dotnet=\"`Sh`\" pulumi-lang-go=\"`sh`\" pulumi-lang-python=\"`sh`\" pulumi-lang-yaml=\"`sh`\" pulumi-lang-java=\"`sh`\" pulumi-lang-hcl=\"`sh`\"\u003e`sh`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`bash`\" pulumi-lang-dotnet=\"`Bash`\" pulumi-lang-go=\"`bash`\" pulumi-lang-python=\"`bash`\" pulumi-lang-yaml=\"`bash`\" pulumi-lang-java=\"`bash`\" pulumi-lang-hcl=\"`bash`\"\u003e`bash`\u003c/span\u003e.\n" + }, + "timezone": { + "type": "string", + "description": "IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`.\n" } }, "type": "object" } }, "dokploy:index/security:Security": { + "description": "HTTP basic authentication credentials protecting an application's domains.\n\n\u003e Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured.\n", "properties": { "applicationId": { "type": "string", - "description": "Application these credentials protect." + "description": "Application these credentials protect.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the credentials were created." + "description": "RFC 3339 timestamp of when the credentials were created.\n" }, "password": { "type": "string", - "description": "Basic auth password.", + "description": "Basic auth password.\n", "secret": true }, "username": { "type": "string", - "description": "Basic auth username." + "description": "Basic auth username.\n" } }, "required": [ @@ -5355,16 +6329,16 @@ "inputProperties": { "applicationId": { "type": "string", - "description": "Application these credentials protect." + "description": "Application these credentials protect.\n" }, "password": { "type": "string", - "description": "Basic auth password.", + "description": "Basic auth password.\n", "secret": true }, "username": { "type": "string", - "description": "Basic auth username." + "description": "Basic auth username.\n" } }, "requiredInputs": [ @@ -5377,51 +6351,52 @@ "properties": { "applicationId": { "type": "string", - "description": "Application these credentials protect." + "description": "Application these credentials protect.\n" }, "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the credentials were created." + "description": "RFC 3339 timestamp of when the credentials were created.\n" }, "password": { "type": "string", - "description": "Basic auth password.", + "description": "Basic auth password.\n", "secret": true }, "username": { "type": "string", - "description": "Basic auth username." + "description": "Basic auth username.\n" } }, "type": "object" } }, "dokploy:index/sshKey:SshKey": { + "description": "An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers.\n\n\u003e The private key is stored in Terraform state. Use a state backend with encryption at rest.\n\n\u003e Dokploy's update endpoint only accepts \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e. Changing either key forces a new resource.\n", "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the key was created." + "description": "RFC 3339 timestamp of when the key was created.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "lastUsedAt": { "type": "string", - "description": "RFC 3339 timestamp of when the key was last used, if ever." + "description": "RFC 3339 timestamp of when the key was last used, if ever.\n" }, "name": { "type": "string", - "description": "Display name of the key pair." + "description": "Display name of the key pair.\n" }, "privateKey": { "type": "string", - "description": "PEM-encoded private key.", + "description": "PEM-encoded private key.\n", "secret": true }, "publicKey": { "type": "string", - "description": "OpenSSH-formatted public key." + "description": "OpenSSH-formatted public key.\n" } }, "required": [ @@ -5434,20 +6409,20 @@ "inputProperties": { "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "name": { "type": "string", - "description": "Display name of the key pair." + "description": "Display name of the key pair.\n" }, "privateKey": { "type": "string", - "description": "PEM-encoded private key.", + "description": "PEM-encoded private key.\n", "secret": true }, "publicKey": { "type": "string", - "description": "OpenSSH-formatted public key." + "description": "OpenSSH-formatted public key.\n" } }, "requiredInputs": [ @@ -5459,28 +6434,384 @@ "properties": { "createdAt": { "type": "string", - "description": "RFC 3339 timestamp of when the key was created." + "description": "RFC 3339 timestamp of when the key was created.\n" }, "description": { "type": "string", - "description": "Free-form description." + "description": "Free-form description.\n" }, "lastUsedAt": { "type": "string", - "description": "RFC 3339 timestamp of when the key was last used, if ever." + "description": "RFC 3339 timestamp of when the key was last used, if ever.\n" }, "name": { "type": "string", - "description": "Display name of the key pair." + "description": "Display name of the key pair.\n" }, "privateKey": { "type": "string", - "description": "PEM-encoded private key.", + "description": "PEM-encoded private key.\n", "secret": true }, "publicKey": { "type": "string", - "description": "OpenSSH-formatted public key." + "description": "OpenSSH-formatted public key.\n" + } + }, + "type": "object" + } + }, + "dokploy:index/vaultProvider:VaultProvider": { + "description": "An external secret manager Dokploy resolves environment variables from at deploy time.\n\nReference a secret from any \u003cspan pulumi-lang-nodejs=\"`env`\" pulumi-lang-dotnet=\"`Env`\" pulumi-lang-go=\"`env`\" pulumi-lang-python=\"`env`\" pulumi-lang-yaml=\"`env`\" pulumi-lang-java=\"`env`\" pulumi-lang-hcl=\"`env`\"\u003e`env`\u003c/span\u003e value with `${{vault.\u003cscope\u003e.\u003ckey\u003e}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change.\n\nSupported `providerType` values: \u003cspan pulumi-lang-nodejs=\"`hashicorp`\" pulumi-lang-dotnet=\"`Hashicorp`\" pulumi-lang-go=\"`hashicorp`\" pulumi-lang-python=\"`hashicorp`\" pulumi-lang-yaml=\"`hashicorp`\" pulumi-lang-java=\"`hashicorp`\" pulumi-lang-hcl=\"`hashicorp`\"\u003e`hashicorp`\u003c/span\u003e (Vault/OpenBao), \u003cspan pulumi-lang-nodejs=\"`infisical`\" pulumi-lang-dotnet=\"`Infisical`\" pulumi-lang-go=\"`infisical`\" pulumi-lang-python=\"`infisical`\" pulumi-lang-yaml=\"`infisical`\" pulumi-lang-java=\"`infisical`\" pulumi-lang-hcl=\"`infisical`\"\u003e`infisical`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`aws`\" pulumi-lang-dotnet=\"`Aws`\" pulumi-lang-go=\"`aws`\" pulumi-lang-python=\"`aws`\" pulumi-lang-yaml=\"`aws`\" pulumi-lang-java=\"`aws`\" pulumi-lang-hcl=\"`aws`\"\u003e`aws`\u003c/span\u003e (Secrets Manager), \u003cspan pulumi-lang-nodejs=\"`doppler`\" pulumi-lang-dotnet=\"`Doppler`\" pulumi-lang-go=\"`doppler`\" pulumi-lang-python=\"`doppler`\" pulumi-lang-yaml=\"`doppler`\" pulumi-lang-java=\"`doppler`\" pulumi-lang-hcl=\"`doppler`\"\u003e`doppler`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`azure`\" pulumi-lang-dotnet=\"`Azure`\" pulumi-lang-go=\"`azure`\" pulumi-lang-python=\"`azure`\" pulumi-lang-yaml=\"`azure`\" pulumi-lang-java=\"`azure`\" pulumi-lang-hcl=\"`azure`\"\u003e`azure`\u003c/span\u003e (Key Vault) and \u003cspan pulumi-lang-nodejs=\"`scaleway`\" pulumi-lang-dotnet=\"`Scaleway`\" pulumi-lang-go=\"`scaleway`\" pulumi-lang-python=\"`scaleway`\" pulumi-lang-yaml=\"`scaleway`\" pulumi-lang-java=\"`scaleway`\" pulumi-lang-hcl=\"`scaleway`\"\u003e`scaleway`\u003c/span\u003e.\n\n", + "properties": { + "assignments": { + "type": "string", + "description": "JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.\n" + }, + "config": { + "type": "string", + "description": "Provider credentials as a JSON object, including the `providerType` discriminator.\n", + "secret": true + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the connection was created.\n" + }, + "name": { + "type": "string", + "description": "Name of the connection, unique within the organization.\n" + }, + "organizationId": { + "type": "string", + "description": "Organization that owns the connection.\n" + }, + "providerType": { + "type": "string", + "description": "Provider kind derived from \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\" pulumi-lang-hcl=\"`config`\"\u003e`config`\u003c/span\u003e.\n" + } + }, + "required": [ + "assignments", + "config", + "createdAt", + "name", + "organizationId", + "providerType" + ], + "inputProperties": { + "assignments": { + "type": "string", + "description": "JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.\n" + }, + "config": { + "type": "string", + "description": "Provider credentials as a JSON object, including the `providerType` discriminator.\n", + "secret": true + }, + "name": { + "type": "string", + "description": "Name of the connection, unique within the organization.\n" + } + }, + "requiredInputs": [ + "assignments", + "config" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering VaultProvider resources.\n", + "properties": { + "assignments": { + "type": "string", + "description": "JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped.\n" + }, + "config": { + "type": "string", + "description": "Provider credentials as a JSON object, including the `providerType` discriminator.\n", + "secret": true + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the connection was created.\n" + }, + "name": { + "type": "string", + "description": "Name of the connection, unique within the organization.\n" + }, + "organizationId": { + "type": "string", + "description": "Organization that owns the connection.\n" + }, + "providerType": { + "type": "string", + "description": "Provider kind derived from \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\" pulumi-lang-hcl=\"`config`\"\u003e`config`\u003c/span\u003e.\n" + } + }, + "type": "object" + } + }, + "dokploy:index/volumeBackup:VolumeBackup": { + "description": "A scheduled backup of a Docker volume to a configured \u003cspan pulumi-lang-nodejs=\"`dokploy.Destination`\" pulumi-lang-dotnet=\"`dokploy.Destination`\" pulumi-lang-go=\"`Destination`\" pulumi-lang-python=\"`Destination`\" pulumi-lang-yaml=\"`dokploy.Destination`\" pulumi-lang-java=\"`dokploy.Destination`\" pulumi-lang-hcl=\"`dokploy_destination`\"\u003e`dokploy.Destination`\u003c/span\u003e.\n\nThis is the counterpart to a \u003cspan pulumi-lang-nodejs=\"`dokploy.Mount`\" pulumi-lang-dotnet=\"`dokploy.Mount`\" pulumi-lang-go=\"`Mount`\" pulumi-lang-python=\"`Mount`\" pulumi-lang-yaml=\"`dokploy.Mount`\" pulumi-lang-java=\"`dokploy.Mount`\" pulumi-lang-hcl=\"`dokploy_mount`\"\u003e`dokploy.Mount`\u003c/span\u003e with `type = \"volume\"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule.\n\nSet exactly one of the `*_id` attributes to say which service owns the volume.\n", + "properties": { + "appName": { + "type": "string", + "description": "Docker service name that owns the volume. Derived by Dokploy when omitted.\n" + }, + "applicationId": { + "type": "string", + "description": "Application that owns the volume.\n" + }, + "composeId": { + "type": "string", + "description": "Compose stack that owns the volume.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the backup job was created.\n" + }, + "cronExpression": { + "type": "string", + "description": "Standard five-field cron expression, for example `0 4 * * *`.\n" + }, + "destinationId": { + "type": "string", + "description": "Backup destination (S3-compatible bucket) to upload to.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the backup schedule is active.\n" + }, + "keepLatestCount": { + "type": "integer", + "description": "Number of backups to retain. Older ones are pruned.\n" + }, + "libsqlId": { + "type": "string", + "description": "libSQL instance that owns the volume.\n" + }, + "mariadbId": { + "type": "string", + "description": "MariaDB instance that owns the volume.\n" + }, + "mongoId": { + "type": "string", + "description": "MongoDB instance that owns the volume.\n" + }, + "mysqlId": { + "type": "string", + "description": "MySQL instance that owns the volume.\n" + }, + "name": { + "type": "string", + "description": "Display name of the backup job.\n" + }, + "postgresId": { + "type": "string", + "description": "PostgreSQL instance that owns the volume.\n" + }, + "prefix": { + "type": "string", + "description": "Path prefix inside the destination bucket, for example `backups/shop/`.\n" + }, + "redisId": { + "type": "string", + "description": "Redis instance that owns the volume.\n" + }, + "serviceName": { + "type": "string", + "description": "Service inside a Compose stack that owns the volume.\n" + }, + "serviceType": { + "type": "string", + "description": "The kind of service that owns the volume. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`libsql`\" pulumi-lang-dotnet=\"`Libsql`\" pulumi-lang-go=\"`libsql`\" pulumi-lang-python=\"`libsql`\" pulumi-lang-yaml=\"`libsql`\" pulumi-lang-java=\"`libsql`\" pulumi-lang-hcl=\"`libsql`\"\u003e`libsql`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e.\n" + }, + "turnOff": { + "type": "boolean", + "description": "Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.\n" + }, + "volumeName": { + "type": "string", + "description": "Name of the Docker volume to back up.\n" + } + }, + "required": [ + "appName", + "createdAt", + "cronExpression", + "destinationId", + "enabled", + "keepLatestCount", + "name", + "prefix", + "serviceType", + "turnOff", + "volumeName" + ], + "inputProperties": { + "appName": { + "type": "string", + "description": "Docker service name that owns the volume. Derived by Dokploy when omitted.\n" + }, + "applicationId": { + "type": "string", + "description": "Application that owns the volume.\n" + }, + "composeId": { + "type": "string", + "description": "Compose stack that owns the volume.\n" + }, + "cronExpression": { + "type": "string", + "description": "Standard five-field cron expression, for example `0 4 * * *`.\n" + }, + "destinationId": { + "type": "string", + "description": "Backup destination (S3-compatible bucket) to upload to.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the backup schedule is active.\n" + }, + "keepLatestCount": { + "type": "integer", + "description": "Number of backups to retain. Older ones are pruned.\n" + }, + "libsqlId": { + "type": "string", + "description": "libSQL instance that owns the volume.\n" + }, + "mariadbId": { + "type": "string", + "description": "MariaDB instance that owns the volume.\n" + }, + "mongoId": { + "type": "string", + "description": "MongoDB instance that owns the volume.\n" + }, + "mysqlId": { + "type": "string", + "description": "MySQL instance that owns the volume.\n" + }, + "name": { + "type": "string", + "description": "Display name of the backup job.\n" + }, + "postgresId": { + "type": "string", + "description": "PostgreSQL instance that owns the volume.\n" + }, + "prefix": { + "type": "string", + "description": "Path prefix inside the destination bucket, for example `backups/shop/`.\n" + }, + "redisId": { + "type": "string", + "description": "Redis instance that owns the volume.\n" + }, + "serviceName": { + "type": "string", + "description": "Service inside a Compose stack that owns the volume.\n" + }, + "serviceType": { + "type": "string", + "description": "The kind of service that owns the volume. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`libsql`\" pulumi-lang-dotnet=\"`Libsql`\" pulumi-lang-go=\"`libsql`\" pulumi-lang-python=\"`libsql`\" pulumi-lang-yaml=\"`libsql`\" pulumi-lang-java=\"`libsql`\" pulumi-lang-hcl=\"`libsql`\"\u003e`libsql`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e.\n" + }, + "turnOff": { + "type": "boolean", + "description": "Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.\n" + }, + "volumeName": { + "type": "string", + "description": "Name of the Docker volume to back up.\n" + } + }, + "requiredInputs": [ + "cronExpression", + "destinationId", + "prefix", + "volumeName" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering VolumeBackup resources.\n", + "properties": { + "appName": { + "type": "string", + "description": "Docker service name that owns the volume. Derived by Dokploy when omitted.\n" + }, + "applicationId": { + "type": "string", + "description": "Application that owns the volume.\n" + }, + "composeId": { + "type": "string", + "description": "Compose stack that owns the volume.\n" + }, + "createdAt": { + "type": "string", + "description": "RFC 3339 timestamp of when the backup job was created.\n" + }, + "cronExpression": { + "type": "string", + "description": "Standard five-field cron expression, for example `0 4 * * *`.\n" + }, + "destinationId": { + "type": "string", + "description": "Backup destination (S3-compatible bucket) to upload to.\n" + }, + "enabled": { + "type": "boolean", + "description": "Whether the backup schedule is active.\n" + }, + "keepLatestCount": { + "type": "integer", + "description": "Number of backups to retain. Older ones are pruned.\n" + }, + "libsqlId": { + "type": "string", + "description": "libSQL instance that owns the volume.\n" + }, + "mariadbId": { + "type": "string", + "description": "MariaDB instance that owns the volume.\n" + }, + "mongoId": { + "type": "string", + "description": "MongoDB instance that owns the volume.\n" + }, + "mysqlId": { + "type": "string", + "description": "MySQL instance that owns the volume.\n" + }, + "name": { + "type": "string", + "description": "Display name of the backup job.\n" + }, + "postgresId": { + "type": "string", + "description": "PostgreSQL instance that owns the volume.\n" + }, + "prefix": { + "type": "string", + "description": "Path prefix inside the destination bucket, for example `backups/shop/`.\n" + }, + "redisId": { + "type": "string", + "description": "Redis instance that owns the volume.\n" + }, + "serviceName": { + "type": "string", + "description": "Service inside a Compose stack that owns the volume.\n" + }, + "serviceType": { + "type": "string", + "description": "The kind of service that owns the volume. Valid values: \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`postgres`\" pulumi-lang-dotnet=\"`Postgres`\" pulumi-lang-go=\"`postgres`\" pulumi-lang-python=\"`postgres`\" pulumi-lang-yaml=\"`postgres`\" pulumi-lang-java=\"`postgres`\" pulumi-lang-hcl=\"`postgres`\"\u003e`postgres`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\" pulumi-lang-hcl=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mariadb`\" pulumi-lang-dotnet=\"`Mariadb`\" pulumi-lang-go=\"`mariadb`\" pulumi-lang-python=\"`mariadb`\" pulumi-lang-yaml=\"`mariadb`\" pulumi-lang-java=\"`mariadb`\" pulumi-lang-hcl=\"`mariadb`\"\u003e`mariadb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mongo`\" pulumi-lang-dotnet=\"`Mongo`\" pulumi-lang-go=\"`mongo`\" pulumi-lang-python=\"`mongo`\" pulumi-lang-yaml=\"`mongo`\" pulumi-lang-java=\"`mongo`\" pulumi-lang-hcl=\"`mongo`\"\u003e`mongo`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`redis`\" pulumi-lang-dotnet=\"`Redis`\" pulumi-lang-go=\"`redis`\" pulumi-lang-python=\"`redis`\" pulumi-lang-yaml=\"`redis`\" pulumi-lang-java=\"`redis`\" pulumi-lang-hcl=\"`redis`\"\u003e`redis`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`compose`\" pulumi-lang-dotnet=\"`Compose`\" pulumi-lang-go=\"`compose`\" pulumi-lang-python=\"`compose`\" pulumi-lang-yaml=\"`compose`\" pulumi-lang-java=\"`compose`\" pulumi-lang-hcl=\"`compose`\"\u003e`compose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`libsql`\" pulumi-lang-dotnet=\"`Libsql`\" pulumi-lang-go=\"`libsql`\" pulumi-lang-python=\"`libsql`\" pulumi-lang-yaml=\"`libsql`\" pulumi-lang-java=\"`libsql`\" pulumi-lang-hcl=\"`libsql`\"\u003e`libsql`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\" pulumi-lang-hcl=\"`application`\"\u003e`application`\u003c/span\u003e.\n" + }, + "turnOff": { + "type": "boolean", + "description": "Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.\n" + }, + "volumeName": { + "type": "string", + "description": "Name of the Docker volume to back up.\n" } }, "type": "object" @@ -5489,11 +6820,13 @@ }, "functions": { "dokploy:index/getApplication:getApplication": { + "description": "Look up an existing application by ID.\n", "inputs": { "description": "A collection of arguments for invoking getApplication.\n", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Application identifier.\n" } }, "type": "object", @@ -5505,30 +6838,39 @@ "description": "A collection of values returned by getApplication.\n", "properties": { "appName": { + "description": "Docker service name.\n", "type": "string" }, "applicationStatus": { + "description": "Current status.\n", "type": "string" }, "buildType": { + "description": "Build strategy.\n", "type": "string" }, "createdAt": { + "description": "Creation timestamp.\n", "type": "string" }, "description": { + "description": "Application description.\n", "type": "string" }, "environmentId": { + "description": "Owning environment.\n", "type": "string" }, "id": { + "description": "Application identifier.\n", "type": "string" }, "name": { + "description": "Application name.\n", "type": "string" }, "sourceType": { + "description": "Source of the code or image.\n", "type": "string" } }, @@ -5547,11 +6889,13 @@ } }, "dokploy:index/getEnvironment:getEnvironment": { + "description": "Look up an existing environment by ID.\n", "inputs": { "description": "A collection of arguments for invoking getEnvironment.\n", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Environment identifier.\n" } }, "type": "object", @@ -5563,24 +6907,31 @@ "description": "A collection of values returned by getEnvironment.\n", "properties": { "createdAt": { + "description": "Creation timestamp.\n", "type": "string" }, "description": { + "description": "Environment description.\n", "type": "string" }, "env": { + "description": "Environment-wide variables.\n", "type": "string" }, "id": { + "description": "Environment identifier.\n", "type": "string" }, "isDefault": { + "description": "Whether this is the project's default environment.\n", "type": "boolean" }, "name": { + "description": "Environment name.\n", "type": "string" }, "projectId": { + "description": "Owning project.\n", "type": "string" } }, @@ -5597,11 +6948,13 @@ } }, "dokploy:index/getProject:getProject": { + "description": "Look up an existing Dokploy project by ID, including its environments.\n", "inputs": { "description": "A collection of arguments for invoking getProject.\n", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Project identifier.\n" } }, "type": "object", @@ -5613,30 +6966,38 @@ "description": "A collection of values returned by getProject.\n", "properties": { "createdAt": { + "description": "Creation timestamp.\n", "type": "string" }, "defaultEnvironmentId": { + "description": "ID of the project's default environment.\n", "type": "string" }, "description": { + "description": "Project description.\n", "type": "string" }, "env": { + "description": "Project-wide environment variables.\n", "type": "string" }, "environments": { + "description": "Every environment in the project.\n", "items": { "$ref": "#/types/dokploy:index/getProjectEnvironment:getProjectEnvironment" }, "type": "array" }, "id": { + "description": "Project identifier.\n", "type": "string" }, "name": { + "description": "Project name.\n", "type": "string" }, "organizationId": { + "description": "Owning organization.\n", "type": "string" } }, @@ -5654,10 +7015,12 @@ } }, "dokploy:index/getProjects:getProjects": { + "description": "List every Dokploy project the API token can see.\n", "outputs": { "description": "A collection of values returned by getProjects.\n", "properties": { "projects": { + "description": "All visible projects.\n", "items": { "$ref": "#/types/dokploy:index/getProjectsProject:getProjectsProject" }, @@ -5671,10 +7034,12 @@ } }, "dokploy:index/getServers:getServers": { + "description": "List the remote servers registered with Dokploy. Use a server's \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\" pulumi-lang-hcl=\"`id`\"\u003e`id`\u003c/span\u003e as the \u003cspan pulumi-lang-nodejs=\"`serverId`\" pulumi-lang-dotnet=\"`ServerId`\" pulumi-lang-go=\"`serverId`\" pulumi-lang-python=\"`server_id`\" pulumi-lang-yaml=\"`serverId`\" pulumi-lang-java=\"`serverId`\" pulumi-lang-hcl=\"`server_id`\"\u003e`serverId`\u003c/span\u003e of an application, stack, or database to deploy it away from the Dokploy host.\n", "outputs": { "description": "A collection of values returned by getServers.\n", "properties": { "servers": { + "description": "All registered servers.\n", "items": { "$ref": "#/types/dokploy:index/getServersServer:getServersServer" }, diff --git a/provider/resources.go b/provider/resources.go index cc992af..1df8504 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -7,6 +7,7 @@ package dokploy import ( _ "embed" + "os" pfbridge "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge" "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" @@ -67,6 +68,16 @@ func Provider(version string) tfbridge.ProviderInfo { TFProviderVersion: version, MetadataInfo: tfbridge.NewProviderMetadata(bridgeMetadata), + // Where tfgen reads the upstream `docs/` from when generating schema + // descriptions. Without it the bridge looks in the Go module cache, + // finds nothing for a `replace`d local dependency, and every resource + // reaches Pulumi users undocumented -- including the warnings that + // matter, such as a volume mount needing a name to persist anything. + // + // Only read at tfgen time, and the result is baked into the + // checked-in schema.json, so a consumer never needs this path. + UpstreamRepoPath: upstreamRepoPath(), + // The upstream provider is plugin-framework based, so opt in to the // bridge's accurate preview and raw state handling. EnableAccurateBridgePreview: true, @@ -99,6 +110,7 @@ func Provider(version string) tfbridge.ProviderInfo { "dokploy_mariadb": res("MariaDb"), "dokploy_mongo": res("Mongo"), "dokploy_redis": res("Redis"), + "dokploy_libsql": res("Libsql"), // Networking and service attachments. "dokploy_domain": res("Domain"), @@ -112,6 +124,18 @@ func Provider(version string) tfbridge.ProviderInfo { "dokploy_ssh_key": res("SshKey"), "dokploy_certificate": res("Certificate"), "dokploy_destination": res("Destination"), + + // Docker networks, added in Dokploy v0.30.0. Services attach to + // them through `networkIds`. + "dokploy_network": res("Network"), + + // Scheduling, added in Dokploy v0.30.0. + "dokploy_schedule": res("Schedule"), + "dokploy_volume_backup": res("VolumeBackup"), + + // External integrations, added in Dokploy v0.30.0. + "dokploy_dns_provider": res("DnsProvider"), + "dokploy_vault_provider": res("VaultProvider"), }, DataSources: map[string]*tfbridge.DataSourceInfo{ @@ -156,6 +180,16 @@ func Provider(version string) tfbridge.ProviderInfo { return prov } +// upstreamRepoPath locates the terraform-provider-dokploy checkout that +// `go.mod` replaces in. It is overridable so a CI job that lays the two repos +// out differently can still generate documented schemas. +func upstreamRepoPath() string { + if override := os.Getenv("DOKPLOY_TF_PROVIDER_PATH"); override != "" { + return override + } + return "../dokploy-teraform" +} + // pythonInfo exists because PyProject is an anonymous struct field and cannot // be set inside a composite literal. func pythonInfo() *tfbridge.PythonInfo { diff --git a/sdk/dotnet/Application.cs b/sdk/dotnet/Application.cs index 638df77..33a30c3 100644 --- a/sdk/dotnet/Application.cs +++ b/sdk/dotnet/Application.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact. + /// + /// Dokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`. + /// + /// > Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a `TerraformData` provisioner calling `application.deploy`. + /// [DokployResourceType("dokploy:index/application:Application")] public partial class Application : global::Pulumi.CustomResource { @@ -331,6 +338,12 @@ namespace Maxvojtkov.Dokploy [Output("herokuVersion")] public Output HerokuVersion { get; private set; } = null!; + /// + /// Icon shown next to the service in the Dokploy UI. + /// + [Output("icon")] + public Output Icon { get; private set; } = null!; + /// /// Build a preview deployment for each pull request. /// @@ -463,6 +476,12 @@ namespace Maxvojtkov.Dokploy [Output("previewPort")] public Output PreviewPort { get; private set; } = null!; + /// + /// Only build previews for pull requests opened by users with repository collaborator permissions. + /// + [Output("previewRequireCollaboratorPermissions")] + public Output PreviewRequireCollaboratorPermissions { get; private set; } = null!; + /// /// Wildcard domain used to expose preview deployments. /// @@ -964,6 +983,12 @@ namespace Maxvojtkov.Dokploy [Input("herokuVersion")] public Input? HerokuVersion { get; set; } + /// + /// Icon shown next to the service in the Dokploy UI. + /// + [Input("icon")] + public Input? Icon { get; set; } + /// /// Build a preview deployment for each pull request. /// @@ -1128,6 +1153,12 @@ namespace Maxvojtkov.Dokploy [Input("previewPort")] public Input? PreviewPort { get; set; } + /// + /// Only build previews for pull requests opened by users with repository collaborator permissions. + /// + [Input("previewRequireCollaboratorPermissions")] + public Input? PreviewRequireCollaboratorPermissions { get; set; } + /// /// Wildcard domain used to expose preview deployments. /// @@ -1602,6 +1633,12 @@ namespace Maxvojtkov.Dokploy [Input("herokuVersion")] public Input? HerokuVersion { get; set; } + /// + /// Icon shown next to the service in the Dokploy UI. + /// + [Input("icon")] + public Input? Icon { get; set; } + /// /// Build a preview deployment for each pull request. /// @@ -1766,6 +1803,12 @@ namespace Maxvojtkov.Dokploy [Input("previewPort")] public Input? PreviewPort { get; set; } + /// + /// Only build previews for pull requests opened by users with repository collaborator permissions. + /// + [Input("previewRequireCollaboratorPermissions")] + public Input? PreviewRequireCollaboratorPermissions { get; set; } + /// /// Wildcard domain used to expose preview deployments. /// diff --git a/sdk/dotnet/Certificate.cs b/sdk/dotnet/Certificate.cs index 3ea3b32..fb35cf5 100644 --- a/sdk/dotnet/Certificate.cs +++ b/sdk/dotnet/Certificate.cs @@ -10,6 +10,11 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A TLS certificate uploaded to Dokploy, for domains that use `CertificateType = "custom"`. + /// + /// > The private key is stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/certificate:Certificate")] public partial class Certificate : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Compose.cs b/sdk/dotnet/Compose.cs index 44bcd5b..520eeff 100644 --- a/sdk/dotnet/Compose.cs +++ b/sdk/dotnet/Compose.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A Docker Compose or Docker Swarm stack managed by Dokploy. + /// + /// Set `ComposeFile` to manage the stack definition inline (with `SourceType = "raw"`), or point the stack at a Git repository and set `ComposePath`. + /// + /// > Creating this resource does **not** deploy the stack. + /// [DokployResourceType("dokploy:index/compose:Compose")] public partial class Compose : global::Pulumi.CustomResource { @@ -91,6 +98,12 @@ namespace Maxvojtkov.Dokploy [Output("composeType")] public Output ComposeType { get; private set; } = null!; + /// + /// Write the environment variables to a `.env` file next to the Compose file. + /// + [Output("createEnvFile")] + public Output CreateEnvFile { get; private set; } = null!; + /// /// RFC 3339 timestamp of when the stack was created. /// @@ -211,6 +224,12 @@ namespace Maxvojtkov.Dokploy [Output("gitlabRepository")] public Output GitlabRepository { get; private set; } = null!; + /// + /// Icon shown next to the stack in the Dokploy UI. + /// + [Output("icon")] + public Output Icon { get; private set; } = null!; + /// /// Run the stack on its own isolated Docker network. /// @@ -253,6 +272,12 @@ namespace Maxvojtkov.Dokploy [Output("serverId")] public Output ServerId { get; private set; } = null!; + /// + /// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + /// + [Output("serviceNetworks")] + public Output ServiceNetworks { get; private set; } = null!; + /// /// Where the Compose file comes from. Valid values: `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Raw`. /// @@ -396,6 +421,12 @@ namespace Maxvojtkov.Dokploy [Input("composeType")] public Input? ComposeType { get; set; } + /// + /// Write the environment variables to a `.env` file next to the Compose file. + /// + [Input("createEnvFile")] + public Input? CreateEnvFile { get; set; } + /// /// Branch to deploy for a custom Git remote. /// @@ -510,6 +541,12 @@ namespace Maxvojtkov.Dokploy [Input("gitlabRepository")] public Input? GitlabRepository { get; set; } + /// + /// Icon shown next to the stack in the Dokploy UI. + /// + [Input("icon")] + public Input? Icon { get; set; } + /// /// Run the stack on its own isolated Docker network. /// @@ -552,6 +589,12 @@ namespace Maxvojtkov.Dokploy [Input("serverId")] public Input? ServerId { get; set; } + /// + /// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + /// + [Input("serviceNetworks")] + public Input? ServiceNetworks { get; set; } + /// /// Where the Compose file comes from. Valid values: `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Raw`. /// @@ -668,6 +711,12 @@ namespace Maxvojtkov.Dokploy [Input("composeType")] public Input? ComposeType { get; set; } + /// + /// Write the environment variables to a `.env` file next to the Compose file. + /// + [Input("createEnvFile")] + public Input? CreateEnvFile { get; set; } + /// /// RFC 3339 timestamp of when the stack was created. /// @@ -788,6 +837,12 @@ namespace Maxvojtkov.Dokploy [Input("gitlabRepository")] public Input? GitlabRepository { get; set; } + /// + /// Icon shown next to the stack in the Dokploy UI. + /// + [Input("icon")] + public Input? Icon { get; set; } + /// /// Run the stack on its own isolated Docker network. /// @@ -830,6 +885,12 @@ namespace Maxvojtkov.Dokploy [Input("serverId")] public Input? ServerId { get; set; } + /// + /// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + /// + [Input("serviceNetworks")] + public Input? ServiceNetworks { get; set; } + /// /// Where the Compose file comes from. Valid values: `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Raw`. /// diff --git a/sdk/dotnet/Destination.cs b/sdk/dotnet/Destination.cs index 2cd5dc3..614fe9c 100644 --- a/sdk/dotnet/Destination.cs +++ b/sdk/dotnet/Destination.cs @@ -10,6 +10,11 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// An S3-compatible bucket that Dokploy writes database and volume backups to. + /// + /// > The secret access key is stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/destination:Destination")] public partial class Destination : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/DnsProvider.cs b/sdk/dotnet/DnsProvider.cs new file mode 100644 index 0000000..a8e7c52 --- /dev/null +++ b/sdk/dotnet/DnsProvider.cs @@ -0,0 +1,177 @@ +// *** WARNING: this file was generated by pulumi-language-dotnet. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Maxvojtkov.Dokploy +{ + /// + /// A DNS provider connection Dokploy uses to create records for domains automatically. + /// + /// `Config` is a JSON object whose shape depends on `providerType`: + /// + [DokployResourceType("dokploy:index/dnsProvider:DnsProvider")] + public partial class DnsProvider : global::Pulumi.CustomResource + { + /// + /// Provider credentials as a JSON object, including the `providerType` discriminator. + /// + [Output("config")] + public Output Config { get; private set; } = null!; + + /// + /// RFC 3339 timestamp of when the connection was created. + /// + [Output("createdAt")] + public Output CreatedAt { get; private set; } = null!; + + /// + /// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Organization that owns the connection. + /// + [Output("organizationId")] + public Output OrganizationId { get; private set; } = null!; + + /// + /// Provider kind derived from `Config`: `Cloudflare` or `Route53`. + /// + [Output("providerType")] + public Output ProviderType { get; private set; } = null!; + + + /// + /// Create a DnsProvider resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public DnsProvider(string name, DnsProviderArgs args, CustomResourceOptions? options = null) + : base("dokploy:index/dnsProvider:DnsProvider", name, args ?? new DnsProviderArgs(), MakeResourceOptions(options, "")) + { + } + + private DnsProvider(string name, Input id, DnsProviderState? state = null, CustomResourceOptions? options = null) + : base("dokploy:index/dnsProvider:DnsProvider", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}", + AdditionalSecretOutputs = + { + "config", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing DnsProvider resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static DnsProvider Get(string name, Input id, DnsProviderState? state = null, CustomResourceOptions? options = null) + { + return new DnsProvider(name, id, state, options); + } + } + + public sealed class DnsProviderArgs : global::Pulumi.ResourceArgs + { + [Input("config", required: true)] + private Input? _config; + + /// + /// Provider credentials as a JSON object, including the `providerType` discriminator. + /// + public Input? Config + { + get => _config; + set + { + var emptySecret = Output.CreateSecret(0); + _config = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + /// + [Input("name")] + public Input? Name { get; set; } + + public DnsProviderArgs() + { + } + public static new DnsProviderArgs Empty => new DnsProviderArgs(); + } + + public sealed class DnsProviderState : global::Pulumi.ResourceArgs + { + [Input("config")] + private Input? _config; + + /// + /// Provider credentials as a JSON object, including the `providerType` discriminator. + /// + public Input? Config + { + get => _config; + set + { + var emptySecret = Output.CreateSecret(0); + _config = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// RFC 3339 timestamp of when the connection was created. + /// + [Input("createdAt")] + public Input? CreatedAt { get; set; } + + /// + /// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Organization that owns the connection. + /// + [Input("organizationId")] + public Input? OrganizationId { get; set; } + + /// + /// Provider kind derived from `Config`: `Cloudflare` or `Route53`. + /// + [Input("providerType")] + public Input? ProviderType { get; set; } + + public DnsProviderState() + { + } + public static new DnsProviderState Empty => new DnsProviderState(); + } +} diff --git a/sdk/dotnet/Domain.cs b/sdk/dotnet/Domain.cs index bdad7ae..e7c68c7 100644 --- a/sdk/dotnet/Domain.cs +++ b/sdk/dotnet/Domain.cs @@ -10,6 +10,11 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A domain routed to an application or a Compose service through Dokploy's Traefik instance. + /// + /// Set exactly one of `ApplicationId` or `ComposeId`. When targeting a Compose stack, `ServiceName` selects which service in the stack receives the traffic. + /// [DokployResourceType("dokploy:index/domain:Domain")] public partial class Domain : global::Pulumi.CustomResource { @@ -55,6 +60,12 @@ namespace Maxvojtkov.Dokploy [Output("domainType")] public Output DomainType { get; private set; } = null!; + /// + /// Whether the domain is served. Setting this to `False` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + /// + [Output("enabled")] + public Output Enabled { get; private set; } = null!; + /// /// Protect this domain with Dokploy's forward auth. /// @@ -198,6 +209,12 @@ namespace Maxvojtkov.Dokploy [Input("domainType")] public Input? DomainType { get; set; } + /// + /// Whether the domain is served. Setting this to `False` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + /// /// Protect this domain with Dokploy's forward auth. /// @@ -314,6 +331,12 @@ namespace Maxvojtkov.Dokploy [Input("domainType")] public Input? DomainType { get; set; } + /// + /// Whether the domain is served. Setting this to `False` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + /// /// Protect this domain with Dokploy's forward auth. /// diff --git a/sdk/dotnet/Environment.cs b/sdk/dotnet/Environment.cs index 3654a90..51bf5e0 100644 --- a/sdk/dotnet/Environment.cs +++ b/sdk/dotnet/Environment.cs @@ -10,6 +10,11 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// An environment inside a Dokploy project, such as `Staging` or `Production`. Services belong to an environment rather than directly to a project. + /// + /// Dokploy creates a default `Production` environment with every project; reference it via `dokploy_project.<name>.default_environment_id` instead of declaring it here. + /// [DokployResourceType("dokploy:index/environment:Environment")] public partial class Environment : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/GetApplication.cs b/sdk/dotnet/GetApplication.cs index b81000b..0671305 100644 --- a/sdk/dotnet/GetApplication.cs +++ b/sdk/dotnet/GetApplication.cs @@ -12,12 +12,21 @@ namespace Maxvojtkov.Dokploy { public static class GetApplication { + /// + /// Look up an existing application by ID. + /// public static Task InvokeAsync(GetApplicationArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("dokploy:index/getApplication:getApplication", args ?? new GetApplicationArgs(), options.WithDefaults()); + /// + /// Look up an existing application by ID. + /// public static Output Invoke(GetApplicationInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getApplication:getApplication", args ?? new GetApplicationInvokeArgs(), options.WithDefaults()); + /// + /// Look up an existing application by ID. + /// public static Output Invoke(GetApplicationInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getApplication:getApplication", args ?? new GetApplicationInvokeArgs(), options.WithDefaults()); } @@ -25,6 +34,9 @@ namespace Maxvojtkov.Dokploy public sealed class GetApplicationArgs : global::Pulumi.InvokeArgs { + /// + /// Application identifier. + /// [Input("id", required: true)] public string Id { get; set; } = null!; @@ -36,6 +48,9 @@ namespace Maxvojtkov.Dokploy public sealed class GetApplicationInvokeArgs : global::Pulumi.InvokeArgs { + /// + /// Application identifier. + /// [Input("id", required: true)] public Input Id { get; set; } = null!; @@ -49,14 +64,41 @@ namespace Maxvojtkov.Dokploy [OutputType] public sealed class GetApplicationResult { + /// + /// Docker service name. + /// public readonly string AppName; + /// + /// Current status. + /// public readonly string ApplicationStatus; + /// + /// Build strategy. + /// public readonly string BuildType; + /// + /// Creation timestamp. + /// public readonly string CreatedAt; + /// + /// Application description. + /// public readonly string Description; + /// + /// Owning environment. + /// public readonly string EnvironmentId; + /// + /// Application identifier. + /// public readonly string Id; + /// + /// Application name. + /// public readonly string Name; + /// + /// Source of the code or image. + /// public readonly string SourceType; [OutputConstructor] diff --git a/sdk/dotnet/GetEnvironment.cs b/sdk/dotnet/GetEnvironment.cs index 3a43779..7f009a7 100644 --- a/sdk/dotnet/GetEnvironment.cs +++ b/sdk/dotnet/GetEnvironment.cs @@ -12,12 +12,21 @@ namespace Maxvojtkov.Dokploy { public static class GetEnvironment { + /// + /// Look up an existing environment by ID. + /// public static Task InvokeAsync(GetEnvironmentArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("dokploy:index/getEnvironment:getEnvironment", args ?? new GetEnvironmentArgs(), options.WithDefaults()); + /// + /// Look up an existing environment by ID. + /// public static Output Invoke(GetEnvironmentInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getEnvironment:getEnvironment", args ?? new GetEnvironmentInvokeArgs(), options.WithDefaults()); + /// + /// Look up an existing environment by ID. + /// public static Output Invoke(GetEnvironmentInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getEnvironment:getEnvironment", args ?? new GetEnvironmentInvokeArgs(), options.WithDefaults()); } @@ -25,6 +34,9 @@ namespace Maxvojtkov.Dokploy public sealed class GetEnvironmentArgs : global::Pulumi.InvokeArgs { + /// + /// Environment identifier. + /// [Input("id", required: true)] public string Id { get; set; } = null!; @@ -36,6 +48,9 @@ namespace Maxvojtkov.Dokploy public sealed class GetEnvironmentInvokeArgs : global::Pulumi.InvokeArgs { + /// + /// Environment identifier. + /// [Input("id", required: true)] public Input Id { get; set; } = null!; @@ -49,12 +64,33 @@ namespace Maxvojtkov.Dokploy [OutputType] public sealed class GetEnvironmentResult { + /// + /// Creation timestamp. + /// public readonly string CreatedAt; + /// + /// Environment description. + /// public readonly string Description; + /// + /// Environment-wide variables. + /// public readonly string Env; + /// + /// Environment identifier. + /// public readonly string Id; + /// + /// Whether this is the project's default environment. + /// public readonly bool IsDefault; + /// + /// Environment name. + /// public readonly string Name; + /// + /// Owning project. + /// public readonly string ProjectId; [OutputConstructor] diff --git a/sdk/dotnet/GetProject.cs b/sdk/dotnet/GetProject.cs index 95d0477..01f0bfc 100644 --- a/sdk/dotnet/GetProject.cs +++ b/sdk/dotnet/GetProject.cs @@ -12,12 +12,21 @@ namespace Maxvojtkov.Dokploy { public static class GetProject { + /// + /// Look up an existing Dokploy project by ID, including its environments. + /// public static Task InvokeAsync(GetProjectArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("dokploy:index/getProject:getProject", args ?? new GetProjectArgs(), options.WithDefaults()); + /// + /// Look up an existing Dokploy project by ID, including its environments. + /// public static Output Invoke(GetProjectInvokeArgs args, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getProject:getProject", args ?? new GetProjectInvokeArgs(), options.WithDefaults()); + /// + /// Look up an existing Dokploy project by ID, including its environments. + /// public static Output Invoke(GetProjectInvokeArgs args, InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getProject:getProject", args ?? new GetProjectInvokeArgs(), options.WithDefaults()); } @@ -25,6 +34,9 @@ namespace Maxvojtkov.Dokploy public sealed class GetProjectArgs : global::Pulumi.InvokeArgs { + /// + /// Project identifier. + /// [Input("id", required: true)] public string Id { get; set; } = null!; @@ -36,6 +48,9 @@ namespace Maxvojtkov.Dokploy public sealed class GetProjectInvokeArgs : global::Pulumi.InvokeArgs { + /// + /// Project identifier. + /// [Input("id", required: true)] public Input Id { get; set; } = null!; @@ -49,13 +64,37 @@ namespace Maxvojtkov.Dokploy [OutputType] public sealed class GetProjectResult { + /// + /// Creation timestamp. + /// public readonly string CreatedAt; + /// + /// ID of the project's default environment. + /// public readonly string DefaultEnvironmentId; + /// + /// Project description. + /// public readonly string Description; + /// + /// Project-wide environment variables. + /// public readonly string Env; + /// + /// Every environment in the project. + /// public readonly ImmutableArray Environments; + /// + /// Project identifier. + /// public readonly string Id; + /// + /// Project name. + /// public readonly string Name; + /// + /// Owning organization. + /// public readonly string OrganizationId; [OutputConstructor] diff --git a/sdk/dotnet/GetProjects.cs b/sdk/dotnet/GetProjects.cs index 49c0dbe..21c70ff 100644 --- a/sdk/dotnet/GetProjects.cs +++ b/sdk/dotnet/GetProjects.cs @@ -12,12 +12,21 @@ namespace Maxvojtkov.Dokploy { public static class GetProjects { + /// + /// List every Dokploy project the API token can see. + /// public static Task InvokeAsync(InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("dokploy:index/getProjects:getProjects", InvokeArgs.Empty, options.WithDefaults()); + /// + /// List every Dokploy project the API token can see. + /// public static Output Invoke(InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getProjects:getProjects", InvokeArgs.Empty, options.WithDefaults()); + /// + /// List every Dokploy project the API token can see. + /// public static Output Invoke(InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getProjects:getProjects", InvokeArgs.Empty, options.WithDefaults()); } @@ -26,6 +35,9 @@ namespace Maxvojtkov.Dokploy [OutputType] public sealed class GetProjectsResult { + /// + /// All visible projects. + /// public readonly ImmutableArray Projects; [OutputConstructor] diff --git a/sdk/dotnet/GetServers.cs b/sdk/dotnet/GetServers.cs index 183a01c..722de8f 100644 --- a/sdk/dotnet/GetServers.cs +++ b/sdk/dotnet/GetServers.cs @@ -12,12 +12,21 @@ namespace Maxvojtkov.Dokploy { public static class GetServers { + /// + /// List the remote servers registered with Dokploy. Use a server's `Id` as the `ServerId` of an application, stack, or database to deploy it away from the Dokploy host. + /// public static Task InvokeAsync(InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("dokploy:index/getServers:getServers", InvokeArgs.Empty, options.WithDefaults()); + /// + /// List the remote servers registered with Dokploy. Use a server's `Id` as the `ServerId` of an application, stack, or database to deploy it away from the Dokploy host. + /// public static Output Invoke(InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getServers:getServers", InvokeArgs.Empty, options.WithDefaults()); + /// + /// List the remote servers registered with Dokploy. Use a server's `Id` as the `ServerId` of an application, stack, or database to deploy it away from the Dokploy host. + /// public static Output Invoke(InvokeOutputOptions options) => global::Pulumi.Deployment.Instance.Invoke("dokploy:index/getServers:getServers", InvokeArgs.Empty, options.WithDefaults()); } @@ -26,6 +35,9 @@ namespace Maxvojtkov.Dokploy [OutputType] public sealed class GetServersResult { + /// + /// All registered servers. + /// public readonly ImmutableArray Servers; [OutputConstructor] diff --git a/sdk/dotnet/Libsql.cs b/sdk/dotnet/Libsql.cs new file mode 100644 index 0000000..8997c21 --- /dev/null +++ b/sdk/dotnet/Libsql.cs @@ -0,0 +1,739 @@ +// *** WARNING: this file was generated by pulumi-language-dotnet. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Maxvojtkov.Dokploy +{ + /// + /// A managed libSQL instance running on Dokploy. + /// + /// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + /// + /// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + /// + /// libSQL runs as a `Sqld` server. A `Primary` node owns the data; a `Replica` node follows a primary named by `SqldPrimaryUrl`. + /// + [DokployResourceType("dokploy:index/libsql:Libsql")] + public partial class Libsql : global::Pulumi.CustomResource + { + /// + /// Unique Docker service name. Generated from `Name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + /// + [Output("appName")] + public Output AppName { get; private set; } = null!; + + /// + /// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`. + /// + [Output("applicationStatus")] + public Output ApplicationStatus { get; private set; } = null!; + + /// + /// Override the container entrypoint command. + /// + [Output("command")] + public Output Command { get; private set; } = null!; + + /// + /// Hard CPU limit, for example `1`. + /// + [Output("cpuLimit")] + public Output CpuLimit { get; private set; } = null!; + + /// + /// Soft CPU reservation, for example `0.5`. + /// + [Output("cpuReservation")] + public Output CpuReservation { get; private set; } = null!; + + /// + /// RFC 3339 timestamp of when the database was created. + /// + [Output("createdAt")] + public Output CreatedAt { get; private set; } = null!; + + /// + /// Password for the database user. + /// + [Output("databasePassword")] + public Output DatabasePassword { get; private set; } = null!; + + /// + /// Database user to create. + /// + [Output("databaseUser")] + public Output DatabaseUser { get; private set; } = null!; + + /// + /// Free-form description. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Detach the service from the shared `dokploy-network`. + /// + [Output("detachDokployNetwork")] + public Output DetachDokployNetwork { get; private set; } = null!; + + /// + /// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + /// + [Output("dockerImage")] + public Output DockerImage { get; private set; } = null!; + + /// + /// Serve multiple logical databases from one instance through libSQL namespaces. + /// + [Output("enableNamespaces")] + public Output EnableNamespaces { get; private set; } = null!; + + /// + /// Docker Swarm endpoint specification, as a JSON object. + /// + [Output("endpointSpecSwarm")] + public Output EndpointSpecSwarm { get; private set; } = null!; + + /// + /// Environment variables in `KEY=value` format, one per line. + /// + [Output("env")] + public Output Env { get; private set; } = null!; + + /// + /// Environment this database belongs to. + /// + [Output("environmentId")] + public Output EnvironmentId { get; private set; } = null!; + + /// + /// Host port exposing the admin API. + /// + [Output("externalAdminPort")] + public Output ExternalAdminPort { get; private set; } = null!; + + /// + /// Host port exposing the gRPC replication endpoint. + /// + [Output("externalGrpcPort")] + public Output ExternalGrpcPort { get; private set; } = null!; + + /// + /// Host port exposing the HTTP API. + /// + [Output("externalPort")] + public Output ExternalPort { get; private set; } = null!; + + /// + /// Docker Swarm health check configuration, as a JSON object. + /// + [Output("healthCheckSwarm")] + public Output HealthCheckSwarm { get; private set; } = null!; + + /// + /// Docker Swarm service labels, as a JSON object. + /// + [Output("labelsSwarm")] + public Output LabelsSwarm { get; private set; } = null!; + + /// + /// Hard memory limit, for example `512m`. + /// + [Output("memoryLimit")] + public Output MemoryLimit { get; private set; } = null!; + + /// + /// Soft memory reservation, for example `256m`. + /// + [Output("memoryReservation")] + public Output MemoryReservation { get; private set; } = null!; + + /// + /// Docker Swarm service mode, as a JSON object. + /// + [Output("modeSwarm")] + public Output ModeSwarm { get; private set; } = null!; + + /// + /// Display name of the database. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// IDs of additional Docker networks to attach. + /// + [Output("networkIds")] + public Output> NetworkIds { get; private set; } = null!; + + /// + /// Docker Swarm network attachments, as a JSON array. + /// + [Output("networkSwarm")] + public Output NetworkSwarm { get; private set; } = null!; + + /// + /// Docker Swarm placement constraints, as a JSON object. + /// + [Output("placementSwarm")] + public Output PlacementSwarm { get; private set; } = null!; + + /// + /// Number of replicas to run. + /// + [Output("replicas")] + public Output Replicas { get; private set; } = null!; + + /// + /// Docker Swarm restart policy, as a JSON object. + /// + [Output("restartPolicySwarm")] + public Output RestartPolicySwarm { get; private set; } = null!; + + /// + /// Docker Swarm rollback configuration, as a JSON object. + /// + [Output("rollbackConfigSwarm")] + public Output RollbackConfigSwarm { get; private set; } = null!; + + /// + /// Remote server to deploy on. Omit to use the Dokploy host itself. + /// + [Output("serverId")] + public Output ServerId { get; private set; } = null!; + + /// + /// Role this node plays in a libSQL cluster. Valid values: `Primary`, `Replica`. Defaults to `Primary`. + /// + [Output("sqldNode")] + public Output SqldNode { get; private set; } = null!; + + /// + /// URL of the primary node, when `SqldNode` is `Replica`. + /// + [Output("sqldPrimaryUrl")] + public Output SqldPrimaryUrl { get; private set; } = null!; + + /// + /// Grace period in nanoseconds before a container is killed. + /// + [Output("stopGracePeriodSwarm")] + public Output StopGracePeriodSwarm { get; private set; } = null!; + + /// + /// Docker Swarm rolling update configuration, as a JSON object. + /// + [Output("updateConfigSwarm")] + public Output UpdateConfigSwarm { get; private set; } = null!; + + + /// + /// Create a Libsql resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public Libsql(string name, LibsqlArgs args, CustomResourceOptions? options = null) + : base("dokploy:index/libsql:Libsql", name, args ?? new LibsqlArgs(), MakeResourceOptions(options, "")) + { + } + + private Libsql(string name, Input id, LibsqlState? state = null, CustomResourceOptions? options = null) + : base("dokploy:index/libsql:Libsql", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}", + AdditionalSecretOutputs = + { + "databasePassword", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing Libsql resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static Libsql Get(string name, Input id, LibsqlState? state = null, CustomResourceOptions? options = null) + { + return new Libsql(name, id, state, options); + } + } + + public sealed class LibsqlArgs : global::Pulumi.ResourceArgs + { + /// + /// Unique Docker service name. Generated from `Name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + /// + [Input("appName")] + public Input? AppName { get; set; } + + /// + /// Override the container entrypoint command. + /// + [Input("command")] + public Input? Command { get; set; } + + /// + /// Hard CPU limit, for example `1`. + /// + [Input("cpuLimit")] + public Input? CpuLimit { get; set; } + + /// + /// Soft CPU reservation, for example `0.5`. + /// + [Input("cpuReservation")] + public Input? CpuReservation { get; set; } + + [Input("databasePassword", required: true)] + private Input? _databasePassword; + + /// + /// Password for the database user. + /// + public Input? DatabasePassword + { + get => _databasePassword; + set + { + var emptySecret = Output.CreateSecret(0); + _databasePassword = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Database user to create. + /// + [Input("databaseUser", required: true)] + public Input DatabaseUser { get; set; } = null!; + + /// + /// Free-form description. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Detach the service from the shared `dokploy-network`. + /// + [Input("detachDokployNetwork")] + public Input? DetachDokployNetwork { get; set; } + + /// + /// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + /// + [Input("dockerImage", required: true)] + public Input DockerImage { get; set; } = null!; + + /// + /// Serve multiple logical databases from one instance through libSQL namespaces. + /// + [Input("enableNamespaces")] + public Input? EnableNamespaces { get; set; } + + /// + /// Docker Swarm endpoint specification, as a JSON object. + /// + [Input("endpointSpecSwarm")] + public Input? EndpointSpecSwarm { get; set; } + + /// + /// Environment variables in `KEY=value` format, one per line. + /// + [Input("env")] + public Input? Env { get; set; } + + /// + /// Environment this database belongs to. + /// + [Input("environmentId", required: true)] + public Input EnvironmentId { get; set; } = null!; + + /// + /// Host port exposing the admin API. + /// + [Input("externalAdminPort")] + public Input? ExternalAdminPort { get; set; } + + /// + /// Host port exposing the gRPC replication endpoint. + /// + [Input("externalGrpcPort")] + public Input? ExternalGrpcPort { get; set; } + + /// + /// Host port exposing the HTTP API. + /// + [Input("externalPort")] + public Input? ExternalPort { get; set; } + + /// + /// Docker Swarm health check configuration, as a JSON object. + /// + [Input("healthCheckSwarm")] + public Input? HealthCheckSwarm { get; set; } + + /// + /// Docker Swarm service labels, as a JSON object. + /// + [Input("labelsSwarm")] + public Input? LabelsSwarm { get; set; } + + /// + /// Hard memory limit, for example `512m`. + /// + [Input("memoryLimit")] + public Input? MemoryLimit { get; set; } + + /// + /// Soft memory reservation, for example `256m`. + /// + [Input("memoryReservation")] + public Input? MemoryReservation { get; set; } + + /// + /// Docker Swarm service mode, as a JSON object. + /// + [Input("modeSwarm")] + public Input? ModeSwarm { get; set; } + + /// + /// Display name of the database. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("networkIds")] + private InputList? _networkIds; + + /// + /// IDs of additional Docker networks to attach. + /// + public InputList NetworkIds + { + get => _networkIds ?? (_networkIds = new InputList()); + set => _networkIds = value; + } + + /// + /// Docker Swarm network attachments, as a JSON array. + /// + [Input("networkSwarm")] + public Input? NetworkSwarm { get; set; } + + /// + /// Docker Swarm placement constraints, as a JSON object. + /// + [Input("placementSwarm")] + public Input? PlacementSwarm { get; set; } + + /// + /// Number of replicas to run. + /// + [Input("replicas")] + public Input? Replicas { get; set; } + + /// + /// Docker Swarm restart policy, as a JSON object. + /// + [Input("restartPolicySwarm")] + public Input? RestartPolicySwarm { get; set; } + + /// + /// Docker Swarm rollback configuration, as a JSON object. + /// + [Input("rollbackConfigSwarm")] + public Input? RollbackConfigSwarm { get; set; } + + /// + /// Remote server to deploy on. Omit to use the Dokploy host itself. + /// + [Input("serverId")] + public Input? ServerId { get; set; } + + /// + /// Role this node plays in a libSQL cluster. Valid values: `Primary`, `Replica`. Defaults to `Primary`. + /// + [Input("sqldNode")] + public Input? SqldNode { get; set; } + + /// + /// URL of the primary node, when `SqldNode` is `Replica`. + /// + [Input("sqldPrimaryUrl")] + public Input? SqldPrimaryUrl { get; set; } + + /// + /// Grace period in nanoseconds before a container is killed. + /// + [Input("stopGracePeriodSwarm")] + public Input? StopGracePeriodSwarm { get; set; } + + /// + /// Docker Swarm rolling update configuration, as a JSON object. + /// + [Input("updateConfigSwarm")] + public Input? UpdateConfigSwarm { get; set; } + + public LibsqlArgs() + { + } + public static new LibsqlArgs Empty => new LibsqlArgs(); + } + + public sealed class LibsqlState : global::Pulumi.ResourceArgs + { + /// + /// Unique Docker service name. Generated from `Name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + /// + [Input("appName")] + public Input? AppName { get; set; } + + /// + /// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`. + /// + [Input("applicationStatus")] + public Input? ApplicationStatus { get; set; } + + /// + /// Override the container entrypoint command. + /// + [Input("command")] + public Input? Command { get; set; } + + /// + /// Hard CPU limit, for example `1`. + /// + [Input("cpuLimit")] + public Input? CpuLimit { get; set; } + + /// + /// Soft CPU reservation, for example `0.5`. + /// + [Input("cpuReservation")] + public Input? CpuReservation { get; set; } + + /// + /// RFC 3339 timestamp of when the database was created. + /// + [Input("createdAt")] + public Input? CreatedAt { get; set; } + + [Input("databasePassword")] + private Input? _databasePassword; + + /// + /// Password for the database user. + /// + public Input? DatabasePassword + { + get => _databasePassword; + set + { + var emptySecret = Output.CreateSecret(0); + _databasePassword = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Database user to create. + /// + [Input("databaseUser")] + public Input? DatabaseUser { get; set; } + + /// + /// Free-form description. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Detach the service from the shared `dokploy-network`. + /// + [Input("detachDokployNetwork")] + public Input? DetachDokployNetwork { get; set; } + + /// + /// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + /// + [Input("dockerImage")] + public Input? DockerImage { get; set; } + + /// + /// Serve multiple logical databases from one instance through libSQL namespaces. + /// + [Input("enableNamespaces")] + public Input? EnableNamespaces { get; set; } + + /// + /// Docker Swarm endpoint specification, as a JSON object. + /// + [Input("endpointSpecSwarm")] + public Input? EndpointSpecSwarm { get; set; } + + /// + /// Environment variables in `KEY=value` format, one per line. + /// + [Input("env")] + public Input? Env { get; set; } + + /// + /// Environment this database belongs to. + /// + [Input("environmentId")] + public Input? EnvironmentId { get; set; } + + /// + /// Host port exposing the admin API. + /// + [Input("externalAdminPort")] + public Input? ExternalAdminPort { get; set; } + + /// + /// Host port exposing the gRPC replication endpoint. + /// + [Input("externalGrpcPort")] + public Input? ExternalGrpcPort { get; set; } + + /// + /// Host port exposing the HTTP API. + /// + [Input("externalPort")] + public Input? ExternalPort { get; set; } + + /// + /// Docker Swarm health check configuration, as a JSON object. + /// + [Input("healthCheckSwarm")] + public Input? HealthCheckSwarm { get; set; } + + /// + /// Docker Swarm service labels, as a JSON object. + /// + [Input("labelsSwarm")] + public Input? LabelsSwarm { get; set; } + + /// + /// Hard memory limit, for example `512m`. + /// + [Input("memoryLimit")] + public Input? MemoryLimit { get; set; } + + /// + /// Soft memory reservation, for example `256m`. + /// + [Input("memoryReservation")] + public Input? MemoryReservation { get; set; } + + /// + /// Docker Swarm service mode, as a JSON object. + /// + [Input("modeSwarm")] + public Input? ModeSwarm { get; set; } + + /// + /// Display name of the database. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("networkIds")] + private InputList? _networkIds; + + /// + /// IDs of additional Docker networks to attach. + /// + public InputList NetworkIds + { + get => _networkIds ?? (_networkIds = new InputList()); + set => _networkIds = value; + } + + /// + /// Docker Swarm network attachments, as a JSON array. + /// + [Input("networkSwarm")] + public Input? NetworkSwarm { get; set; } + + /// + /// Docker Swarm placement constraints, as a JSON object. + /// + [Input("placementSwarm")] + public Input? PlacementSwarm { get; set; } + + /// + /// Number of replicas to run. + /// + [Input("replicas")] + public Input? Replicas { get; set; } + + /// + /// Docker Swarm restart policy, as a JSON object. + /// + [Input("restartPolicySwarm")] + public Input? RestartPolicySwarm { get; set; } + + /// + /// Docker Swarm rollback configuration, as a JSON object. + /// + [Input("rollbackConfigSwarm")] + public Input? RollbackConfigSwarm { get; set; } + + /// + /// Remote server to deploy on. Omit to use the Dokploy host itself. + /// + [Input("serverId")] + public Input? ServerId { get; set; } + + /// + /// Role this node plays in a libSQL cluster. Valid values: `Primary`, `Replica`. Defaults to `Primary`. + /// + [Input("sqldNode")] + public Input? SqldNode { get; set; } + + /// + /// URL of the primary node, when `SqldNode` is `Replica`. + /// + [Input("sqldPrimaryUrl")] + public Input? SqldPrimaryUrl { get; set; } + + /// + /// Grace period in nanoseconds before a container is killed. + /// + [Input("stopGracePeriodSwarm")] + public Input? StopGracePeriodSwarm { get; set; } + + /// + /// Docker Swarm rolling update configuration, as a JSON object. + /// + [Input("updateConfigSwarm")] + public Input? UpdateConfigSwarm { get; set; } + + public LibsqlState() + { + } + public static new LibsqlState Empty => new LibsqlState(); + } +} diff --git a/sdk/dotnet/MariaDb.cs b/sdk/dotnet/MariaDb.cs index 6bc2acd..d60bd73 100644 --- a/sdk/dotnet/MariaDb.cs +++ b/sdk/dotnet/MariaDb.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A managed MariaDB instance running on Dokploy. + /// + /// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + /// + /// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/mariaDb:MariaDb")] public partial class MariaDb : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Maxvojtkov.Dokploy.csproj b/sdk/dotnet/Maxvojtkov.Dokploy.csproj index a6a928b..3c67e7e 100644 --- a/sdk/dotnet/Maxvojtkov.Dokploy.csproj +++ b/sdk/dotnet/Maxvojtkov.Dokploy.csproj @@ -9,7 +9,7 @@ https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy logo.png - 0.1.0 + 0.2.0 net6.0 enable diff --git a/sdk/dotnet/Mongo.cs b/sdk/dotnet/Mongo.cs index eccd79f..185de1f 100644 --- a/sdk/dotnet/Mongo.cs +++ b/sdk/dotnet/Mongo.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A managed MongoDB instance running on Dokploy. + /// + /// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + /// + /// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/mongo:Mongo")] public partial class Mongo : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Mount.cs b/sdk/dotnet/Mount.cs index 2f5d9b3..720213a 100644 --- a/sdk/dotnet/Mount.cs +++ b/sdk/dotnet/Mount.cs @@ -10,6 +10,15 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A volume, bind mount, or config file attached to a Dokploy service. + /// + /// * `type = "volume"` — a named Docker volume; set `VolumeName`. + /// * `type = "bind"` — a path on the host; set `HostPath`. + /// * `type = "file"` — a file rendered from `Content`; set `FilePath`. + /// + /// > **A `Volume` mount must set `VolumeName`.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time. + /// [DokployResourceType("dokploy:index/mount:Mount")] public partial class Mount : global::Pulumi.CustomResource { @@ -44,7 +53,7 @@ namespace Maxvojtkov.Dokploy public Output ServiceId { get; private set; } = null!; /// - /// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`. + /// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. /// [Output("serviceType")] public Output ServiceType { get; private set; } = null!; @@ -139,7 +148,7 @@ namespace Maxvojtkov.Dokploy public Input ServiceId { get; set; } = null!; /// - /// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`. + /// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. /// [Input("serviceType", required: true)] public Input ServiceType { get; set; } = null!; @@ -195,7 +204,7 @@ namespace Maxvojtkov.Dokploy public Input? ServiceId { get; set; } /// - /// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`. + /// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. /// [Input("serviceType")] public Input? ServiceType { get; set; } diff --git a/sdk/dotnet/MySql.cs b/sdk/dotnet/MySql.cs index 7f748b0..6d93e90 100644 --- a/sdk/dotnet/MySql.cs +++ b/sdk/dotnet/MySql.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A managed MySQL instance running on Dokploy. + /// + /// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + /// + /// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/mySql:MySql")] public partial class MySql : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Network.cs b/sdk/dotnet/Network.cs new file mode 100644 index 0000000..7aa680b --- /dev/null +++ b/sdk/dotnet/Network.cs @@ -0,0 +1,269 @@ +// *** WARNING: this file was generated by pulumi-language-dotnet. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Maxvojtkov.Dokploy +{ + /// + /// A Docker network managed by Dokploy. + /// + /// Attach services to it with `NetworkIds` on `dokploy.Application`, `dokploy.Compose` and the database resources. Every service also joins the shared `dokploy-network` unless `DetachDokployNetwork` is set. + /// + /// > Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy. + /// + [DokployResourceType("dokploy:index/network:Network")] + public partial class Network : global::Pulumi.CustomResource + { + /// + /// Allow standalone containers to attach to an overlay network. + /// + [Output("attachable")] + public Output Attachable { get; private set; } = null!; + + /// + /// RFC 3339 timestamp of when the network was created. + /// + [Output("createdAt")] + public Output CreatedAt { get; private set; } = null!; + + /// + /// Network driver. Use `Overlay` for multi-node Swarm clusters and `Bridge` for a single host. Valid values: `Bridge`, `Overlay`. + /// + [Output("driver")] + public Output Driver { get; private set; } = null!; + + /// + /// Enable IPv4 address allocation. + /// + [Output("enableIpv4")] + public Output EnableIpv4 { get; private set; } = null!; + + /// + /// Enable IPv6 address allocation. + /// + [Output("enableIpv6")] + public Output EnableIpv6 { get; private set; } = null!; + + /// + /// Isolate the network from external access. + /// + [Output("internal")] + public Output Internal { get; private set; } = null!; + + /// + /// Custom IP address management, as a JSON object with `Subnet`, `Gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + /// + [Output("ipam")] + public Output Ipam { get; private set; } = null!; + + /// + /// Maximum transmission unit for the network. Leave unset to use Docker's default. + /// + [Output("mtu")] + public Output Mtu { get; private set; } = null!; + + /// + /// Name of the Docker network. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Organization that owns the network. + /// + [Output("organizationId")] + public Output OrganizationId { get; private set; } = null!; + + /// + /// Remote server to create the network on. Omit to use the Dokploy host itself. + /// + [Output("serverId")] + public Output ServerId { get; private set; } = null!; + + + /// + /// Create a Network resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public Network(string name, NetworkArgs? args = null, CustomResourceOptions? options = null) + : base("dokploy:index/network:Network", name, args ?? new NetworkArgs(), MakeResourceOptions(options, "")) + { + } + + private Network(string name, Input id, NetworkState? state = null, CustomResourceOptions? options = null) + : base("dokploy:index/network:Network", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing Network resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static Network Get(string name, Input id, NetworkState? state = null, CustomResourceOptions? options = null) + { + return new Network(name, id, state, options); + } + } + + public sealed class NetworkArgs : global::Pulumi.ResourceArgs + { + /// + /// Allow standalone containers to attach to an overlay network. + /// + [Input("attachable")] + public Input? Attachable { get; set; } + + /// + /// Network driver. Use `Overlay` for multi-node Swarm clusters and `Bridge` for a single host. Valid values: `Bridge`, `Overlay`. + /// + [Input("driver")] + public Input? Driver { get; set; } + + /// + /// Enable IPv4 address allocation. + /// + [Input("enableIpv4")] + public Input? EnableIpv4 { get; set; } + + /// + /// Enable IPv6 address allocation. + /// + [Input("enableIpv6")] + public Input? EnableIpv6 { get; set; } + + /// + /// Isolate the network from external access. + /// + [Input("internal")] + public Input? Internal { get; set; } + + /// + /// Custom IP address management, as a JSON object with `Subnet`, `Gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + /// + [Input("ipam")] + public Input? Ipam { get; set; } + + /// + /// Maximum transmission unit for the network. Leave unset to use Docker's default. + /// + [Input("mtu")] + public Input? Mtu { get; set; } + + /// + /// Name of the Docker network. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Remote server to create the network on. Omit to use the Dokploy host itself. + /// + [Input("serverId")] + public Input? ServerId { get; set; } + + public NetworkArgs() + { + } + public static new NetworkArgs Empty => new NetworkArgs(); + } + + public sealed class NetworkState : global::Pulumi.ResourceArgs + { + /// + /// Allow standalone containers to attach to an overlay network. + /// + [Input("attachable")] + public Input? Attachable { get; set; } + + /// + /// RFC 3339 timestamp of when the network was created. + /// + [Input("createdAt")] + public Input? CreatedAt { get; set; } + + /// + /// Network driver. Use `Overlay` for multi-node Swarm clusters and `Bridge` for a single host. Valid values: `Bridge`, `Overlay`. + /// + [Input("driver")] + public Input? Driver { get; set; } + + /// + /// Enable IPv4 address allocation. + /// + [Input("enableIpv4")] + public Input? EnableIpv4 { get; set; } + + /// + /// Enable IPv6 address allocation. + /// + [Input("enableIpv6")] + public Input? EnableIpv6 { get; set; } + + /// + /// Isolate the network from external access. + /// + [Input("internal")] + public Input? Internal { get; set; } + + /// + /// Custom IP address management, as a JSON object with `Subnet`, `Gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + /// + [Input("ipam")] + public Input? Ipam { get; set; } + + /// + /// Maximum transmission unit for the network. Leave unset to use Docker's default. + /// + [Input("mtu")] + public Input? Mtu { get; set; } + + /// + /// Name of the Docker network. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Organization that owns the network. + /// + [Input("organizationId")] + public Input? OrganizationId { get; set; } + + /// + /// Remote server to create the network on. Omit to use the Dokploy host itself. + /// + [Input("serverId")] + public Input? ServerId { get; set; } + + public NetworkState() + { + } + public static new NetworkState Empty => new NetworkState(); + } +} diff --git a/sdk/dotnet/Port.cs b/sdk/dotnet/Port.cs index bad4b03..49c53d6 100644 --- a/sdk/dotnet/Port.cs +++ b/sdk/dotnet/Port.cs @@ -10,6 +10,9 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A published port that exposes an application directly on the host, bypassing Traefik. + /// [DokployResourceType("dokploy:index/port:Port")] public partial class Port : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Postgres.cs b/sdk/dotnet/Postgres.cs index db7c25d..345d4d3 100644 --- a/sdk/dotnet/Postgres.cs +++ b/sdk/dotnet/Postgres.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A managed PostgreSQL instance running on Dokploy. + /// + /// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + /// + /// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/postgres:Postgres")] public partial class Postgres : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Project.cs b/sdk/dotnet/Project.cs index b0385f6..67142ec 100644 --- a/sdk/dotnet/Project.cs +++ b/sdk/dotnet/Project.cs @@ -10,6 +10,11 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A Dokploy project: the top-level container for environments and services. + /// + /// Creating a project automatically creates a default `Production` environment. Its ID is exposed as `DefaultEnvironmentId`, so services can be attached without declaring a separate `dokploy.Environment` resource. + /// [DokployResourceType("dokploy:index/project:Project")] public partial class Project : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Redirect.cs b/sdk/dotnet/Redirect.cs index 66d6342..64504e2 100644 --- a/sdk/dotnet/Redirect.cs +++ b/sdk/dotnet/Redirect.cs @@ -10,6 +10,9 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A Traefik redirect rule attached to an application. + /// [DokployResourceType("dokploy:index/redirect:Redirect")] public partial class Redirect : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Redis.cs b/sdk/dotnet/Redis.cs index 3edc173..6459108 100644 --- a/sdk/dotnet/Redis.cs +++ b/sdk/dotnet/Redis.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A managed Redis instance running on Dokploy. + /// + /// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + /// + /// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + /// [DokployResourceType("dokploy:index/redis:Redis")] public partial class Redis : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Registry.cs b/sdk/dotnet/Registry.cs index 8cf7291..c40b3ce 100644 --- a/sdk/dotnet/Registry.cs +++ b/sdk/dotnet/Registry.cs @@ -10,6 +10,9 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// A container registry that Dokploy pushes built images to and pulls them from. + /// [DokployResourceType("dokploy:index/registry:Registry")] public partial class Registry : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/Schedule.cs b/sdk/dotnet/Schedule.cs new file mode 100644 index 0000000..ee843ef --- /dev/null +++ b/sdk/dotnet/Schedule.cs @@ -0,0 +1,352 @@ +// *** WARNING: this file was generated by pulumi-language-dotnet. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Maxvojtkov.Dokploy +{ + /// + /// A cron job Dokploy runs on a schedule. + /// + /// `ScheduleType` selects where the command runs: + /// + /// * `Application` — inside a running application container; set `ApplicationId`. + /// * `Compose` — inside one service of a Compose stack; set `ComposeId` and `ServiceName`. + /// * `Server` — on a remote server; set `ServerId`. + /// * `dokploy-server` — on the Dokploy host itself. + /// + /// > A schedule targeting an application runs inside its container, so the container has to be running when the cron fires. + /// + [DokployResourceType("dokploy:index/schedule:Schedule")] + public partial class Schedule : global::Pulumi.CustomResource + { + /// + /// Docker service name the schedule targets. Derived by Dokploy when omitted. + /// + [Output("appName")] + public Output AppName { get; private set; } = null!; + + /// + /// Application this schedule belongs to. + /// + [Output("applicationId")] + public Output ApplicationId { get; private set; } = null!; + + /// + /// Command to run. + /// + [Output("command")] + public Output Command { get; private set; } = null!; + + /// + /// Compose stack this schedule belongs to. + /// + [Output("composeId")] + public Output ComposeId { get; private set; } = null!; + + /// + /// RFC 3339 timestamp of when the schedule was created. + /// + [Output("createdAt")] + public Output CreatedAt { get; private set; } = null!; + + /// + /// Standard five-field cron expression, for example `0 3 * * *`. + /// + [Output("cronExpression")] + public Output CronExpression { get; private set; } = null!; + + /// + /// Free-form description. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Whether the schedule is active. + /// + [Output("enabled")] + public Output Enabled { get; private set; } = null!; + + /// + /// Display name of the schedule. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Where the command runs. Valid values: `Application`, `Compose`, `Server`, `dokploy-server`. Defaults to `Application`. + /// + [Output("scheduleType")] + public Output ScheduleType { get; private set; } = null!; + + /// + /// Multi-line script to run instead of a single command. + /// + [Output("script")] + public Output Script { get; private set; } = null!; + + /// + /// Server this schedule runs on. + /// + [Output("serverId")] + public Output ServerId { get; private set; } = null!; + + /// + /// Service inside a Compose stack to run the command in. + /// + [Output("serviceName")] + public Output ServiceName { get; private set; } = null!; + + /// + /// Shell used to interpret the command. Valid values: `Bash`, `Sh`. Defaults to `Bash`. + /// + [Output("shellType")] + public Output ShellType { get; private set; } = null!; + + /// + /// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + /// + [Output("timezone")] + public Output Timezone { get; private set; } = null!; + + + /// + /// Create a Schedule resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public Schedule(string name, ScheduleArgs args, CustomResourceOptions? options = null) + : base("dokploy:index/schedule:Schedule", name, args ?? new ScheduleArgs(), MakeResourceOptions(options, "")) + { + } + + private Schedule(string name, Input id, ScheduleState? state = null, CustomResourceOptions? options = null) + : base("dokploy:index/schedule:Schedule", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing Schedule resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static Schedule Get(string name, Input id, ScheduleState? state = null, CustomResourceOptions? options = null) + { + return new Schedule(name, id, state, options); + } + } + + public sealed class ScheduleArgs : global::Pulumi.ResourceArgs + { + /// + /// Docker service name the schedule targets. Derived by Dokploy when omitted. + /// + [Input("appName")] + public Input? AppName { get; set; } + + /// + /// Application this schedule belongs to. + /// + [Input("applicationId")] + public Input? ApplicationId { get; set; } + + /// + /// Command to run. + /// + [Input("command", required: true)] + public Input Command { get; set; } = null!; + + /// + /// Compose stack this schedule belongs to. + /// + [Input("composeId")] + public Input? ComposeId { get; set; } + + /// + /// Standard five-field cron expression, for example `0 3 * * *`. + /// + [Input("cronExpression", required: true)] + public Input CronExpression { get; set; } = null!; + + /// + /// Free-form description. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Whether the schedule is active. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + /// + /// Display name of the schedule. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Where the command runs. Valid values: `Application`, `Compose`, `Server`, `dokploy-server`. Defaults to `Application`. + /// + [Input("scheduleType")] + public Input? ScheduleType { get; set; } + + /// + /// Multi-line script to run instead of a single command. + /// + [Input("script")] + public Input? Script { get; set; } + + /// + /// Server this schedule runs on. + /// + [Input("serverId")] + public Input? ServerId { get; set; } + + /// + /// Service inside a Compose stack to run the command in. + /// + [Input("serviceName")] + public Input? ServiceName { get; set; } + + /// + /// Shell used to interpret the command. Valid values: `Bash`, `Sh`. Defaults to `Bash`. + /// + [Input("shellType")] + public Input? ShellType { get; set; } + + /// + /// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + /// + [Input("timezone")] + public Input? Timezone { get; set; } + + public ScheduleArgs() + { + } + public static new ScheduleArgs Empty => new ScheduleArgs(); + } + + public sealed class ScheduleState : global::Pulumi.ResourceArgs + { + /// + /// Docker service name the schedule targets. Derived by Dokploy when omitted. + /// + [Input("appName")] + public Input? AppName { get; set; } + + /// + /// Application this schedule belongs to. + /// + [Input("applicationId")] + public Input? ApplicationId { get; set; } + + /// + /// Command to run. + /// + [Input("command")] + public Input? Command { get; set; } + + /// + /// Compose stack this schedule belongs to. + /// + [Input("composeId")] + public Input? ComposeId { get; set; } + + /// + /// RFC 3339 timestamp of when the schedule was created. + /// + [Input("createdAt")] + public Input? CreatedAt { get; set; } + + /// + /// Standard five-field cron expression, for example `0 3 * * *`. + /// + [Input("cronExpression")] + public Input? CronExpression { get; set; } + + /// + /// Free-form description. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Whether the schedule is active. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + /// + /// Display name of the schedule. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Where the command runs. Valid values: `Application`, `Compose`, `Server`, `dokploy-server`. Defaults to `Application`. + /// + [Input("scheduleType")] + public Input? ScheduleType { get; set; } + + /// + /// Multi-line script to run instead of a single command. + /// + [Input("script")] + public Input? Script { get; set; } + + /// + /// Server this schedule runs on. + /// + [Input("serverId")] + public Input? ServerId { get; set; } + + /// + /// Service inside a Compose stack to run the command in. + /// + [Input("serviceName")] + public Input? ServiceName { get; set; } + + /// + /// Shell used to interpret the command. Valid values: `Bash`, `Sh`. Defaults to `Bash`. + /// + [Input("shellType")] + public Input? ShellType { get; set; } + + /// + /// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + /// + [Input("timezone")] + public Input? Timezone { get; set; } + + public ScheduleState() + { + } + public static new ScheduleState Empty => new ScheduleState(); + } +} diff --git a/sdk/dotnet/Security.cs b/sdk/dotnet/Security.cs index e4d1e7f..23ab6cd 100644 --- a/sdk/dotnet/Security.cs +++ b/sdk/dotnet/Security.cs @@ -10,6 +10,11 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// HTTP basic authentication credentials protecting an application's domains. + /// + /// > Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured. + /// [DokployResourceType("dokploy:index/security:Security")] public partial class Security : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/SshKey.cs b/sdk/dotnet/SshKey.cs index b9f96c0..ae80105 100644 --- a/sdk/dotnet/SshKey.cs +++ b/sdk/dotnet/SshKey.cs @@ -10,6 +10,13 @@ using Pulumi; namespace Maxvojtkov.Dokploy { + /// + /// An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers. + /// + /// > The private key is stored in Terraform state. Use a state backend with encryption at rest. + /// + /// > Dokploy's update endpoint only accepts `Name` and `Description`. Changing either key forces a new resource. + /// [DokployResourceType("dokploy:index/sshKey:SshKey")] public partial class SshKey : global::Pulumi.CustomResource { diff --git a/sdk/dotnet/VaultProvider.cs b/sdk/dotnet/VaultProvider.cs new file mode 100644 index 0000000..c436710 --- /dev/null +++ b/sdk/dotnet/VaultProvider.cs @@ -0,0 +1,197 @@ +// *** WARNING: this file was generated by pulumi-language-dotnet. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Maxvojtkov.Dokploy +{ + /// + /// An external secret manager Dokploy resolves environment variables from at deploy time. + /// + /// Reference a secret from any `Env` value with `${{vault.<scope>.<key>}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change. + /// + /// Supported `providerType` values: `Hashicorp` (Vault/OpenBao), `Infisical`, `Aws` (Secrets Manager), `Doppler`, `Azure` (Key Vault) and `Scaleway`. + /// + [DokployResourceType("dokploy:index/vaultProvider:VaultProvider")] + public partial class VaultProvider : global::Pulumi.CustomResource + { + /// + /// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + /// + [Output("assignments")] + public Output Assignments { get; private set; } = null!; + + /// + /// Provider credentials as a JSON object, including the `providerType` discriminator. + /// + [Output("config")] + public Output Config { get; private set; } = null!; + + /// + /// RFC 3339 timestamp of when the connection was created. + /// + [Output("createdAt")] + public Output CreatedAt { get; private set; } = null!; + + /// + /// Name of the connection, unique within the organization. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Organization that owns the connection. + /// + [Output("organizationId")] + public Output OrganizationId { get; private set; } = null!; + + /// + /// Provider kind derived from `Config`. + /// + [Output("providerType")] + public Output ProviderType { get; private set; } = null!; + + + /// + /// Create a VaultProvider resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public VaultProvider(string name, VaultProviderArgs args, CustomResourceOptions? options = null) + : base("dokploy:index/vaultProvider:VaultProvider", name, args ?? new VaultProviderArgs(), MakeResourceOptions(options, "")) + { + } + + private VaultProvider(string name, Input id, VaultProviderState? state = null, CustomResourceOptions? options = null) + : base("dokploy:index/vaultProvider:VaultProvider", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}", + AdditionalSecretOutputs = + { + "config", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing VaultProvider resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static VaultProvider Get(string name, Input id, VaultProviderState? state = null, CustomResourceOptions? options = null) + { + return new VaultProvider(name, id, state, options); + } + } + + public sealed class VaultProviderArgs : global::Pulumi.ResourceArgs + { + /// + /// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + /// + [Input("assignments", required: true)] + public Input Assignments { get; set; } = null!; + + [Input("config", required: true)] + private Input? _config; + + /// + /// Provider credentials as a JSON object, including the `providerType` discriminator. + /// + public Input? Config + { + get => _config; + set + { + var emptySecret = Output.CreateSecret(0); + _config = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// Name of the connection, unique within the organization. + /// + [Input("name")] + public Input? Name { get; set; } + + public VaultProviderArgs() + { + } + public static new VaultProviderArgs Empty => new VaultProviderArgs(); + } + + public sealed class VaultProviderState : global::Pulumi.ResourceArgs + { + /// + /// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + /// + [Input("assignments")] + public Input? Assignments { get; set; } + + [Input("config")] + private Input? _config; + + /// + /// Provider credentials as a JSON object, including the `providerType` discriminator. + /// + public Input? Config + { + get => _config; + set + { + var emptySecret = Output.CreateSecret(0); + _config = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// RFC 3339 timestamp of when the connection was created. + /// + [Input("createdAt")] + public Input? CreatedAt { get; set; } + + /// + /// Name of the connection, unique within the organization. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Organization that owns the connection. + /// + [Input("organizationId")] + public Input? OrganizationId { get; set; } + + /// + /// Provider kind derived from `Config`. + /// + [Input("providerType")] + public Input? ProviderType { get; set; } + + public VaultProviderState() + { + } + public static new VaultProviderState Empty => new VaultProviderState(); + } +} diff --git a/sdk/dotnet/VolumeBackup.cs b/sdk/dotnet/VolumeBackup.cs new file mode 100644 index 0000000..c576a02 --- /dev/null +++ b/sdk/dotnet/VolumeBackup.cs @@ -0,0 +1,437 @@ +// *** WARNING: this file was generated by pulumi-language-dotnet. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Maxvojtkov.Dokploy +{ + /// + /// A scheduled backup of a Docker volume to a configured `dokploy.Destination`. + /// + /// This is the counterpart to a `dokploy.Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule. + /// + /// Set exactly one of the `*_id` attributes to say which service owns the volume. + /// + [DokployResourceType("dokploy:index/volumeBackup:VolumeBackup")] + public partial class VolumeBackup : global::Pulumi.CustomResource + { + /// + /// Docker service name that owns the volume. Derived by Dokploy when omitted. + /// + [Output("appName")] + public Output AppName { get; private set; } = null!; + + /// + /// Application that owns the volume. + /// + [Output("applicationId")] + public Output ApplicationId { get; private set; } = null!; + + /// + /// Compose stack that owns the volume. + /// + [Output("composeId")] + public Output ComposeId { get; private set; } = null!; + + /// + /// RFC 3339 timestamp of when the backup job was created. + /// + [Output("createdAt")] + public Output CreatedAt { get; private set; } = null!; + + /// + /// Standard five-field cron expression, for example `0 4 * * *`. + /// + [Output("cronExpression")] + public Output CronExpression { get; private set; } = null!; + + /// + /// Backup destination (S3-compatible bucket) to upload to. + /// + [Output("destinationId")] + public Output DestinationId { get; private set; } = null!; + + /// + /// Whether the backup schedule is active. + /// + [Output("enabled")] + public Output Enabled { get; private set; } = null!; + + /// + /// Number of backups to retain. Older ones are pruned. + /// + [Output("keepLatestCount")] + public Output KeepLatestCount { get; private set; } = null!; + + /// + /// libSQL instance that owns the volume. + /// + [Output("libsqlId")] + public Output LibsqlId { get; private set; } = null!; + + /// + /// MariaDB instance that owns the volume. + /// + [Output("mariadbId")] + public Output MariadbId { get; private set; } = null!; + + /// + /// MongoDB instance that owns the volume. + /// + [Output("mongoId")] + public Output MongoId { get; private set; } = null!; + + /// + /// MySQL instance that owns the volume. + /// + [Output("mysqlId")] + public Output MysqlId { get; private set; } = null!; + + /// + /// Display name of the backup job. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// PostgreSQL instance that owns the volume. + /// + [Output("postgresId")] + public Output PostgresId { get; private set; } = null!; + + /// + /// Path prefix inside the destination bucket, for example `backups/shop/`. + /// + [Output("prefix")] + public Output Prefix { get; private set; } = null!; + + /// + /// Redis instance that owns the volume. + /// + [Output("redisId")] + public Output RedisId { get; private set; } = null!; + + /// + /// Service inside a Compose stack that owns the volume. + /// + [Output("serviceName")] + public Output ServiceName { get; private set; } = null!; + + /// + /// The kind of service that owns the volume. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. Defaults to `Application`. + /// + [Output("serviceType")] + public Output ServiceType { get; private set; } = null!; + + /// + /// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + /// + [Output("turnOff")] + public Output TurnOff { get; private set; } = null!; + + /// + /// Name of the Docker volume to back up. + /// + [Output("volumeName")] + public Output VolumeName { get; private set; } = null!; + + + /// + /// Create a VolumeBackup resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public VolumeBackup(string name, VolumeBackupArgs args, CustomResourceOptions? options = null) + : base("dokploy:index/volumeBackup:VolumeBackup", name, args ?? new VolumeBackupArgs(), MakeResourceOptions(options, "")) + { + } + + private VolumeBackup(string name, Input id, VolumeBackupState? state = null, CustomResourceOptions? options = null) + : base("dokploy:index/volumeBackup:VolumeBackup", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing VolumeBackup resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static VolumeBackup Get(string name, Input id, VolumeBackupState? state = null, CustomResourceOptions? options = null) + { + return new VolumeBackup(name, id, state, options); + } + } + + public sealed class VolumeBackupArgs : global::Pulumi.ResourceArgs + { + /// + /// Docker service name that owns the volume. Derived by Dokploy when omitted. + /// + [Input("appName")] + public Input? AppName { get; set; } + + /// + /// Application that owns the volume. + /// + [Input("applicationId")] + public Input? ApplicationId { get; set; } + + /// + /// Compose stack that owns the volume. + /// + [Input("composeId")] + public Input? ComposeId { get; set; } + + /// + /// Standard five-field cron expression, for example `0 4 * * *`. + /// + [Input("cronExpression", required: true)] + public Input CronExpression { get; set; } = null!; + + /// + /// Backup destination (S3-compatible bucket) to upload to. + /// + [Input("destinationId", required: true)] + public Input DestinationId { get; set; } = null!; + + /// + /// Whether the backup schedule is active. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + /// + /// Number of backups to retain. Older ones are pruned. + /// + [Input("keepLatestCount")] + public Input? KeepLatestCount { get; set; } + + /// + /// libSQL instance that owns the volume. + /// + [Input("libsqlId")] + public Input? LibsqlId { get; set; } + + /// + /// MariaDB instance that owns the volume. + /// + [Input("mariadbId")] + public Input? MariadbId { get; set; } + + /// + /// MongoDB instance that owns the volume. + /// + [Input("mongoId")] + public Input? MongoId { get; set; } + + /// + /// MySQL instance that owns the volume. + /// + [Input("mysqlId")] + public Input? MysqlId { get; set; } + + /// + /// Display name of the backup job. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// PostgreSQL instance that owns the volume. + /// + [Input("postgresId")] + public Input? PostgresId { get; set; } + + /// + /// Path prefix inside the destination bucket, for example `backups/shop/`. + /// + [Input("prefix", required: true)] + public Input Prefix { get; set; } = null!; + + /// + /// Redis instance that owns the volume. + /// + [Input("redisId")] + public Input? RedisId { get; set; } + + /// + /// Service inside a Compose stack that owns the volume. + /// + [Input("serviceName")] + public Input? ServiceName { get; set; } + + /// + /// The kind of service that owns the volume. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. Defaults to `Application`. + /// + [Input("serviceType")] + public Input? ServiceType { get; set; } + + /// + /// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + /// + [Input("turnOff")] + public Input? TurnOff { get; set; } + + /// + /// Name of the Docker volume to back up. + /// + [Input("volumeName", required: true)] + public Input VolumeName { get; set; } = null!; + + public VolumeBackupArgs() + { + } + public static new VolumeBackupArgs Empty => new VolumeBackupArgs(); + } + + public sealed class VolumeBackupState : global::Pulumi.ResourceArgs + { + /// + /// Docker service name that owns the volume. Derived by Dokploy when omitted. + /// + [Input("appName")] + public Input? AppName { get; set; } + + /// + /// Application that owns the volume. + /// + [Input("applicationId")] + public Input? ApplicationId { get; set; } + + /// + /// Compose stack that owns the volume. + /// + [Input("composeId")] + public Input? ComposeId { get; set; } + + /// + /// RFC 3339 timestamp of when the backup job was created. + /// + [Input("createdAt")] + public Input? CreatedAt { get; set; } + + /// + /// Standard five-field cron expression, for example `0 4 * * *`. + /// + [Input("cronExpression")] + public Input? CronExpression { get; set; } + + /// + /// Backup destination (S3-compatible bucket) to upload to. + /// + [Input("destinationId")] + public Input? DestinationId { get; set; } + + /// + /// Whether the backup schedule is active. + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + /// + /// Number of backups to retain. Older ones are pruned. + /// + [Input("keepLatestCount")] + public Input? KeepLatestCount { get; set; } + + /// + /// libSQL instance that owns the volume. + /// + [Input("libsqlId")] + public Input? LibsqlId { get; set; } + + /// + /// MariaDB instance that owns the volume. + /// + [Input("mariadbId")] + public Input? MariadbId { get; set; } + + /// + /// MongoDB instance that owns the volume. + /// + [Input("mongoId")] + public Input? MongoId { get; set; } + + /// + /// MySQL instance that owns the volume. + /// + [Input("mysqlId")] + public Input? MysqlId { get; set; } + + /// + /// Display name of the backup job. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// PostgreSQL instance that owns the volume. + /// + [Input("postgresId")] + public Input? PostgresId { get; set; } + + /// + /// Path prefix inside the destination bucket, for example `backups/shop/`. + /// + [Input("prefix")] + public Input? Prefix { get; set; } + + /// + /// Redis instance that owns the volume. + /// + [Input("redisId")] + public Input? RedisId { get; set; } + + /// + /// Service inside a Compose stack that owns the volume. + /// + [Input("serviceName")] + public Input? ServiceName { get; set; } + + /// + /// The kind of service that owns the volume. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. Defaults to `Application`. + /// + [Input("serviceType")] + public Input? ServiceType { get; set; } + + /// + /// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + /// + [Input("turnOff")] + public Input? TurnOff { get; set; } + + /// + /// Name of the Docker volume to back up. + /// + [Input("volumeName")] + public Input? VolumeName { get; set; } + + public VolumeBackupState() + { + } + public static new VolumeBackupState Empty => new VolumeBackupState(); + } +} diff --git a/sdk/dotnet/pulumi-plugin.json b/sdk/dotnet/pulumi-plugin.json index 599eadc..db03583 100644 --- a/sdk/dotnet/pulumi-plugin.json +++ b/sdk/dotnet/pulumi-plugin.json @@ -1,6 +1,6 @@ { "resource": true, "name": "dokploy", - "version": "0.1.0", + "version": "0.2.0", "server": "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}" } diff --git a/sdk/dotnet/version.txt b/sdk/dotnet/version.txt index 6c6aa7c..341cf11 100644 --- a/sdk/dotnet/version.txt +++ b/sdk/dotnet/version.txt @@ -1 +1 @@ -0.1.0 \ No newline at end of file +0.2.0 \ No newline at end of file diff --git a/sdk/go/dokploy/application.go b/sdk/go/dokploy/application.go index bcb8b98..2704898 100644 --- a/sdk/go/dokploy/application.go +++ b/sdk/go/dokploy/application.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact. +// +// Dokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`. +// +// > Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a `terraformData` provisioner calling `application.deploy`. type Application struct { pulumi.CustomResourceState @@ -121,6 +126,8 @@ type Application struct { HealthCheckSwarm pulumi.StringPtrOutput `pulumi:"healthCheckSwarm"` // Heroku buildpack stack version. HerokuVersion pulumi.StringOutput `pulumi:"herokuVersion"` + // Icon shown next to the service in the Dokploy UI. + Icon pulumi.StringPtrOutput `pulumi:"icon"` // Build a preview deployment for each pull request. IsPreviewDeploymentsActive pulumi.BoolOutput `pulumi:"isPreviewDeploymentsActive"` // Serve a static build as a single-page application. @@ -165,6 +172,8 @@ type Application struct { PreviewPath pulumi.StringOutput `pulumi:"previewPath"` // Container port exposed by preview deployments. PreviewPort pulumi.IntOutput `pulumi:"previewPort"` + // Only build previews for pull requests opened by users with repository collaborator permissions. + PreviewRequireCollaboratorPermissions pulumi.BoolOutput `pulumi:"previewRequireCollaboratorPermissions"` // Wildcard domain used to expose preview deployments. PreviewWildcard pulumi.StringPtrOutput `pulumi:"previewWildcard"` // Directory served when `buildType` is `static`. @@ -363,6 +372,8 @@ type applicationState struct { HealthCheckSwarm *string `pulumi:"healthCheckSwarm"` // Heroku buildpack stack version. HerokuVersion *string `pulumi:"herokuVersion"` + // Icon shown next to the service in the Dokploy UI. + Icon *string `pulumi:"icon"` // Build a preview deployment for each pull request. IsPreviewDeploymentsActive *bool `pulumi:"isPreviewDeploymentsActive"` // Serve a static build as a single-page application. @@ -407,6 +418,8 @@ type applicationState struct { PreviewPath *string `pulumi:"previewPath"` // Container port exposed by preview deployments. PreviewPort *int `pulumi:"previewPort"` + // Only build previews for pull requests opened by users with repository collaborator permissions. + PreviewRequireCollaboratorPermissions *bool `pulumi:"previewRequireCollaboratorPermissions"` // Wildcard domain used to expose preview deployments. PreviewWildcard *string `pulumi:"previewWildcard"` // Directory served when `buildType` is `static`. @@ -558,6 +571,8 @@ type ApplicationState struct { HealthCheckSwarm pulumi.StringPtrInput // Heroku buildpack stack version. HerokuVersion pulumi.StringPtrInput + // Icon shown next to the service in the Dokploy UI. + Icon pulumi.StringPtrInput // Build a preview deployment for each pull request. IsPreviewDeploymentsActive pulumi.BoolPtrInput // Serve a static build as a single-page application. @@ -602,6 +617,8 @@ type ApplicationState struct { PreviewPath pulumi.StringPtrInput // Container port exposed by preview deployments. PreviewPort pulumi.IntPtrInput + // Only build previews for pull requests opened by users with repository collaborator permissions. + PreviewRequireCollaboratorPermissions pulumi.BoolPtrInput // Wildcard domain used to expose preview deployments. PreviewWildcard pulumi.StringPtrInput // Directory served when `buildType` is `static`. @@ -753,6 +770,8 @@ type applicationArgs struct { HealthCheckSwarm *string `pulumi:"healthCheckSwarm"` // Heroku buildpack stack version. HerokuVersion *string `pulumi:"herokuVersion"` + // Icon shown next to the service in the Dokploy UI. + Icon *string `pulumi:"icon"` // Build a preview deployment for each pull request. IsPreviewDeploymentsActive *bool `pulumi:"isPreviewDeploymentsActive"` // Serve a static build as a single-page application. @@ -797,6 +816,8 @@ type applicationArgs struct { PreviewPath *string `pulumi:"previewPath"` // Container port exposed by preview deployments. PreviewPort *int `pulumi:"previewPort"` + // Only build previews for pull requests opened by users with repository collaborator permissions. + PreviewRequireCollaboratorPermissions *bool `pulumi:"previewRequireCollaboratorPermissions"` // Wildcard domain used to expose preview deployments. PreviewWildcard *string `pulumi:"previewWildcard"` // Directory served when `buildType` is `static`. @@ -945,6 +966,8 @@ type ApplicationArgs struct { HealthCheckSwarm pulumi.StringPtrInput // Heroku buildpack stack version. HerokuVersion pulumi.StringPtrInput + // Icon shown next to the service in the Dokploy UI. + Icon pulumi.StringPtrInput // Build a preview deployment for each pull request. IsPreviewDeploymentsActive pulumi.BoolPtrInput // Serve a static build as a single-page application. @@ -989,6 +1012,8 @@ type ApplicationArgs struct { PreviewPath pulumi.StringPtrInput // Container port exposed by preview deployments. PreviewPort pulumi.IntPtrInput + // Only build previews for pull requests opened by users with repository collaborator permissions. + PreviewRequireCollaboratorPermissions pulumi.BoolPtrInput // Wildcard domain used to expose preview deployments. PreviewWildcard pulumi.StringPtrInput // Directory served when `buildType` is `static`. @@ -1385,6 +1410,11 @@ func (o ApplicationOutput) HerokuVersion() pulumi.StringOutput { return o.ApplyT(func(v *Application) pulumi.StringOutput { return v.HerokuVersion }).(pulumi.StringOutput) } +// Icon shown next to the service in the Dokploy UI. +func (o ApplicationOutput) Icon() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Application) pulumi.StringPtrOutput { return v.Icon }).(pulumi.StringPtrOutput) +} + // Build a preview deployment for each pull request. func (o ApplicationOutput) IsPreviewDeploymentsActive() pulumi.BoolOutput { return o.ApplyT(func(v *Application) pulumi.BoolOutput { return v.IsPreviewDeploymentsActive }).(pulumi.BoolOutput) @@ -1495,6 +1525,11 @@ func (o ApplicationOutput) PreviewPort() pulumi.IntOutput { return o.ApplyT(func(v *Application) pulumi.IntOutput { return v.PreviewPort }).(pulumi.IntOutput) } +// Only build previews for pull requests opened by users with repository collaborator permissions. +func (o ApplicationOutput) PreviewRequireCollaboratorPermissions() pulumi.BoolOutput { + return o.ApplyT(func(v *Application) pulumi.BoolOutput { return v.PreviewRequireCollaboratorPermissions }).(pulumi.BoolOutput) +} + // Wildcard domain used to expose preview deployments. func (o ApplicationOutput) PreviewWildcard() pulumi.StringPtrOutput { return o.ApplyT(func(v *Application) pulumi.StringPtrOutput { return v.PreviewWildcard }).(pulumi.StringPtrOutput) diff --git a/sdk/go/dokploy/certificate.go b/sdk/go/dokploy/certificate.go index e5daf3e..a8be61f 100644 --- a/sdk/go/dokploy/certificate.go +++ b/sdk/go/dokploy/certificate.go @@ -12,6 +12,9 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A TLS certificate uploaded to Dokploy, for domains that use `certificateType = "custom"`. +// +// > The private key is stored in Terraform state. Use a state backend with encryption at rest. type Certificate struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/compose.go b/sdk/go/dokploy/compose.go index 66bc0b7..11f42ed 100644 --- a/sdk/go/dokploy/compose.go +++ b/sdk/go/dokploy/compose.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A Docker Compose or Docker Swarm stack managed by Dokploy. +// +// Set `composeFile` to manage the stack definition inline (with `sourceType = "raw"`), or point the stack at a Git repository and set `composePath`. +// +// > Creating this resource does **not** deploy the stack. type Compose struct { pulumi.CustomResourceState @@ -41,6 +46,8 @@ type Compose struct { ComposeStatus pulumi.StringOutput `pulumi:"composeStatus"` // Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. ComposeType pulumi.StringOutput `pulumi:"composeType"` + // Write the environment variables to a `.env` file next to the Compose file. + CreateEnvFile pulumi.BoolOutput `pulumi:"createEnvFile"` // RFC 3339 timestamp of when the stack was created. CreatedAt pulumi.StringOutput `pulumi:"createdAt"` // Branch to deploy for a custom Git remote. @@ -81,6 +88,8 @@ type Compose struct { GitlabProjectId pulumi.IntPtrOutput `pulumi:"gitlabProjectId"` // GitLab repository name. GitlabRepository pulumi.StringPtrOutput `pulumi:"gitlabRepository"` + // Icon shown next to the stack in the Dokploy UI. + Icon pulumi.StringPtrOutput `pulumi:"icon"` // Run the stack on its own isolated Docker network. IsolatedDeployment pulumi.BoolOutput `pulumi:"isolatedDeployment"` // Prefix volume names for isolated deployments. Retained for backwards compatibility. @@ -95,6 +104,8 @@ type Compose struct { Repository pulumi.StringPtrOutput `pulumi:"repository"` // Remote server to deploy on. Omit to use the Dokploy host itself. ServerId pulumi.StringPtrOutput `pulumi:"serverId"` + // Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + ServiceNetworks pulumi.StringPtrOutput `pulumi:"serviceNetworks"` // Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. SourceType pulumi.StringOutput `pulumi:"sourceType"` // Suffix appended to generated resource names. @@ -164,6 +175,8 @@ type composeState struct { ComposeStatus *string `pulumi:"composeStatus"` // Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. ComposeType *string `pulumi:"composeType"` + // Write the environment variables to a `.env` file next to the Compose file. + CreateEnvFile *bool `pulumi:"createEnvFile"` // RFC 3339 timestamp of when the stack was created. CreatedAt *string `pulumi:"createdAt"` // Branch to deploy for a custom Git remote. @@ -204,6 +217,8 @@ type composeState struct { GitlabProjectId *int `pulumi:"gitlabProjectId"` // GitLab repository name. GitlabRepository *string `pulumi:"gitlabRepository"` + // Icon shown next to the stack in the Dokploy UI. + Icon *string `pulumi:"icon"` // Run the stack on its own isolated Docker network. IsolatedDeployment *bool `pulumi:"isolatedDeployment"` // Prefix volume names for isolated deployments. Retained for backwards compatibility. @@ -218,6 +233,8 @@ type composeState struct { Repository *string `pulumi:"repository"` // Remote server to deploy on. Omit to use the Dokploy host itself. ServerId *string `pulumi:"serverId"` + // Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + ServiceNetworks *string `pulumi:"serviceNetworks"` // Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. SourceType *string `pulumi:"sourceType"` // Suffix appended to generated resource names. @@ -255,6 +272,8 @@ type ComposeState struct { ComposeStatus pulumi.StringPtrInput // Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. ComposeType pulumi.StringPtrInput + // Write the environment variables to a `.env` file next to the Compose file. + CreateEnvFile pulumi.BoolPtrInput // RFC 3339 timestamp of when the stack was created. CreatedAt pulumi.StringPtrInput // Branch to deploy for a custom Git remote. @@ -295,6 +314,8 @@ type ComposeState struct { GitlabProjectId pulumi.IntPtrInput // GitLab repository name. GitlabRepository pulumi.StringPtrInput + // Icon shown next to the stack in the Dokploy UI. + Icon pulumi.StringPtrInput // Run the stack on its own isolated Docker network. IsolatedDeployment pulumi.BoolPtrInput // Prefix volume names for isolated deployments. Retained for backwards compatibility. @@ -309,6 +330,8 @@ type ComposeState struct { Repository pulumi.StringPtrInput // Remote server to deploy on. Omit to use the Dokploy host itself. ServerId pulumi.StringPtrInput + // Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + ServiceNetworks pulumi.StringPtrInput // Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. SourceType pulumi.StringPtrInput // Suffix appended to generated resource names. @@ -348,6 +371,8 @@ type composeArgs struct { ComposePath *string `pulumi:"composePath"` // Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. ComposeType *string `pulumi:"composeType"` + // Write the environment variables to a `.env` file next to the Compose file. + CreateEnvFile *bool `pulumi:"createEnvFile"` // Branch to deploy for a custom Git remote. CustomGitBranch *string `pulumi:"customGitBranch"` // SSH key used to clone a private custom Git remote. @@ -386,6 +411,8 @@ type composeArgs struct { GitlabProjectId *int `pulumi:"gitlabProjectId"` // GitLab repository name. GitlabRepository *string `pulumi:"gitlabRepository"` + // Icon shown next to the stack in the Dokploy UI. + Icon *string `pulumi:"icon"` // Run the stack on its own isolated Docker network. IsolatedDeployment *bool `pulumi:"isolatedDeployment"` // Prefix volume names for isolated deployments. Retained for backwards compatibility. @@ -400,6 +427,8 @@ type composeArgs struct { Repository *string `pulumi:"repository"` // Remote server to deploy on. Omit to use the Dokploy host itself. ServerId *string `pulumi:"serverId"` + // Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + ServiceNetworks *string `pulumi:"serviceNetworks"` // Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. SourceType *string `pulumi:"sourceType"` // Suffix appended to generated resource names. @@ -436,6 +465,8 @@ type ComposeArgs struct { ComposePath pulumi.StringPtrInput // Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. ComposeType pulumi.StringPtrInput + // Write the environment variables to a `.env` file next to the Compose file. + CreateEnvFile pulumi.BoolPtrInput // Branch to deploy for a custom Git remote. CustomGitBranch pulumi.StringPtrInput // SSH key used to clone a private custom Git remote. @@ -474,6 +505,8 @@ type ComposeArgs struct { GitlabProjectId pulumi.IntPtrInput // GitLab repository name. GitlabRepository pulumi.StringPtrInput + // Icon shown next to the stack in the Dokploy UI. + Icon pulumi.StringPtrInput // Run the stack on its own isolated Docker network. IsolatedDeployment pulumi.BoolPtrInput // Prefix volume names for isolated deployments. Retained for backwards compatibility. @@ -488,6 +521,8 @@ type ComposeArgs struct { Repository pulumi.StringPtrInput // Remote server to deploy on. Omit to use the Dokploy host itself. ServerId pulumi.StringPtrInput + // Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + ServiceNetworks pulumi.StringPtrInput // Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. SourceType pulumi.StringPtrInput // Suffix appended to generated resource names. @@ -650,6 +685,11 @@ func (o ComposeOutput) ComposeType() pulumi.StringOutput { return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.ComposeType }).(pulumi.StringOutput) } +// Write the environment variables to a `.env` file next to the Compose file. +func (o ComposeOutput) CreateEnvFile() pulumi.BoolOutput { + return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.CreateEnvFile }).(pulumi.BoolOutput) +} + // RFC 3339 timestamp of when the stack was created. func (o ComposeOutput) CreatedAt() pulumi.StringOutput { return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) @@ -750,6 +790,11 @@ func (o ComposeOutput) GitlabRepository() pulumi.StringPtrOutput { return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabRepository }).(pulumi.StringPtrOutput) } +// Icon shown next to the stack in the Dokploy UI. +func (o ComposeOutput) Icon() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Icon }).(pulumi.StringPtrOutput) +} + // Run the stack on its own isolated Docker network. func (o ComposeOutput) IsolatedDeployment() pulumi.BoolOutput { return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.IsolatedDeployment }).(pulumi.BoolOutput) @@ -785,6 +830,11 @@ func (o ComposeOutput) ServerId() pulumi.StringPtrOutput { return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput) } +// Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. +func (o ComposeOutput) ServiceNetworks() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.ServiceNetworks }).(pulumi.StringPtrOutput) +} + // Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. func (o ComposeOutput) SourceType() pulumi.StringOutput { return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.SourceType }).(pulumi.StringOutput) diff --git a/sdk/go/dokploy/destination.go b/sdk/go/dokploy/destination.go index dbed553..d45603d 100644 --- a/sdk/go/dokploy/destination.go +++ b/sdk/go/dokploy/destination.go @@ -12,6 +12,9 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// An S3-compatible bucket that Dokploy writes database and volume backups to. +// +// > The secret access key is stored in Terraform state. Use a state backend with encryption at rest. type Destination struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/dnsProvider.go b/sdk/go/dokploy/dnsProvider.go new file mode 100644 index 0000000..a8a38ad --- /dev/null +++ b/sdk/go/dokploy/dnsProvider.go @@ -0,0 +1,276 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dokploy + +import ( + "context" + "reflect" + + "errors" + "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A DNS provider connection Dokploy uses to create records for domains automatically. +// +// `config` is a JSON object whose shape depends on `providerType`: +type DnsProvider struct { + pulumi.CustomResourceState + + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config pulumi.StringOutput `pulumi:"config"` + // RFC 3339 timestamp of when the connection was created. + CreatedAt pulumi.StringOutput `pulumi:"createdAt"` + // Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + Name pulumi.StringOutput `pulumi:"name"` + // Organization that owns the connection. + OrganizationId pulumi.StringOutput `pulumi:"organizationId"` + // Provider kind derived from `config`: `cloudflare` or `route53`. + ProviderType pulumi.StringOutput `pulumi:"providerType"` +} + +// NewDnsProvider registers a new resource with the given unique name, arguments, and options. +func NewDnsProvider(ctx *pulumi.Context, + name string, args *DnsProviderArgs, opts ...pulumi.ResourceOption) (*DnsProvider, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Config == nil { + return nil, errors.New("invalid value for required argument 'Config'") + } + if args.Config != nil { + args.Config = pulumi.ToSecret(args.Config).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "config", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource DnsProvider + err := ctx.RegisterResource("dokploy:index/dnsProvider:DnsProvider", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetDnsProvider gets an existing DnsProvider resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetDnsProvider(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *DnsProviderState, opts ...pulumi.ResourceOption) (*DnsProvider, error) { + var resource DnsProvider + err := ctx.ReadResource("dokploy:index/dnsProvider:DnsProvider", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering DnsProvider resources. +type dnsProviderState struct { + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config *string `pulumi:"config"` + // RFC 3339 timestamp of when the connection was created. + CreatedAt *string `pulumi:"createdAt"` + // Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + Name *string `pulumi:"name"` + // Organization that owns the connection. + OrganizationId *string `pulumi:"organizationId"` + // Provider kind derived from `config`: `cloudflare` or `route53`. + ProviderType *string `pulumi:"providerType"` +} + +type DnsProviderState struct { + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config pulumi.StringPtrInput + // RFC 3339 timestamp of when the connection was created. + CreatedAt pulumi.StringPtrInput + // Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + Name pulumi.StringPtrInput + // Organization that owns the connection. + OrganizationId pulumi.StringPtrInput + // Provider kind derived from `config`: `cloudflare` or `route53`. + ProviderType pulumi.StringPtrInput +} + +func (DnsProviderState) ElementType() reflect.Type { + return reflect.TypeOf((*dnsProviderState)(nil)).Elem() +} + +type dnsProviderArgs struct { + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config string `pulumi:"config"` + // Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a DnsProvider resource. +type DnsProviderArgs struct { + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config pulumi.StringInput + // Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + Name pulumi.StringPtrInput +} + +func (DnsProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*dnsProviderArgs)(nil)).Elem() +} + +type DnsProviderInput interface { + pulumi.Input + + ToDnsProviderOutput() DnsProviderOutput + ToDnsProviderOutputWithContext(ctx context.Context) DnsProviderOutput +} + +func (*DnsProvider) ElementType() reflect.Type { + return reflect.TypeOf((**DnsProvider)(nil)).Elem() +} + +func (i *DnsProvider) ToDnsProviderOutput() DnsProviderOutput { + return i.ToDnsProviderOutputWithContext(context.Background()) +} + +func (i *DnsProvider) ToDnsProviderOutputWithContext(ctx context.Context) DnsProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(DnsProviderOutput) +} + +// DnsProviderArrayInput is an input type that accepts DnsProviderArray and DnsProviderArrayOutput values. +// You can construct a concrete instance of `DnsProviderArrayInput` via: +// +// DnsProviderArray{ DnsProviderArgs{...} } +type DnsProviderArrayInput interface { + pulumi.Input + + ToDnsProviderArrayOutput() DnsProviderArrayOutput + ToDnsProviderArrayOutputWithContext(context.Context) DnsProviderArrayOutput +} + +type DnsProviderArray []DnsProviderInput + +func (DnsProviderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DnsProvider)(nil)).Elem() +} + +func (i DnsProviderArray) ToDnsProviderArrayOutput() DnsProviderArrayOutput { + return i.ToDnsProviderArrayOutputWithContext(context.Background()) +} + +func (i DnsProviderArray) ToDnsProviderArrayOutputWithContext(ctx context.Context) DnsProviderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DnsProviderArrayOutput) +} + +// DnsProviderMapInput is an input type that accepts DnsProviderMap and DnsProviderMapOutput values. +// You can construct a concrete instance of `DnsProviderMapInput` via: +// +// DnsProviderMap{ "key": DnsProviderArgs{...} } +type DnsProviderMapInput interface { + pulumi.Input + + ToDnsProviderMapOutput() DnsProviderMapOutput + ToDnsProviderMapOutputWithContext(context.Context) DnsProviderMapOutput +} + +type DnsProviderMap map[string]DnsProviderInput + +func (DnsProviderMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DnsProvider)(nil)).Elem() +} + +func (i DnsProviderMap) ToDnsProviderMapOutput() DnsProviderMapOutput { + return i.ToDnsProviderMapOutputWithContext(context.Background()) +} + +func (i DnsProviderMap) ToDnsProviderMapOutputWithContext(ctx context.Context) DnsProviderMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(DnsProviderMapOutput) +} + +type DnsProviderOutput struct{ *pulumi.OutputState } + +func (DnsProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DnsProvider)(nil)).Elem() +} + +func (o DnsProviderOutput) ToDnsProviderOutput() DnsProviderOutput { + return o +} + +func (o DnsProviderOutput) ToDnsProviderOutputWithContext(ctx context.Context) DnsProviderOutput { + return o +} + +// Provider credentials as a JSON object, including the `providerType` discriminator. +func (o DnsProviderOutput) Config() pulumi.StringOutput { + return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.Config }).(pulumi.StringOutput) +} + +// RFC 3339 timestamp of when the connection was created. +func (o DnsProviderOutput) CreatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) +} + +// Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. +func (o DnsProviderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Organization that owns the connection. +func (o DnsProviderOutput) OrganizationId() pulumi.StringOutput { + return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput) +} + +// Provider kind derived from `config`: `cloudflare` or `route53`. +func (o DnsProviderOutput) ProviderType() pulumi.StringOutput { + return o.ApplyT(func(v *DnsProvider) pulumi.StringOutput { return v.ProviderType }).(pulumi.StringOutput) +} + +type DnsProviderArrayOutput struct{ *pulumi.OutputState } + +func (DnsProviderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DnsProvider)(nil)).Elem() +} + +func (o DnsProviderArrayOutput) ToDnsProviderArrayOutput() DnsProviderArrayOutput { + return o +} + +func (o DnsProviderArrayOutput) ToDnsProviderArrayOutputWithContext(ctx context.Context) DnsProviderArrayOutput { + return o +} + +func (o DnsProviderArrayOutput) Index(i pulumi.IntInput) DnsProviderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DnsProvider { + return vs[0].([]*DnsProvider)[vs[1].(int)] + }).(DnsProviderOutput) +} + +type DnsProviderMapOutput struct{ *pulumi.OutputState } + +func (DnsProviderMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DnsProvider)(nil)).Elem() +} + +func (o DnsProviderMapOutput) ToDnsProviderMapOutput() DnsProviderMapOutput { + return o +} + +func (o DnsProviderMapOutput) ToDnsProviderMapOutputWithContext(ctx context.Context) DnsProviderMapOutput { + return o +} + +func (o DnsProviderMapOutput) MapIndex(k pulumi.StringInput) DnsProviderOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DnsProvider { + return vs[0].(map[string]*DnsProvider)[vs[1].(string)] + }).(DnsProviderOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DnsProviderInput)(nil)).Elem(), &DnsProvider{}) + pulumi.RegisterInputType(reflect.TypeOf((*DnsProviderArrayInput)(nil)).Elem(), DnsProviderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DnsProviderMapInput)(nil)).Elem(), DnsProviderMap{}) + pulumi.RegisterOutputType(DnsProviderOutput{}) + pulumi.RegisterOutputType(DnsProviderArrayOutput{}) + pulumi.RegisterOutputType(DnsProviderMapOutput{}) +} diff --git a/sdk/go/dokploy/domain.go b/sdk/go/dokploy/domain.go index 351a6bc..605c5d1 100644 --- a/sdk/go/dokploy/domain.go +++ b/sdk/go/dokploy/domain.go @@ -12,6 +12,9 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A domain routed to an application or a Compose service through Dokploy's Traefik instance. +// +// Set exactly one of `applicationId` or `composeId`. When targeting a Compose stack, `serviceName` selects which service in the stack receives the traffic. type Domain struct { pulumi.CustomResourceState @@ -29,6 +32,8 @@ type Domain struct { CustomEntrypoint pulumi.StringPtrOutput `pulumi:"customEntrypoint"` // What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. DomainType pulumi.StringOutput `pulumi:"domainType"` + // Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + Enabled pulumi.BoolOutput `pulumi:"enabled"` // Protect this domain with Dokploy's forward auth. ForwardAuthEnabled pulumi.BoolOutput `pulumi:"forwardAuthEnabled"` // Fully-qualified hostname, for example `api.example.com`. @@ -98,6 +103,8 @@ type domainState struct { CustomEntrypoint *string `pulumi:"customEntrypoint"` // What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. DomainType *string `pulumi:"domainType"` + // Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + Enabled *bool `pulumi:"enabled"` // Protect this domain with Dokploy's forward auth. ForwardAuthEnabled *bool `pulumi:"forwardAuthEnabled"` // Fully-qualified hostname, for example `api.example.com`. @@ -135,6 +142,8 @@ type DomainState struct { CustomEntrypoint pulumi.StringPtrInput // What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. DomainType pulumi.StringPtrInput + // Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + Enabled pulumi.BoolPtrInput // Protect this domain with Dokploy's forward auth. ForwardAuthEnabled pulumi.BoolPtrInput // Fully-qualified hostname, for example `api.example.com`. @@ -174,6 +183,8 @@ type domainArgs struct { CustomEntrypoint *string `pulumi:"customEntrypoint"` // What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. DomainType *string `pulumi:"domainType"` + // Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + Enabled *bool `pulumi:"enabled"` // Protect this domain with Dokploy's forward auth. ForwardAuthEnabled *bool `pulumi:"forwardAuthEnabled"` // Fully-qualified hostname, for example `api.example.com`. @@ -210,6 +221,8 @@ type DomainArgs struct { CustomEntrypoint pulumi.StringPtrInput // What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. DomainType pulumi.StringPtrInput + // Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + Enabled pulumi.BoolPtrInput // Protect this domain with Dokploy's forward auth. ForwardAuthEnabled pulumi.BoolPtrInput // Fully-qualified hostname, for example `api.example.com`. @@ -354,6 +367,11 @@ func (o DomainOutput) DomainType() pulumi.StringOutput { return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.DomainType }).(pulumi.StringOutput) } +// Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. +func (o DomainOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v *Domain) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput) +} + // Protect this domain with Dokploy's forward auth. func (o DomainOutput) ForwardAuthEnabled() pulumi.BoolOutput { return o.ApplyT(func(v *Domain) pulumi.BoolOutput { return v.ForwardAuthEnabled }).(pulumi.BoolOutput) diff --git a/sdk/go/dokploy/environment.go b/sdk/go/dokploy/environment.go index c52013a..aaffcf7 100644 --- a/sdk/go/dokploy/environment.go +++ b/sdk/go/dokploy/environment.go @@ -12,6 +12,9 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// An environment inside a Dokploy project, such as `staging` or `production`. Services belong to an environment rather than directly to a project. +// +// Dokploy creates a default `production` environment with every project; reference it via `dokploy_project..default_environment_id` instead of declaring it here. type Environment struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/getApplication.go b/sdk/go/dokploy/getApplication.go index 74d18bb..0e09c5a 100644 --- a/sdk/go/dokploy/getApplication.go +++ b/sdk/go/dokploy/getApplication.go @@ -11,6 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// Look up an existing application by ID. func LookupApplication(ctx *pulumi.Context, args *LookupApplicationArgs, opts ...pulumi.InvokeOption) (*LookupApplicationResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv LookupApplicationResult @@ -23,20 +24,30 @@ func LookupApplication(ctx *pulumi.Context, args *LookupApplicationArgs, opts .. // A collection of arguments for invoking getApplication. type LookupApplicationArgs struct { + // Application identifier. Id string `pulumi:"id"` } // A collection of values returned by getApplication. type LookupApplicationResult struct { - AppName string `pulumi:"appName"` + // Docker service name. + AppName string `pulumi:"appName"` + // Current status. ApplicationStatus string `pulumi:"applicationStatus"` - BuildType string `pulumi:"buildType"` - CreatedAt string `pulumi:"createdAt"` - Description string `pulumi:"description"` - EnvironmentId string `pulumi:"environmentId"` - Id string `pulumi:"id"` - Name string `pulumi:"name"` - SourceType string `pulumi:"sourceType"` + // Build strategy. + BuildType string `pulumi:"buildType"` + // Creation timestamp. + CreatedAt string `pulumi:"createdAt"` + // Application description. + Description string `pulumi:"description"` + // Owning environment. + EnvironmentId string `pulumi:"environmentId"` + // Application identifier. + Id string `pulumi:"id"` + // Application name. + Name string `pulumi:"name"` + // Source of the code or image. + SourceType string `pulumi:"sourceType"` } func LookupApplicationOutput(ctx *pulumi.Context, args LookupApplicationOutputArgs, opts ...pulumi.InvokeOption) LookupApplicationResultOutput { @@ -50,6 +61,7 @@ func LookupApplicationOutput(ctx *pulumi.Context, args LookupApplicationOutputAr // A collection of arguments for invoking getApplication. type LookupApplicationOutputArgs struct { + // Application identifier. Id pulumi.StringInput `pulumi:"id"` } @@ -72,38 +84,47 @@ func (o LookupApplicationResultOutput) ToLookupApplicationResultOutputWithContex return o } +// Docker service name. func (o LookupApplicationResultOutput) AppName() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.AppName }).(pulumi.StringOutput) } +// Current status. func (o LookupApplicationResultOutput) ApplicationStatus() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.ApplicationStatus }).(pulumi.StringOutput) } +// Build strategy. func (o LookupApplicationResultOutput) BuildType() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.BuildType }).(pulumi.StringOutput) } +// Creation timestamp. func (o LookupApplicationResultOutput) CreatedAt() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.CreatedAt }).(pulumi.StringOutput) } +// Application description. func (o LookupApplicationResultOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.Description }).(pulumi.StringOutput) } +// Owning environment. func (o LookupApplicationResultOutput) EnvironmentId() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.EnvironmentId }).(pulumi.StringOutput) } +// Application identifier. func (o LookupApplicationResultOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.Id }).(pulumi.StringOutput) } +// Application name. func (o LookupApplicationResultOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.Name }).(pulumi.StringOutput) } +// Source of the code or image. func (o LookupApplicationResultOutput) SourceType() pulumi.StringOutput { return o.ApplyT(func(v LookupApplicationResult) string { return v.SourceType }).(pulumi.StringOutput) } diff --git a/sdk/go/dokploy/getEnvironment.go b/sdk/go/dokploy/getEnvironment.go index a105540..11f010c 100644 --- a/sdk/go/dokploy/getEnvironment.go +++ b/sdk/go/dokploy/getEnvironment.go @@ -11,6 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// Look up an existing environment by ID. func LookupEnvironment(ctx *pulumi.Context, args *LookupEnvironmentArgs, opts ...pulumi.InvokeOption) (*LookupEnvironmentResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv LookupEnvironmentResult @@ -23,18 +24,26 @@ func LookupEnvironment(ctx *pulumi.Context, args *LookupEnvironmentArgs, opts .. // A collection of arguments for invoking getEnvironment. type LookupEnvironmentArgs struct { + // Environment identifier. Id string `pulumi:"id"` } // A collection of values returned by getEnvironment. type LookupEnvironmentResult struct { - CreatedAt string `pulumi:"createdAt"` + // Creation timestamp. + CreatedAt string `pulumi:"createdAt"` + // Environment description. Description string `pulumi:"description"` - Env string `pulumi:"env"` - Id string `pulumi:"id"` - IsDefault bool `pulumi:"isDefault"` - Name string `pulumi:"name"` - ProjectId string `pulumi:"projectId"` + // Environment-wide variables. + Env string `pulumi:"env"` + // Environment identifier. + Id string `pulumi:"id"` + // Whether this is the project's default environment. + IsDefault bool `pulumi:"isDefault"` + // Environment name. + Name string `pulumi:"name"` + // Owning project. + ProjectId string `pulumi:"projectId"` } func LookupEnvironmentOutput(ctx *pulumi.Context, args LookupEnvironmentOutputArgs, opts ...pulumi.InvokeOption) LookupEnvironmentResultOutput { @@ -48,6 +57,7 @@ func LookupEnvironmentOutput(ctx *pulumi.Context, args LookupEnvironmentOutputAr // A collection of arguments for invoking getEnvironment. type LookupEnvironmentOutputArgs struct { + // Environment identifier. Id pulumi.StringInput `pulumi:"id"` } @@ -70,30 +80,37 @@ func (o LookupEnvironmentResultOutput) ToLookupEnvironmentResultOutputWithContex return o } +// Creation timestamp. func (o LookupEnvironmentResultOutput) CreatedAt() pulumi.StringOutput { return o.ApplyT(func(v LookupEnvironmentResult) string { return v.CreatedAt }).(pulumi.StringOutput) } +// Environment description. func (o LookupEnvironmentResultOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Description }).(pulumi.StringOutput) } +// Environment-wide variables. func (o LookupEnvironmentResultOutput) Env() pulumi.StringOutput { return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Env }).(pulumi.StringOutput) } +// Environment identifier. func (o LookupEnvironmentResultOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Id }).(pulumi.StringOutput) } +// Whether this is the project's default environment. func (o LookupEnvironmentResultOutput) IsDefault() pulumi.BoolOutput { return o.ApplyT(func(v LookupEnvironmentResult) bool { return v.IsDefault }).(pulumi.BoolOutput) } +// Environment name. func (o LookupEnvironmentResultOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Name }).(pulumi.StringOutput) } +// Owning project. func (o LookupEnvironmentResultOutput) ProjectId() pulumi.StringOutput { return o.ApplyT(func(v LookupEnvironmentResult) string { return v.ProjectId }).(pulumi.StringOutput) } diff --git a/sdk/go/dokploy/getProject.go b/sdk/go/dokploy/getProject.go index f8ff334..0748fcb 100644 --- a/sdk/go/dokploy/getProject.go +++ b/sdk/go/dokploy/getProject.go @@ -11,6 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// Look up an existing Dokploy project by ID, including its environments. func LookupProject(ctx *pulumi.Context, args *LookupProjectArgs, opts ...pulumi.InvokeOption) (*LookupProjectResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv LookupProjectResult @@ -23,19 +24,28 @@ func LookupProject(ctx *pulumi.Context, args *LookupProjectArgs, opts ...pulumi. // A collection of arguments for invoking getProject. type LookupProjectArgs struct { + // Project identifier. Id string `pulumi:"id"` } // A collection of values returned by getProject. type LookupProjectResult struct { - CreatedAt string `pulumi:"createdAt"` - DefaultEnvironmentId string `pulumi:"defaultEnvironmentId"` - Description string `pulumi:"description"` - Env string `pulumi:"env"` - Environments []GetProjectEnvironment `pulumi:"environments"` - Id string `pulumi:"id"` - Name string `pulumi:"name"` - OrganizationId string `pulumi:"organizationId"` + // Creation timestamp. + CreatedAt string `pulumi:"createdAt"` + // ID of the project's default environment. + DefaultEnvironmentId string `pulumi:"defaultEnvironmentId"` + // Project description. + Description string `pulumi:"description"` + // Project-wide environment variables. + Env string `pulumi:"env"` + // Every environment in the project. + Environments []GetProjectEnvironment `pulumi:"environments"` + // Project identifier. + Id string `pulumi:"id"` + // Project name. + Name string `pulumi:"name"` + // Owning organization. + OrganizationId string `pulumi:"organizationId"` } func LookupProjectOutput(ctx *pulumi.Context, args LookupProjectOutputArgs, opts ...pulumi.InvokeOption) LookupProjectResultOutput { @@ -49,6 +59,7 @@ func LookupProjectOutput(ctx *pulumi.Context, args LookupProjectOutputArgs, opts // A collection of arguments for invoking getProject. type LookupProjectOutputArgs struct { + // Project identifier. Id pulumi.StringInput `pulumi:"id"` } @@ -71,34 +82,42 @@ func (o LookupProjectResultOutput) ToLookupProjectResultOutputWithContext(ctx co return o } +// Creation timestamp. func (o LookupProjectResultOutput) CreatedAt() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.CreatedAt }).(pulumi.StringOutput) } +// ID of the project's default environment. func (o LookupProjectResultOutput) DefaultEnvironmentId() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.DefaultEnvironmentId }).(pulumi.StringOutput) } +// Project description. func (o LookupProjectResultOutput) Description() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.Description }).(pulumi.StringOutput) } +// Project-wide environment variables. func (o LookupProjectResultOutput) Env() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.Env }).(pulumi.StringOutput) } +// Every environment in the project. func (o LookupProjectResultOutput) Environments() GetProjectEnvironmentArrayOutput { return o.ApplyT(func(v LookupProjectResult) []GetProjectEnvironment { return v.Environments }).(GetProjectEnvironmentArrayOutput) } +// Project identifier. func (o LookupProjectResultOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.Id }).(pulumi.StringOutput) } +// Project name. func (o LookupProjectResultOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.Name }).(pulumi.StringOutput) } +// Owning organization. func (o LookupProjectResultOutput) OrganizationId() pulumi.StringOutput { return o.ApplyT(func(v LookupProjectResult) string { return v.OrganizationId }).(pulumi.StringOutput) } diff --git a/sdk/go/dokploy/getProjects.go b/sdk/go/dokploy/getProjects.go index 17647ee..96f6588 100644 --- a/sdk/go/dokploy/getProjects.go +++ b/sdk/go/dokploy/getProjects.go @@ -11,6 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// List every Dokploy project the API token can see. func GetProjects(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetProjectsResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetProjectsResult @@ -23,6 +24,7 @@ func GetProjects(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetProjects // A collection of values returned by getProjects. type GetProjectsResult struct { + // All visible projects. Projects []GetProjectsProject `pulumi:"projects"` } @@ -48,6 +50,7 @@ func (o GetProjectsResultOutput) ToGetProjectsResultOutputWithContext(ctx contex return o } +// All visible projects. func (o GetProjectsResultOutput) Projects() GetProjectsProjectArrayOutput { return o.ApplyT(func(v GetProjectsResult) []GetProjectsProject { return v.Projects }).(GetProjectsProjectArrayOutput) } diff --git a/sdk/go/dokploy/getServers.go b/sdk/go/dokploy/getServers.go index 0dffde2..1a9c8f5 100644 --- a/sdk/go/dokploy/getServers.go +++ b/sdk/go/dokploy/getServers.go @@ -11,6 +11,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// List the remote servers registered with Dokploy. Use a server's `id` as the `serverId` of an application, stack, or database to deploy it away from the Dokploy host. func GetServers(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetServersResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetServersResult @@ -23,6 +24,7 @@ func GetServers(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetServersRe // A collection of values returned by getServers. type GetServersResult struct { + // All registered servers. Servers []GetServersServer `pulumi:"servers"` } @@ -48,6 +50,7 @@ func (o GetServersResultOutput) ToGetServersResultOutputWithContext(ctx context. return o } +// All registered servers. func (o GetServersResultOutput) Servers() GetServersServerArrayOutput { return o.ApplyT(func(v GetServersResult) []GetServersServer { return v.Servers }).(GetServersServerArrayOutput) } diff --git a/sdk/go/dokploy/init.go b/sdk/go/dokploy/init.go index 4580a5a..3be9450 100644 --- a/sdk/go/dokploy/init.go +++ b/sdk/go/dokploy/init.go @@ -29,10 +29,14 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &Compose{} case "dokploy:index/destination:Destination": r = &Destination{} + case "dokploy:index/dnsProvider:DnsProvider": + r = &DnsProvider{} case "dokploy:index/domain:Domain": r = &Domain{} case "dokploy:index/environment:Environment": r = &Environment{} + case "dokploy:index/libsql:Libsql": + r = &Libsql{} case "dokploy:index/mariaDb:MariaDb": r = &MariaDb{} case "dokploy:index/mongo:Mongo": @@ -41,6 +45,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &Mount{} case "dokploy:index/mySql:MySql": r = &MySql{} + case "dokploy:index/network:Network": + r = &Network{} case "dokploy:index/port:Port": r = &Port{} case "dokploy:index/postgres:Postgres": @@ -53,10 +59,16 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &Redis{} case "dokploy:index/registry:Registry": r = &Registry{} + case "dokploy:index/schedule:Schedule": + r = &Schedule{} case "dokploy:index/security:Security": r = &Security{} case "dokploy:index/sshKey:SshKey": r = &SshKey{} + case "dokploy:index/vaultProvider:VaultProvider": + r = &VaultProvider{} + case "dokploy:index/volumeBackup:VolumeBackup": + r = &VolumeBackup{} default: return nil, fmt.Errorf("unknown resource type: %s", typ) } @@ -108,6 +120,11 @@ func init() { "index/destination", &module{version}, ) + pulumi.RegisterResourceModule( + "dokploy", + "index/dnsProvider", + &module{version}, + ) pulumi.RegisterResourceModule( "dokploy", "index/domain", @@ -118,6 +135,11 @@ func init() { "index/environment", &module{version}, ) + pulumi.RegisterResourceModule( + "dokploy", + "index/libsql", + &module{version}, + ) pulumi.RegisterResourceModule( "dokploy", "index/mariaDb", @@ -138,6 +160,11 @@ func init() { "index/mySql", &module{version}, ) + pulumi.RegisterResourceModule( + "dokploy", + "index/network", + &module{version}, + ) pulumi.RegisterResourceModule( "dokploy", "index/port", @@ -168,6 +195,11 @@ func init() { "index/registry", &module{version}, ) + pulumi.RegisterResourceModule( + "dokploy", + "index/schedule", + &module{version}, + ) pulumi.RegisterResourceModule( "dokploy", "index/security", @@ -178,6 +210,16 @@ func init() { "index/sshKey", &module{version}, ) + pulumi.RegisterResourceModule( + "dokploy", + "index/vaultProvider", + &module{version}, + ) + pulumi.RegisterResourceModule( + "dokploy", + "index/volumeBackup", + &module{version}, + ) pulumi.RegisterResourcePackage( "dokploy", &pkg{version}, diff --git a/sdk/go/dokploy/internal/pulumiUtilities.go b/sdk/go/dokploy/internal/pulumiUtilities.go index bbacf38..ee9a296 100644 --- a/sdk/go/dokploy/internal/pulumiUtilities.go +++ b/sdk/go/dokploy/internal/pulumiUtilities.go @@ -165,7 +165,7 @@ func callPlainInner( func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { defaults := []pulumi.ResourceOption{} defaults = append(defaults, pulumi.PluginDownloadURL("https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}")) - version := semver.MustParse("0.1.0") + version := semver.MustParse("0.2.0") if !version.Equals(semver.Version{}) { defaults = append(defaults, pulumi.Version(version.String())) } @@ -176,7 +176,7 @@ func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOptio func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { defaults := []pulumi.InvokeOption{} defaults = append(defaults, pulumi.PluginDownloadURL("https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}")) - version := semver.MustParse("0.1.0") + version := semver.MustParse("0.2.0") if !version.Equals(semver.Version{}) { defaults = append(defaults, pulumi.Version(version.String())) } diff --git a/sdk/go/dokploy/libsql.go b/sdk/go/dokploy/libsql.go new file mode 100644 index 0000000..74fe8d0 --- /dev/null +++ b/sdk/go/dokploy/libsql.go @@ -0,0 +1,743 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dokploy + +import ( + "context" + "reflect" + + "errors" + "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A managed libSQL instance running on Dokploy. +// +// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. +// +// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. +// +// libSQL runs as a `sqld` server. A `primary` node owns the data; a `replica` node follows a primary named by `sqldPrimaryUrl`. +type Libsql struct { + pulumi.CustomResourceState + + // Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + AppName pulumi.StringOutput `pulumi:"appName"` + // Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + ApplicationStatus pulumi.StringOutput `pulumi:"applicationStatus"` + // Override the container entrypoint command. + Command pulumi.StringPtrOutput `pulumi:"command"` + // Hard CPU limit, for example `1`. + CpuLimit pulumi.StringPtrOutput `pulumi:"cpuLimit"` + // Soft CPU reservation, for example `0.5`. + CpuReservation pulumi.StringPtrOutput `pulumi:"cpuReservation"` + // RFC 3339 timestamp of when the database was created. + CreatedAt pulumi.StringOutput `pulumi:"createdAt"` + // Password for the database user. + DatabasePassword pulumi.StringOutput `pulumi:"databasePassword"` + // Database user to create. + DatabaseUser pulumi.StringOutput `pulumi:"databaseUser"` + // Free-form description. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Detach the service from the shared `dokploy-network`. + DetachDokployNetwork pulumi.BoolOutput `pulumi:"detachDokployNetwork"` + // libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + DockerImage pulumi.StringOutput `pulumi:"dockerImage"` + // Serve multiple logical databases from one instance through libSQL namespaces. + EnableNamespaces pulumi.BoolOutput `pulumi:"enableNamespaces"` + // Docker Swarm endpoint specification, as a JSON object. + EndpointSpecSwarm pulumi.StringPtrOutput `pulumi:"endpointSpecSwarm"` + // Environment variables in `KEY=value` format, one per line. + Env pulumi.StringPtrOutput `pulumi:"env"` + // Environment this database belongs to. + EnvironmentId pulumi.StringOutput `pulumi:"environmentId"` + // Host port exposing the admin API. + ExternalAdminPort pulumi.IntPtrOutput `pulumi:"externalAdminPort"` + // Host port exposing the gRPC replication endpoint. + ExternalGrpcPort pulumi.IntPtrOutput `pulumi:"externalGrpcPort"` + // Host port exposing the HTTP API. + ExternalPort pulumi.IntPtrOutput `pulumi:"externalPort"` + // Docker Swarm health check configuration, as a JSON object. + HealthCheckSwarm pulumi.StringPtrOutput `pulumi:"healthCheckSwarm"` + // Docker Swarm service labels, as a JSON object. + LabelsSwarm pulumi.StringPtrOutput `pulumi:"labelsSwarm"` + // Hard memory limit, for example `512m`. + MemoryLimit pulumi.StringPtrOutput `pulumi:"memoryLimit"` + // Soft memory reservation, for example `256m`. + MemoryReservation pulumi.StringPtrOutput `pulumi:"memoryReservation"` + // Docker Swarm service mode, as a JSON object. + ModeSwarm pulumi.StringPtrOutput `pulumi:"modeSwarm"` + // Display name of the database. + Name pulumi.StringOutput `pulumi:"name"` + // IDs of additional Docker networks to attach. + NetworkIds pulumi.StringArrayOutput `pulumi:"networkIds"` + // Docker Swarm network attachments, as a JSON array. + NetworkSwarm pulumi.StringPtrOutput `pulumi:"networkSwarm"` + // Docker Swarm placement constraints, as a JSON object. + PlacementSwarm pulumi.StringPtrOutput `pulumi:"placementSwarm"` + // Number of replicas to run. + Replicas pulumi.IntOutput `pulumi:"replicas"` + // Docker Swarm restart policy, as a JSON object. + RestartPolicySwarm pulumi.StringPtrOutput `pulumi:"restartPolicySwarm"` + // Docker Swarm rollback configuration, as a JSON object. + RollbackConfigSwarm pulumi.StringPtrOutput `pulumi:"rollbackConfigSwarm"` + // Remote server to deploy on. Omit to use the Dokploy host itself. + ServerId pulumi.StringPtrOutput `pulumi:"serverId"` + // Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + SqldNode pulumi.StringOutput `pulumi:"sqldNode"` + // URL of the primary node, when `sqldNode` is `replica`. + SqldPrimaryUrl pulumi.StringPtrOutput `pulumi:"sqldPrimaryUrl"` + // Grace period in nanoseconds before a container is killed. + StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"` + // Docker Swarm rolling update configuration, as a JSON object. + UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"` +} + +// NewLibsql registers a new resource with the given unique name, arguments, and options. +func NewLibsql(ctx *pulumi.Context, + name string, args *LibsqlArgs, opts ...pulumi.ResourceOption) (*Libsql, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DatabasePassword == nil { + return nil, errors.New("invalid value for required argument 'DatabasePassword'") + } + if args.DatabaseUser == nil { + return nil, errors.New("invalid value for required argument 'DatabaseUser'") + } + if args.DockerImage == nil { + return nil, errors.New("invalid value for required argument 'DockerImage'") + } + if args.EnvironmentId == nil { + return nil, errors.New("invalid value for required argument 'EnvironmentId'") + } + if args.DatabasePassword != nil { + args.DatabasePassword = pulumi.ToSecret(args.DatabasePassword).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "databasePassword", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource Libsql + err := ctx.RegisterResource("dokploy:index/libsql:Libsql", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLibsql gets an existing Libsql resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetLibsql(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LibsqlState, opts ...pulumi.ResourceOption) (*Libsql, error) { + var resource Libsql + err := ctx.ReadResource("dokploy:index/libsql:Libsql", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Libsql resources. +type libsqlState struct { + // Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + AppName *string `pulumi:"appName"` + // Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + ApplicationStatus *string `pulumi:"applicationStatus"` + // Override the container entrypoint command. + Command *string `pulumi:"command"` + // Hard CPU limit, for example `1`. + CpuLimit *string `pulumi:"cpuLimit"` + // Soft CPU reservation, for example `0.5`. + CpuReservation *string `pulumi:"cpuReservation"` + // RFC 3339 timestamp of when the database was created. + CreatedAt *string `pulumi:"createdAt"` + // Password for the database user. + DatabasePassword *string `pulumi:"databasePassword"` + // Database user to create. + DatabaseUser *string `pulumi:"databaseUser"` + // Free-form description. + Description *string `pulumi:"description"` + // Detach the service from the shared `dokploy-network`. + DetachDokployNetwork *bool `pulumi:"detachDokployNetwork"` + // libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + DockerImage *string `pulumi:"dockerImage"` + // Serve multiple logical databases from one instance through libSQL namespaces. + EnableNamespaces *bool `pulumi:"enableNamespaces"` + // Docker Swarm endpoint specification, as a JSON object. + EndpointSpecSwarm *string `pulumi:"endpointSpecSwarm"` + // Environment variables in `KEY=value` format, one per line. + Env *string `pulumi:"env"` + // Environment this database belongs to. + EnvironmentId *string `pulumi:"environmentId"` + // Host port exposing the admin API. + ExternalAdminPort *int `pulumi:"externalAdminPort"` + // Host port exposing the gRPC replication endpoint. + ExternalGrpcPort *int `pulumi:"externalGrpcPort"` + // Host port exposing the HTTP API. + ExternalPort *int `pulumi:"externalPort"` + // Docker Swarm health check configuration, as a JSON object. + HealthCheckSwarm *string `pulumi:"healthCheckSwarm"` + // Docker Swarm service labels, as a JSON object. + LabelsSwarm *string `pulumi:"labelsSwarm"` + // Hard memory limit, for example `512m`. + MemoryLimit *string `pulumi:"memoryLimit"` + // Soft memory reservation, for example `256m`. + MemoryReservation *string `pulumi:"memoryReservation"` + // Docker Swarm service mode, as a JSON object. + ModeSwarm *string `pulumi:"modeSwarm"` + // Display name of the database. + Name *string `pulumi:"name"` + // IDs of additional Docker networks to attach. + NetworkIds []string `pulumi:"networkIds"` + // Docker Swarm network attachments, as a JSON array. + NetworkSwarm *string `pulumi:"networkSwarm"` + // Docker Swarm placement constraints, as a JSON object. + PlacementSwarm *string `pulumi:"placementSwarm"` + // Number of replicas to run. + Replicas *int `pulumi:"replicas"` + // Docker Swarm restart policy, as a JSON object. + RestartPolicySwarm *string `pulumi:"restartPolicySwarm"` + // Docker Swarm rollback configuration, as a JSON object. + RollbackConfigSwarm *string `pulumi:"rollbackConfigSwarm"` + // Remote server to deploy on. Omit to use the Dokploy host itself. + ServerId *string `pulumi:"serverId"` + // Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + SqldNode *string `pulumi:"sqldNode"` + // URL of the primary node, when `sqldNode` is `replica`. + SqldPrimaryUrl *string `pulumi:"sqldPrimaryUrl"` + // Grace period in nanoseconds before a container is killed. + StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"` + // Docker Swarm rolling update configuration, as a JSON object. + UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"` +} + +type LibsqlState struct { + // Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + AppName pulumi.StringPtrInput + // Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + ApplicationStatus pulumi.StringPtrInput + // Override the container entrypoint command. + Command pulumi.StringPtrInput + // Hard CPU limit, for example `1`. + CpuLimit pulumi.StringPtrInput + // Soft CPU reservation, for example `0.5`. + CpuReservation pulumi.StringPtrInput + // RFC 3339 timestamp of when the database was created. + CreatedAt pulumi.StringPtrInput + // Password for the database user. + DatabasePassword pulumi.StringPtrInput + // Database user to create. + DatabaseUser pulumi.StringPtrInput + // Free-form description. + Description pulumi.StringPtrInput + // Detach the service from the shared `dokploy-network`. + DetachDokployNetwork pulumi.BoolPtrInput + // libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + DockerImage pulumi.StringPtrInput + // Serve multiple logical databases from one instance through libSQL namespaces. + EnableNamespaces pulumi.BoolPtrInput + // Docker Swarm endpoint specification, as a JSON object. + EndpointSpecSwarm pulumi.StringPtrInput + // Environment variables in `KEY=value` format, one per line. + Env pulumi.StringPtrInput + // Environment this database belongs to. + EnvironmentId pulumi.StringPtrInput + // Host port exposing the admin API. + ExternalAdminPort pulumi.IntPtrInput + // Host port exposing the gRPC replication endpoint. + ExternalGrpcPort pulumi.IntPtrInput + // Host port exposing the HTTP API. + ExternalPort pulumi.IntPtrInput + // Docker Swarm health check configuration, as a JSON object. + HealthCheckSwarm pulumi.StringPtrInput + // Docker Swarm service labels, as a JSON object. + LabelsSwarm pulumi.StringPtrInput + // Hard memory limit, for example `512m`. + MemoryLimit pulumi.StringPtrInput + // Soft memory reservation, for example `256m`. + MemoryReservation pulumi.StringPtrInput + // Docker Swarm service mode, as a JSON object. + ModeSwarm pulumi.StringPtrInput + // Display name of the database. + Name pulumi.StringPtrInput + // IDs of additional Docker networks to attach. + NetworkIds pulumi.StringArrayInput + // Docker Swarm network attachments, as a JSON array. + NetworkSwarm pulumi.StringPtrInput + // Docker Swarm placement constraints, as a JSON object. + PlacementSwarm pulumi.StringPtrInput + // Number of replicas to run. + Replicas pulumi.IntPtrInput + // Docker Swarm restart policy, as a JSON object. + RestartPolicySwarm pulumi.StringPtrInput + // Docker Swarm rollback configuration, as a JSON object. + RollbackConfigSwarm pulumi.StringPtrInput + // Remote server to deploy on. Omit to use the Dokploy host itself. + ServerId pulumi.StringPtrInput + // Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + SqldNode pulumi.StringPtrInput + // URL of the primary node, when `sqldNode` is `replica`. + SqldPrimaryUrl pulumi.StringPtrInput + // Grace period in nanoseconds before a container is killed. + StopGracePeriodSwarm pulumi.IntPtrInput + // Docker Swarm rolling update configuration, as a JSON object. + UpdateConfigSwarm pulumi.StringPtrInput +} + +func (LibsqlState) ElementType() reflect.Type { + return reflect.TypeOf((*libsqlState)(nil)).Elem() +} + +type libsqlArgs struct { + // Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + AppName *string `pulumi:"appName"` + // Override the container entrypoint command. + Command *string `pulumi:"command"` + // Hard CPU limit, for example `1`. + CpuLimit *string `pulumi:"cpuLimit"` + // Soft CPU reservation, for example `0.5`. + CpuReservation *string `pulumi:"cpuReservation"` + // Password for the database user. + DatabasePassword string `pulumi:"databasePassword"` + // Database user to create. + DatabaseUser string `pulumi:"databaseUser"` + // Free-form description. + Description *string `pulumi:"description"` + // Detach the service from the shared `dokploy-network`. + DetachDokployNetwork *bool `pulumi:"detachDokployNetwork"` + // libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + DockerImage string `pulumi:"dockerImage"` + // Serve multiple logical databases from one instance through libSQL namespaces. + EnableNamespaces *bool `pulumi:"enableNamespaces"` + // Docker Swarm endpoint specification, as a JSON object. + EndpointSpecSwarm *string `pulumi:"endpointSpecSwarm"` + // Environment variables in `KEY=value` format, one per line. + Env *string `pulumi:"env"` + // Environment this database belongs to. + EnvironmentId string `pulumi:"environmentId"` + // Host port exposing the admin API. + ExternalAdminPort *int `pulumi:"externalAdminPort"` + // Host port exposing the gRPC replication endpoint. + ExternalGrpcPort *int `pulumi:"externalGrpcPort"` + // Host port exposing the HTTP API. + ExternalPort *int `pulumi:"externalPort"` + // Docker Swarm health check configuration, as a JSON object. + HealthCheckSwarm *string `pulumi:"healthCheckSwarm"` + // Docker Swarm service labels, as a JSON object. + LabelsSwarm *string `pulumi:"labelsSwarm"` + // Hard memory limit, for example `512m`. + MemoryLimit *string `pulumi:"memoryLimit"` + // Soft memory reservation, for example `256m`. + MemoryReservation *string `pulumi:"memoryReservation"` + // Docker Swarm service mode, as a JSON object. + ModeSwarm *string `pulumi:"modeSwarm"` + // Display name of the database. + Name *string `pulumi:"name"` + // IDs of additional Docker networks to attach. + NetworkIds []string `pulumi:"networkIds"` + // Docker Swarm network attachments, as a JSON array. + NetworkSwarm *string `pulumi:"networkSwarm"` + // Docker Swarm placement constraints, as a JSON object. + PlacementSwarm *string `pulumi:"placementSwarm"` + // Number of replicas to run. + Replicas *int `pulumi:"replicas"` + // Docker Swarm restart policy, as a JSON object. + RestartPolicySwarm *string `pulumi:"restartPolicySwarm"` + // Docker Swarm rollback configuration, as a JSON object. + RollbackConfigSwarm *string `pulumi:"rollbackConfigSwarm"` + // Remote server to deploy on. Omit to use the Dokploy host itself. + ServerId *string `pulumi:"serverId"` + // Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + SqldNode *string `pulumi:"sqldNode"` + // URL of the primary node, when `sqldNode` is `replica`. + SqldPrimaryUrl *string `pulumi:"sqldPrimaryUrl"` + // Grace period in nanoseconds before a container is killed. + StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"` + // Docker Swarm rolling update configuration, as a JSON object. + UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"` +} + +// The set of arguments for constructing a Libsql resource. +type LibsqlArgs struct { + // Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + AppName pulumi.StringPtrInput + // Override the container entrypoint command. + Command pulumi.StringPtrInput + // Hard CPU limit, for example `1`. + CpuLimit pulumi.StringPtrInput + // Soft CPU reservation, for example `0.5`. + CpuReservation pulumi.StringPtrInput + // Password for the database user. + DatabasePassword pulumi.StringInput + // Database user to create. + DatabaseUser pulumi.StringInput + // Free-form description. + Description pulumi.StringPtrInput + // Detach the service from the shared `dokploy-network`. + DetachDokployNetwork pulumi.BoolPtrInput + // libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + DockerImage pulumi.StringInput + // Serve multiple logical databases from one instance through libSQL namespaces. + EnableNamespaces pulumi.BoolPtrInput + // Docker Swarm endpoint specification, as a JSON object. + EndpointSpecSwarm pulumi.StringPtrInput + // Environment variables in `KEY=value` format, one per line. + Env pulumi.StringPtrInput + // Environment this database belongs to. + EnvironmentId pulumi.StringInput + // Host port exposing the admin API. + ExternalAdminPort pulumi.IntPtrInput + // Host port exposing the gRPC replication endpoint. + ExternalGrpcPort pulumi.IntPtrInput + // Host port exposing the HTTP API. + ExternalPort pulumi.IntPtrInput + // Docker Swarm health check configuration, as a JSON object. + HealthCheckSwarm pulumi.StringPtrInput + // Docker Swarm service labels, as a JSON object. + LabelsSwarm pulumi.StringPtrInput + // Hard memory limit, for example `512m`. + MemoryLimit pulumi.StringPtrInput + // Soft memory reservation, for example `256m`. + MemoryReservation pulumi.StringPtrInput + // Docker Swarm service mode, as a JSON object. + ModeSwarm pulumi.StringPtrInput + // Display name of the database. + Name pulumi.StringPtrInput + // IDs of additional Docker networks to attach. + NetworkIds pulumi.StringArrayInput + // Docker Swarm network attachments, as a JSON array. + NetworkSwarm pulumi.StringPtrInput + // Docker Swarm placement constraints, as a JSON object. + PlacementSwarm pulumi.StringPtrInput + // Number of replicas to run. + Replicas pulumi.IntPtrInput + // Docker Swarm restart policy, as a JSON object. + RestartPolicySwarm pulumi.StringPtrInput + // Docker Swarm rollback configuration, as a JSON object. + RollbackConfigSwarm pulumi.StringPtrInput + // Remote server to deploy on. Omit to use the Dokploy host itself. + ServerId pulumi.StringPtrInput + // Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + SqldNode pulumi.StringPtrInput + // URL of the primary node, when `sqldNode` is `replica`. + SqldPrimaryUrl pulumi.StringPtrInput + // Grace period in nanoseconds before a container is killed. + StopGracePeriodSwarm pulumi.IntPtrInput + // Docker Swarm rolling update configuration, as a JSON object. + UpdateConfigSwarm pulumi.StringPtrInput +} + +func (LibsqlArgs) ElementType() reflect.Type { + return reflect.TypeOf((*libsqlArgs)(nil)).Elem() +} + +type LibsqlInput interface { + pulumi.Input + + ToLibsqlOutput() LibsqlOutput + ToLibsqlOutputWithContext(ctx context.Context) LibsqlOutput +} + +func (*Libsql) ElementType() reflect.Type { + return reflect.TypeOf((**Libsql)(nil)).Elem() +} + +func (i *Libsql) ToLibsqlOutput() LibsqlOutput { + return i.ToLibsqlOutputWithContext(context.Background()) +} + +func (i *Libsql) ToLibsqlOutputWithContext(ctx context.Context) LibsqlOutput { + return pulumi.ToOutputWithContext(ctx, i).(LibsqlOutput) +} + +// LibsqlArrayInput is an input type that accepts LibsqlArray and LibsqlArrayOutput values. +// You can construct a concrete instance of `LibsqlArrayInput` via: +// +// LibsqlArray{ LibsqlArgs{...} } +type LibsqlArrayInput interface { + pulumi.Input + + ToLibsqlArrayOutput() LibsqlArrayOutput + ToLibsqlArrayOutputWithContext(context.Context) LibsqlArrayOutput +} + +type LibsqlArray []LibsqlInput + +func (LibsqlArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Libsql)(nil)).Elem() +} + +func (i LibsqlArray) ToLibsqlArrayOutput() LibsqlArrayOutput { + return i.ToLibsqlArrayOutputWithContext(context.Background()) +} + +func (i LibsqlArray) ToLibsqlArrayOutputWithContext(ctx context.Context) LibsqlArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LibsqlArrayOutput) +} + +// LibsqlMapInput is an input type that accepts LibsqlMap and LibsqlMapOutput values. +// You can construct a concrete instance of `LibsqlMapInput` via: +// +// LibsqlMap{ "key": LibsqlArgs{...} } +type LibsqlMapInput interface { + pulumi.Input + + ToLibsqlMapOutput() LibsqlMapOutput + ToLibsqlMapOutputWithContext(context.Context) LibsqlMapOutput +} + +type LibsqlMap map[string]LibsqlInput + +func (LibsqlMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Libsql)(nil)).Elem() +} + +func (i LibsqlMap) ToLibsqlMapOutput() LibsqlMapOutput { + return i.ToLibsqlMapOutputWithContext(context.Background()) +} + +func (i LibsqlMap) ToLibsqlMapOutputWithContext(ctx context.Context) LibsqlMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LibsqlMapOutput) +} + +type LibsqlOutput struct{ *pulumi.OutputState } + +func (LibsqlOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Libsql)(nil)).Elem() +} + +func (o LibsqlOutput) ToLibsqlOutput() LibsqlOutput { + return o +} + +func (o LibsqlOutput) ToLibsqlOutputWithContext(ctx context.Context) LibsqlOutput { + return o +} + +// Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. +func (o LibsqlOutput) AppName() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput) +} + +// Current status reported by Dokploy: `idle`, `running`, `done` or `error`. +func (o LibsqlOutput) ApplicationStatus() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput) +} + +// Override the container entrypoint command. +func (o LibsqlOutput) Command() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput) +} + +// Hard CPU limit, for example `1`. +func (o LibsqlOutput) CpuLimit() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput) +} + +// Soft CPU reservation, for example `0.5`. +func (o LibsqlOutput) CpuReservation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput) +} + +// RFC 3339 timestamp of when the database was created. +func (o LibsqlOutput) CreatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) +} + +// Password for the database user. +func (o LibsqlOutput) DatabasePassword() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput) +} + +// Database user to create. +func (o LibsqlOutput) DatabaseUser() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.DatabaseUser }).(pulumi.StringOutput) +} + +// Free-form description. +func (o LibsqlOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Detach the service from the shared `dokploy-network`. +func (o LibsqlOutput) DetachDokployNetwork() pulumi.BoolOutput { + return o.ApplyT(func(v *Libsql) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput) +} + +// libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. +func (o LibsqlOutput) DockerImage() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput) +} + +// Serve multiple logical databases from one instance through libSQL namespaces. +func (o LibsqlOutput) EnableNamespaces() pulumi.BoolOutput { + return o.ApplyT(func(v *Libsql) pulumi.BoolOutput { return v.EnableNamespaces }).(pulumi.BoolOutput) +} + +// Docker Swarm endpoint specification, as a JSON object. +func (o LibsqlOutput) EndpointSpecSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput) +} + +// Environment variables in `KEY=value` format, one per line. +func (o LibsqlOutput) Env() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput) +} + +// Environment this database belongs to. +func (o LibsqlOutput) EnvironmentId() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput) +} + +// Host port exposing the admin API. +func (o LibsqlOutput) ExternalAdminPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.ExternalAdminPort }).(pulumi.IntPtrOutput) +} + +// Host port exposing the gRPC replication endpoint. +func (o LibsqlOutput) ExternalGrpcPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.ExternalGrpcPort }).(pulumi.IntPtrOutput) +} + +// Host port exposing the HTTP API. +func (o LibsqlOutput) ExternalPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput) +} + +// Docker Swarm health check configuration, as a JSON object. +func (o LibsqlOutput) HealthCheckSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput) +} + +// Docker Swarm service labels, as a JSON object. +func (o LibsqlOutput) LabelsSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput) +} + +// Hard memory limit, for example `512m`. +func (o LibsqlOutput) MemoryLimit() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput) +} + +// Soft memory reservation, for example `256m`. +func (o LibsqlOutput) MemoryReservation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput) +} + +// Docker Swarm service mode, as a JSON object. +func (o LibsqlOutput) ModeSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput) +} + +// Display name of the database. +func (o LibsqlOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// IDs of additional Docker networks to attach. +func (o LibsqlOutput) NetworkIds() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput) +} + +// Docker Swarm network attachments, as a JSON array. +func (o LibsqlOutput) NetworkSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput) +} + +// Docker Swarm placement constraints, as a JSON object. +func (o LibsqlOutput) PlacementSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput) +} + +// Number of replicas to run. +func (o LibsqlOutput) Replicas() pulumi.IntOutput { + return o.ApplyT(func(v *Libsql) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput) +} + +// Docker Swarm restart policy, as a JSON object. +func (o LibsqlOutput) RestartPolicySwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput) +} + +// Docker Swarm rollback configuration, as a JSON object. +func (o LibsqlOutput) RollbackConfigSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput) +} + +// Remote server to deploy on. Omit to use the Dokploy host itself. +func (o LibsqlOutput) ServerId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput) +} + +// Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. +func (o LibsqlOutput) SqldNode() pulumi.StringOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringOutput { return v.SqldNode }).(pulumi.StringOutput) +} + +// URL of the primary node, when `sqldNode` is `replica`. +func (o LibsqlOutput) SqldPrimaryUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.SqldPrimaryUrl }).(pulumi.StringPtrOutput) +} + +// Grace period in nanoseconds before a container is killed. +func (o LibsqlOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput) +} + +// Docker Swarm rolling update configuration, as a JSON object. +func (o LibsqlOutput) UpdateConfigSwarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Libsql) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput) +} + +type LibsqlArrayOutput struct{ *pulumi.OutputState } + +func (LibsqlArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Libsql)(nil)).Elem() +} + +func (o LibsqlArrayOutput) ToLibsqlArrayOutput() LibsqlArrayOutput { + return o +} + +func (o LibsqlArrayOutput) ToLibsqlArrayOutputWithContext(ctx context.Context) LibsqlArrayOutput { + return o +} + +func (o LibsqlArrayOutput) Index(i pulumi.IntInput) LibsqlOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Libsql { + return vs[0].([]*Libsql)[vs[1].(int)] + }).(LibsqlOutput) +} + +type LibsqlMapOutput struct{ *pulumi.OutputState } + +func (LibsqlMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Libsql)(nil)).Elem() +} + +func (o LibsqlMapOutput) ToLibsqlMapOutput() LibsqlMapOutput { + return o +} + +func (o LibsqlMapOutput) ToLibsqlMapOutputWithContext(ctx context.Context) LibsqlMapOutput { + return o +} + +func (o LibsqlMapOutput) MapIndex(k pulumi.StringInput) LibsqlOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Libsql { + return vs[0].(map[string]*Libsql)[vs[1].(string)] + }).(LibsqlOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LibsqlInput)(nil)).Elem(), &Libsql{}) + pulumi.RegisterInputType(reflect.TypeOf((*LibsqlArrayInput)(nil)).Elem(), LibsqlArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LibsqlMapInput)(nil)).Elem(), LibsqlMap{}) + pulumi.RegisterOutputType(LibsqlOutput{}) + pulumi.RegisterOutputType(LibsqlArrayOutput{}) + pulumi.RegisterOutputType(LibsqlMapOutput{}) +} diff --git a/sdk/go/dokploy/mariaDb.go b/sdk/go/dokploy/mariaDb.go index 3426ec7..fbf3ec4 100644 --- a/sdk/go/dokploy/mariaDb.go +++ b/sdk/go/dokploy/mariaDb.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A managed MariaDB instance running on Dokploy. +// +// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. +// +// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. type MariaDb struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/mongo.go b/sdk/go/dokploy/mongo.go index 3160c7a..3e4c83e 100644 --- a/sdk/go/dokploy/mongo.go +++ b/sdk/go/dokploy/mongo.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A managed MongoDB instance running on Dokploy. +// +// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. +// +// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. type Mongo struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/mount.go b/sdk/go/dokploy/mount.go index d1da2cd..03f6feb 100644 --- a/sdk/go/dokploy/mount.go +++ b/sdk/go/dokploy/mount.go @@ -12,6 +12,13 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A volume, bind mount, or config file attached to a Dokploy service. +// +// * `type = "volume"` — a named Docker volume; set `volumeName`. +// * `type = "bind"` — a path on the host; set `hostPath`. +// * `type = "file"` — a file rendered from `content`; set `filePath`. +// +// > **A `volume` mount must set `volumeName`.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time. type Mount struct { pulumi.CustomResourceState @@ -25,7 +32,7 @@ type Mount struct { MountPath pulumi.StringOutput `pulumi:"mountPath"` // ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on. ServiceId pulumi.StringOutput `pulumi:"serviceId"` - // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. ServiceType pulumi.StringOutput `pulumi:"serviceType"` // The kind of mount to create. Valid values: `bind`, `volume`, `file`. Type pulumi.StringOutput `pulumi:"type"` @@ -85,7 +92,7 @@ type mountState struct { MountPath *string `pulumi:"mountPath"` // ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on. ServiceId *string `pulumi:"serviceId"` - // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. ServiceType *string `pulumi:"serviceType"` // The kind of mount to create. Valid values: `bind`, `volume`, `file`. Type *string `pulumi:"type"` @@ -104,7 +111,7 @@ type MountState struct { MountPath pulumi.StringPtrInput // ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on. ServiceId pulumi.StringPtrInput - // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. ServiceType pulumi.StringPtrInput // The kind of mount to create. Valid values: `bind`, `volume`, `file`. Type pulumi.StringPtrInput @@ -127,7 +134,7 @@ type mountArgs struct { MountPath string `pulumi:"mountPath"` // ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on. ServiceId string `pulumi:"serviceId"` - // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. ServiceType string `pulumi:"serviceType"` // The kind of mount to create. Valid values: `bind`, `volume`, `file`. Type string `pulumi:"type"` @@ -147,7 +154,7 @@ type MountArgs struct { MountPath pulumi.StringInput // ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on. ServiceId pulumi.StringInput - // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + // The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. ServiceType pulumi.StringInput // The kind of mount to create. Valid values: `bind`, `volume`, `file`. Type pulumi.StringInput @@ -267,7 +274,7 @@ func (o MountOutput) ServiceId() pulumi.StringOutput { return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.ServiceId }).(pulumi.StringOutput) } -// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. +// The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. func (o MountOutput) ServiceType() pulumi.StringOutput { return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.ServiceType }).(pulumi.StringOutput) } diff --git a/sdk/go/dokploy/mySql.go b/sdk/go/dokploy/mySql.go index 2fed0a3..c2ee460 100644 --- a/sdk/go/dokploy/mySql.go +++ b/sdk/go/dokploy/mySql.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A managed MySQL instance running on Dokploy. +// +// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. +// +// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. type MySql struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/network.go b/sdk/go/dokploy/network.go new file mode 100644 index 0000000..3a16e6c --- /dev/null +++ b/sdk/go/dokploy/network.go @@ -0,0 +1,361 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dokploy + +import ( + "context" + "reflect" + + "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A Docker network managed by Dokploy. +// +// Attach services to it with `networkIds` on `Application`, `Compose` and the database resources. Every service also joins the shared `dokploy-network` unless `detachDokployNetwork` is set. +// +// > Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy. +type Network struct { + pulumi.CustomResourceState + + // Allow standalone containers to attach to an overlay network. + Attachable pulumi.BoolOutput `pulumi:"attachable"` + // RFC 3339 timestamp of when the network was created. + CreatedAt pulumi.StringOutput `pulumi:"createdAt"` + // Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + Driver pulumi.StringOutput `pulumi:"driver"` + // Enable IPv4 address allocation. + EnableIpv4 pulumi.BoolOutput `pulumi:"enableIpv4"` + // Enable IPv6 address allocation. + EnableIpv6 pulumi.BoolOutput `pulumi:"enableIpv6"` + // Isolate the network from external access. + Internal pulumi.BoolOutput `pulumi:"internal"` + // Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + Ipam pulumi.StringPtrOutput `pulumi:"ipam"` + // Maximum transmission unit for the network. Leave unset to use Docker's default. + Mtu pulumi.IntPtrOutput `pulumi:"mtu"` + // Name of the Docker network. + Name pulumi.StringOutput `pulumi:"name"` + // Organization that owns the network. + OrganizationId pulumi.StringOutput `pulumi:"organizationId"` + // Remote server to create the network on. Omit to use the Dokploy host itself. + ServerId pulumi.StringPtrOutput `pulumi:"serverId"` +} + +// NewNetwork registers a new resource with the given unique name, arguments, and options. +func NewNetwork(ctx *pulumi.Context, + name string, args *NetworkArgs, opts ...pulumi.ResourceOption) (*Network, error) { + if args == nil { + args = &NetworkArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Network + err := ctx.RegisterResource("dokploy:index/network:Network", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetwork gets an existing Network resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetNetwork(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkState, opts ...pulumi.ResourceOption) (*Network, error) { + var resource Network + err := ctx.ReadResource("dokploy:index/network:Network", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Network resources. +type networkState struct { + // Allow standalone containers to attach to an overlay network. + Attachable *bool `pulumi:"attachable"` + // RFC 3339 timestamp of when the network was created. + CreatedAt *string `pulumi:"createdAt"` + // Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + Driver *string `pulumi:"driver"` + // Enable IPv4 address allocation. + EnableIpv4 *bool `pulumi:"enableIpv4"` + // Enable IPv6 address allocation. + EnableIpv6 *bool `pulumi:"enableIpv6"` + // Isolate the network from external access. + Internal *bool `pulumi:"internal"` + // Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + Ipam *string `pulumi:"ipam"` + // Maximum transmission unit for the network. Leave unset to use Docker's default. + Mtu *int `pulumi:"mtu"` + // Name of the Docker network. + Name *string `pulumi:"name"` + // Organization that owns the network. + OrganizationId *string `pulumi:"organizationId"` + // Remote server to create the network on. Omit to use the Dokploy host itself. + ServerId *string `pulumi:"serverId"` +} + +type NetworkState struct { + // Allow standalone containers to attach to an overlay network. + Attachable pulumi.BoolPtrInput + // RFC 3339 timestamp of when the network was created. + CreatedAt pulumi.StringPtrInput + // Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + Driver pulumi.StringPtrInput + // Enable IPv4 address allocation. + EnableIpv4 pulumi.BoolPtrInput + // Enable IPv6 address allocation. + EnableIpv6 pulumi.BoolPtrInput + // Isolate the network from external access. + Internal pulumi.BoolPtrInput + // Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + Ipam pulumi.StringPtrInput + // Maximum transmission unit for the network. Leave unset to use Docker's default. + Mtu pulumi.IntPtrInput + // Name of the Docker network. + Name pulumi.StringPtrInput + // Organization that owns the network. + OrganizationId pulumi.StringPtrInput + // Remote server to create the network on. Omit to use the Dokploy host itself. + ServerId pulumi.StringPtrInput +} + +func (NetworkState) ElementType() reflect.Type { + return reflect.TypeOf((*networkState)(nil)).Elem() +} + +type networkArgs struct { + // Allow standalone containers to attach to an overlay network. + Attachable *bool `pulumi:"attachable"` + // Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + Driver *string `pulumi:"driver"` + // Enable IPv4 address allocation. + EnableIpv4 *bool `pulumi:"enableIpv4"` + // Enable IPv6 address allocation. + EnableIpv6 *bool `pulumi:"enableIpv6"` + // Isolate the network from external access. + Internal *bool `pulumi:"internal"` + // Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + Ipam *string `pulumi:"ipam"` + // Maximum transmission unit for the network. Leave unset to use Docker's default. + Mtu *int `pulumi:"mtu"` + // Name of the Docker network. + Name *string `pulumi:"name"` + // Remote server to create the network on. Omit to use the Dokploy host itself. + ServerId *string `pulumi:"serverId"` +} + +// The set of arguments for constructing a Network resource. +type NetworkArgs struct { + // Allow standalone containers to attach to an overlay network. + Attachable pulumi.BoolPtrInput + // Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + Driver pulumi.StringPtrInput + // Enable IPv4 address allocation. + EnableIpv4 pulumi.BoolPtrInput + // Enable IPv6 address allocation. + EnableIpv6 pulumi.BoolPtrInput + // Isolate the network from external access. + Internal pulumi.BoolPtrInput + // Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + Ipam pulumi.StringPtrInput + // Maximum transmission unit for the network. Leave unset to use Docker's default. + Mtu pulumi.IntPtrInput + // Name of the Docker network. + Name pulumi.StringPtrInput + // Remote server to create the network on. Omit to use the Dokploy host itself. + ServerId pulumi.StringPtrInput +} + +func (NetworkArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkArgs)(nil)).Elem() +} + +type NetworkInput interface { + pulumi.Input + + ToNetworkOutput() NetworkOutput + ToNetworkOutputWithContext(ctx context.Context) NetworkOutput +} + +func (*Network) ElementType() reflect.Type { + return reflect.TypeOf((**Network)(nil)).Elem() +} + +func (i *Network) ToNetworkOutput() NetworkOutput { + return i.ToNetworkOutputWithContext(context.Background()) +} + +func (i *Network) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkOutput) +} + +// NetworkArrayInput is an input type that accepts NetworkArray and NetworkArrayOutput values. +// You can construct a concrete instance of `NetworkArrayInput` via: +// +// NetworkArray{ NetworkArgs{...} } +type NetworkArrayInput interface { + pulumi.Input + + ToNetworkArrayOutput() NetworkArrayOutput + ToNetworkArrayOutputWithContext(context.Context) NetworkArrayOutput +} + +type NetworkArray []NetworkInput + +func (NetworkArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Network)(nil)).Elem() +} + +func (i NetworkArray) ToNetworkArrayOutput() NetworkArrayOutput { + return i.ToNetworkArrayOutputWithContext(context.Background()) +} + +func (i NetworkArray) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkArrayOutput) +} + +// NetworkMapInput is an input type that accepts NetworkMap and NetworkMapOutput values. +// You can construct a concrete instance of `NetworkMapInput` via: +// +// NetworkMap{ "key": NetworkArgs{...} } +type NetworkMapInput interface { + pulumi.Input + + ToNetworkMapOutput() NetworkMapOutput + ToNetworkMapOutputWithContext(context.Context) NetworkMapOutput +} + +type NetworkMap map[string]NetworkInput + +func (NetworkMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Network)(nil)).Elem() +} + +func (i NetworkMap) ToNetworkMapOutput() NetworkMapOutput { + return i.ToNetworkMapOutputWithContext(context.Background()) +} + +func (i NetworkMap) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkMapOutput) +} + +type NetworkOutput struct{ *pulumi.OutputState } + +func (NetworkOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Network)(nil)).Elem() +} + +func (o NetworkOutput) ToNetworkOutput() NetworkOutput { + return o +} + +func (o NetworkOutput) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput { + return o +} + +// Allow standalone containers to attach to an overlay network. +func (o NetworkOutput) Attachable() pulumi.BoolOutput { + return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.Attachable }).(pulumi.BoolOutput) +} + +// RFC 3339 timestamp of when the network was created. +func (o NetworkOutput) CreatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) +} + +// Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. +func (o NetworkOutput) Driver() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Driver }).(pulumi.StringOutput) +} + +// Enable IPv4 address allocation. +func (o NetworkOutput) EnableIpv4() pulumi.BoolOutput { + return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.EnableIpv4 }).(pulumi.BoolOutput) +} + +// Enable IPv6 address allocation. +func (o NetworkOutput) EnableIpv6() pulumi.BoolOutput { + return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.EnableIpv6 }).(pulumi.BoolOutput) +} + +// Isolate the network from external access. +func (o NetworkOutput) Internal() pulumi.BoolOutput { + return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.Internal }).(pulumi.BoolOutput) +} + +// Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. +func (o NetworkOutput) Ipam() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.Ipam }).(pulumi.StringPtrOutput) +} + +// Maximum transmission unit for the network. Leave unset to use Docker's default. +func (o NetworkOutput) Mtu() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Network) pulumi.IntPtrOutput { return v.Mtu }).(pulumi.IntPtrOutput) +} + +// Name of the Docker network. +func (o NetworkOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Organization that owns the network. +func (o NetworkOutput) OrganizationId() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput) +} + +// Remote server to create the network on. Omit to use the Dokploy host itself. +func (o NetworkOutput) ServerId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput) +} + +type NetworkArrayOutput struct{ *pulumi.OutputState } + +func (NetworkArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Network)(nil)).Elem() +} + +func (o NetworkArrayOutput) ToNetworkArrayOutput() NetworkArrayOutput { + return o +} + +func (o NetworkArrayOutput) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput { + return o +} + +func (o NetworkArrayOutput) Index(i pulumi.IntInput) NetworkOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Network { + return vs[0].([]*Network)[vs[1].(int)] + }).(NetworkOutput) +} + +type NetworkMapOutput struct{ *pulumi.OutputState } + +func (NetworkMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Network)(nil)).Elem() +} + +func (o NetworkMapOutput) ToNetworkMapOutput() NetworkMapOutput { + return o +} + +func (o NetworkMapOutput) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput { + return o +} + +func (o NetworkMapOutput) MapIndex(k pulumi.StringInput) NetworkOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Network { + return vs[0].(map[string]*Network)[vs[1].(string)] + }).(NetworkOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkInput)(nil)).Elem(), &Network{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkArrayInput)(nil)).Elem(), NetworkArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkMapInput)(nil)).Elem(), NetworkMap{}) + pulumi.RegisterOutputType(NetworkOutput{}) + pulumi.RegisterOutputType(NetworkArrayOutput{}) + pulumi.RegisterOutputType(NetworkMapOutput{}) +} diff --git a/sdk/go/dokploy/port.go b/sdk/go/dokploy/port.go index ff1fe5f..2c1541a 100644 --- a/sdk/go/dokploy/port.go +++ b/sdk/go/dokploy/port.go @@ -12,6 +12,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A published port that exposes an application directly on the host, bypassing Traefik. type Port struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/postgres.go b/sdk/go/dokploy/postgres.go index d8bfa6c..f9fdf0c 100644 --- a/sdk/go/dokploy/postgres.go +++ b/sdk/go/dokploy/postgres.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A managed PostgreSQL instance running on Dokploy. +// +// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. +// +// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. type Postgres struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/project.go b/sdk/go/dokploy/project.go index e380add..636e161 100644 --- a/sdk/go/dokploy/project.go +++ b/sdk/go/dokploy/project.go @@ -11,6 +11,9 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A Dokploy project: the top-level container for environments and services. +// +// Creating a project automatically creates a default `production` environment. Its ID is exposed as `defaultEnvironmentId`, so services can be attached without declaring a separate `Environment` resource. type Project struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/pulumi-plugin.json b/sdk/go/dokploy/pulumi-plugin.json index 599eadc..db03583 100644 --- a/sdk/go/dokploy/pulumi-plugin.json +++ b/sdk/go/dokploy/pulumi-plugin.json @@ -1,6 +1,6 @@ { "resource": true, "name": "dokploy", - "version": "0.1.0", + "version": "0.2.0", "server": "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}" } diff --git a/sdk/go/dokploy/redirect.go b/sdk/go/dokploy/redirect.go index 96f3465..3e90cb1 100644 --- a/sdk/go/dokploy/redirect.go +++ b/sdk/go/dokploy/redirect.go @@ -12,6 +12,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A Traefik redirect rule attached to an application. type Redirect struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/redis.go b/sdk/go/dokploy/redis.go index 2bc9acd..b958779 100644 --- a/sdk/go/dokploy/redis.go +++ b/sdk/go/dokploy/redis.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A managed Redis instance running on Dokploy. +// +// > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. +// +// > Credentials are stored in Terraform state. Use a state backend with encryption at rest. type Redis struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/registry.go b/sdk/go/dokploy/registry.go index 61cb8b4..9d212fe 100644 --- a/sdk/go/dokploy/registry.go +++ b/sdk/go/dokploy/registry.go @@ -12,6 +12,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A container registry that Dokploy pushes built images to and pulls them from. type Registry struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/schedule.go b/sdk/go/dokploy/schedule.go new file mode 100644 index 0000000..ae54e9a --- /dev/null +++ b/sdk/go/dokploy/schedule.go @@ -0,0 +1,437 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dokploy + +import ( + "context" + "reflect" + + "errors" + "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A cron job Dokploy runs on a schedule. +// +// `scheduleType` selects where the command runs: +// +// * `application` — inside a running application container; set `applicationId`. +// * `compose` — inside one service of a Compose stack; set `composeId` and `serviceName`. +// * `server` — on a remote server; set `serverId`. +// * `dokploy-server` — on the Dokploy host itself. +// +// > A schedule targeting an application runs inside its container, so the container has to be running when the cron fires. +type Schedule struct { + pulumi.CustomResourceState + + // Docker service name the schedule targets. Derived by Dokploy when omitted. + AppName pulumi.StringOutput `pulumi:"appName"` + // Application this schedule belongs to. + ApplicationId pulumi.StringPtrOutput `pulumi:"applicationId"` + // Command to run. + Command pulumi.StringOutput `pulumi:"command"` + // Compose stack this schedule belongs to. + ComposeId pulumi.StringPtrOutput `pulumi:"composeId"` + // RFC 3339 timestamp of when the schedule was created. + CreatedAt pulumi.StringOutput `pulumi:"createdAt"` + // Standard five-field cron expression, for example `0 3 * * *`. + CronExpression pulumi.StringOutput `pulumi:"cronExpression"` + // Free-form description. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Whether the schedule is active. + Enabled pulumi.BoolOutput `pulumi:"enabled"` + // Display name of the schedule. + Name pulumi.StringOutput `pulumi:"name"` + // Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + ScheduleType pulumi.StringOutput `pulumi:"scheduleType"` + // Multi-line script to run instead of a single command. + Script pulumi.StringPtrOutput `pulumi:"script"` + // Server this schedule runs on. + ServerId pulumi.StringPtrOutput `pulumi:"serverId"` + // Service inside a Compose stack to run the command in. + ServiceName pulumi.StringPtrOutput `pulumi:"serviceName"` + // Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + ShellType pulumi.StringOutput `pulumi:"shellType"` + // IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + Timezone pulumi.StringPtrOutput `pulumi:"timezone"` +} + +// NewSchedule registers a new resource with the given unique name, arguments, and options. +func NewSchedule(ctx *pulumi.Context, + name string, args *ScheduleArgs, opts ...pulumi.ResourceOption) (*Schedule, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Command == nil { + return nil, errors.New("invalid value for required argument 'Command'") + } + if args.CronExpression == nil { + return nil, errors.New("invalid value for required argument 'CronExpression'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Schedule + err := ctx.RegisterResource("dokploy:index/schedule:Schedule", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSchedule gets an existing Schedule resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetSchedule(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ScheduleState, opts ...pulumi.ResourceOption) (*Schedule, error) { + var resource Schedule + err := ctx.ReadResource("dokploy:index/schedule:Schedule", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Schedule resources. +type scheduleState struct { + // Docker service name the schedule targets. Derived by Dokploy when omitted. + AppName *string `pulumi:"appName"` + // Application this schedule belongs to. + ApplicationId *string `pulumi:"applicationId"` + // Command to run. + Command *string `pulumi:"command"` + // Compose stack this schedule belongs to. + ComposeId *string `pulumi:"composeId"` + // RFC 3339 timestamp of when the schedule was created. + CreatedAt *string `pulumi:"createdAt"` + // Standard five-field cron expression, for example `0 3 * * *`. + CronExpression *string `pulumi:"cronExpression"` + // Free-form description. + Description *string `pulumi:"description"` + // Whether the schedule is active. + Enabled *bool `pulumi:"enabled"` + // Display name of the schedule. + Name *string `pulumi:"name"` + // Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + ScheduleType *string `pulumi:"scheduleType"` + // Multi-line script to run instead of a single command. + Script *string `pulumi:"script"` + // Server this schedule runs on. + ServerId *string `pulumi:"serverId"` + // Service inside a Compose stack to run the command in. + ServiceName *string `pulumi:"serviceName"` + // Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + ShellType *string `pulumi:"shellType"` + // IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + Timezone *string `pulumi:"timezone"` +} + +type ScheduleState struct { + // Docker service name the schedule targets. Derived by Dokploy when omitted. + AppName pulumi.StringPtrInput + // Application this schedule belongs to. + ApplicationId pulumi.StringPtrInput + // Command to run. + Command pulumi.StringPtrInput + // Compose stack this schedule belongs to. + ComposeId pulumi.StringPtrInput + // RFC 3339 timestamp of when the schedule was created. + CreatedAt pulumi.StringPtrInput + // Standard five-field cron expression, for example `0 3 * * *`. + CronExpression pulumi.StringPtrInput + // Free-form description. + Description pulumi.StringPtrInput + // Whether the schedule is active. + Enabled pulumi.BoolPtrInput + // Display name of the schedule. + Name pulumi.StringPtrInput + // Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + ScheduleType pulumi.StringPtrInput + // Multi-line script to run instead of a single command. + Script pulumi.StringPtrInput + // Server this schedule runs on. + ServerId pulumi.StringPtrInput + // Service inside a Compose stack to run the command in. + ServiceName pulumi.StringPtrInput + // Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + ShellType pulumi.StringPtrInput + // IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + Timezone pulumi.StringPtrInput +} + +func (ScheduleState) ElementType() reflect.Type { + return reflect.TypeOf((*scheduleState)(nil)).Elem() +} + +type scheduleArgs struct { + // Docker service name the schedule targets. Derived by Dokploy when omitted. + AppName *string `pulumi:"appName"` + // Application this schedule belongs to. + ApplicationId *string `pulumi:"applicationId"` + // Command to run. + Command string `pulumi:"command"` + // Compose stack this schedule belongs to. + ComposeId *string `pulumi:"composeId"` + // Standard five-field cron expression, for example `0 3 * * *`. + CronExpression string `pulumi:"cronExpression"` + // Free-form description. + Description *string `pulumi:"description"` + // Whether the schedule is active. + Enabled *bool `pulumi:"enabled"` + // Display name of the schedule. + Name *string `pulumi:"name"` + // Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + ScheduleType *string `pulumi:"scheduleType"` + // Multi-line script to run instead of a single command. + Script *string `pulumi:"script"` + // Server this schedule runs on. + ServerId *string `pulumi:"serverId"` + // Service inside a Compose stack to run the command in. + ServiceName *string `pulumi:"serviceName"` + // Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + ShellType *string `pulumi:"shellType"` + // IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + Timezone *string `pulumi:"timezone"` +} + +// The set of arguments for constructing a Schedule resource. +type ScheduleArgs struct { + // Docker service name the schedule targets. Derived by Dokploy when omitted. + AppName pulumi.StringPtrInput + // Application this schedule belongs to. + ApplicationId pulumi.StringPtrInput + // Command to run. + Command pulumi.StringInput + // Compose stack this schedule belongs to. + ComposeId pulumi.StringPtrInput + // Standard five-field cron expression, for example `0 3 * * *`. + CronExpression pulumi.StringInput + // Free-form description. + Description pulumi.StringPtrInput + // Whether the schedule is active. + Enabled pulumi.BoolPtrInput + // Display name of the schedule. + Name pulumi.StringPtrInput + // Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + ScheduleType pulumi.StringPtrInput + // Multi-line script to run instead of a single command. + Script pulumi.StringPtrInput + // Server this schedule runs on. + ServerId pulumi.StringPtrInput + // Service inside a Compose stack to run the command in. + ServiceName pulumi.StringPtrInput + // Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + ShellType pulumi.StringPtrInput + // IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + Timezone pulumi.StringPtrInput +} + +func (ScheduleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*scheduleArgs)(nil)).Elem() +} + +type ScheduleInput interface { + pulumi.Input + + ToScheduleOutput() ScheduleOutput + ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput +} + +func (*Schedule) ElementType() reflect.Type { + return reflect.TypeOf((**Schedule)(nil)).Elem() +} + +func (i *Schedule) ToScheduleOutput() ScheduleOutput { + return i.ToScheduleOutputWithContext(context.Background()) +} + +func (i *Schedule) ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleOutput) +} + +// ScheduleArrayInput is an input type that accepts ScheduleArray and ScheduleArrayOutput values. +// You can construct a concrete instance of `ScheduleArrayInput` via: +// +// ScheduleArray{ ScheduleArgs{...} } +type ScheduleArrayInput interface { + pulumi.Input + + ToScheduleArrayOutput() ScheduleArrayOutput + ToScheduleArrayOutputWithContext(context.Context) ScheduleArrayOutput +} + +type ScheduleArray []ScheduleInput + +func (ScheduleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Schedule)(nil)).Elem() +} + +func (i ScheduleArray) ToScheduleArrayOutput() ScheduleArrayOutput { + return i.ToScheduleArrayOutputWithContext(context.Background()) +} + +func (i ScheduleArray) ToScheduleArrayOutputWithContext(ctx context.Context) ScheduleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleArrayOutput) +} + +// ScheduleMapInput is an input type that accepts ScheduleMap and ScheduleMapOutput values. +// You can construct a concrete instance of `ScheduleMapInput` via: +// +// ScheduleMap{ "key": ScheduleArgs{...} } +type ScheduleMapInput interface { + pulumi.Input + + ToScheduleMapOutput() ScheduleMapOutput + ToScheduleMapOutputWithContext(context.Context) ScheduleMapOutput +} + +type ScheduleMap map[string]ScheduleInput + +func (ScheduleMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Schedule)(nil)).Elem() +} + +func (i ScheduleMap) ToScheduleMapOutput() ScheduleMapOutput { + return i.ToScheduleMapOutputWithContext(context.Background()) +} + +func (i ScheduleMap) ToScheduleMapOutputWithContext(ctx context.Context) ScheduleMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleMapOutput) +} + +type ScheduleOutput struct{ *pulumi.OutputState } + +func (ScheduleOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Schedule)(nil)).Elem() +} + +func (o ScheduleOutput) ToScheduleOutput() ScheduleOutput { + return o +} + +func (o ScheduleOutput) ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput { + return o +} + +// Docker service name the schedule targets. Derived by Dokploy when omitted. +func (o ScheduleOutput) AppName() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput) +} + +// Application this schedule belongs to. +func (o ScheduleOutput) ApplicationId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ApplicationId }).(pulumi.StringPtrOutput) +} + +// Command to run. +func (o ScheduleOutput) Command() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.Command }).(pulumi.StringOutput) +} + +// Compose stack this schedule belongs to. +func (o ScheduleOutput) ComposeId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ComposeId }).(pulumi.StringPtrOutput) +} + +// RFC 3339 timestamp of when the schedule was created. +func (o ScheduleOutput) CreatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) +} + +// Standard five-field cron expression, for example `0 3 * * *`. +func (o ScheduleOutput) CronExpression() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.CronExpression }).(pulumi.StringOutput) +} + +// Free-form description. +func (o ScheduleOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Whether the schedule is active. +func (o ScheduleOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v *Schedule) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput) +} + +// Display name of the schedule. +func (o ScheduleOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. +func (o ScheduleOutput) ScheduleType() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.ScheduleType }).(pulumi.StringOutput) +} + +// Multi-line script to run instead of a single command. +func (o ScheduleOutput) Script() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Script }).(pulumi.StringPtrOutput) +} + +// Server this schedule runs on. +func (o ScheduleOutput) ServerId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput) +} + +// Service inside a Compose stack to run the command in. +func (o ScheduleOutput) ServiceName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ServiceName }).(pulumi.StringPtrOutput) +} + +// Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. +func (o ScheduleOutput) ShellType() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.ShellType }).(pulumi.StringOutput) +} + +// IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. +func (o ScheduleOutput) Timezone() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Timezone }).(pulumi.StringPtrOutput) +} + +type ScheduleArrayOutput struct{ *pulumi.OutputState } + +func (ScheduleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Schedule)(nil)).Elem() +} + +func (o ScheduleArrayOutput) ToScheduleArrayOutput() ScheduleArrayOutput { + return o +} + +func (o ScheduleArrayOutput) ToScheduleArrayOutputWithContext(ctx context.Context) ScheduleArrayOutput { + return o +} + +func (o ScheduleArrayOutput) Index(i pulumi.IntInput) ScheduleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Schedule { + return vs[0].([]*Schedule)[vs[1].(int)] + }).(ScheduleOutput) +} + +type ScheduleMapOutput struct{ *pulumi.OutputState } + +func (ScheduleMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Schedule)(nil)).Elem() +} + +func (o ScheduleMapOutput) ToScheduleMapOutput() ScheduleMapOutput { + return o +} + +func (o ScheduleMapOutput) ToScheduleMapOutputWithContext(ctx context.Context) ScheduleMapOutput { + return o +} + +func (o ScheduleMapOutput) MapIndex(k pulumi.StringInput) ScheduleOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Schedule { + return vs[0].(map[string]*Schedule)[vs[1].(string)] + }).(ScheduleOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleInput)(nil)).Elem(), &Schedule{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleArrayInput)(nil)).Elem(), ScheduleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleMapInput)(nil)).Elem(), ScheduleMap{}) + pulumi.RegisterOutputType(ScheduleOutput{}) + pulumi.RegisterOutputType(ScheduleArrayOutput{}) + pulumi.RegisterOutputType(ScheduleMapOutput{}) +} diff --git a/sdk/go/dokploy/security.go b/sdk/go/dokploy/security.go index aa89d63..60fe1f8 100644 --- a/sdk/go/dokploy/security.go +++ b/sdk/go/dokploy/security.go @@ -12,6 +12,9 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// HTTP basic authentication credentials protecting an application's domains. +// +// > Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured. type Security struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/sshKey.go b/sdk/go/dokploy/sshKey.go index 423b802..abc2c2f 100644 --- a/sdk/go/dokploy/sshKey.go +++ b/sdk/go/dokploy/sshKey.go @@ -12,6 +12,11 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers. +// +// > The private key is stored in Terraform state. Use a state backend with encryption at rest. +// +// > Dokploy's update endpoint only accepts `name` and `description`. Changing either key forces a new resource. type SshKey struct { pulumi.CustomResourceState diff --git a/sdk/go/dokploy/vaultProvider.go b/sdk/go/dokploy/vaultProvider.go new file mode 100644 index 0000000..efd85d5 --- /dev/null +++ b/sdk/go/dokploy/vaultProvider.go @@ -0,0 +1,296 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dokploy + +import ( + "context" + "reflect" + + "errors" + "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// An external secret manager Dokploy resolves environment variables from at deploy time. +// +// Reference a secret from any `env` value with `${{vault..}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change. +// +// Supported `providerType` values: `hashicorp` (Vault/OpenBao), `infisical`, `aws` (Secrets Manager), `doppler`, `azure` (Key Vault) and `scaleway`. +type VaultProvider struct { + pulumi.CustomResourceState + + // JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + Assignments pulumi.StringOutput `pulumi:"assignments"` + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config pulumi.StringOutput `pulumi:"config"` + // RFC 3339 timestamp of when the connection was created. + CreatedAt pulumi.StringOutput `pulumi:"createdAt"` + // Name of the connection, unique within the organization. + Name pulumi.StringOutput `pulumi:"name"` + // Organization that owns the connection. + OrganizationId pulumi.StringOutput `pulumi:"organizationId"` + // Provider kind derived from `config`. + ProviderType pulumi.StringOutput `pulumi:"providerType"` +} + +// NewVaultProvider registers a new resource with the given unique name, arguments, and options. +func NewVaultProvider(ctx *pulumi.Context, + name string, args *VaultProviderArgs, opts ...pulumi.ResourceOption) (*VaultProvider, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Assignments == nil { + return nil, errors.New("invalid value for required argument 'Assignments'") + } + if args.Config == nil { + return nil, errors.New("invalid value for required argument 'Config'") + } + if args.Config != nil { + args.Config = pulumi.ToSecret(args.Config).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "config", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource VaultProvider + err := ctx.RegisterResource("dokploy:index/vaultProvider:VaultProvider", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetVaultProvider gets an existing VaultProvider resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetVaultProvider(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *VaultProviderState, opts ...pulumi.ResourceOption) (*VaultProvider, error) { + var resource VaultProvider + err := ctx.ReadResource("dokploy:index/vaultProvider:VaultProvider", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering VaultProvider resources. +type vaultProviderState struct { + // JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + Assignments *string `pulumi:"assignments"` + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config *string `pulumi:"config"` + // RFC 3339 timestamp of when the connection was created. + CreatedAt *string `pulumi:"createdAt"` + // Name of the connection, unique within the organization. + Name *string `pulumi:"name"` + // Organization that owns the connection. + OrganizationId *string `pulumi:"organizationId"` + // Provider kind derived from `config`. + ProviderType *string `pulumi:"providerType"` +} + +type VaultProviderState struct { + // JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + Assignments pulumi.StringPtrInput + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config pulumi.StringPtrInput + // RFC 3339 timestamp of when the connection was created. + CreatedAt pulumi.StringPtrInput + // Name of the connection, unique within the organization. + Name pulumi.StringPtrInput + // Organization that owns the connection. + OrganizationId pulumi.StringPtrInput + // Provider kind derived from `config`. + ProviderType pulumi.StringPtrInput +} + +func (VaultProviderState) ElementType() reflect.Type { + return reflect.TypeOf((*vaultProviderState)(nil)).Elem() +} + +type vaultProviderArgs struct { + // JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + Assignments string `pulumi:"assignments"` + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config string `pulumi:"config"` + // Name of the connection, unique within the organization. + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a VaultProvider resource. +type VaultProviderArgs struct { + // JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + Assignments pulumi.StringInput + // Provider credentials as a JSON object, including the `providerType` discriminator. + Config pulumi.StringInput + // Name of the connection, unique within the organization. + Name pulumi.StringPtrInput +} + +func (VaultProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*vaultProviderArgs)(nil)).Elem() +} + +type VaultProviderInput interface { + pulumi.Input + + ToVaultProviderOutput() VaultProviderOutput + ToVaultProviderOutputWithContext(ctx context.Context) VaultProviderOutput +} + +func (*VaultProvider) ElementType() reflect.Type { + return reflect.TypeOf((**VaultProvider)(nil)).Elem() +} + +func (i *VaultProvider) ToVaultProviderOutput() VaultProviderOutput { + return i.ToVaultProviderOutputWithContext(context.Background()) +} + +func (i *VaultProvider) ToVaultProviderOutputWithContext(ctx context.Context) VaultProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(VaultProviderOutput) +} + +// VaultProviderArrayInput is an input type that accepts VaultProviderArray and VaultProviderArrayOutput values. +// You can construct a concrete instance of `VaultProviderArrayInput` via: +// +// VaultProviderArray{ VaultProviderArgs{...} } +type VaultProviderArrayInput interface { + pulumi.Input + + ToVaultProviderArrayOutput() VaultProviderArrayOutput + ToVaultProviderArrayOutputWithContext(context.Context) VaultProviderArrayOutput +} + +type VaultProviderArray []VaultProviderInput + +func (VaultProviderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VaultProvider)(nil)).Elem() +} + +func (i VaultProviderArray) ToVaultProviderArrayOutput() VaultProviderArrayOutput { + return i.ToVaultProviderArrayOutputWithContext(context.Background()) +} + +func (i VaultProviderArray) ToVaultProviderArrayOutputWithContext(ctx context.Context) VaultProviderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VaultProviderArrayOutput) +} + +// VaultProviderMapInput is an input type that accepts VaultProviderMap and VaultProviderMapOutput values. +// You can construct a concrete instance of `VaultProviderMapInput` via: +// +// VaultProviderMap{ "key": VaultProviderArgs{...} } +type VaultProviderMapInput interface { + pulumi.Input + + ToVaultProviderMapOutput() VaultProviderMapOutput + ToVaultProviderMapOutputWithContext(context.Context) VaultProviderMapOutput +} + +type VaultProviderMap map[string]VaultProviderInput + +func (VaultProviderMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VaultProvider)(nil)).Elem() +} + +func (i VaultProviderMap) ToVaultProviderMapOutput() VaultProviderMapOutput { + return i.ToVaultProviderMapOutputWithContext(context.Background()) +} + +func (i VaultProviderMap) ToVaultProviderMapOutputWithContext(ctx context.Context) VaultProviderMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(VaultProviderMapOutput) +} + +type VaultProviderOutput struct{ *pulumi.OutputState } + +func (VaultProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VaultProvider)(nil)).Elem() +} + +func (o VaultProviderOutput) ToVaultProviderOutput() VaultProviderOutput { + return o +} + +func (o VaultProviderOutput) ToVaultProviderOutputWithContext(ctx context.Context) VaultProviderOutput { + return o +} + +// JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. +func (o VaultProviderOutput) Assignments() pulumi.StringOutput { + return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.Assignments }).(pulumi.StringOutput) +} + +// Provider credentials as a JSON object, including the `providerType` discriminator. +func (o VaultProviderOutput) Config() pulumi.StringOutput { + return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.Config }).(pulumi.StringOutput) +} + +// RFC 3339 timestamp of when the connection was created. +func (o VaultProviderOutput) CreatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) +} + +// Name of the connection, unique within the organization. +func (o VaultProviderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Organization that owns the connection. +func (o VaultProviderOutput) OrganizationId() pulumi.StringOutput { + return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput) +} + +// Provider kind derived from `config`. +func (o VaultProviderOutput) ProviderType() pulumi.StringOutput { + return o.ApplyT(func(v *VaultProvider) pulumi.StringOutput { return v.ProviderType }).(pulumi.StringOutput) +} + +type VaultProviderArrayOutput struct{ *pulumi.OutputState } + +func (VaultProviderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VaultProvider)(nil)).Elem() +} + +func (o VaultProviderArrayOutput) ToVaultProviderArrayOutput() VaultProviderArrayOutput { + return o +} + +func (o VaultProviderArrayOutput) ToVaultProviderArrayOutputWithContext(ctx context.Context) VaultProviderArrayOutput { + return o +} + +func (o VaultProviderArrayOutput) Index(i pulumi.IntInput) VaultProviderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VaultProvider { + return vs[0].([]*VaultProvider)[vs[1].(int)] + }).(VaultProviderOutput) +} + +type VaultProviderMapOutput struct{ *pulumi.OutputState } + +func (VaultProviderMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VaultProvider)(nil)).Elem() +} + +func (o VaultProviderMapOutput) ToVaultProviderMapOutput() VaultProviderMapOutput { + return o +} + +func (o VaultProviderMapOutput) ToVaultProviderMapOutputWithContext(ctx context.Context) VaultProviderMapOutput { + return o +} + +func (o VaultProviderMapOutput) MapIndex(k pulumi.StringInput) VaultProviderOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VaultProvider { + return vs[0].(map[string]*VaultProvider)[vs[1].(string)] + }).(VaultProviderOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*VaultProviderInput)(nil)).Elem(), &VaultProvider{}) + pulumi.RegisterInputType(reflect.TypeOf((*VaultProviderArrayInput)(nil)).Elem(), VaultProviderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VaultProviderMapInput)(nil)).Elem(), VaultProviderMap{}) + pulumi.RegisterOutputType(VaultProviderOutput{}) + pulumi.RegisterOutputType(VaultProviderArrayOutput{}) + pulumi.RegisterOutputType(VaultProviderMapOutput{}) +} diff --git a/sdk/go/dokploy/volumeBackup.go b/sdk/go/dokploy/volumeBackup.go new file mode 100644 index 0000000..3f0c1b2 --- /dev/null +++ b/sdk/go/dokploy/volumeBackup.go @@ -0,0 +1,513 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dokploy + +import ( + "context" + "reflect" + + "errors" + "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A scheduled backup of a Docker volume to a configured `Destination`. +// +// This is the counterpart to a `Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule. +// +// Set exactly one of the `*_id` attributes to say which service owns the volume. +type VolumeBackup struct { + pulumi.CustomResourceState + + // Docker service name that owns the volume. Derived by Dokploy when omitted. + AppName pulumi.StringOutput `pulumi:"appName"` + // Application that owns the volume. + ApplicationId pulumi.StringPtrOutput `pulumi:"applicationId"` + // Compose stack that owns the volume. + ComposeId pulumi.StringPtrOutput `pulumi:"composeId"` + // RFC 3339 timestamp of when the backup job was created. + CreatedAt pulumi.StringOutput `pulumi:"createdAt"` + // Standard five-field cron expression, for example `0 4 * * *`. + CronExpression pulumi.StringOutput `pulumi:"cronExpression"` + // Backup destination (S3-compatible bucket) to upload to. + DestinationId pulumi.StringOutput `pulumi:"destinationId"` + // Whether the backup schedule is active. + Enabled pulumi.BoolOutput `pulumi:"enabled"` + // Number of backups to retain. Older ones are pruned. + KeepLatestCount pulumi.IntOutput `pulumi:"keepLatestCount"` + // libSQL instance that owns the volume. + LibsqlId pulumi.StringPtrOutput `pulumi:"libsqlId"` + // MariaDB instance that owns the volume. + MariadbId pulumi.StringPtrOutput `pulumi:"mariadbId"` + // MongoDB instance that owns the volume. + MongoId pulumi.StringPtrOutput `pulumi:"mongoId"` + // MySQL instance that owns the volume. + MysqlId pulumi.StringPtrOutput `pulumi:"mysqlId"` + // Display name of the backup job. + Name pulumi.StringOutput `pulumi:"name"` + // PostgreSQL instance that owns the volume. + PostgresId pulumi.StringPtrOutput `pulumi:"postgresId"` + // Path prefix inside the destination bucket, for example `backups/shop/`. + Prefix pulumi.StringOutput `pulumi:"prefix"` + // Redis instance that owns the volume. + RedisId pulumi.StringPtrOutput `pulumi:"redisId"` + // Service inside a Compose stack that owns the volume. + ServiceName pulumi.StringPtrOutput `pulumi:"serviceName"` + // The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + ServiceType pulumi.StringOutput `pulumi:"serviceType"` + // Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + TurnOff pulumi.BoolOutput `pulumi:"turnOff"` + // Name of the Docker volume to back up. + VolumeName pulumi.StringOutput `pulumi:"volumeName"` +} + +// NewVolumeBackup registers a new resource with the given unique name, arguments, and options. +func NewVolumeBackup(ctx *pulumi.Context, + name string, args *VolumeBackupArgs, opts ...pulumi.ResourceOption) (*VolumeBackup, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.CronExpression == nil { + return nil, errors.New("invalid value for required argument 'CronExpression'") + } + if args.DestinationId == nil { + return nil, errors.New("invalid value for required argument 'DestinationId'") + } + if args.Prefix == nil { + return nil, errors.New("invalid value for required argument 'Prefix'") + } + if args.VolumeName == nil { + return nil, errors.New("invalid value for required argument 'VolumeName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource VolumeBackup + err := ctx.RegisterResource("dokploy:index/volumeBackup:VolumeBackup", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetVolumeBackup gets an existing VolumeBackup resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetVolumeBackup(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *VolumeBackupState, opts ...pulumi.ResourceOption) (*VolumeBackup, error) { + var resource VolumeBackup + err := ctx.ReadResource("dokploy:index/volumeBackup:VolumeBackup", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering VolumeBackup resources. +type volumeBackupState struct { + // Docker service name that owns the volume. Derived by Dokploy when omitted. + AppName *string `pulumi:"appName"` + // Application that owns the volume. + ApplicationId *string `pulumi:"applicationId"` + // Compose stack that owns the volume. + ComposeId *string `pulumi:"composeId"` + // RFC 3339 timestamp of when the backup job was created. + CreatedAt *string `pulumi:"createdAt"` + // Standard five-field cron expression, for example `0 4 * * *`. + CronExpression *string `pulumi:"cronExpression"` + // Backup destination (S3-compatible bucket) to upload to. + DestinationId *string `pulumi:"destinationId"` + // Whether the backup schedule is active. + Enabled *bool `pulumi:"enabled"` + // Number of backups to retain. Older ones are pruned. + KeepLatestCount *int `pulumi:"keepLatestCount"` + // libSQL instance that owns the volume. + LibsqlId *string `pulumi:"libsqlId"` + // MariaDB instance that owns the volume. + MariadbId *string `pulumi:"mariadbId"` + // MongoDB instance that owns the volume. + MongoId *string `pulumi:"mongoId"` + // MySQL instance that owns the volume. + MysqlId *string `pulumi:"mysqlId"` + // Display name of the backup job. + Name *string `pulumi:"name"` + // PostgreSQL instance that owns the volume. + PostgresId *string `pulumi:"postgresId"` + // Path prefix inside the destination bucket, for example `backups/shop/`. + Prefix *string `pulumi:"prefix"` + // Redis instance that owns the volume. + RedisId *string `pulumi:"redisId"` + // Service inside a Compose stack that owns the volume. + ServiceName *string `pulumi:"serviceName"` + // The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + ServiceType *string `pulumi:"serviceType"` + // Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + TurnOff *bool `pulumi:"turnOff"` + // Name of the Docker volume to back up. + VolumeName *string `pulumi:"volumeName"` +} + +type VolumeBackupState struct { + // Docker service name that owns the volume. Derived by Dokploy when omitted. + AppName pulumi.StringPtrInput + // Application that owns the volume. + ApplicationId pulumi.StringPtrInput + // Compose stack that owns the volume. + ComposeId pulumi.StringPtrInput + // RFC 3339 timestamp of when the backup job was created. + CreatedAt pulumi.StringPtrInput + // Standard five-field cron expression, for example `0 4 * * *`. + CronExpression pulumi.StringPtrInput + // Backup destination (S3-compatible bucket) to upload to. + DestinationId pulumi.StringPtrInput + // Whether the backup schedule is active. + Enabled pulumi.BoolPtrInput + // Number of backups to retain. Older ones are pruned. + KeepLatestCount pulumi.IntPtrInput + // libSQL instance that owns the volume. + LibsqlId pulumi.StringPtrInput + // MariaDB instance that owns the volume. + MariadbId pulumi.StringPtrInput + // MongoDB instance that owns the volume. + MongoId pulumi.StringPtrInput + // MySQL instance that owns the volume. + MysqlId pulumi.StringPtrInput + // Display name of the backup job. + Name pulumi.StringPtrInput + // PostgreSQL instance that owns the volume. + PostgresId pulumi.StringPtrInput + // Path prefix inside the destination bucket, for example `backups/shop/`. + Prefix pulumi.StringPtrInput + // Redis instance that owns the volume. + RedisId pulumi.StringPtrInput + // Service inside a Compose stack that owns the volume. + ServiceName pulumi.StringPtrInput + // The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + ServiceType pulumi.StringPtrInput + // Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + TurnOff pulumi.BoolPtrInput + // Name of the Docker volume to back up. + VolumeName pulumi.StringPtrInput +} + +func (VolumeBackupState) ElementType() reflect.Type { + return reflect.TypeOf((*volumeBackupState)(nil)).Elem() +} + +type volumeBackupArgs struct { + // Docker service name that owns the volume. Derived by Dokploy when omitted. + AppName *string `pulumi:"appName"` + // Application that owns the volume. + ApplicationId *string `pulumi:"applicationId"` + // Compose stack that owns the volume. + ComposeId *string `pulumi:"composeId"` + // Standard five-field cron expression, for example `0 4 * * *`. + CronExpression string `pulumi:"cronExpression"` + // Backup destination (S3-compatible bucket) to upload to. + DestinationId string `pulumi:"destinationId"` + // Whether the backup schedule is active. + Enabled *bool `pulumi:"enabled"` + // Number of backups to retain. Older ones are pruned. + KeepLatestCount *int `pulumi:"keepLatestCount"` + // libSQL instance that owns the volume. + LibsqlId *string `pulumi:"libsqlId"` + // MariaDB instance that owns the volume. + MariadbId *string `pulumi:"mariadbId"` + // MongoDB instance that owns the volume. + MongoId *string `pulumi:"mongoId"` + // MySQL instance that owns the volume. + MysqlId *string `pulumi:"mysqlId"` + // Display name of the backup job. + Name *string `pulumi:"name"` + // PostgreSQL instance that owns the volume. + PostgresId *string `pulumi:"postgresId"` + // Path prefix inside the destination bucket, for example `backups/shop/`. + Prefix string `pulumi:"prefix"` + // Redis instance that owns the volume. + RedisId *string `pulumi:"redisId"` + // Service inside a Compose stack that owns the volume. + ServiceName *string `pulumi:"serviceName"` + // The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + ServiceType *string `pulumi:"serviceType"` + // Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + TurnOff *bool `pulumi:"turnOff"` + // Name of the Docker volume to back up. + VolumeName string `pulumi:"volumeName"` +} + +// The set of arguments for constructing a VolumeBackup resource. +type VolumeBackupArgs struct { + // Docker service name that owns the volume. Derived by Dokploy when omitted. + AppName pulumi.StringPtrInput + // Application that owns the volume. + ApplicationId pulumi.StringPtrInput + // Compose stack that owns the volume. + ComposeId pulumi.StringPtrInput + // Standard five-field cron expression, for example `0 4 * * *`. + CronExpression pulumi.StringInput + // Backup destination (S3-compatible bucket) to upload to. + DestinationId pulumi.StringInput + // Whether the backup schedule is active. + Enabled pulumi.BoolPtrInput + // Number of backups to retain. Older ones are pruned. + KeepLatestCount pulumi.IntPtrInput + // libSQL instance that owns the volume. + LibsqlId pulumi.StringPtrInput + // MariaDB instance that owns the volume. + MariadbId pulumi.StringPtrInput + // MongoDB instance that owns the volume. + MongoId pulumi.StringPtrInput + // MySQL instance that owns the volume. + MysqlId pulumi.StringPtrInput + // Display name of the backup job. + Name pulumi.StringPtrInput + // PostgreSQL instance that owns the volume. + PostgresId pulumi.StringPtrInput + // Path prefix inside the destination bucket, for example `backups/shop/`. + Prefix pulumi.StringInput + // Redis instance that owns the volume. + RedisId pulumi.StringPtrInput + // Service inside a Compose stack that owns the volume. + ServiceName pulumi.StringPtrInput + // The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + ServiceType pulumi.StringPtrInput + // Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + TurnOff pulumi.BoolPtrInput + // Name of the Docker volume to back up. + VolumeName pulumi.StringInput +} + +func (VolumeBackupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*volumeBackupArgs)(nil)).Elem() +} + +type VolumeBackupInput interface { + pulumi.Input + + ToVolumeBackupOutput() VolumeBackupOutput + ToVolumeBackupOutputWithContext(ctx context.Context) VolumeBackupOutput +} + +func (*VolumeBackup) ElementType() reflect.Type { + return reflect.TypeOf((**VolumeBackup)(nil)).Elem() +} + +func (i *VolumeBackup) ToVolumeBackupOutput() VolumeBackupOutput { + return i.ToVolumeBackupOutputWithContext(context.Background()) +} + +func (i *VolumeBackup) ToVolumeBackupOutputWithContext(ctx context.Context) VolumeBackupOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeBackupOutput) +} + +// VolumeBackupArrayInput is an input type that accepts VolumeBackupArray and VolumeBackupArrayOutput values. +// You can construct a concrete instance of `VolumeBackupArrayInput` via: +// +// VolumeBackupArray{ VolumeBackupArgs{...} } +type VolumeBackupArrayInput interface { + pulumi.Input + + ToVolumeBackupArrayOutput() VolumeBackupArrayOutput + ToVolumeBackupArrayOutputWithContext(context.Context) VolumeBackupArrayOutput +} + +type VolumeBackupArray []VolumeBackupInput + +func (VolumeBackupArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VolumeBackup)(nil)).Elem() +} + +func (i VolumeBackupArray) ToVolumeBackupArrayOutput() VolumeBackupArrayOutput { + return i.ToVolumeBackupArrayOutputWithContext(context.Background()) +} + +func (i VolumeBackupArray) ToVolumeBackupArrayOutputWithContext(ctx context.Context) VolumeBackupArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeBackupArrayOutput) +} + +// VolumeBackupMapInput is an input type that accepts VolumeBackupMap and VolumeBackupMapOutput values. +// You can construct a concrete instance of `VolumeBackupMapInput` via: +// +// VolumeBackupMap{ "key": VolumeBackupArgs{...} } +type VolumeBackupMapInput interface { + pulumi.Input + + ToVolumeBackupMapOutput() VolumeBackupMapOutput + ToVolumeBackupMapOutputWithContext(context.Context) VolumeBackupMapOutput +} + +type VolumeBackupMap map[string]VolumeBackupInput + +func (VolumeBackupMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VolumeBackup)(nil)).Elem() +} + +func (i VolumeBackupMap) ToVolumeBackupMapOutput() VolumeBackupMapOutput { + return i.ToVolumeBackupMapOutputWithContext(context.Background()) +} + +func (i VolumeBackupMap) ToVolumeBackupMapOutputWithContext(ctx context.Context) VolumeBackupMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeBackupMapOutput) +} + +type VolumeBackupOutput struct{ *pulumi.OutputState } + +func (VolumeBackupOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VolumeBackup)(nil)).Elem() +} + +func (o VolumeBackupOutput) ToVolumeBackupOutput() VolumeBackupOutput { + return o +} + +func (o VolumeBackupOutput) ToVolumeBackupOutputWithContext(ctx context.Context) VolumeBackupOutput { + return o +} + +// Docker service name that owns the volume. Derived by Dokploy when omitted. +func (o VolumeBackupOutput) AppName() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput) +} + +// Application that owns the volume. +func (o VolumeBackupOutput) ApplicationId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.ApplicationId }).(pulumi.StringPtrOutput) +} + +// Compose stack that owns the volume. +func (o VolumeBackupOutput) ComposeId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.ComposeId }).(pulumi.StringPtrOutput) +} + +// RFC 3339 timestamp of when the backup job was created. +func (o VolumeBackupOutput) CreatedAt() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput) +} + +// Standard five-field cron expression, for example `0 4 * * *`. +func (o VolumeBackupOutput) CronExpression() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.CronExpression }).(pulumi.StringOutput) +} + +// Backup destination (S3-compatible bucket) to upload to. +func (o VolumeBackupOutput) DestinationId() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.DestinationId }).(pulumi.StringOutput) +} + +// Whether the backup schedule is active. +func (o VolumeBackupOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput) +} + +// Number of backups to retain. Older ones are pruned. +func (o VolumeBackupOutput) KeepLatestCount() pulumi.IntOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.IntOutput { return v.KeepLatestCount }).(pulumi.IntOutput) +} + +// libSQL instance that owns the volume. +func (o VolumeBackupOutput) LibsqlId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.LibsqlId }).(pulumi.StringPtrOutput) +} + +// MariaDB instance that owns the volume. +func (o VolumeBackupOutput) MariadbId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.MariadbId }).(pulumi.StringPtrOutput) +} + +// MongoDB instance that owns the volume. +func (o VolumeBackupOutput) MongoId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.MongoId }).(pulumi.StringPtrOutput) +} + +// MySQL instance that owns the volume. +func (o VolumeBackupOutput) MysqlId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.MysqlId }).(pulumi.StringPtrOutput) +} + +// Display name of the backup job. +func (o VolumeBackupOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// PostgreSQL instance that owns the volume. +func (o VolumeBackupOutput) PostgresId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.PostgresId }).(pulumi.StringPtrOutput) +} + +// Path prefix inside the destination bucket, for example `backups/shop/`. +func (o VolumeBackupOutput) Prefix() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.Prefix }).(pulumi.StringOutput) +} + +// Redis instance that owns the volume. +func (o VolumeBackupOutput) RedisId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.RedisId }).(pulumi.StringPtrOutput) +} + +// Service inside a Compose stack that owns the volume. +func (o VolumeBackupOutput) ServiceName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringPtrOutput { return v.ServiceName }).(pulumi.StringPtrOutput) +} + +// The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. +func (o VolumeBackupOutput) ServiceType() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.ServiceType }).(pulumi.StringOutput) +} + +// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. +func (o VolumeBackupOutput) TurnOff() pulumi.BoolOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.BoolOutput { return v.TurnOff }).(pulumi.BoolOutput) +} + +// Name of the Docker volume to back up. +func (o VolumeBackupOutput) VolumeName() pulumi.StringOutput { + return o.ApplyT(func(v *VolumeBackup) pulumi.StringOutput { return v.VolumeName }).(pulumi.StringOutput) +} + +type VolumeBackupArrayOutput struct{ *pulumi.OutputState } + +func (VolumeBackupArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VolumeBackup)(nil)).Elem() +} + +func (o VolumeBackupArrayOutput) ToVolumeBackupArrayOutput() VolumeBackupArrayOutput { + return o +} + +func (o VolumeBackupArrayOutput) ToVolumeBackupArrayOutputWithContext(ctx context.Context) VolumeBackupArrayOutput { + return o +} + +func (o VolumeBackupArrayOutput) Index(i pulumi.IntInput) VolumeBackupOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VolumeBackup { + return vs[0].([]*VolumeBackup)[vs[1].(int)] + }).(VolumeBackupOutput) +} + +type VolumeBackupMapOutput struct{ *pulumi.OutputState } + +func (VolumeBackupMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VolumeBackup)(nil)).Elem() +} + +func (o VolumeBackupMapOutput) ToVolumeBackupMapOutput() VolumeBackupMapOutput { + return o +} + +func (o VolumeBackupMapOutput) ToVolumeBackupMapOutputWithContext(ctx context.Context) VolumeBackupMapOutput { + return o +} + +func (o VolumeBackupMapOutput) MapIndex(k pulumi.StringInput) VolumeBackupOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VolumeBackup { + return vs[0].(map[string]*VolumeBackup)[vs[1].(string)] + }).(VolumeBackupOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*VolumeBackupInput)(nil)).Elem(), &VolumeBackup{}) + pulumi.RegisterInputType(reflect.TypeOf((*VolumeBackupArrayInput)(nil)).Elem(), VolumeBackupArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VolumeBackupMapInput)(nil)).Elem(), VolumeBackupMap{}) + pulumi.RegisterOutputType(VolumeBackupOutput{}) + pulumi.RegisterOutputType(VolumeBackupArrayOutput{}) + pulumi.RegisterOutputType(VolumeBackupMapOutput{}) +} diff --git a/sdk/nodejs/application.ts b/sdk/nodejs/application.ts index a47ce01..913880d 100644 --- a/sdk/nodejs/application.ts +++ b/sdk/nodejs/application.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact. + * + * Dokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`. + * + * > Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a `terraformData` provisioner calling `application.deploy`. + */ export class Application extends pulumi.CustomResource { /** * Get an existing Application resource's state with the given name, ID, and optional extra @@ -244,6 +251,10 @@ export class Application extends pulumi.CustomResource { * Heroku buildpack stack version. */ declare public readonly herokuVersion: pulumi.Output; + /** + * Icon shown next to the service in the Dokploy UI. + */ + declare public readonly icon: pulumi.Output; /** * Build a preview deployment for each pull request. */ @@ -332,6 +343,10 @@ export class Application extends pulumi.CustomResource { * Container port exposed by preview deployments. */ declare public readonly previewPort: pulumi.Output; + /** + * Only build previews for pull requests opened by users with repository collaborator permissions. + */ + declare public readonly previewRequireCollaboratorPermissions: pulumi.Output; /** * Wildcard domain used to expose preview deployments. */ @@ -483,6 +498,7 @@ export class Application extends pulumi.CustomResource { resourceInputs["gitlabRepository"] = state?.gitlabRepository; resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm; resourceInputs["herokuVersion"] = state?.herokuVersion; + resourceInputs["icon"] = state?.icon; resourceInputs["isPreviewDeploymentsActive"] = state?.isPreviewDeploymentsActive; resourceInputs["isStaticSpa"] = state?.isStaticSpa; resourceInputs["labelsSwarm"] = state?.labelsSwarm; @@ -505,6 +521,7 @@ export class Application extends pulumi.CustomResource { resourceInputs["previewLimit"] = state?.previewLimit; resourceInputs["previewPath"] = state?.previewPath; resourceInputs["previewPort"] = state?.previewPort; + resourceInputs["previewRequireCollaboratorPermissions"] = state?.previewRequireCollaboratorPermissions; resourceInputs["previewWildcard"] = state?.previewWildcard; resourceInputs["publishDirectory"] = state?.publishDirectory; resourceInputs["railpackVersion"] = state?.railpackVersion; @@ -582,6 +599,7 @@ export class Application extends pulumi.CustomResource { resourceInputs["gitlabRepository"] = args?.gitlabRepository; resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm; resourceInputs["herokuVersion"] = args?.herokuVersion; + resourceInputs["icon"] = args?.icon; resourceInputs["isPreviewDeploymentsActive"] = args?.isPreviewDeploymentsActive; resourceInputs["isStaticSpa"] = args?.isStaticSpa; resourceInputs["labelsSwarm"] = args?.labelsSwarm; @@ -604,6 +622,7 @@ export class Application extends pulumi.CustomResource { resourceInputs["previewLimit"] = args?.previewLimit; resourceInputs["previewPath"] = args?.previewPath; resourceInputs["previewPort"] = args?.previewPort; + resourceInputs["previewRequireCollaboratorPermissions"] = args?.previewRequireCollaboratorPermissions; resourceInputs["previewWildcard"] = args?.previewWildcard; resourceInputs["publishDirectory"] = args?.publishDirectory; resourceInputs["railpackVersion"] = args?.railpackVersion; @@ -642,387 +661,395 @@ export interface ApplicationState { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - applicationStatus?: pulumi.Input; + applicationStatus?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Deploy automatically when the configured trigger fires. */ - autoDeploy?: pulumi.Input; + autoDeploy?: pulumi.Input; /** * Bitbucket branch to build. */ - bitbucketBranch?: pulumi.Input; + bitbucketBranch?: pulumi.Input; /** * Path within the Bitbucket repository to build from. */ - bitbucketBuildPath?: pulumi.Input; + bitbucketBuildPath?: pulumi.Input; /** * ID of the configured Bitbucket provider connection. */ - bitbucketId?: pulumi.Input; + bitbucketId?: pulumi.Input; /** * Bitbucket repository owner. */ - bitbucketOwner?: pulumi.Input; + bitbucketOwner?: pulumi.Input; /** * Bitbucket repository name. */ - bitbucketRepository?: pulumi.Input; + bitbucketRepository?: pulumi.Input; /** * Bitbucket repository slug. */ - bitbucketRepositorySlug?: pulumi.Input; + bitbucketRepositorySlug?: pulumi.Input; /** * GitHub branch to build. */ - branch?: pulumi.Input; + branch?: pulumi.Input; /** * Docker build arguments in `KEY=value` format, one per line. */ - buildArgs?: pulumi.Input; + buildArgs?: pulumi.Input; /** * Path within the GitHub repository to build from. */ - buildPath?: pulumi.Input; + buildPath?: pulumi.Input; /** * Registry used by a dedicated build server. */ - buildRegistryId?: pulumi.Input; + buildRegistryId?: pulumi.Input; /** * Docker build secrets in `KEY=value` format, one per line. */ - buildSecrets?: pulumi.Input; + buildSecrets?: pulumi.Input; /** * Server that performs builds, when separate from the deploy server. */ - buildServerId?: pulumi.Input; + buildServerId?: pulumi.Input; /** * How the application is built. Valid values: `dockerfile`, `herokuBuildpacks`, `paketoBuildpacks`, `nixpacks`, `static`, `railpack`. */ - buildType?: pulumi.Input; + buildType?: pulumi.Input; /** * Discard the build cache on the next deployment. */ - cleanCache?: pulumi.Input; + cleanCache?: pulumi.Input; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Write the environment variables to a `.env` file in the container. */ - createEnvFile?: pulumi.Input; + createEnvFile?: pulumi.Input; /** * RFC 3339 timestamp of when the application was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Branch to build for a custom Git remote. */ - customGitBranch?: pulumi.Input; + customGitBranch?: pulumi.Input; /** * Path within a custom Git repository to build from. */ - customGitBuildPath?: pulumi.Input; + customGitBuildPath?: pulumi.Input; /** * SSH key used to clone a private custom Git remote. */ - customGitSshKeyId?: pulumi.Input; + customGitSshKeyId?: pulumi.Input; /** * Git remote URL, when `sourceType` is `git`. */ - customGitUrl?: pulumi.Input; + customGitUrl?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * Target stage for a multi-stage Docker build. */ - dockerBuildStage?: pulumi.Input; + dockerBuildStage?: pulumi.Input; /** * Docker build context path. */ - dockerContextPath?: pulumi.Input; + dockerContextPath?: pulumi.Input; /** * Docker image reference, when `sourceType` is `docker`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Path to the Dockerfile, when `buildType` is `dockerfile`. */ - dockerfile?: pulumi.Input; + dockerfile?: pulumi.Input; /** * Clone Git submodules when checking out the repository. */ - enableSubmodules?: pulumi.Input; + enableSubmodules?: pulumi.Input; /** * Whether the application is enabled. */ - enabled?: pulumi.Input; + enabled?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Runtime environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this application belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Gitea branch to build. */ - giteaBranch?: pulumi.Input; + giteaBranch?: pulumi.Input; /** * Path within the Gitea repository to build from. */ - giteaBuildPath?: pulumi.Input; + giteaBuildPath?: pulumi.Input; /** * ID of the configured Gitea provider connection. */ - giteaId?: pulumi.Input; + giteaId?: pulumi.Input; /** * Gitea repository owner. */ - giteaOwner?: pulumi.Input; + giteaOwner?: pulumi.Input; /** * Gitea repository name. */ - giteaRepository?: pulumi.Input; + giteaRepository?: pulumi.Input; /** * ID of the configured GitHub provider connection. */ - githubId?: pulumi.Input; + githubId?: pulumi.Input; /** * GitLab branch to build. */ - gitlabBranch?: pulumi.Input; + gitlabBranch?: pulumi.Input; /** * Path within the GitLab repository to build from. */ - gitlabBuildPath?: pulumi.Input; + gitlabBuildPath?: pulumi.Input; /** * ID of the configured GitLab provider connection. */ - gitlabId?: pulumi.Input; + gitlabId?: pulumi.Input; /** * GitLab repository owner. */ - gitlabOwner?: pulumi.Input; + gitlabOwner?: pulumi.Input; /** * Full GitLab namespace path. */ - gitlabPathNamespace?: pulumi.Input; + gitlabPathNamespace?: pulumi.Input; /** * Numeric GitLab project ID. */ - gitlabProjectId?: pulumi.Input; + gitlabProjectId?: pulumi.Input; /** * GitLab repository name. */ - gitlabRepository?: pulumi.Input; + gitlabRepository?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Heroku buildpack stack version. */ - herokuVersion?: pulumi.Input; + herokuVersion?: pulumi.Input; + /** + * Icon shown next to the service in the Dokploy UI. + */ + icon?: pulumi.Input; /** * Build a preview deployment for each pull request. */ - isPreviewDeploymentsActive?: pulumi.Input; + isPreviewDeploymentsActive?: pulumi.Input; /** * Serve a static build as a single-page application. */ - isStaticSpa?: pulumi.Input; + isStaticSpa?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the application. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * GitHub repository owner. */ - owner?: pulumi.Input; + owner?: pulumi.Input; /** * Registry password, when pulling a private image. */ - password?: pulumi.Input; + password?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Build arguments applied to preview deployments. */ - previewBuildArgs?: pulumi.Input; + previewBuildArgs?: pulumi.Input; /** * Build secrets applied to preview deployments. */ - previewBuildSecrets?: pulumi.Input; + previewBuildSecrets?: pulumi.Input; /** * Certificate strategy for preview deployments. Valid values: `letsencrypt`, `none`, `custom`. */ - previewCertificateType?: pulumi.Input; + previewCertificateType?: pulumi.Input; /** * Traefik certificate resolver for preview deployments. */ - previewCustomCertResolver?: pulumi.Input; + previewCustomCertResolver?: pulumi.Input; /** * Environment variables applied to preview deployments. */ - previewEnv?: pulumi.Input; + previewEnv?: pulumi.Input; /** * Serve preview deployments over HTTPS. */ - previewHttps?: pulumi.Input; + previewHttps?: pulumi.Input; /** * Pull request labels that opt into preview deployments. */ - previewLabels?: pulumi.Input[]>; + previewLabels?: pulumi.Input[] | undefined>; /** * Maximum number of concurrent preview deployments. */ - previewLimit?: pulumi.Input; + previewLimit?: pulumi.Input; /** * Base path for preview deployments. */ - previewPath?: pulumi.Input; + previewPath?: pulumi.Input; /** * Container port exposed by preview deployments. */ - previewPort?: pulumi.Input; + previewPort?: pulumi.Input; + /** + * Only build previews for pull requests opened by users with repository collaborator permissions. + */ + previewRequireCollaboratorPermissions?: pulumi.Input; /** * Wildcard domain used to expose preview deployments. */ - previewWildcard?: pulumi.Input; + previewWildcard?: pulumi.Input; /** * Directory served when `buildType` is `static`. */ - publishDirectory?: pulumi.Input; + publishDirectory?: pulumi.Input; /** * Railpack version. */ - railpackVersion?: pulumi.Input; + railpackVersion?: pulumi.Input; /** * Registry used to push the built image. */ - registryId?: pulumi.Input; + registryId?: pulumi.Input; /** * Registry URL, when pulling a private image. */ - registryUrl?: pulumi.Input; + registryUrl?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * GitHub repository name. */ - repository?: pulumi.Input; + repository?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Keep previous images so deployments can be rolled back. */ - rollbackActive?: pulumi.Input; + rollbackActive?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Registry used to store rollback images. */ - rollbackRegistryId?: pulumi.Input; + rollbackRegistryId?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Where the application's code or image comes from. Valid values: `docker`, `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `drop`. */ - sourceType?: pulumi.Input; + sourceType?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Display subtitle shown in the Dokploy UI. */ - subtitle?: pulumi.Input; + subtitle?: pulumi.Input; /** * Display title shown in the Dokploy UI. */ - title?: pulumi.Input; + title?: pulumi.Input; /** * What triggers an automatic GitHub deployment. Valid values: `push`, `tag`. */ - triggerType?: pulumi.Input; + triggerType?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; /** * Registry username, when pulling a private image. */ - username?: pulumi.Input; + username?: pulumi.Input; /** * Glob patterns that limit which changed paths trigger an automatic deployment. */ - watchPaths?: pulumi.Input[]>; + watchPaths?: pulumi.Input[] | undefined>; } /** @@ -1032,143 +1059,143 @@ export interface ApplicationArgs { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Deploy automatically when the configured trigger fires. */ - autoDeploy?: pulumi.Input; + autoDeploy?: pulumi.Input; /** * Bitbucket branch to build. */ - bitbucketBranch?: pulumi.Input; + bitbucketBranch?: pulumi.Input; /** * Path within the Bitbucket repository to build from. */ - bitbucketBuildPath?: pulumi.Input; + bitbucketBuildPath?: pulumi.Input; /** * ID of the configured Bitbucket provider connection. */ - bitbucketId?: pulumi.Input; + bitbucketId?: pulumi.Input; /** * Bitbucket repository owner. */ - bitbucketOwner?: pulumi.Input; + bitbucketOwner?: pulumi.Input; /** * Bitbucket repository name. */ - bitbucketRepository?: pulumi.Input; + bitbucketRepository?: pulumi.Input; /** * Bitbucket repository slug. */ - bitbucketRepositorySlug?: pulumi.Input; + bitbucketRepositorySlug?: pulumi.Input; /** * GitHub branch to build. */ - branch?: pulumi.Input; + branch?: pulumi.Input; /** * Docker build arguments in `KEY=value` format, one per line. */ - buildArgs?: pulumi.Input; + buildArgs?: pulumi.Input; /** * Path within the GitHub repository to build from. */ - buildPath?: pulumi.Input; + buildPath?: pulumi.Input; /** * Registry used by a dedicated build server. */ - buildRegistryId?: pulumi.Input; + buildRegistryId?: pulumi.Input; /** * Docker build secrets in `KEY=value` format, one per line. */ - buildSecrets?: pulumi.Input; + buildSecrets?: pulumi.Input; /** * Server that performs builds, when separate from the deploy server. */ - buildServerId?: pulumi.Input; + buildServerId?: pulumi.Input; /** * How the application is built. Valid values: `dockerfile`, `herokuBuildpacks`, `paketoBuildpacks`, `nixpacks`, `static`, `railpack`. */ - buildType?: pulumi.Input; + buildType?: pulumi.Input; /** * Discard the build cache on the next deployment. */ - cleanCache?: pulumi.Input; + cleanCache?: pulumi.Input; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Write the environment variables to a `.env` file in the container. */ - createEnvFile?: pulumi.Input; + createEnvFile?: pulumi.Input; /** * Branch to build for a custom Git remote. */ - customGitBranch?: pulumi.Input; + customGitBranch?: pulumi.Input; /** * Path within a custom Git repository to build from. */ - customGitBuildPath?: pulumi.Input; + customGitBuildPath?: pulumi.Input; /** * SSH key used to clone a private custom Git remote. */ - customGitSshKeyId?: pulumi.Input; + customGitSshKeyId?: pulumi.Input; /** * Git remote URL, when `sourceType` is `git`. */ - customGitUrl?: pulumi.Input; + customGitUrl?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * Target stage for a multi-stage Docker build. */ - dockerBuildStage?: pulumi.Input; + dockerBuildStage?: pulumi.Input; /** * Docker build context path. */ - dockerContextPath?: pulumi.Input; + dockerContextPath?: pulumi.Input; /** * Docker image reference, when `sourceType` is `docker`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Path to the Dockerfile, when `buildType` is `dockerfile`. */ - dockerfile?: pulumi.Input; + dockerfile?: pulumi.Input; /** * Clone Git submodules when checking out the repository. */ - enableSubmodules?: pulumi.Input; + enableSubmodules?: pulumi.Input; /** * Whether the application is enabled. */ - enabled?: pulumi.Input; + enabled?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Runtime environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this application belongs to. */ @@ -1176,233 +1203,241 @@ export interface ApplicationArgs { /** * Gitea branch to build. */ - giteaBranch?: pulumi.Input; + giteaBranch?: pulumi.Input; /** * Path within the Gitea repository to build from. */ - giteaBuildPath?: pulumi.Input; + giteaBuildPath?: pulumi.Input; /** * ID of the configured Gitea provider connection. */ - giteaId?: pulumi.Input; + giteaId?: pulumi.Input; /** * Gitea repository owner. */ - giteaOwner?: pulumi.Input; + giteaOwner?: pulumi.Input; /** * Gitea repository name. */ - giteaRepository?: pulumi.Input; + giteaRepository?: pulumi.Input; /** * ID of the configured GitHub provider connection. */ - githubId?: pulumi.Input; + githubId?: pulumi.Input; /** * GitLab branch to build. */ - gitlabBranch?: pulumi.Input; + gitlabBranch?: pulumi.Input; /** * Path within the GitLab repository to build from. */ - gitlabBuildPath?: pulumi.Input; + gitlabBuildPath?: pulumi.Input; /** * ID of the configured GitLab provider connection. */ - gitlabId?: pulumi.Input; + gitlabId?: pulumi.Input; /** * GitLab repository owner. */ - gitlabOwner?: pulumi.Input; + gitlabOwner?: pulumi.Input; /** * Full GitLab namespace path. */ - gitlabPathNamespace?: pulumi.Input; + gitlabPathNamespace?: pulumi.Input; /** * Numeric GitLab project ID. */ - gitlabProjectId?: pulumi.Input; + gitlabProjectId?: pulumi.Input; /** * GitLab repository name. */ - gitlabRepository?: pulumi.Input; + gitlabRepository?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Heroku buildpack stack version. */ - herokuVersion?: pulumi.Input; + herokuVersion?: pulumi.Input; + /** + * Icon shown next to the service in the Dokploy UI. + */ + icon?: pulumi.Input; /** * Build a preview deployment for each pull request. */ - isPreviewDeploymentsActive?: pulumi.Input; + isPreviewDeploymentsActive?: pulumi.Input; /** * Serve a static build as a single-page application. */ - isStaticSpa?: pulumi.Input; + isStaticSpa?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the application. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * GitHub repository owner. */ - owner?: pulumi.Input; + owner?: pulumi.Input; /** * Registry password, when pulling a private image. */ - password?: pulumi.Input; + password?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Build arguments applied to preview deployments. */ - previewBuildArgs?: pulumi.Input; + previewBuildArgs?: pulumi.Input; /** * Build secrets applied to preview deployments. */ - previewBuildSecrets?: pulumi.Input; + previewBuildSecrets?: pulumi.Input; /** * Certificate strategy for preview deployments. Valid values: `letsencrypt`, `none`, `custom`. */ - previewCertificateType?: pulumi.Input; + previewCertificateType?: pulumi.Input; /** * Traefik certificate resolver for preview deployments. */ - previewCustomCertResolver?: pulumi.Input; + previewCustomCertResolver?: pulumi.Input; /** * Environment variables applied to preview deployments. */ - previewEnv?: pulumi.Input; + previewEnv?: pulumi.Input; /** * Serve preview deployments over HTTPS. */ - previewHttps?: pulumi.Input; + previewHttps?: pulumi.Input; /** * Pull request labels that opt into preview deployments. */ - previewLabels?: pulumi.Input[]>; + previewLabels?: pulumi.Input[] | undefined>; /** * Maximum number of concurrent preview deployments. */ - previewLimit?: pulumi.Input; + previewLimit?: pulumi.Input; /** * Base path for preview deployments. */ - previewPath?: pulumi.Input; + previewPath?: pulumi.Input; /** * Container port exposed by preview deployments. */ - previewPort?: pulumi.Input; + previewPort?: pulumi.Input; + /** + * Only build previews for pull requests opened by users with repository collaborator permissions. + */ + previewRequireCollaboratorPermissions?: pulumi.Input; /** * Wildcard domain used to expose preview deployments. */ - previewWildcard?: pulumi.Input; + previewWildcard?: pulumi.Input; /** * Directory served when `buildType` is `static`. */ - publishDirectory?: pulumi.Input; + publishDirectory?: pulumi.Input; /** * Railpack version. */ - railpackVersion?: pulumi.Input; + railpackVersion?: pulumi.Input; /** * Registry used to push the built image. */ - registryId?: pulumi.Input; + registryId?: pulumi.Input; /** * Registry URL, when pulling a private image. */ - registryUrl?: pulumi.Input; + registryUrl?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * GitHub repository name. */ - repository?: pulumi.Input; + repository?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Keep previous images so deployments can be rolled back. */ - rollbackActive?: pulumi.Input; + rollbackActive?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Registry used to store rollback images. */ - rollbackRegistryId?: pulumi.Input; + rollbackRegistryId?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Where the application's code or image comes from. Valid values: `docker`, `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `drop`. */ - sourceType?: pulumi.Input; + sourceType?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Display subtitle shown in the Dokploy UI. */ - subtitle?: pulumi.Input; + subtitle?: pulumi.Input; /** * Display title shown in the Dokploy UI. */ - title?: pulumi.Input; + title?: pulumi.Input; /** * What triggers an automatic GitHub deployment. Valid values: `push`, `tag`. */ - triggerType?: pulumi.Input; + triggerType?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; /** * Registry username, when pulling a private image. */ - username?: pulumi.Input; + username?: pulumi.Input; /** * Glob patterns that limit which changed paths trigger an automatic deployment. */ - watchPaths?: pulumi.Input[]>; + watchPaths?: pulumi.Input[] | undefined>; } diff --git a/sdk/nodejs/certificate.ts b/sdk/nodejs/certificate.ts index 088b012..ba86562 100644 --- a/sdk/nodejs/certificate.ts +++ b/sdk/nodejs/certificate.ts @@ -4,6 +4,11 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A TLS certificate uploaded to Dokploy, for domains that use `certificateType = "custom"`. + * + * > The private key is stored in Terraform state. Use a state backend with encryption at rest. + */ export class Certificate extends pulumi.CustomResource { /** * Get an existing Certificate resource's state with the given name, ID, and optional extra @@ -105,27 +110,27 @@ export interface CertificateState { /** * Whether Dokploy should renew this certificate automatically. */ - autoRenew?: pulumi.Input; + autoRenew?: pulumi.Input; /** * PEM-encoded certificate chain. */ - certificateData?: pulumi.Input; + certificateData?: pulumi.Input; /** * Path where Dokploy writes the certificate on disk. */ - certificatePath?: pulumi.Input; + certificatePath?: pulumi.Input; /** * Display name of the certificate. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * PEM-encoded private key. */ - privateKey?: pulumi.Input; + privateKey?: pulumi.Input; /** * Server this certificate is installed on. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; } /** @@ -135,7 +140,7 @@ export interface CertificateArgs { /** * Whether Dokploy should renew this certificate automatically. */ - autoRenew?: pulumi.Input; + autoRenew?: pulumi.Input; /** * PEM-encoded certificate chain. */ @@ -143,7 +148,7 @@ export interface CertificateArgs { /** * Display name of the certificate. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * PEM-encoded private key. */ @@ -151,5 +156,5 @@ export interface CertificateArgs { /** * Server this certificate is installed on. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; } diff --git a/sdk/nodejs/compose.ts b/sdk/nodejs/compose.ts index 1a9000c..1d6d260 100644 --- a/sdk/nodejs/compose.ts +++ b/sdk/nodejs/compose.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A Docker Compose or Docker Swarm stack managed by Dokploy. + * + * Set `composeFile` to manage the stack definition inline (with `sourceType = "raw"`), or point the stack at a Git repository and set `composePath`. + * + * > Creating this resource does **not** deploy the stack. + */ export class Compose extends pulumi.CustomResource { /** * Get an existing Compose resource's state with the given name, ID, and optional extra @@ -84,6 +91,10 @@ export class Compose extends pulumi.CustomResource { * Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. */ declare public readonly composeType: pulumi.Output; + /** + * Write the environment variables to a `.env` file next to the Compose file. + */ + declare public readonly createEnvFile: pulumi.Output; /** * RFC 3339 timestamp of when the stack was created. */ @@ -164,6 +175,10 @@ export class Compose extends pulumi.CustomResource { * GitLab repository name. */ declare public readonly gitlabRepository: pulumi.Output; + /** + * Icon shown next to the stack in the Dokploy UI. + */ + declare public readonly icon: pulumi.Output; /** * Run the stack on its own isolated Docker network. */ @@ -192,6 +207,10 @@ export class Compose extends pulumi.CustomResource { * Remote server to deploy on. Omit to use the Dokploy host itself. */ declare public readonly serverId: pulumi.Output; + /** + * Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + */ + declare public readonly serviceNetworks: pulumi.Output; /** * Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. */ @@ -235,6 +254,7 @@ export class Compose extends pulumi.CustomResource { resourceInputs["composePath"] = state?.composePath; resourceInputs["composeStatus"] = state?.composeStatus; resourceInputs["composeType"] = state?.composeType; + resourceInputs["createEnvFile"] = state?.createEnvFile; resourceInputs["createdAt"] = state?.createdAt; resourceInputs["customGitBranch"] = state?.customGitBranch; resourceInputs["customGitSshKeyId"] = state?.customGitSshKeyId; @@ -255,6 +275,7 @@ export class Compose extends pulumi.CustomResource { resourceInputs["gitlabPathNamespace"] = state?.gitlabPathNamespace; resourceInputs["gitlabProjectId"] = state?.gitlabProjectId; resourceInputs["gitlabRepository"] = state?.gitlabRepository; + resourceInputs["icon"] = state?.icon; resourceInputs["isolatedDeployment"] = state?.isolatedDeployment; resourceInputs["isolatedDeploymentsVolume"] = state?.isolatedDeploymentsVolume; resourceInputs["name"] = state?.name; @@ -262,6 +283,7 @@ export class Compose extends pulumi.CustomResource { resourceInputs["randomize"] = state?.randomize; resourceInputs["repository"] = state?.repository; resourceInputs["serverId"] = state?.serverId; + resourceInputs["serviceNetworks"] = state?.serviceNetworks; resourceInputs["sourceType"] = state?.sourceType; resourceInputs["suffix"] = state?.suffix; resourceInputs["triggerType"] = state?.triggerType; @@ -283,6 +305,7 @@ export class Compose extends pulumi.CustomResource { resourceInputs["composeFile"] = args?.composeFile; resourceInputs["composePath"] = args?.composePath; resourceInputs["composeType"] = args?.composeType; + resourceInputs["createEnvFile"] = args?.createEnvFile; resourceInputs["customGitBranch"] = args?.customGitBranch; resourceInputs["customGitSshKeyId"] = args?.customGitSshKeyId; resourceInputs["customGitUrl"] = args?.customGitUrl; @@ -302,6 +325,7 @@ export class Compose extends pulumi.CustomResource { resourceInputs["gitlabPathNamespace"] = args?.gitlabPathNamespace; resourceInputs["gitlabProjectId"] = args?.gitlabProjectId; resourceInputs["gitlabRepository"] = args?.gitlabRepository; + resourceInputs["icon"] = args?.icon; resourceInputs["isolatedDeployment"] = args?.isolatedDeployment; resourceInputs["isolatedDeploymentsVolume"] = args?.isolatedDeploymentsVolume; resourceInputs["name"] = args?.name; @@ -309,6 +333,7 @@ export class Compose extends pulumi.CustomResource { resourceInputs["randomize"] = args?.randomize; resourceInputs["repository"] = args?.repository; resourceInputs["serverId"] = args?.serverId; + resourceInputs["serviceNetworks"] = args?.serviceNetworks; resourceInputs["sourceType"] = args?.sourceType; resourceInputs["suffix"] = args?.suffix; resourceInputs["triggerType"] = args?.triggerType; @@ -328,179 +353,191 @@ export interface ComposeState { /** * Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Deploy automatically when the configured trigger fires. */ - autoDeploy?: pulumi.Input; + autoDeploy?: pulumi.Input; /** * Bitbucket branch to deploy. */ - bitbucketBranch?: pulumi.Input; + bitbucketBranch?: pulumi.Input; /** * ID of the configured Bitbucket provider connection. */ - bitbucketId?: pulumi.Input; + bitbucketId?: pulumi.Input; /** * Bitbucket repository owner. */ - bitbucketOwner?: pulumi.Input; + bitbucketOwner?: pulumi.Input; /** * Bitbucket repository name. */ - bitbucketRepository?: pulumi.Input; + bitbucketRepository?: pulumi.Input; /** * Bitbucket repository slug. */ - bitbucketRepositorySlug?: pulumi.Input; + bitbucketRepositorySlug?: pulumi.Input; /** * GitHub branch to deploy. */ - branch?: pulumi.Input; + branch?: pulumi.Input; /** * Custom `docker compose` command to run. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Inline Compose file contents. Used when `sourceType` is `raw`. */ - composeFile?: pulumi.Input; + composeFile?: pulumi.Input; /** * Path to the Compose file within the repository. */ - composePath?: pulumi.Input; + composePath?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - composeStatus?: pulumi.Input; + composeStatus?: pulumi.Input; /** * Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. */ - composeType?: pulumi.Input; + composeType?: pulumi.Input; + /** + * Write the environment variables to a `.env` file next to the Compose file. + */ + createEnvFile?: pulumi.Input; /** * RFC 3339 timestamp of when the stack was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Branch to deploy for a custom Git remote. */ - customGitBranch?: pulumi.Input; + customGitBranch?: pulumi.Input; /** * SSH key used to clone a private custom Git remote. */ - customGitSshKeyId?: pulumi.Input; + customGitSshKeyId?: pulumi.Input; /** * Git remote URL, when `sourceType` is `git`. */ - customGitUrl?: pulumi.Input; + customGitUrl?: pulumi.Input; /** * Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data. */ - deleteVolumes?: pulumi.Input; + deleteVolumes?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Clone Git submodules when checking out the repository. */ - enableSubmodules?: pulumi.Input; + enableSubmodules?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this stack belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Gitea branch to deploy. */ - giteaBranch?: pulumi.Input; + giteaBranch?: pulumi.Input; /** * ID of the configured Gitea provider connection. */ - giteaId?: pulumi.Input; + giteaId?: pulumi.Input; /** * Gitea repository owner. */ - giteaOwner?: pulumi.Input; + giteaOwner?: pulumi.Input; /** * Gitea repository name. */ - giteaRepository?: pulumi.Input; + giteaRepository?: pulumi.Input; /** * ID of the configured GitHub provider connection. */ - githubId?: pulumi.Input; + githubId?: pulumi.Input; /** * GitLab branch to deploy. */ - gitlabBranch?: pulumi.Input; + gitlabBranch?: pulumi.Input; /** * ID of the configured GitLab provider connection. */ - gitlabId?: pulumi.Input; + gitlabId?: pulumi.Input; /** * GitLab repository owner. */ - gitlabOwner?: pulumi.Input; + gitlabOwner?: pulumi.Input; /** * Full GitLab namespace path. */ - gitlabPathNamespace?: pulumi.Input; + gitlabPathNamespace?: pulumi.Input; /** * Numeric GitLab project ID. */ - gitlabProjectId?: pulumi.Input; + gitlabProjectId?: pulumi.Input; /** * GitLab repository name. */ - gitlabRepository?: pulumi.Input; + gitlabRepository?: pulumi.Input; + /** + * Icon shown next to the stack in the Dokploy UI. + */ + icon?: pulumi.Input; /** * Run the stack on its own isolated Docker network. */ - isolatedDeployment?: pulumi.Input; + isolatedDeployment?: pulumi.Input; /** * Prefix volume names for isolated deployments. Retained for backwards compatibility. */ - isolatedDeploymentsVolume?: pulumi.Input; + isolatedDeploymentsVolume?: pulumi.Input; /** * Display name of the stack. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * GitHub repository owner. */ - owner?: pulumi.Input; + owner?: pulumi.Input; /** * Append a random suffix to service and volume names. */ - randomize?: pulumi.Input; + randomize?: pulumi.Input; /** * GitHub repository name. */ - repository?: pulumi.Input; + repository?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; + /** + * Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + */ + serviceNetworks?: pulumi.Input; /** * Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. */ - sourceType?: pulumi.Input; + sourceType?: pulumi.Input; /** * Suffix appended to generated resource names. */ - suffix?: pulumi.Input; + suffix?: pulumi.Input; /** * What triggers an automatic deployment. Valid values: `push`, `tag`. */ - triggerType?: pulumi.Input; + triggerType?: pulumi.Input; /** * Glob patterns that limit which changed paths trigger an automatic deployment. */ - watchPaths?: pulumi.Input[]>; + watchPaths?: pulumi.Input[] | undefined>; } /** @@ -510,79 +547,83 @@ export interface ComposeArgs { /** * Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Deploy automatically when the configured trigger fires. */ - autoDeploy?: pulumi.Input; + autoDeploy?: pulumi.Input; /** * Bitbucket branch to deploy. */ - bitbucketBranch?: pulumi.Input; + bitbucketBranch?: pulumi.Input; /** * ID of the configured Bitbucket provider connection. */ - bitbucketId?: pulumi.Input; + bitbucketId?: pulumi.Input; /** * Bitbucket repository owner. */ - bitbucketOwner?: pulumi.Input; + bitbucketOwner?: pulumi.Input; /** * Bitbucket repository name. */ - bitbucketRepository?: pulumi.Input; + bitbucketRepository?: pulumi.Input; /** * Bitbucket repository slug. */ - bitbucketRepositorySlug?: pulumi.Input; + bitbucketRepositorySlug?: pulumi.Input; /** * GitHub branch to deploy. */ - branch?: pulumi.Input; + branch?: pulumi.Input; /** * Custom `docker compose` command to run. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Inline Compose file contents. Used when `sourceType` is `raw`. */ - composeFile?: pulumi.Input; + composeFile?: pulumi.Input; /** * Path to the Compose file within the repository. */ - composePath?: pulumi.Input; + composePath?: pulumi.Input; /** * Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. */ - composeType?: pulumi.Input; + composeType?: pulumi.Input; + /** + * Write the environment variables to a `.env` file next to the Compose file. + */ + createEnvFile?: pulumi.Input; /** * Branch to deploy for a custom Git remote. */ - customGitBranch?: pulumi.Input; + customGitBranch?: pulumi.Input; /** * SSH key used to clone a private custom Git remote. */ - customGitSshKeyId?: pulumi.Input; + customGitSshKeyId?: pulumi.Input; /** * Git remote URL, when `sourceType` is `git`. */ - customGitUrl?: pulumi.Input; + customGitUrl?: pulumi.Input; /** * Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data. */ - deleteVolumes?: pulumi.Input; + deleteVolumes?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Clone Git submodules when checking out the repository. */ - enableSubmodules?: pulumi.Input; + enableSubmodules?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this stack belongs to. */ @@ -590,89 +631,97 @@ export interface ComposeArgs { /** * Gitea branch to deploy. */ - giteaBranch?: pulumi.Input; + giteaBranch?: pulumi.Input; /** * ID of the configured Gitea provider connection. */ - giteaId?: pulumi.Input; + giteaId?: pulumi.Input; /** * Gitea repository owner. */ - giteaOwner?: pulumi.Input; + giteaOwner?: pulumi.Input; /** * Gitea repository name. */ - giteaRepository?: pulumi.Input; + giteaRepository?: pulumi.Input; /** * ID of the configured GitHub provider connection. */ - githubId?: pulumi.Input; + githubId?: pulumi.Input; /** * GitLab branch to deploy. */ - gitlabBranch?: pulumi.Input; + gitlabBranch?: pulumi.Input; /** * ID of the configured GitLab provider connection. */ - gitlabId?: pulumi.Input; + gitlabId?: pulumi.Input; /** * GitLab repository owner. */ - gitlabOwner?: pulumi.Input; + gitlabOwner?: pulumi.Input; /** * Full GitLab namespace path. */ - gitlabPathNamespace?: pulumi.Input; + gitlabPathNamespace?: pulumi.Input; /** * Numeric GitLab project ID. */ - gitlabProjectId?: pulumi.Input; + gitlabProjectId?: pulumi.Input; /** * GitLab repository name. */ - gitlabRepository?: pulumi.Input; + gitlabRepository?: pulumi.Input; + /** + * Icon shown next to the stack in the Dokploy UI. + */ + icon?: pulumi.Input; /** * Run the stack on its own isolated Docker network. */ - isolatedDeployment?: pulumi.Input; + isolatedDeployment?: pulumi.Input; /** * Prefix volume names for isolated deployments. Retained for backwards compatibility. */ - isolatedDeploymentsVolume?: pulumi.Input; + isolatedDeploymentsVolume?: pulumi.Input; /** * Display name of the stack. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * GitHub repository owner. */ - owner?: pulumi.Input; + owner?: pulumi.Input; /** * Append a random suffix to service and volume names. */ - randomize?: pulumi.Input; + randomize?: pulumi.Input; /** * GitHub repository name. */ - repository?: pulumi.Input; + repository?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; + /** + * Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + */ + serviceNetworks?: pulumi.Input; /** * Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. */ - sourceType?: pulumi.Input; + sourceType?: pulumi.Input; /** * Suffix appended to generated resource names. */ - suffix?: pulumi.Input; + suffix?: pulumi.Input; /** * What triggers an automatic deployment. Valid values: `push`, `tag`. */ - triggerType?: pulumi.Input; + triggerType?: pulumi.Input; /** * Glob patterns that limit which changed paths trigger an automatic deployment. */ - watchPaths?: pulumi.Input[]>; + watchPaths?: pulumi.Input[] | undefined>; } diff --git a/sdk/nodejs/destination.ts b/sdk/nodejs/destination.ts index 07d25ed..ea3df8f 100644 --- a/sdk/nodejs/destination.ts +++ b/sdk/nodejs/destination.ts @@ -4,6 +4,11 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * An S3-compatible bucket that Dokploy writes database and volume backups to. + * + * > The secret access key is stored in Terraform state. Use a state backend with encryption at rest. + */ export class Destination extends pulumi.CustomResource { /** * Get an existing Destination resource's state with the given name, ID, and optional extra @@ -138,43 +143,43 @@ export interface DestinationState { /** * S3 access key ID. */ - accessKey?: pulumi.Input; + accessKey?: pulumi.Input; /** * Extra flags passed to the underlying `rclone` invocation. */ - additionalFlags?: pulumi.Input[]>; + additionalFlags?: pulumi.Input[] | undefined>; /** * Bucket name. */ - bucket?: pulumi.Input; + bucket?: pulumi.Input; /** * Timestamp of when the destination was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * S3 endpoint URL. */ - endpoint?: pulumi.Input; + endpoint?: pulumi.Input; /** * Display name of the destination. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform. */ - providerName?: pulumi.Input; + providerName?: pulumi.Input; /** * Bucket region, for example `us-east-1`. */ - region?: pulumi.Input; + region?: pulumi.Input; /** * S3 secret access key. */ - secretAccessKey?: pulumi.Input; + secretAccessKey?: pulumi.Input; /** * Server this destination is scoped to. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; } /** @@ -188,7 +193,7 @@ export interface DestinationArgs { /** * Extra flags passed to the underlying `rclone` invocation. */ - additionalFlags?: pulumi.Input[]>; + additionalFlags?: pulumi.Input[] | undefined>; /** * Bucket name. */ @@ -200,11 +205,11 @@ export interface DestinationArgs { /** * Display name of the destination. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform. */ - providerName?: pulumi.Input; + providerName?: pulumi.Input; /** * Bucket region, for example `us-east-1`. */ @@ -216,5 +221,5 @@ export interface DestinationArgs { /** * Server this destination is scoped to. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; } diff --git a/sdk/nodejs/dnsProvider.ts b/sdk/nodejs/dnsProvider.ts new file mode 100644 index 0000000..b0c4dcd --- /dev/null +++ b/sdk/nodejs/dnsProvider.ts @@ -0,0 +1,135 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * A DNS provider connection Dokploy uses to create records for domains automatically. + * + * `config` is a JSON object whose shape depends on `providerType`: + */ +export class DnsProvider extends pulumi.CustomResource { + /** + * Get an existing DnsProvider resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: DnsProviderState, opts?: pulumi.CustomResourceOptions): DnsProvider { + return new DnsProvider(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dokploy:index/dnsProvider:DnsProvider'; + + /** + * Returns true if the given object is an instance of DnsProvider. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is DnsProvider { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === DnsProvider.__pulumiType; + } + + /** + * Provider credentials as a JSON object, including the `providerType` discriminator. + */ + declare public readonly config: pulumi.Output; + /** + * RFC 3339 timestamp of when the connection was created. + */ + declare public /*out*/ readonly createdAt: pulumi.Output; + /** + * Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + */ + declare public readonly name: pulumi.Output; + /** + * Organization that owns the connection. + */ + declare public /*out*/ readonly organizationId: pulumi.Output; + /** + * Provider kind derived from `config`: `cloudflare` or `route53`. + */ + declare public /*out*/ readonly providerType: pulumi.Output; + + /** + * Create a DnsProvider resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: DnsProviderArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: DnsProviderArgs | DnsProviderState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as DnsProviderState | undefined; + resourceInputs["config"] = state?.config; + resourceInputs["createdAt"] = state?.createdAt; + resourceInputs["name"] = state?.name; + resourceInputs["organizationId"] = state?.organizationId; + resourceInputs["providerType"] = state?.providerType; + } else { + const args = argsOrState as DnsProviderArgs | undefined; + if (args?.config === undefined && !opts.urn) { + throw new Error("Missing required property 'config'"); + } + resourceInputs["config"] = args?.config ? pulumi.secret(args.config) : undefined; + resourceInputs["name"] = args?.name; + resourceInputs["createdAt"] = undefined /*out*/; + resourceInputs["organizationId"] = undefined /*out*/; + resourceInputs["providerType"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["config"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(DnsProvider.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering DnsProvider resources. + */ +export interface DnsProviderState { + /** + * Provider credentials as a JSON object, including the `providerType` discriminator. + */ + config?: pulumi.Input; + /** + * RFC 3339 timestamp of when the connection was created. + */ + createdAt?: pulumi.Input; + /** + * Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + */ + name?: pulumi.Input; + /** + * Organization that owns the connection. + */ + organizationId?: pulumi.Input; + /** + * Provider kind derived from `config`: `cloudflare` or `route53`. + */ + providerType?: pulumi.Input; +} + +/** + * The set of arguments for constructing a DnsProvider resource. + */ +export interface DnsProviderArgs { + /** + * Provider credentials as a JSON object, including the `providerType` discriminator. + */ + config: pulumi.Input; + /** + * Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + */ + name?: pulumi.Input; +} diff --git a/sdk/nodejs/domain.ts b/sdk/nodejs/domain.ts index 820f4d2..8034701 100644 --- a/sdk/nodejs/domain.ts +++ b/sdk/nodejs/domain.ts @@ -4,6 +4,11 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A domain routed to an application or a Compose service through Dokploy's Traefik instance. + * + * Set exactly one of `applicationId` or `composeId`. When targeting a Compose stack, `serviceName` selects which service in the stack receives the traffic. + */ export class Domain extends pulumi.CustomResource { /** * Get an existing Domain resource's state with the given name, ID, and optional extra @@ -60,6 +65,10 @@ export class Domain extends pulumi.CustomResource { * What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. */ declare public readonly domainType: pulumi.Output; + /** + * Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + */ + declare public readonly enabled: pulumi.Output; /** * Protect this domain with Dokploy's forward auth. */ @@ -121,6 +130,7 @@ export class Domain extends pulumi.CustomResource { resourceInputs["customCertResolver"] = state?.customCertResolver; resourceInputs["customEntrypoint"] = state?.customEntrypoint; resourceInputs["domainType"] = state?.domainType; + resourceInputs["enabled"] = state?.enabled; resourceInputs["forwardAuthEnabled"] = state?.forwardAuthEnabled; resourceInputs["host"] = state?.host; resourceInputs["https"] = state?.https; @@ -142,6 +152,7 @@ export class Domain extends pulumi.CustomResource { resourceInputs["customCertResolver"] = args?.customCertResolver; resourceInputs["customEntrypoint"] = args?.customEntrypoint; resourceInputs["domainType"] = args?.domainType; + resourceInputs["enabled"] = args?.enabled; resourceInputs["forwardAuthEnabled"] = args?.forwardAuthEnabled; resourceInputs["host"] = args?.host; resourceInputs["https"] = args?.https; @@ -166,71 +177,75 @@ export interface DomainState { /** * Application this domain routes to. */ - applicationId?: pulumi.Input; + applicationId?: pulumi.Input; /** * How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`. */ - certificateType?: pulumi.Input; + certificateType?: pulumi.Input; /** * Compose stack this domain routes to. */ - composeId?: pulumi.Input; + composeId?: pulumi.Input; /** * RFC 3339 timestamp of when the domain was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Traefik certificate resolver name, when `certificateType` is `custom`. */ - customCertResolver?: pulumi.Input; + customCertResolver?: pulumi.Input; /** * Traefik entrypoint to bind, when not using the defaults. */ - customEntrypoint?: pulumi.Input; + customEntrypoint?: pulumi.Input; /** * What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. */ - domainType?: pulumi.Input; + domainType?: pulumi.Input; + /** + * Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + */ + enabled?: pulumi.Input; /** * Protect this domain with Dokploy's forward auth. */ - forwardAuthEnabled?: pulumi.Input; + forwardAuthEnabled?: pulumi.Input; /** * Fully-qualified hostname, for example `api.example.com`. */ - host?: pulumi.Input; + host?: pulumi.Input; /** * Serve the domain over HTTPS and redirect HTTP traffic to it. */ - https?: pulumi.Input; + https?: pulumi.Input; /** * Path the request is rewritten to before it reaches the container, defaults to `/`. */ - internalPath?: pulumi.Input; + internalPath?: pulumi.Input; /** * Names of Traefik middlewares to apply. */ - middlewares?: pulumi.Input[]>; + middlewares?: pulumi.Input[] | undefined>; /** * Path prefix this domain routes, defaults to `/`. */ - path?: pulumi.Input; + path?: pulumi.Input; /** * Container port that receives the traffic, defaults to `3000`. */ - port?: pulumi.Input; + port?: pulumi.Input; /** * Preview deployment this domain routes to. */ - previewDeploymentId?: pulumi.Input; + previewDeploymentId?: pulumi.Input; /** * Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set. */ - serviceName?: pulumi.Input; + serviceName?: pulumi.Input; /** * Strip `path` from the request before forwarding it. */ - stripPath?: pulumi.Input; + stripPath?: pulumi.Input; } /** @@ -240,31 +255,35 @@ export interface DomainArgs { /** * Application this domain routes to. */ - applicationId?: pulumi.Input; + applicationId?: pulumi.Input; /** * How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`. */ - certificateType?: pulumi.Input; + certificateType?: pulumi.Input; /** * Compose stack this domain routes to. */ - composeId?: pulumi.Input; + composeId?: pulumi.Input; /** * Traefik certificate resolver name, when `certificateType` is `custom`. */ - customCertResolver?: pulumi.Input; + customCertResolver?: pulumi.Input; /** * Traefik entrypoint to bind, when not using the defaults. */ - customEntrypoint?: pulumi.Input; + customEntrypoint?: pulumi.Input; /** * What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. */ - domainType?: pulumi.Input; + domainType?: pulumi.Input; + /** + * Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + */ + enabled?: pulumi.Input; /** * Protect this domain with Dokploy's forward auth. */ - forwardAuthEnabled?: pulumi.Input; + forwardAuthEnabled?: pulumi.Input; /** * Fully-qualified hostname, for example `api.example.com`. */ @@ -272,33 +291,33 @@ export interface DomainArgs { /** * Serve the domain over HTTPS and redirect HTTP traffic to it. */ - https?: pulumi.Input; + https?: pulumi.Input; /** * Path the request is rewritten to before it reaches the container, defaults to `/`. */ - internalPath?: pulumi.Input; + internalPath?: pulumi.Input; /** * Names of Traefik middlewares to apply. */ - middlewares?: pulumi.Input[]>; + middlewares?: pulumi.Input[] | undefined>; /** * Path prefix this domain routes, defaults to `/`. */ - path?: pulumi.Input; + path?: pulumi.Input; /** * Container port that receives the traffic, defaults to `3000`. */ - port?: pulumi.Input; + port?: pulumi.Input; /** * Preview deployment this domain routes to. */ - previewDeploymentId?: pulumi.Input; + previewDeploymentId?: pulumi.Input; /** * Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set. */ - serviceName?: pulumi.Input; + serviceName?: pulumi.Input; /** * Strip `path` from the request before forwarding it. */ - stripPath?: pulumi.Input; + stripPath?: pulumi.Input; } diff --git a/sdk/nodejs/environment.ts b/sdk/nodejs/environment.ts index f2708fb..d1b3b87 100644 --- a/sdk/nodejs/environment.ts +++ b/sdk/nodejs/environment.ts @@ -4,6 +4,11 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * An environment inside a Dokploy project, such as `staging` or `production`. Services belong to an environment rather than directly to a project. + * + * Dokploy creates a default `production` environment with every project; reference it via `dokploy_project..default_environment_id` instead of declaring it here. + */ export class Environment extends pulumi.CustomResource { /** * Get an existing Environment resource's state with the given name, ID, and optional extra @@ -100,27 +105,27 @@ export interface EnvironmentState { /** * RFC 3339 timestamp of when the environment was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Whether this is the project's default environment. */ - isDefault?: pulumi.Input; + isDefault?: pulumi.Input; /** * Environment name, for example `staging`. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * Project this environment belongs to. */ - projectId?: pulumi.Input; + projectId?: pulumi.Input; } /** @@ -130,15 +135,15 @@ export interface EnvironmentArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment name, for example `staging`. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * Project this environment belongs to. */ diff --git a/sdk/nodejs/getApplication.ts b/sdk/nodejs/getApplication.ts index aae24ea..8be61a8 100644 --- a/sdk/nodejs/getApplication.ts +++ b/sdk/nodejs/getApplication.ts @@ -4,6 +4,9 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * Look up an existing application by ID. + */ export function getApplication(args: GetApplicationArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("dokploy:index/getApplication:getApplication", { @@ -15,6 +18,9 @@ export function getApplication(args: GetApplicationArgs, opts?: pulumi.InvokeOpt * A collection of arguments for invoking getApplication. */ export interface GetApplicationArgs { + /** + * Application identifier. + */ id: string; } @@ -22,16 +28,46 @@ export interface GetApplicationArgs { * A collection of values returned by getApplication. */ export interface GetApplicationResult { + /** + * Docker service name. + */ readonly appName: string; + /** + * Current status. + */ readonly applicationStatus: string; + /** + * Build strategy. + */ readonly buildType: string; + /** + * Creation timestamp. + */ readonly createdAt: string; + /** + * Application description. + */ readonly description: string; + /** + * Owning environment. + */ readonly environmentId: string; + /** + * Application identifier. + */ readonly id: string; + /** + * Application name. + */ readonly name: string; + /** + * Source of the code or image. + */ readonly sourceType: string; } +/** + * Look up an existing application by ID. + */ export function getApplicationOutput(args: GetApplicationOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("dokploy:index/getApplication:getApplication", { @@ -43,5 +79,8 @@ export function getApplicationOutput(args: GetApplicationOutputArgs, opts?: pulu * A collection of arguments for invoking getApplication. */ export interface GetApplicationOutputArgs { + /** + * Application identifier. + */ id: pulumi.Input; } diff --git a/sdk/nodejs/getEnvironment.ts b/sdk/nodejs/getEnvironment.ts index b3e10c7..514903c 100644 --- a/sdk/nodejs/getEnvironment.ts +++ b/sdk/nodejs/getEnvironment.ts @@ -4,6 +4,9 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * Look up an existing environment by ID. + */ export function getEnvironment(args: GetEnvironmentArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("dokploy:index/getEnvironment:getEnvironment", { @@ -15,6 +18,9 @@ export function getEnvironment(args: GetEnvironmentArgs, opts?: pulumi.InvokeOpt * A collection of arguments for invoking getEnvironment. */ export interface GetEnvironmentArgs { + /** + * Environment identifier. + */ id: string; } @@ -22,14 +28,38 @@ export interface GetEnvironmentArgs { * A collection of values returned by getEnvironment. */ export interface GetEnvironmentResult { + /** + * Creation timestamp. + */ readonly createdAt: string; + /** + * Environment description. + */ readonly description: string; + /** + * Environment-wide variables. + */ readonly env: string; + /** + * Environment identifier. + */ readonly id: string; + /** + * Whether this is the project's default environment. + */ readonly isDefault: boolean; + /** + * Environment name. + */ readonly name: string; + /** + * Owning project. + */ readonly projectId: string; } +/** + * Look up an existing environment by ID. + */ export function getEnvironmentOutput(args: GetEnvironmentOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("dokploy:index/getEnvironment:getEnvironment", { @@ -41,5 +71,8 @@ export function getEnvironmentOutput(args: GetEnvironmentOutputArgs, opts?: pulu * A collection of arguments for invoking getEnvironment. */ export interface GetEnvironmentOutputArgs { + /** + * Environment identifier. + */ id: pulumi.Input; } diff --git a/sdk/nodejs/getProject.ts b/sdk/nodejs/getProject.ts index 5a00336..da5ae3d 100644 --- a/sdk/nodejs/getProject.ts +++ b/sdk/nodejs/getProject.ts @@ -6,6 +6,9 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; +/** + * Look up an existing Dokploy project by ID, including its environments. + */ export function getProject(args: GetProjectArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("dokploy:index/getProject:getProject", { @@ -17,6 +20,9 @@ export function getProject(args: GetProjectArgs, opts?: pulumi.InvokeOptions): P * A collection of arguments for invoking getProject. */ export interface GetProjectArgs { + /** + * Project identifier. + */ id: string; } @@ -24,15 +30,42 @@ export interface GetProjectArgs { * A collection of values returned by getProject. */ export interface GetProjectResult { + /** + * Creation timestamp. + */ readonly createdAt: string; + /** + * ID of the project's default environment. + */ readonly defaultEnvironmentId: string; + /** + * Project description. + */ readonly description: string; + /** + * Project-wide environment variables. + */ readonly env: string; + /** + * Every environment in the project. + */ readonly environments: outputs.GetProjectEnvironment[]; + /** + * Project identifier. + */ readonly id: string; + /** + * Project name. + */ readonly name: string; + /** + * Owning organization. + */ readonly organizationId: string; } +/** + * Look up an existing Dokploy project by ID, including its environments. + */ export function getProjectOutput(args: GetProjectOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("dokploy:index/getProject:getProject", { @@ -44,5 +77,8 @@ export function getProjectOutput(args: GetProjectOutputArgs, opts?: pulumi.Invok * A collection of arguments for invoking getProject. */ export interface GetProjectOutputArgs { + /** + * Project identifier. + */ id: pulumi.Input; } diff --git a/sdk/nodejs/getProjects.ts b/sdk/nodejs/getProjects.ts index 08dc4a9..6f7bb77 100644 --- a/sdk/nodejs/getProjects.ts +++ b/sdk/nodejs/getProjects.ts @@ -6,6 +6,9 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; +/** + * List every Dokploy project the API token can see. + */ export function getProjects(opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("dokploy:index/getProjects:getProjects", { @@ -16,8 +19,14 @@ export function getProjects(opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("dokploy:index/getProjects:getProjects", { diff --git a/sdk/nodejs/getServers.ts b/sdk/nodejs/getServers.ts index 2070f87..d4b3a87 100644 --- a/sdk/nodejs/getServers.ts +++ b/sdk/nodejs/getServers.ts @@ -6,6 +6,9 @@ import * as inputs from "./types/input"; import * as outputs from "./types/output"; import * as utilities from "./utilities"; +/** + * List the remote servers registered with Dokploy. Use a server's `id` as the `serverId` of an application, stack, or database to deploy it away from the Dokploy host. + */ export function getServers(opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("dokploy:index/getServers:getServers", { @@ -16,8 +19,14 @@ export function getServers(opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("dokploy:index/getServers:getServers", { diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index 7e8f43c..33d552d 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -25,6 +25,11 @@ export type Destination = import("./destination").Destination; export const Destination: typeof import("./destination").Destination = null as any; utilities.lazyLoad(exports, ["Destination"], () => require("./destination")); +export { DnsProviderArgs, DnsProviderState } from "./dnsProvider"; +export type DnsProvider = import("./dnsProvider").DnsProvider; +export const DnsProvider: typeof import("./dnsProvider").DnsProvider = null as any; +utilities.lazyLoad(exports, ["DnsProvider"], () => require("./dnsProvider")); + export { DomainArgs, DomainState } from "./domain"; export type Domain = import("./domain").Domain; export const Domain: typeof import("./domain").Domain = null as any; @@ -60,6 +65,11 @@ export const getServers: typeof import("./getServers").getServers = null as any; export const getServersOutput: typeof import("./getServers").getServersOutput = null as any; utilities.lazyLoad(exports, ["getServers","getServersOutput"], () => require("./getServers")); +export { LibsqlArgs, LibsqlState } from "./libsql"; +export type Libsql = import("./libsql").Libsql; +export const Libsql: typeof import("./libsql").Libsql = null as any; +utilities.lazyLoad(exports, ["Libsql"], () => require("./libsql")); + export { MariaDbArgs, MariaDbState } from "./mariaDb"; export type MariaDb = import("./mariaDb").MariaDb; export const MariaDb: typeof import("./mariaDb").MariaDb = null as any; @@ -80,6 +90,11 @@ export type MySql = import("./mySql").MySql; export const MySql: typeof import("./mySql").MySql = null as any; utilities.lazyLoad(exports, ["MySql"], () => require("./mySql")); +export { NetworkArgs, NetworkState } from "./network"; +export type Network = import("./network").Network; +export const Network: typeof import("./network").Network = null as any; +utilities.lazyLoad(exports, ["Network"], () => require("./network")); + export { PortArgs, PortState } from "./port"; export type Port = import("./port").Port; export const Port: typeof import("./port").Port = null as any; @@ -113,6 +128,11 @@ export type Registry = import("./registry").Registry; export const Registry: typeof import("./registry").Registry = null as any; utilities.lazyLoad(exports, ["Registry"], () => require("./registry")); +export { ScheduleArgs, ScheduleState } from "./schedule"; +export type Schedule = import("./schedule").Schedule; +export const Schedule: typeof import("./schedule").Schedule = null as any; +utilities.lazyLoad(exports, ["Schedule"], () => require("./schedule")); + export { SecurityArgs, SecurityState } from "./security"; export type Security = import("./security").Security; export const Security: typeof import("./security").Security = null as any; @@ -123,6 +143,16 @@ export type SshKey = import("./sshKey").SshKey; export const SshKey: typeof import("./sshKey").SshKey = null as any; utilities.lazyLoad(exports, ["SshKey"], () => require("./sshKey")); +export { VaultProviderArgs, VaultProviderState } from "./vaultProvider"; +export type VaultProvider = import("./vaultProvider").VaultProvider; +export const VaultProvider: typeof import("./vaultProvider").VaultProvider = null as any; +utilities.lazyLoad(exports, ["VaultProvider"], () => require("./vaultProvider")); + +export { VolumeBackupArgs, VolumeBackupState } from "./volumeBackup"; +export type VolumeBackup = import("./volumeBackup").VolumeBackup; +export const VolumeBackup: typeof import("./volumeBackup").VolumeBackup = null as any; +utilities.lazyLoad(exports, ["VolumeBackup"], () => require("./volumeBackup")); + // Export sub-modules: import * as config from "./config"; @@ -145,10 +175,14 @@ const _module = { return new Compose(name, undefined, { urn }) case "dokploy:index/destination:Destination": return new Destination(name, undefined, { urn }) + case "dokploy:index/dnsProvider:DnsProvider": + return new DnsProvider(name, undefined, { urn }) case "dokploy:index/domain:Domain": return new Domain(name, undefined, { urn }) case "dokploy:index/environment:Environment": return new Environment(name, undefined, { urn }) + case "dokploy:index/libsql:Libsql": + return new Libsql(name, undefined, { urn }) case "dokploy:index/mariaDb:MariaDb": return new MariaDb(name, undefined, { urn }) case "dokploy:index/mongo:Mongo": @@ -157,6 +191,8 @@ const _module = { return new Mount(name, undefined, { urn }) case "dokploy:index/mySql:MySql": return new MySql(name, undefined, { urn }) + case "dokploy:index/network:Network": + return new Network(name, undefined, { urn }) case "dokploy:index/port:Port": return new Port(name, undefined, { urn }) case "dokploy:index/postgres:Postgres": @@ -169,10 +205,16 @@ const _module = { return new Redis(name, undefined, { urn }) case "dokploy:index/registry:Registry": return new Registry(name, undefined, { urn }) + case "dokploy:index/schedule:Schedule": + return new Schedule(name, undefined, { urn }) case "dokploy:index/security:Security": return new Security(name, undefined, { urn }) case "dokploy:index/sshKey:SshKey": return new SshKey(name, undefined, { urn }) + case "dokploy:index/vaultProvider:VaultProvider": + return new VaultProvider(name, undefined, { urn }) + case "dokploy:index/volumeBackup:VolumeBackup": + return new VolumeBackup(name, undefined, { urn }) default: throw new Error(`unknown resource type ${type}`); } @@ -182,20 +224,26 @@ pulumi.runtime.registerResourceModule("dokploy", "index/application", _module) pulumi.runtime.registerResourceModule("dokploy", "index/certificate", _module) pulumi.runtime.registerResourceModule("dokploy", "index/compose", _module) pulumi.runtime.registerResourceModule("dokploy", "index/destination", _module) +pulumi.runtime.registerResourceModule("dokploy", "index/dnsProvider", _module) pulumi.runtime.registerResourceModule("dokploy", "index/domain", _module) pulumi.runtime.registerResourceModule("dokploy", "index/environment", _module) +pulumi.runtime.registerResourceModule("dokploy", "index/libsql", _module) pulumi.runtime.registerResourceModule("dokploy", "index/mariaDb", _module) pulumi.runtime.registerResourceModule("dokploy", "index/mongo", _module) pulumi.runtime.registerResourceModule("dokploy", "index/mount", _module) pulumi.runtime.registerResourceModule("dokploy", "index/mySql", _module) +pulumi.runtime.registerResourceModule("dokploy", "index/network", _module) pulumi.runtime.registerResourceModule("dokploy", "index/port", _module) pulumi.runtime.registerResourceModule("dokploy", "index/postgres", _module) pulumi.runtime.registerResourceModule("dokploy", "index/project", _module) pulumi.runtime.registerResourceModule("dokploy", "index/redirect", _module) pulumi.runtime.registerResourceModule("dokploy", "index/redis", _module) pulumi.runtime.registerResourceModule("dokploy", "index/registry", _module) +pulumi.runtime.registerResourceModule("dokploy", "index/schedule", _module) pulumi.runtime.registerResourceModule("dokploy", "index/security", _module) pulumi.runtime.registerResourceModule("dokploy", "index/sshKey", _module) +pulumi.runtime.registerResourceModule("dokploy", "index/vaultProvider", _module) +pulumi.runtime.registerResourceModule("dokploy", "index/volumeBackup", _module) pulumi.runtime.registerResourcePackage("dokploy", { version: utilities.getVersion(), constructProvider: (name: string, type: string, urn: string): pulumi.ProviderResource => { diff --git a/sdk/nodejs/libsql.ts b/sdk/nodejs/libsql.ts new file mode 100644 index 0000000..15ce143 --- /dev/null +++ b/sdk/nodejs/libsql.ts @@ -0,0 +1,572 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * A managed libSQL instance running on Dokploy. + * + * > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + * + * > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + * + * libSQL runs as a `sqld` server. A `primary` node owns the data; a `replica` node follows a primary named by `sqldPrimaryUrl`. + */ +export class Libsql extends pulumi.CustomResource { + /** + * Get an existing Libsql resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: LibsqlState, opts?: pulumi.CustomResourceOptions): Libsql { + return new Libsql(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dokploy:index/libsql:Libsql'; + + /** + * Returns true if the given object is an instance of Libsql. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Libsql { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Libsql.__pulumiType; + } + + /** + * Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + */ + declare public readonly appName: pulumi.Output; + /** + * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + */ + declare public /*out*/ readonly applicationStatus: pulumi.Output; + /** + * Override the container entrypoint command. + */ + declare public readonly command: pulumi.Output; + /** + * Hard CPU limit, for example `1`. + */ + declare public readonly cpuLimit: pulumi.Output; + /** + * Soft CPU reservation, for example `0.5`. + */ + declare public readonly cpuReservation: pulumi.Output; + /** + * RFC 3339 timestamp of when the database was created. + */ + declare public /*out*/ readonly createdAt: pulumi.Output; + /** + * Password for the database user. + */ + declare public readonly databasePassword: pulumi.Output; + /** + * Database user to create. + */ + declare public readonly databaseUser: pulumi.Output; + /** + * Free-form description. + */ + declare public readonly description: pulumi.Output; + /** + * Detach the service from the shared `dokploy-network`. + */ + declare public readonly detachDokployNetwork: pulumi.Output; + /** + * libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + */ + declare public readonly dockerImage: pulumi.Output; + /** + * Serve multiple logical databases from one instance through libSQL namespaces. + */ + declare public readonly enableNamespaces: pulumi.Output; + /** + * Docker Swarm endpoint specification, as a JSON object. + */ + declare public readonly endpointSpecSwarm: pulumi.Output; + /** + * Environment variables in `KEY=value` format, one per line. + */ + declare public readonly env: pulumi.Output; + /** + * Environment this database belongs to. + */ + declare public readonly environmentId: pulumi.Output; + /** + * Host port exposing the admin API. + */ + declare public readonly externalAdminPort: pulumi.Output; + /** + * Host port exposing the gRPC replication endpoint. + */ + declare public readonly externalGrpcPort: pulumi.Output; + /** + * Host port exposing the HTTP API. + */ + declare public readonly externalPort: pulumi.Output; + /** + * Docker Swarm health check configuration, as a JSON object. + */ + declare public readonly healthCheckSwarm: pulumi.Output; + /** + * Docker Swarm service labels, as a JSON object. + */ + declare public readonly labelsSwarm: pulumi.Output; + /** + * Hard memory limit, for example `512m`. + */ + declare public readonly memoryLimit: pulumi.Output; + /** + * Soft memory reservation, for example `256m`. + */ + declare public readonly memoryReservation: pulumi.Output; + /** + * Docker Swarm service mode, as a JSON object. + */ + declare public readonly modeSwarm: pulumi.Output; + /** + * Display name of the database. + */ + declare public readonly name: pulumi.Output; + /** + * IDs of additional Docker networks to attach. + */ + declare public readonly networkIds: pulumi.Output; + /** + * Docker Swarm network attachments, as a JSON array. + */ + declare public readonly networkSwarm: pulumi.Output; + /** + * Docker Swarm placement constraints, as a JSON object. + */ + declare public readonly placementSwarm: pulumi.Output; + /** + * Number of replicas to run. + */ + declare public readonly replicas: pulumi.Output; + /** + * Docker Swarm restart policy, as a JSON object. + */ + declare public readonly restartPolicySwarm: pulumi.Output; + /** + * Docker Swarm rollback configuration, as a JSON object. + */ + declare public readonly rollbackConfigSwarm: pulumi.Output; + /** + * Remote server to deploy on. Omit to use the Dokploy host itself. + */ + declare public readonly serverId: pulumi.Output; + /** + * Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + */ + declare public readonly sqldNode: pulumi.Output; + /** + * URL of the primary node, when `sqldNode` is `replica`. + */ + declare public readonly sqldPrimaryUrl: pulumi.Output; + /** + * Grace period in nanoseconds before a container is killed. + */ + declare public readonly stopGracePeriodSwarm: pulumi.Output; + /** + * Docker Swarm rolling update configuration, as a JSON object. + */ + declare public readonly updateConfigSwarm: pulumi.Output; + + /** + * Create a Libsql resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: LibsqlArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: LibsqlArgs | LibsqlState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as LibsqlState | undefined; + resourceInputs["appName"] = state?.appName; + resourceInputs["applicationStatus"] = state?.applicationStatus; + resourceInputs["command"] = state?.command; + resourceInputs["cpuLimit"] = state?.cpuLimit; + resourceInputs["cpuReservation"] = state?.cpuReservation; + resourceInputs["createdAt"] = state?.createdAt; + resourceInputs["databasePassword"] = state?.databasePassword; + resourceInputs["databaseUser"] = state?.databaseUser; + resourceInputs["description"] = state?.description; + resourceInputs["detachDokployNetwork"] = state?.detachDokployNetwork; + resourceInputs["dockerImage"] = state?.dockerImage; + resourceInputs["enableNamespaces"] = state?.enableNamespaces; + resourceInputs["endpointSpecSwarm"] = state?.endpointSpecSwarm; + resourceInputs["env"] = state?.env; + resourceInputs["environmentId"] = state?.environmentId; + resourceInputs["externalAdminPort"] = state?.externalAdminPort; + resourceInputs["externalGrpcPort"] = state?.externalGrpcPort; + resourceInputs["externalPort"] = state?.externalPort; + resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm; + resourceInputs["labelsSwarm"] = state?.labelsSwarm; + resourceInputs["memoryLimit"] = state?.memoryLimit; + resourceInputs["memoryReservation"] = state?.memoryReservation; + resourceInputs["modeSwarm"] = state?.modeSwarm; + resourceInputs["name"] = state?.name; + resourceInputs["networkIds"] = state?.networkIds; + resourceInputs["networkSwarm"] = state?.networkSwarm; + resourceInputs["placementSwarm"] = state?.placementSwarm; + resourceInputs["replicas"] = state?.replicas; + resourceInputs["restartPolicySwarm"] = state?.restartPolicySwarm; + resourceInputs["rollbackConfigSwarm"] = state?.rollbackConfigSwarm; + resourceInputs["serverId"] = state?.serverId; + resourceInputs["sqldNode"] = state?.sqldNode; + resourceInputs["sqldPrimaryUrl"] = state?.sqldPrimaryUrl; + resourceInputs["stopGracePeriodSwarm"] = state?.stopGracePeriodSwarm; + resourceInputs["updateConfigSwarm"] = state?.updateConfigSwarm; + } else { + const args = argsOrState as LibsqlArgs | undefined; + if (args?.databasePassword === undefined && !opts.urn) { + throw new Error("Missing required property 'databasePassword'"); + } + if (args?.databaseUser === undefined && !opts.urn) { + throw new Error("Missing required property 'databaseUser'"); + } + if (args?.dockerImage === undefined && !opts.urn) { + throw new Error("Missing required property 'dockerImage'"); + } + if (args?.environmentId === undefined && !opts.urn) { + throw new Error("Missing required property 'environmentId'"); + } + resourceInputs["appName"] = args?.appName; + resourceInputs["command"] = args?.command; + resourceInputs["cpuLimit"] = args?.cpuLimit; + resourceInputs["cpuReservation"] = args?.cpuReservation; + resourceInputs["databasePassword"] = args?.databasePassword ? pulumi.secret(args.databasePassword) : undefined; + resourceInputs["databaseUser"] = args?.databaseUser; + resourceInputs["description"] = args?.description; + resourceInputs["detachDokployNetwork"] = args?.detachDokployNetwork; + resourceInputs["dockerImage"] = args?.dockerImage; + resourceInputs["enableNamespaces"] = args?.enableNamespaces; + resourceInputs["endpointSpecSwarm"] = args?.endpointSpecSwarm; + resourceInputs["env"] = args?.env; + resourceInputs["environmentId"] = args?.environmentId; + resourceInputs["externalAdminPort"] = args?.externalAdminPort; + resourceInputs["externalGrpcPort"] = args?.externalGrpcPort; + resourceInputs["externalPort"] = args?.externalPort; + resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm; + resourceInputs["labelsSwarm"] = args?.labelsSwarm; + resourceInputs["memoryLimit"] = args?.memoryLimit; + resourceInputs["memoryReservation"] = args?.memoryReservation; + resourceInputs["modeSwarm"] = args?.modeSwarm; + resourceInputs["name"] = args?.name; + resourceInputs["networkIds"] = args?.networkIds; + resourceInputs["networkSwarm"] = args?.networkSwarm; + resourceInputs["placementSwarm"] = args?.placementSwarm; + resourceInputs["replicas"] = args?.replicas; + resourceInputs["restartPolicySwarm"] = args?.restartPolicySwarm; + resourceInputs["rollbackConfigSwarm"] = args?.rollbackConfigSwarm; + resourceInputs["serverId"] = args?.serverId; + resourceInputs["sqldNode"] = args?.sqldNode; + resourceInputs["sqldPrimaryUrl"] = args?.sqldPrimaryUrl; + resourceInputs["stopGracePeriodSwarm"] = args?.stopGracePeriodSwarm; + resourceInputs["updateConfigSwarm"] = args?.updateConfigSwarm; + resourceInputs["applicationStatus"] = undefined /*out*/; + resourceInputs["createdAt"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["databasePassword"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(Libsql.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Libsql resources. + */ +export interface LibsqlState { + /** + * Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + */ + appName?: pulumi.Input; + /** + * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + */ + applicationStatus?: pulumi.Input; + /** + * Override the container entrypoint command. + */ + command?: pulumi.Input; + /** + * Hard CPU limit, for example `1`. + */ + cpuLimit?: pulumi.Input; + /** + * Soft CPU reservation, for example `0.5`. + */ + cpuReservation?: pulumi.Input; + /** + * RFC 3339 timestamp of when the database was created. + */ + createdAt?: pulumi.Input; + /** + * Password for the database user. + */ + databasePassword?: pulumi.Input; + /** + * Database user to create. + */ + databaseUser?: pulumi.Input; + /** + * Free-form description. + */ + description?: pulumi.Input; + /** + * Detach the service from the shared `dokploy-network`. + */ + detachDokployNetwork?: pulumi.Input; + /** + * libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + */ + dockerImage?: pulumi.Input; + /** + * Serve multiple logical databases from one instance through libSQL namespaces. + */ + enableNamespaces?: pulumi.Input; + /** + * Docker Swarm endpoint specification, as a JSON object. + */ + endpointSpecSwarm?: pulumi.Input; + /** + * Environment variables in `KEY=value` format, one per line. + */ + env?: pulumi.Input; + /** + * Environment this database belongs to. + */ + environmentId?: pulumi.Input; + /** + * Host port exposing the admin API. + */ + externalAdminPort?: pulumi.Input; + /** + * Host port exposing the gRPC replication endpoint. + */ + externalGrpcPort?: pulumi.Input; + /** + * Host port exposing the HTTP API. + */ + externalPort?: pulumi.Input; + /** + * Docker Swarm health check configuration, as a JSON object. + */ + healthCheckSwarm?: pulumi.Input; + /** + * Docker Swarm service labels, as a JSON object. + */ + labelsSwarm?: pulumi.Input; + /** + * Hard memory limit, for example `512m`. + */ + memoryLimit?: pulumi.Input; + /** + * Soft memory reservation, for example `256m`. + */ + memoryReservation?: pulumi.Input; + /** + * Docker Swarm service mode, as a JSON object. + */ + modeSwarm?: pulumi.Input; + /** + * Display name of the database. + */ + name?: pulumi.Input; + /** + * IDs of additional Docker networks to attach. + */ + networkIds?: pulumi.Input[] | undefined>; + /** + * Docker Swarm network attachments, as a JSON array. + */ + networkSwarm?: pulumi.Input; + /** + * Docker Swarm placement constraints, as a JSON object. + */ + placementSwarm?: pulumi.Input; + /** + * Number of replicas to run. + */ + replicas?: pulumi.Input; + /** + * Docker Swarm restart policy, as a JSON object. + */ + restartPolicySwarm?: pulumi.Input; + /** + * Docker Swarm rollback configuration, as a JSON object. + */ + rollbackConfigSwarm?: pulumi.Input; + /** + * Remote server to deploy on. Omit to use the Dokploy host itself. + */ + serverId?: pulumi.Input; + /** + * Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + */ + sqldNode?: pulumi.Input; + /** + * URL of the primary node, when `sqldNode` is `replica`. + */ + sqldPrimaryUrl?: pulumi.Input; + /** + * Grace period in nanoseconds before a container is killed. + */ + stopGracePeriodSwarm?: pulumi.Input; + /** + * Docker Swarm rolling update configuration, as a JSON object. + */ + updateConfigSwarm?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Libsql resource. + */ +export interface LibsqlArgs { + /** + * Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + */ + appName?: pulumi.Input; + /** + * Override the container entrypoint command. + */ + command?: pulumi.Input; + /** + * Hard CPU limit, for example `1`. + */ + cpuLimit?: pulumi.Input; + /** + * Soft CPU reservation, for example `0.5`. + */ + cpuReservation?: pulumi.Input; + /** + * Password for the database user. + */ + databasePassword: pulumi.Input; + /** + * Database user to create. + */ + databaseUser: pulumi.Input; + /** + * Free-form description. + */ + description?: pulumi.Input; + /** + * Detach the service from the shared `dokploy-network`. + */ + detachDokployNetwork?: pulumi.Input; + /** + * libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + */ + dockerImage: pulumi.Input; + /** + * Serve multiple logical databases from one instance through libSQL namespaces. + */ + enableNamespaces?: pulumi.Input; + /** + * Docker Swarm endpoint specification, as a JSON object. + */ + endpointSpecSwarm?: pulumi.Input; + /** + * Environment variables in `KEY=value` format, one per line. + */ + env?: pulumi.Input; + /** + * Environment this database belongs to. + */ + environmentId: pulumi.Input; + /** + * Host port exposing the admin API. + */ + externalAdminPort?: pulumi.Input; + /** + * Host port exposing the gRPC replication endpoint. + */ + externalGrpcPort?: pulumi.Input; + /** + * Host port exposing the HTTP API. + */ + externalPort?: pulumi.Input; + /** + * Docker Swarm health check configuration, as a JSON object. + */ + healthCheckSwarm?: pulumi.Input; + /** + * Docker Swarm service labels, as a JSON object. + */ + labelsSwarm?: pulumi.Input; + /** + * Hard memory limit, for example `512m`. + */ + memoryLimit?: pulumi.Input; + /** + * Soft memory reservation, for example `256m`. + */ + memoryReservation?: pulumi.Input; + /** + * Docker Swarm service mode, as a JSON object. + */ + modeSwarm?: pulumi.Input; + /** + * Display name of the database. + */ + name?: pulumi.Input; + /** + * IDs of additional Docker networks to attach. + */ + networkIds?: pulumi.Input[] | undefined>; + /** + * Docker Swarm network attachments, as a JSON array. + */ + networkSwarm?: pulumi.Input; + /** + * Docker Swarm placement constraints, as a JSON object. + */ + placementSwarm?: pulumi.Input; + /** + * Number of replicas to run. + */ + replicas?: pulumi.Input; + /** + * Docker Swarm restart policy, as a JSON object. + */ + restartPolicySwarm?: pulumi.Input; + /** + * Docker Swarm rollback configuration, as a JSON object. + */ + rollbackConfigSwarm?: pulumi.Input; + /** + * Remote server to deploy on. Omit to use the Dokploy host itself. + */ + serverId?: pulumi.Input; + /** + * Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + */ + sqldNode?: pulumi.Input; + /** + * URL of the primary node, when `sqldNode` is `replica`. + */ + sqldPrimaryUrl?: pulumi.Input; + /** + * Grace period in nanoseconds before a container is killed. + */ + stopGracePeriodSwarm?: pulumi.Input; + /** + * Docker Swarm rolling update configuration, as a JSON object. + */ + updateConfigSwarm?: pulumi.Input; +} diff --git a/sdk/nodejs/mariaDb.ts b/sdk/nodejs/mariaDb.ts index 1d37391..9b50eb5 100644 --- a/sdk/nodejs/mariaDb.ts +++ b/sdk/nodejs/mariaDb.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A managed MariaDB instance running on Dokploy. + * + * > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + * + * > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + */ export class MariaDb extends pulumi.CustomResource { /** * Get an existing MariaDb resource's state with the given name, ID, and optional extra @@ -285,139 +292,139 @@ export interface MariaDbState { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - applicationStatus?: pulumi.Input; + applicationStatus?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * RFC 3339 timestamp of when the database was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Name of the database to create. */ - databaseName?: pulumi.Input; + databaseName?: pulumi.Input; /** * Password for the database user. */ - databasePassword?: pulumi.Input; + databasePassword?: pulumi.Input; /** * Password for the MariaDB `root` user. */ - databaseRootPassword?: pulumi.Input; + databaseRootPassword?: pulumi.Input; /** * Database user to create. */ - databaseUser?: pulumi.Input; + databaseUser?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * MariaDB image to run, for example `mariadb:11`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } /** @@ -427,23 +434,23 @@ export interface MariaDbArgs { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Name of the database to create. */ @@ -463,11 +470,11 @@ export interface MariaDbArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * MariaDB image to run, for example `mariadb:11`. */ @@ -475,11 +482,11 @@ export interface MariaDbArgs { /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ @@ -487,69 +494,69 @@ export interface MariaDbArgs { /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } diff --git a/sdk/nodejs/mongo.ts b/sdk/nodejs/mongo.ts index f448a04..7f5cd4b 100644 --- a/sdk/nodejs/mongo.ts +++ b/sdk/nodejs/mongo.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A managed MongoDB instance running on Dokploy. + * + * > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + * + * > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + */ export class Mongo extends pulumi.CustomResource { /** * Get an existing Mongo resource's state with the given name, ID, and optional extra @@ -270,135 +277,135 @@ export interface MongoState { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - applicationStatus?: pulumi.Input; + applicationStatus?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * RFC 3339 timestamp of when the database was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Password for the root user. */ - databasePassword?: pulumi.Input; + databasePassword?: pulumi.Input; /** * Root username to create. */ - databaseUser?: pulumi.Input; + databaseUser?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * MongoDB image to run. Defaults to `mongo:8`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Start the instance as a single-node replica set. */ - replicaSets?: pulumi.Input; + replicaSets?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } /** @@ -408,23 +415,23 @@ export interface MongoArgs { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Password for the root user. */ @@ -436,23 +443,23 @@ export interface MongoArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * MongoDB image to run. Defaults to `mongo:8`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ @@ -460,73 +467,73 @@ export interface MongoArgs { /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Start the instance as a single-node replica set. */ - replicaSets?: pulumi.Input; + replicaSets?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } diff --git a/sdk/nodejs/mount.ts b/sdk/nodejs/mount.ts index 0290257..ddb3367 100644 --- a/sdk/nodejs/mount.ts +++ b/sdk/nodejs/mount.ts @@ -4,6 +4,15 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A volume, bind mount, or config file attached to a Dokploy service. + * + * * `type = "volume"` — a named Docker volume; set `volumeName`. + * * `type = "bind"` — a path on the host; set `hostPath`. + * * `type = "file"` — a file rendered from `content`; set `filePath`. + * + * > **A `volume` mount must set `volumeName`.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time. + */ export class Mount extends pulumi.CustomResource { /** * Get an existing Mount resource's state with the given name, ID, and optional extra @@ -53,7 +62,7 @@ export class Mount extends pulumi.CustomResource { */ declare public readonly serviceId: pulumi.Output; /** - * The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + * The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. */ declare public readonly serviceType: pulumi.Output; /** @@ -121,35 +130,35 @@ export interface MountState { /** * Contents of the generated file, when `type` is `file`. */ - content?: pulumi.Input; + content?: pulumi.Input; /** * Path of the generated file, when `type` is `file`. */ - filePath?: pulumi.Input; + filePath?: pulumi.Input; /** * Path on the host, when `type` is `bind`. */ - hostPath?: pulumi.Input; + hostPath?: pulumi.Input; /** * Path inside the container where the mount appears. */ - mountPath?: pulumi.Input; + mountPath?: pulumi.Input; /** * ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on. */ - serviceId?: pulumi.Input; + serviceId?: pulumi.Input; /** - * The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + * The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. */ - serviceType?: pulumi.Input; + serviceType?: pulumi.Input; /** * The kind of mount to create. Valid values: `bind`, `volume`, `file`. */ - type?: pulumi.Input; + type?: pulumi.Input; /** * Name of the Docker volume, when `type` is `volume`. */ - volumeName?: pulumi.Input; + volumeName?: pulumi.Input; } /** @@ -159,15 +168,15 @@ export interface MountArgs { /** * Contents of the generated file, when `type` is `file`. */ - content?: pulumi.Input; + content?: pulumi.Input; /** * Path of the generated file, when `type` is `file`. */ - filePath?: pulumi.Input; + filePath?: pulumi.Input; /** * Path on the host, when `type` is `bind`. */ - hostPath?: pulumi.Input; + hostPath?: pulumi.Input; /** * Path inside the container where the mount appears. */ @@ -177,7 +186,7 @@ export interface MountArgs { */ serviceId: pulumi.Input; /** - * The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + * The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. */ serviceType: pulumi.Input; /** @@ -187,5 +196,5 @@ export interface MountArgs { /** * Name of the Docker volume, when `type` is `volume`. */ - volumeName?: pulumi.Input; + volumeName?: pulumi.Input; } diff --git a/sdk/nodejs/mySql.ts b/sdk/nodejs/mySql.ts index 6cf1442..cbb2536 100644 --- a/sdk/nodejs/mySql.ts +++ b/sdk/nodejs/mySql.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A managed MySQL instance running on Dokploy. + * + * > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + * + * > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + */ export class MySql extends pulumi.CustomResource { /** * Get an existing MySql resource's state with the given name, ID, and optional extra @@ -285,139 +292,139 @@ export interface MySqlState { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - applicationStatus?: pulumi.Input; + applicationStatus?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * RFC 3339 timestamp of when the database was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Name of the database to create. */ - databaseName?: pulumi.Input; + databaseName?: pulumi.Input; /** * Password for the database user. */ - databasePassword?: pulumi.Input; + databasePassword?: pulumi.Input; /** * Password for the MySQL `root` user. */ - databaseRootPassword?: pulumi.Input; + databaseRootPassword?: pulumi.Input; /** * Database user to create. */ - databaseUser?: pulumi.Input; + databaseUser?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * MySQL image to run, for example `mysql:8`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } /** @@ -427,23 +434,23 @@ export interface MySqlArgs { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Name of the database to create. */ @@ -463,11 +470,11 @@ export interface MySqlArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * MySQL image to run, for example `mysql:8`. */ @@ -475,11 +482,11 @@ export interface MySqlArgs { /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ @@ -487,69 +494,69 @@ export interface MySqlArgs { /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } diff --git a/sdk/nodejs/network.ts b/sdk/nodejs/network.ts new file mode 100644 index 0000000..a5eca72 --- /dev/null +++ b/sdk/nodejs/network.ts @@ -0,0 +1,220 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * A Docker network managed by Dokploy. + * + * Attach services to it with `networkIds` on `dokploy.Application`, `dokploy.Compose` and the database resources. Every service also joins the shared `dokploy-network` unless `detachDokployNetwork` is set. + * + * > Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy. + */ +export class Network extends pulumi.CustomResource { + /** + * Get an existing Network resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: NetworkState, opts?: pulumi.CustomResourceOptions): Network { + return new Network(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dokploy:index/network:Network'; + + /** + * Returns true if the given object is an instance of Network. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Network { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Network.__pulumiType; + } + + /** + * Allow standalone containers to attach to an overlay network. + */ + declare public readonly attachable: pulumi.Output; + /** + * RFC 3339 timestamp of when the network was created. + */ + declare public /*out*/ readonly createdAt: pulumi.Output; + /** + * Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + */ + declare public readonly driver: pulumi.Output; + /** + * Enable IPv4 address allocation. + */ + declare public readonly enableIpv4: pulumi.Output; + /** + * Enable IPv6 address allocation. + */ + declare public readonly enableIpv6: pulumi.Output; + /** + * Isolate the network from external access. + */ + declare public readonly internal: pulumi.Output; + /** + * Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + */ + declare public readonly ipam: pulumi.Output; + /** + * Maximum transmission unit for the network. Leave unset to use Docker's default. + */ + declare public readonly mtu: pulumi.Output; + /** + * Name of the Docker network. + */ + declare public readonly name: pulumi.Output; + /** + * Organization that owns the network. + */ + declare public /*out*/ readonly organizationId: pulumi.Output; + /** + * Remote server to create the network on. Omit to use the Dokploy host itself. + */ + declare public readonly serverId: pulumi.Output; + + /** + * Create a Network resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args?: NetworkArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: NetworkArgs | NetworkState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as NetworkState | undefined; + resourceInputs["attachable"] = state?.attachable; + resourceInputs["createdAt"] = state?.createdAt; + resourceInputs["driver"] = state?.driver; + resourceInputs["enableIpv4"] = state?.enableIpv4; + resourceInputs["enableIpv6"] = state?.enableIpv6; + resourceInputs["internal"] = state?.internal; + resourceInputs["ipam"] = state?.ipam; + resourceInputs["mtu"] = state?.mtu; + resourceInputs["name"] = state?.name; + resourceInputs["organizationId"] = state?.organizationId; + resourceInputs["serverId"] = state?.serverId; + } else { + const args = argsOrState as NetworkArgs | undefined; + resourceInputs["attachable"] = args?.attachable; + resourceInputs["driver"] = args?.driver; + resourceInputs["enableIpv4"] = args?.enableIpv4; + resourceInputs["enableIpv6"] = args?.enableIpv6; + resourceInputs["internal"] = args?.internal; + resourceInputs["ipam"] = args?.ipam; + resourceInputs["mtu"] = args?.mtu; + resourceInputs["name"] = args?.name; + resourceInputs["serverId"] = args?.serverId; + resourceInputs["createdAt"] = undefined /*out*/; + resourceInputs["organizationId"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Network.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Network resources. + */ +export interface NetworkState { + /** + * Allow standalone containers to attach to an overlay network. + */ + attachable?: pulumi.Input; + /** + * RFC 3339 timestamp of when the network was created. + */ + createdAt?: pulumi.Input; + /** + * Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + */ + driver?: pulumi.Input; + /** + * Enable IPv4 address allocation. + */ + enableIpv4?: pulumi.Input; + /** + * Enable IPv6 address allocation. + */ + enableIpv6?: pulumi.Input; + /** + * Isolate the network from external access. + */ + internal?: pulumi.Input; + /** + * Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + */ + ipam?: pulumi.Input; + /** + * Maximum transmission unit for the network. Leave unset to use Docker's default. + */ + mtu?: pulumi.Input; + /** + * Name of the Docker network. + */ + name?: pulumi.Input; + /** + * Organization that owns the network. + */ + organizationId?: pulumi.Input; + /** + * Remote server to create the network on. Omit to use the Dokploy host itself. + */ + serverId?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Network resource. + */ +export interface NetworkArgs { + /** + * Allow standalone containers to attach to an overlay network. + */ + attachable?: pulumi.Input; + /** + * Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + */ + driver?: pulumi.Input; + /** + * Enable IPv4 address allocation. + */ + enableIpv4?: pulumi.Input; + /** + * Enable IPv6 address allocation. + */ + enableIpv6?: pulumi.Input; + /** + * Isolate the network from external access. + */ + internal?: pulumi.Input; + /** + * Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + */ + ipam?: pulumi.Input; + /** + * Maximum transmission unit for the network. Leave unset to use Docker's default. + */ + mtu?: pulumi.Input; + /** + * Name of the Docker network. + */ + name?: pulumi.Input; + /** + * Remote server to create the network on. Omit to use the Dokploy host itself. + */ + serverId?: pulumi.Input; +} diff --git a/sdk/nodejs/package-lock.json b/sdk/nodejs/package-lock.json index 5278f4f..08602e8 100644 --- a/sdk/nodejs/package-lock.json +++ b/sdk/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@maxvojtkov/pulumi-dokploy", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@maxvojtkov/pulumi-dokploy", - "version": "0.1.0", + "version": "0.2.0", "license": "MPL-2.0", "dependencies": { "@pulumi/pulumi": "^3.0.0" @@ -858,9 +858,9 @@ "license": "BSD-3-Clause" }, "node_modules/@pulumi/pulumi": { - "version": "3.256.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.256.0.tgz", - "integrity": "sha512-EK1TQieOmxTxbIpX5EKTPpC1WYappH3ASEZzN6Q9gs7rZjuZCATXI9Am8nszmlRdtPlAiVSW8NfQNKCnaNk34A==", + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.259.0.tgz", + "integrity": "sha512-DRc1bDHWTofZGkKcs/bx98LujCZJNoKRkOdeEhQZNz7wPUX/obhuzmWJezew2FUCEAy1xXHtQj1CTcANHoLn3A==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.10.1", @@ -927,9 +927,9 @@ } }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.1.tgz", - "integrity": "sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.2.tgz", + "integrity": "sha512-SQqvFMt4V78fdjcDdYX6HbiVSOR4QK3ZgwCa2KOsopAgPIHy1rU5UDUmzLl02r5oyyaYcYHR1hpwDRk/yUe+Mw==", "license": "Apache-2.0", "engines": { "node": "^18.17.0 || >=20.5.0" @@ -1144,9 +1144,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.1.tgz", + "integrity": "sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==", "license": "MIT" }, "node_modules/cliui": { @@ -1199,6 +1199,19 @@ "node": ">= 18" } }, + "node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1279,9 +1292,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", - "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "license": "MIT" }, "node_modules/escalade": { @@ -1507,9 +1520,9 @@ } }, "node_modules/ip-address": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.4.0.tgz", - "integrity": "sha512-oSK96Grm3aP6OrS263xVxbNDGVL7rzBtYdpGqlDG8iQdoenDoTs/nkki+DflYbAEE8Xl6o5YxhxlrKvI3nqKXQ==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz", + "integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==", "license": "MIT", "engines": { "node": ">= 12" @@ -1824,12 +1837,19 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz", + "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", "license": "MIT", + "dependencies": { + "content-type": "^2.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/node-gyp": { @@ -2108,9 +2128,9 @@ } }, "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "license": "MIT", "engines": { "node": ">=12" diff --git a/sdk/nodejs/package.json b/sdk/nodejs/package.json index 92ae5b0..945190e 100644 --- a/sdk/nodejs/package.json +++ b/sdk/nodejs/package.json @@ -1,7 +1,7 @@ { "name": "@maxvojtkov/pulumi-dokploy", - "version": "0.1.0", - "description": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.1.0", + "version": "0.2.0", + "description": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.2.0", "keywords": [ "pulumi", "dokploy", @@ -27,7 +27,7 @@ "pulumi": { "resource": true, "name": "dokploy", - "version": "0.1.0", + "version": "0.2.0", "server": "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}" } } diff --git a/sdk/nodejs/port.ts b/sdk/nodejs/port.ts index 1ff25e6..4e7f0ce 100644 --- a/sdk/nodejs/port.ts +++ b/sdk/nodejs/port.ts @@ -4,6 +4,9 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A published port that exposes an application directly on the host, bypassing Traefik. + */ export class Port extends pulumi.CustomResource { /** * Get an existing Port resource's state with the given name, ID, and optional extra @@ -103,23 +106,23 @@ export interface PortState { /** * Application this port belongs to. */ - applicationId?: pulumi.Input; + applicationId?: pulumi.Input; /** * Transport protocol. Valid values: `tcp`, `udp`. */ - protocol?: pulumi.Input; + protocol?: pulumi.Input; /** * Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`. */ - publishMode?: pulumi.Input; + publishMode?: pulumi.Input; /** * Port exposed on the host. */ - publishedPort?: pulumi.Input; + publishedPort?: pulumi.Input; /** * Port the container listens on. */ - targetPort?: pulumi.Input; + targetPort?: pulumi.Input; } /** @@ -137,7 +140,7 @@ export interface PortArgs { /** * Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`. */ - publishMode?: pulumi.Input; + publishMode?: pulumi.Input; /** * Port exposed on the host. */ diff --git a/sdk/nodejs/postgres.ts b/sdk/nodejs/postgres.ts index e06db57..e0071f3 100644 --- a/sdk/nodejs/postgres.ts +++ b/sdk/nodejs/postgres.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A managed PostgreSQL instance running on Dokploy. + * + * > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + * + * > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + */ export class Postgres extends pulumi.CustomResource { /** * Get an existing Postgres resource's state with the given name, ID, and optional extra @@ -276,135 +283,135 @@ export interface PostgresState { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - applicationStatus?: pulumi.Input; + applicationStatus?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * RFC 3339 timestamp of when the database was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Name of the database to create. */ - databaseName?: pulumi.Input; + databaseName?: pulumi.Input; /** * Password for the database user. */ - databasePassword?: pulumi.Input; + databasePassword?: pulumi.Input; /** * Database user to create. */ - databaseUser?: pulumi.Input; + databaseUser?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * PostgreSQL image to run, for example `postgres:16`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } /** @@ -414,23 +421,23 @@ export interface PostgresArgs { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Name of the database to create. */ @@ -446,11 +453,11 @@ export interface PostgresArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * PostgreSQL image to run, for example `postgres:16`. */ @@ -458,11 +465,11 @@ export interface PostgresArgs { /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ @@ -470,69 +477,69 @@ export interface PostgresArgs { /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } diff --git a/sdk/nodejs/project.ts b/sdk/nodejs/project.ts index dc614b2..de64174 100644 --- a/sdk/nodejs/project.ts +++ b/sdk/nodejs/project.ts @@ -4,6 +4,11 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A Dokploy project: the top-level container for environments and services. + * + * Creating a project automatically creates a default `production` environment. Its ID is exposed as `defaultEnvironmentId`, so services can be attached without declaring a separate `dokploy.Environment` resource. + */ export class Project extends pulumi.CustomResource { /** * Get an existing Project resource's state with the given name, ID, and optional extra @@ -97,27 +102,27 @@ export interface ProjectState { /** * RFC 3339 timestamp of when the project was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * ID of the `production` environment that Dokploy creates automatically with the project. */ - defaultEnvironmentId?: pulumi.Input; + defaultEnvironmentId?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Display name of the project. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * Organization that owns the project. */ - organizationId?: pulumi.Input; + organizationId?: pulumi.Input; } /** @@ -127,13 +132,13 @@ export interface ProjectArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Display name of the project. */ - name?: pulumi.Input; + name?: pulumi.Input; } diff --git a/sdk/nodejs/provider.ts b/sdk/nodejs/provider.ts index c5e3d02..a184bca 100644 --- a/sdk/nodejs/provider.ts +++ b/sdk/nodejs/provider.ts @@ -73,19 +73,19 @@ export interface ProviderArgs { /** * API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable. */ - apiKey?: pulumi.Input; + apiKey?: pulumi.Input; /** * Base URL of the Dokploy instance, for example `https://dokploy.example.com`. A trailing `/api` is optional. May also be set with the `DOKPLOY_HOST` environment variable. */ - host?: pulumi.Input; + host?: pulumi.Input; /** * Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`. */ - insecureSkipVerify?: pulumi.Input; + insecureSkipVerify?: pulumi.Input; /** * Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable. */ - timeoutSeconds?: pulumi.Input; + timeoutSeconds?: pulumi.Input; } export namespace Provider { diff --git a/sdk/nodejs/redirect.ts b/sdk/nodejs/redirect.ts index 295c98d..a7fb726 100644 --- a/sdk/nodejs/redirect.ts +++ b/sdk/nodejs/redirect.ts @@ -4,6 +4,9 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A Traefik redirect rule attached to an application. + */ export class Redirect extends pulumi.CustomResource { /** * Get an existing Redirect resource's state with the given name, ID, and optional extra @@ -100,23 +103,23 @@ export interface RedirectState { /** * Application this redirect belongs to. */ - applicationId?: pulumi.Input; + applicationId?: pulumi.Input; /** * RFC 3339 timestamp of when the redirect was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Issue a permanent (301) redirect instead of a temporary (302) one. */ - permanent?: pulumi.Input; + permanent?: pulumi.Input; /** * Regular expression matched against the incoming URL. */ - regex?: pulumi.Input; + regex?: pulumi.Input; /** * Replacement URL, which may reference capture groups such as `${1}`. */ - replacement?: pulumi.Input; + replacement?: pulumi.Input; } /** @@ -130,7 +133,7 @@ export interface RedirectArgs { /** * Issue a permanent (301) redirect instead of a temporary (302) one. */ - permanent?: pulumi.Input; + permanent?: pulumi.Input; /** * Regular expression matched against the incoming URL. */ diff --git a/sdk/nodejs/redis.ts b/sdk/nodejs/redis.ts index 29fbdf3..bbee258 100644 --- a/sdk/nodejs/redis.ts +++ b/sdk/nodejs/redis.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A managed Redis instance running on Dokploy. + * + * > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + * + * > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + */ export class Redis extends pulumi.CustomResource { /** * Get an existing Redis resource's state with the given name, ID, and optional extra @@ -258,127 +265,127 @@ export interface RedisState { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Current status reported by Dokploy: `idle`, `running`, `done` or `error`. */ - applicationStatus?: pulumi.Input; + applicationStatus?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * RFC 3339 timestamp of when the database was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Password used to authenticate to Redis. */ - databasePassword?: pulumi.Input; + databasePassword?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * Redis image to run, for example `redis:7`. */ - dockerImage?: pulumi.Input; + dockerImage?: pulumi.Input; /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ - environmentId?: pulumi.Input; + environmentId?: pulumi.Input; /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } /** @@ -388,23 +395,23 @@ export interface RedisArgs { /** * Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. */ - appName?: pulumi.Input; + appName?: pulumi.Input; /** * Arguments appended to the container command. */ - args?: pulumi.Input[]>; + args?: pulumi.Input[] | undefined>; /** * Override the container entrypoint command. */ - command?: pulumi.Input; + command?: pulumi.Input; /** * Hard CPU limit, for example `1`. */ - cpuLimit?: pulumi.Input; + cpuLimit?: pulumi.Input; /** * Soft CPU reservation, for example `0.5`. */ - cpuReservation?: pulumi.Input; + cpuReservation?: pulumi.Input; /** * Password used to authenticate to Redis. */ @@ -412,11 +419,11 @@ export interface RedisArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Detach the service from the shared `dokploy-network`. */ - detachDokployNetwork?: pulumi.Input; + detachDokployNetwork?: pulumi.Input; /** * Redis image to run, for example `redis:7`. */ @@ -424,11 +431,11 @@ export interface RedisArgs { /** * Docker Swarm endpoint specification, as a JSON object. */ - endpointSpecSwarm?: pulumi.Input; + endpointSpecSwarm?: pulumi.Input; /** * Environment variables in `KEY=value` format, one per line. */ - env?: pulumi.Input; + env?: pulumi.Input; /** * Environment this database belongs to. */ @@ -436,69 +443,69 @@ export interface RedisArgs { /** * Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. */ - externalPort?: pulumi.Input; + externalPort?: pulumi.Input; /** * Docker Swarm health check configuration, as a JSON object. */ - healthCheckSwarm?: pulumi.Input; + healthCheckSwarm?: pulumi.Input; /** * Docker Swarm service labels, as a JSON object. */ - labelsSwarm?: pulumi.Input; + labelsSwarm?: pulumi.Input; /** * Hard memory limit, for example `512m`. */ - memoryLimit?: pulumi.Input; + memoryLimit?: pulumi.Input; /** * Soft memory reservation, for example `256m`. */ - memoryReservation?: pulumi.Input; + memoryReservation?: pulumi.Input; /** * Docker Swarm service mode, as a JSON object. */ - modeSwarm?: pulumi.Input; + modeSwarm?: pulumi.Input; /** * Display name of the database. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * IDs of additional Docker networks to attach. */ - networkIds?: pulumi.Input[]>; + networkIds?: pulumi.Input[] | undefined>; /** * Docker Swarm network attachments, as a JSON array. */ - networkSwarm?: pulumi.Input; + networkSwarm?: pulumi.Input; /** * Docker Swarm placement constraints, as a JSON object. */ - placementSwarm?: pulumi.Input; + placementSwarm?: pulumi.Input; /** * Number of replicas to run. */ - replicas?: pulumi.Input; + replicas?: pulumi.Input; /** * Docker Swarm restart policy, as a JSON object. */ - restartPolicySwarm?: pulumi.Input; + restartPolicySwarm?: pulumi.Input; /** * Docker Swarm rollback configuration, as a JSON object. */ - rollbackConfigSwarm?: pulumi.Input; + rollbackConfigSwarm?: pulumi.Input; /** * Remote server to deploy on. Omit to use the Dokploy host itself. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Grace period in nanoseconds before a container is killed. */ - stopGracePeriodSwarm?: pulumi.Input; + stopGracePeriodSwarm?: pulumi.Input; /** * Docker Swarm ulimits, as a JSON object. */ - ulimitsSwarm?: pulumi.Input; + ulimitsSwarm?: pulumi.Input; /** * Docker Swarm rolling update configuration, as a JSON object. */ - updateConfigSwarm?: pulumi.Input; + updateConfigSwarm?: pulumi.Input; } diff --git a/sdk/nodejs/registry.ts b/sdk/nodejs/registry.ts index f394216..b3584e0 100644 --- a/sdk/nodejs/registry.ts +++ b/sdk/nodejs/registry.ts @@ -4,6 +4,9 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * A container registry that Dokploy pushes built images to and pulls them from. + */ export class Registry extends pulumi.CustomResource { /** * Get an existing Registry resource's state with the given name, ID, and optional extra @@ -123,35 +126,35 @@ export interface RegistryState { /** * RFC 3339 timestamp of when the registry was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Prefix prepended to pushed image names, for example an organization or namespace. */ - imagePrefix?: pulumi.Input; + imagePrefix?: pulumi.Input; /** * Password or access token used to authenticate. */ - password?: pulumi.Input; + password?: pulumi.Input; /** * Display name of the registry. */ - registryName?: pulumi.Input; + registryName?: pulumi.Input; /** * Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`. */ - registryType?: pulumi.Input; + registryType?: pulumi.Input; /** * Registry hostname, for example `ghcr.io`. */ - registryUrl?: pulumi.Input; + registryUrl?: pulumi.Input; /** * Server this registry is scoped to. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Username used to authenticate to the registry. */ - username?: pulumi.Input; + username?: pulumi.Input; } /** @@ -161,7 +164,7 @@ export interface RegistryArgs { /** * Prefix prepended to pushed image names, for example an organization or namespace. */ - imagePrefix?: pulumi.Input; + imagePrefix?: pulumi.Input; /** * Password or access token used to authenticate. */ @@ -173,7 +176,7 @@ export interface RegistryArgs { /** * Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`. */ - registryType?: pulumi.Input; + registryType?: pulumi.Input; /** * Registry hostname, for example `ghcr.io`. */ @@ -181,7 +184,7 @@ export interface RegistryArgs { /** * Server this registry is scoped to. */ - serverId?: pulumi.Input; + serverId?: pulumi.Input; /** * Username used to authenticate to the registry. */ diff --git a/sdk/nodejs/schedule.ts b/sdk/nodejs/schedule.ts new file mode 100644 index 0000000..8dca126 --- /dev/null +++ b/sdk/nodejs/schedule.ts @@ -0,0 +1,291 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * A cron job Dokploy runs on a schedule. + * + * `scheduleType` selects where the command runs: + * + * * `application` — inside a running application container; set `applicationId`. + * * `compose` — inside one service of a Compose stack; set `composeId` and `serviceName`. + * * `server` — on a remote server; set `serverId`. + * * `dokploy-server` — on the Dokploy host itself. + * + * > A schedule targeting an application runs inside its container, so the container has to be running when the cron fires. + */ +export class Schedule extends pulumi.CustomResource { + /** + * Get an existing Schedule resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: ScheduleState, opts?: pulumi.CustomResourceOptions): Schedule { + return new Schedule(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dokploy:index/schedule:Schedule'; + + /** + * Returns true if the given object is an instance of Schedule. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Schedule { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Schedule.__pulumiType; + } + + /** + * Docker service name the schedule targets. Derived by Dokploy when omitted. + */ + declare public readonly appName: pulumi.Output; + /** + * Application this schedule belongs to. + */ + declare public readonly applicationId: pulumi.Output; + /** + * Command to run. + */ + declare public readonly command: pulumi.Output; + /** + * Compose stack this schedule belongs to. + */ + declare public readonly composeId: pulumi.Output; + /** + * RFC 3339 timestamp of when the schedule was created. + */ + declare public /*out*/ readonly createdAt: pulumi.Output; + /** + * Standard five-field cron expression, for example `0 3 * * *`. + */ + declare public readonly cronExpression: pulumi.Output; + /** + * Free-form description. + */ + declare public readonly description: pulumi.Output; + /** + * Whether the schedule is active. + */ + declare public readonly enabled: pulumi.Output; + /** + * Display name of the schedule. + */ + declare public readonly name: pulumi.Output; + /** + * Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + */ + declare public readonly scheduleType: pulumi.Output; + /** + * Multi-line script to run instead of a single command. + */ + declare public readonly script: pulumi.Output; + /** + * Server this schedule runs on. + */ + declare public readonly serverId: pulumi.Output; + /** + * Service inside a Compose stack to run the command in. + */ + declare public readonly serviceName: pulumi.Output; + /** + * Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + */ + declare public readonly shellType: pulumi.Output; + /** + * IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + */ + declare public readonly timezone: pulumi.Output; + + /** + * Create a Schedule resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: ScheduleArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: ScheduleArgs | ScheduleState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as ScheduleState | undefined; + resourceInputs["appName"] = state?.appName; + resourceInputs["applicationId"] = state?.applicationId; + resourceInputs["command"] = state?.command; + resourceInputs["composeId"] = state?.composeId; + resourceInputs["createdAt"] = state?.createdAt; + resourceInputs["cronExpression"] = state?.cronExpression; + resourceInputs["description"] = state?.description; + resourceInputs["enabled"] = state?.enabled; + resourceInputs["name"] = state?.name; + resourceInputs["scheduleType"] = state?.scheduleType; + resourceInputs["script"] = state?.script; + resourceInputs["serverId"] = state?.serverId; + resourceInputs["serviceName"] = state?.serviceName; + resourceInputs["shellType"] = state?.shellType; + resourceInputs["timezone"] = state?.timezone; + } else { + const args = argsOrState as ScheduleArgs | undefined; + if (args?.command === undefined && !opts.urn) { + throw new Error("Missing required property 'command'"); + } + if (args?.cronExpression === undefined && !opts.urn) { + throw new Error("Missing required property 'cronExpression'"); + } + resourceInputs["appName"] = args?.appName; + resourceInputs["applicationId"] = args?.applicationId; + resourceInputs["command"] = args?.command; + resourceInputs["composeId"] = args?.composeId; + resourceInputs["cronExpression"] = args?.cronExpression; + resourceInputs["description"] = args?.description; + resourceInputs["enabled"] = args?.enabled; + resourceInputs["name"] = args?.name; + resourceInputs["scheduleType"] = args?.scheduleType; + resourceInputs["script"] = args?.script; + resourceInputs["serverId"] = args?.serverId; + resourceInputs["serviceName"] = args?.serviceName; + resourceInputs["shellType"] = args?.shellType; + resourceInputs["timezone"] = args?.timezone; + resourceInputs["createdAt"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Schedule.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Schedule resources. + */ +export interface ScheduleState { + /** + * Docker service name the schedule targets. Derived by Dokploy when omitted. + */ + appName?: pulumi.Input; + /** + * Application this schedule belongs to. + */ + applicationId?: pulumi.Input; + /** + * Command to run. + */ + command?: pulumi.Input; + /** + * Compose stack this schedule belongs to. + */ + composeId?: pulumi.Input; + /** + * RFC 3339 timestamp of when the schedule was created. + */ + createdAt?: pulumi.Input; + /** + * Standard five-field cron expression, for example `0 3 * * *`. + */ + cronExpression?: pulumi.Input; + /** + * Free-form description. + */ + description?: pulumi.Input; + /** + * Whether the schedule is active. + */ + enabled?: pulumi.Input; + /** + * Display name of the schedule. + */ + name?: pulumi.Input; + /** + * Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + */ + scheduleType?: pulumi.Input; + /** + * Multi-line script to run instead of a single command. + */ + script?: pulumi.Input; + /** + * Server this schedule runs on. + */ + serverId?: pulumi.Input; + /** + * Service inside a Compose stack to run the command in. + */ + serviceName?: pulumi.Input; + /** + * Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + */ + shellType?: pulumi.Input; + /** + * IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + */ + timezone?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Schedule resource. + */ +export interface ScheduleArgs { + /** + * Docker service name the schedule targets. Derived by Dokploy when omitted. + */ + appName?: pulumi.Input; + /** + * Application this schedule belongs to. + */ + applicationId?: pulumi.Input; + /** + * Command to run. + */ + command: pulumi.Input; + /** + * Compose stack this schedule belongs to. + */ + composeId?: pulumi.Input; + /** + * Standard five-field cron expression, for example `0 3 * * *`. + */ + cronExpression: pulumi.Input; + /** + * Free-form description. + */ + description?: pulumi.Input; + /** + * Whether the schedule is active. + */ + enabled?: pulumi.Input; + /** + * Display name of the schedule. + */ + name?: pulumi.Input; + /** + * Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + */ + scheduleType?: pulumi.Input; + /** + * Multi-line script to run instead of a single command. + */ + script?: pulumi.Input; + /** + * Server this schedule runs on. + */ + serverId?: pulumi.Input; + /** + * Service inside a Compose stack to run the command in. + */ + serviceName?: pulumi.Input; + /** + * Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + */ + shellType?: pulumi.Input; + /** + * IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + */ + timezone?: pulumi.Input; +} diff --git a/sdk/nodejs/security.ts b/sdk/nodejs/security.ts index 7bf5d41..b64e6d3 100644 --- a/sdk/nodejs/security.ts +++ b/sdk/nodejs/security.ts @@ -4,6 +4,11 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * HTTP basic authentication credentials protecting an application's domains. + * + * > Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured. + */ export class Security extends pulumi.CustomResource { /** * Get an existing Security resource's state with the given name, ID, and optional extra @@ -96,19 +101,19 @@ export interface SecurityState { /** * Application these credentials protect. */ - applicationId?: pulumi.Input; + applicationId?: pulumi.Input; /** * RFC 3339 timestamp of when the credentials were created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Basic auth password. */ - password?: pulumi.Input; + password?: pulumi.Input; /** * Basic auth username. */ - username?: pulumi.Input; + username?: pulumi.Input; } /** diff --git a/sdk/nodejs/sshKey.ts b/sdk/nodejs/sshKey.ts index 7765665..7c2f62a 100644 --- a/sdk/nodejs/sshKey.ts +++ b/sdk/nodejs/sshKey.ts @@ -4,6 +4,13 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; +/** + * An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers. + * + * > The private key is stored in Terraform state. Use a state backend with encryption at rest. + * + * > Dokploy's update endpoint only accepts `name` and `description`. Changing either key forces a new resource. + */ export class SshKey extends pulumi.CustomResource { /** * Get an existing SshKey resource's state with the given name, ID, and optional extra @@ -105,27 +112,27 @@ export interface SshKeyState { /** * RFC 3339 timestamp of when the key was created. */ - createdAt?: pulumi.Input; + createdAt?: pulumi.Input; /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * RFC 3339 timestamp of when the key was last used, if ever. */ - lastUsedAt?: pulumi.Input; + lastUsedAt?: pulumi.Input; /** * Display name of the key pair. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * PEM-encoded private key. */ - privateKey?: pulumi.Input; + privateKey?: pulumi.Input; /** * OpenSSH-formatted public key. */ - publicKey?: pulumi.Input; + publicKey?: pulumi.Input; } /** @@ -135,11 +142,11 @@ export interface SshKeyArgs { /** * Free-form description. */ - description?: pulumi.Input; + description?: pulumi.Input; /** * Display name of the key pair. */ - name?: pulumi.Input; + name?: pulumi.Input; /** * PEM-encoded private key. */ diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index d682cf1..7c608c9 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -1,16 +1,22 @@ { "compilerOptions": { + // Output "outDir": "bin", - "target": "ES2020", - "module": "commonjs", - "moduleResolution": "node", "declaration": true, + "declarationMap": true, "sourceMap": true, "stripInternal": true, - "experimentalDecorators": true, + // Environment + "target": "ES2022", + "module": "nodenext", + "moduleResolution": "nodenext", + "moduleDetection": "force", + "types": ["node"], + // Type Checking + "strict": true, "noFallthroughCasesInSwitch": true, - "forceConsistentCasingInFileNames": true, - "strict": true + "noImplicitReturns": true, + "skipLibCheck": true }, "files": [ "application.ts", @@ -19,6 +25,7 @@ "config/index.ts", "config/vars.ts", "destination.ts", + "dnsProvider.ts", "domain.ts", "environment.ts", "getApplication.ts", @@ -27,10 +34,12 @@ "getProjects.ts", "getServers.ts", "index.ts", + "libsql.ts", "mariaDb.ts", "mongo.ts", "mount.ts", "mySql.ts", + "network.ts", "port.ts", "postgres.ts", "project.ts", @@ -38,11 +47,14 @@ "redirect.ts", "redis.ts", "registry.ts", + "schedule.ts", "security.ts", "sshKey.ts", "types/index.ts", "types/input.ts", "types/output.ts", - "utilities.ts" + "utilities.ts", + "vaultProvider.ts", + "volumeBackup.ts" ] } diff --git a/sdk/nodejs/vaultProvider.ts b/sdk/nodejs/vaultProvider.ts new file mode 100644 index 0000000..64f4316 --- /dev/null +++ b/sdk/nodejs/vaultProvider.ts @@ -0,0 +1,154 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * An external secret manager Dokploy resolves environment variables from at deploy time. + * + * Reference a secret from any `env` value with `${{vault..}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change. + * + * Supported `providerType` values: `hashicorp` (Vault/OpenBao), `infisical`, `aws` (Secrets Manager), `doppler`, `azure` (Key Vault) and `scaleway`. + */ +export class VaultProvider extends pulumi.CustomResource { + /** + * Get an existing VaultProvider resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: VaultProviderState, opts?: pulumi.CustomResourceOptions): VaultProvider { + return new VaultProvider(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dokploy:index/vaultProvider:VaultProvider'; + + /** + * Returns true if the given object is an instance of VaultProvider. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is VaultProvider { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === VaultProvider.__pulumiType; + } + + /** + * JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + */ + declare public readonly assignments: pulumi.Output; + /** + * Provider credentials as a JSON object, including the `providerType` discriminator. + */ + declare public readonly config: pulumi.Output; + /** + * RFC 3339 timestamp of when the connection was created. + */ + declare public /*out*/ readonly createdAt: pulumi.Output; + /** + * Name of the connection, unique within the organization. + */ + declare public readonly name: pulumi.Output; + /** + * Organization that owns the connection. + */ + declare public /*out*/ readonly organizationId: pulumi.Output; + /** + * Provider kind derived from `config`. + */ + declare public /*out*/ readonly providerType: pulumi.Output; + + /** + * Create a VaultProvider resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: VaultProviderArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: VaultProviderArgs | VaultProviderState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as VaultProviderState | undefined; + resourceInputs["assignments"] = state?.assignments; + resourceInputs["config"] = state?.config; + resourceInputs["createdAt"] = state?.createdAt; + resourceInputs["name"] = state?.name; + resourceInputs["organizationId"] = state?.organizationId; + resourceInputs["providerType"] = state?.providerType; + } else { + const args = argsOrState as VaultProviderArgs | undefined; + if (args?.assignments === undefined && !opts.urn) { + throw new Error("Missing required property 'assignments'"); + } + if (args?.config === undefined && !opts.urn) { + throw new Error("Missing required property 'config'"); + } + resourceInputs["assignments"] = args?.assignments; + resourceInputs["config"] = args?.config ? pulumi.secret(args.config) : undefined; + resourceInputs["name"] = args?.name; + resourceInputs["createdAt"] = undefined /*out*/; + resourceInputs["organizationId"] = undefined /*out*/; + resourceInputs["providerType"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["config"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(VaultProvider.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering VaultProvider resources. + */ +export interface VaultProviderState { + /** + * JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + */ + assignments?: pulumi.Input; + /** + * Provider credentials as a JSON object, including the `providerType` discriminator. + */ + config?: pulumi.Input; + /** + * RFC 3339 timestamp of when the connection was created. + */ + createdAt?: pulumi.Input; + /** + * Name of the connection, unique within the organization. + */ + name?: pulumi.Input; + /** + * Organization that owns the connection. + */ + organizationId?: pulumi.Input; + /** + * Provider kind derived from `config`. + */ + providerType?: pulumi.Input; +} + +/** + * The set of arguments for constructing a VaultProvider resource. + */ +export interface VaultProviderArgs { + /** + * JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + */ + assignments: pulumi.Input; + /** + * Provider credentials as a JSON object, including the `providerType` discriminator. + */ + config: pulumi.Input; + /** + * Name of the connection, unique within the organization. + */ + name?: pulumi.Input; +} diff --git a/sdk/nodejs/volumeBackup.ts b/sdk/nodejs/volumeBackup.ts new file mode 100644 index 0000000..c2a3caa --- /dev/null +++ b/sdk/nodejs/volumeBackup.ts @@ -0,0 +1,362 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * A scheduled backup of a Docker volume to a configured `dokploy.Destination`. + * + * This is the counterpart to a `dokploy.Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule. + * + * Set exactly one of the `*_id` attributes to say which service owns the volume. + */ +export class VolumeBackup extends pulumi.CustomResource { + /** + * Get an existing VolumeBackup resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: VolumeBackupState, opts?: pulumi.CustomResourceOptions): VolumeBackup { + return new VolumeBackup(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dokploy:index/volumeBackup:VolumeBackup'; + + /** + * Returns true if the given object is an instance of VolumeBackup. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is VolumeBackup { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === VolumeBackup.__pulumiType; + } + + /** + * Docker service name that owns the volume. Derived by Dokploy when omitted. + */ + declare public readonly appName: pulumi.Output; + /** + * Application that owns the volume. + */ + declare public readonly applicationId: pulumi.Output; + /** + * Compose stack that owns the volume. + */ + declare public readonly composeId: pulumi.Output; + /** + * RFC 3339 timestamp of when the backup job was created. + */ + declare public /*out*/ readonly createdAt: pulumi.Output; + /** + * Standard five-field cron expression, for example `0 4 * * *`. + */ + declare public readonly cronExpression: pulumi.Output; + /** + * Backup destination (S3-compatible bucket) to upload to. + */ + declare public readonly destinationId: pulumi.Output; + /** + * Whether the backup schedule is active. + */ + declare public readonly enabled: pulumi.Output; + /** + * Number of backups to retain. Older ones are pruned. + */ + declare public readonly keepLatestCount: pulumi.Output; + /** + * libSQL instance that owns the volume. + */ + declare public readonly libsqlId: pulumi.Output; + /** + * MariaDB instance that owns the volume. + */ + declare public readonly mariadbId: pulumi.Output; + /** + * MongoDB instance that owns the volume. + */ + declare public readonly mongoId: pulumi.Output; + /** + * MySQL instance that owns the volume. + */ + declare public readonly mysqlId: pulumi.Output; + /** + * Display name of the backup job. + */ + declare public readonly name: pulumi.Output; + /** + * PostgreSQL instance that owns the volume. + */ + declare public readonly postgresId: pulumi.Output; + /** + * Path prefix inside the destination bucket, for example `backups/shop/`. + */ + declare public readonly prefix: pulumi.Output; + /** + * Redis instance that owns the volume. + */ + declare public readonly redisId: pulumi.Output; + /** + * Service inside a Compose stack that owns the volume. + */ + declare public readonly serviceName: pulumi.Output; + /** + * The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + */ + declare public readonly serviceType: pulumi.Output; + /** + * Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + */ + declare public readonly turnOff: pulumi.Output; + /** + * Name of the Docker volume to back up. + */ + declare public readonly volumeName: pulumi.Output; + + /** + * Create a VolumeBackup resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: VolumeBackupArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: VolumeBackupArgs | VolumeBackupState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as VolumeBackupState | undefined; + resourceInputs["appName"] = state?.appName; + resourceInputs["applicationId"] = state?.applicationId; + resourceInputs["composeId"] = state?.composeId; + resourceInputs["createdAt"] = state?.createdAt; + resourceInputs["cronExpression"] = state?.cronExpression; + resourceInputs["destinationId"] = state?.destinationId; + resourceInputs["enabled"] = state?.enabled; + resourceInputs["keepLatestCount"] = state?.keepLatestCount; + resourceInputs["libsqlId"] = state?.libsqlId; + resourceInputs["mariadbId"] = state?.mariadbId; + resourceInputs["mongoId"] = state?.mongoId; + resourceInputs["mysqlId"] = state?.mysqlId; + resourceInputs["name"] = state?.name; + resourceInputs["postgresId"] = state?.postgresId; + resourceInputs["prefix"] = state?.prefix; + resourceInputs["redisId"] = state?.redisId; + resourceInputs["serviceName"] = state?.serviceName; + resourceInputs["serviceType"] = state?.serviceType; + resourceInputs["turnOff"] = state?.turnOff; + resourceInputs["volumeName"] = state?.volumeName; + } else { + const args = argsOrState as VolumeBackupArgs | undefined; + if (args?.cronExpression === undefined && !opts.urn) { + throw new Error("Missing required property 'cronExpression'"); + } + if (args?.destinationId === undefined && !opts.urn) { + throw new Error("Missing required property 'destinationId'"); + } + if (args?.prefix === undefined && !opts.urn) { + throw new Error("Missing required property 'prefix'"); + } + if (args?.volumeName === undefined && !opts.urn) { + throw new Error("Missing required property 'volumeName'"); + } + resourceInputs["appName"] = args?.appName; + resourceInputs["applicationId"] = args?.applicationId; + resourceInputs["composeId"] = args?.composeId; + resourceInputs["cronExpression"] = args?.cronExpression; + resourceInputs["destinationId"] = args?.destinationId; + resourceInputs["enabled"] = args?.enabled; + resourceInputs["keepLatestCount"] = args?.keepLatestCount; + resourceInputs["libsqlId"] = args?.libsqlId; + resourceInputs["mariadbId"] = args?.mariadbId; + resourceInputs["mongoId"] = args?.mongoId; + resourceInputs["mysqlId"] = args?.mysqlId; + resourceInputs["name"] = args?.name; + resourceInputs["postgresId"] = args?.postgresId; + resourceInputs["prefix"] = args?.prefix; + resourceInputs["redisId"] = args?.redisId; + resourceInputs["serviceName"] = args?.serviceName; + resourceInputs["serviceType"] = args?.serviceType; + resourceInputs["turnOff"] = args?.turnOff; + resourceInputs["volumeName"] = args?.volumeName; + resourceInputs["createdAt"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(VolumeBackup.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering VolumeBackup resources. + */ +export interface VolumeBackupState { + /** + * Docker service name that owns the volume. Derived by Dokploy when omitted. + */ + appName?: pulumi.Input; + /** + * Application that owns the volume. + */ + applicationId?: pulumi.Input; + /** + * Compose stack that owns the volume. + */ + composeId?: pulumi.Input; + /** + * RFC 3339 timestamp of when the backup job was created. + */ + createdAt?: pulumi.Input; + /** + * Standard five-field cron expression, for example `0 4 * * *`. + */ + cronExpression?: pulumi.Input; + /** + * Backup destination (S3-compatible bucket) to upload to. + */ + destinationId?: pulumi.Input; + /** + * Whether the backup schedule is active. + */ + enabled?: pulumi.Input; + /** + * Number of backups to retain. Older ones are pruned. + */ + keepLatestCount?: pulumi.Input; + /** + * libSQL instance that owns the volume. + */ + libsqlId?: pulumi.Input; + /** + * MariaDB instance that owns the volume. + */ + mariadbId?: pulumi.Input; + /** + * MongoDB instance that owns the volume. + */ + mongoId?: pulumi.Input; + /** + * MySQL instance that owns the volume. + */ + mysqlId?: pulumi.Input; + /** + * Display name of the backup job. + */ + name?: pulumi.Input; + /** + * PostgreSQL instance that owns the volume. + */ + postgresId?: pulumi.Input; + /** + * Path prefix inside the destination bucket, for example `backups/shop/`. + */ + prefix?: pulumi.Input; + /** + * Redis instance that owns the volume. + */ + redisId?: pulumi.Input; + /** + * Service inside a Compose stack that owns the volume. + */ + serviceName?: pulumi.Input; + /** + * The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + */ + serviceType?: pulumi.Input; + /** + * Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + */ + turnOff?: pulumi.Input; + /** + * Name of the Docker volume to back up. + */ + volumeName?: pulumi.Input; +} + +/** + * The set of arguments for constructing a VolumeBackup resource. + */ +export interface VolumeBackupArgs { + /** + * Docker service name that owns the volume. Derived by Dokploy when omitted. + */ + appName?: pulumi.Input; + /** + * Application that owns the volume. + */ + applicationId?: pulumi.Input; + /** + * Compose stack that owns the volume. + */ + composeId?: pulumi.Input; + /** + * Standard five-field cron expression, for example `0 4 * * *`. + */ + cronExpression: pulumi.Input; + /** + * Backup destination (S3-compatible bucket) to upload to. + */ + destinationId: pulumi.Input; + /** + * Whether the backup schedule is active. + */ + enabled?: pulumi.Input; + /** + * Number of backups to retain. Older ones are pruned. + */ + keepLatestCount?: pulumi.Input; + /** + * libSQL instance that owns the volume. + */ + libsqlId?: pulumi.Input; + /** + * MariaDB instance that owns the volume. + */ + mariadbId?: pulumi.Input; + /** + * MongoDB instance that owns the volume. + */ + mongoId?: pulumi.Input; + /** + * MySQL instance that owns the volume. + */ + mysqlId?: pulumi.Input; + /** + * Display name of the backup job. + */ + name?: pulumi.Input; + /** + * PostgreSQL instance that owns the volume. + */ + postgresId?: pulumi.Input; + /** + * Path prefix inside the destination bucket, for example `backups/shop/`. + */ + prefix: pulumi.Input; + /** + * Redis instance that owns the volume. + */ + redisId?: pulumi.Input; + /** + * Service inside a Compose stack that owns the volume. + */ + serviceName?: pulumi.Input; + /** + * The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + */ + serviceType?: pulumi.Input; + /** + * Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + */ + turnOff?: pulumi.Input; + /** + * Name of the Docker volume to back up. + */ + volumeName: pulumi.Input; +} diff --git a/sdk/python/pulumi_dokploy/__init__.py b/sdk/python/pulumi_dokploy/__init__.py index db9b51c..d5b05c6 100644 --- a/sdk/python/pulumi_dokploy/__init__.py +++ b/sdk/python/pulumi_dokploy/__init__.py @@ -10,6 +10,7 @@ from .application import * from .certificate import * from .compose import * from .destination import * +from .dns_provider import * from .domain import * from .environment import * from .get_application import * @@ -17,10 +18,12 @@ from .get_environment import * from .get_project import * from .get_projects import * from .get_servers import * +from .libsql import * from .maria_db import * from .mongo import * from .mount import * from .my_sql import * +from .network import * from .port import * from .postgres import * from .project import * @@ -28,8 +31,11 @@ from .provider import * from .redirect import * from .redis import * from .registry import * +from .schedule import * from .security import * from .ssh_key import * +from .vault_provider import * +from .volume_backup import * from . import outputs # Make subpackages available: @@ -74,6 +80,14 @@ _utilities.register( "dokploy:index/destination:Destination": "Destination" } }, + { + "pkg": "dokploy", + "mod": "index/dnsProvider", + "fqn": "pulumi_dokploy", + "classes": { + "dokploy:index/dnsProvider:DnsProvider": "DnsProvider" + } + }, { "pkg": "dokploy", "mod": "index/domain", @@ -90,6 +104,14 @@ _utilities.register( "dokploy:index/environment:Environment": "Environment" } }, + { + "pkg": "dokploy", + "mod": "index/libsql", + "fqn": "pulumi_dokploy", + "classes": { + "dokploy:index/libsql:Libsql": "Libsql" + } + }, { "pkg": "dokploy", "mod": "index/mariaDb", @@ -122,6 +144,14 @@ _utilities.register( "dokploy:index/mySql:MySql": "MySql" } }, + { + "pkg": "dokploy", + "mod": "index/network", + "fqn": "pulumi_dokploy", + "classes": { + "dokploy:index/network:Network": "Network" + } + }, { "pkg": "dokploy", "mod": "index/port", @@ -170,6 +200,14 @@ _utilities.register( "dokploy:index/registry:Registry": "Registry" } }, + { + "pkg": "dokploy", + "mod": "index/schedule", + "fqn": "pulumi_dokploy", + "classes": { + "dokploy:index/schedule:Schedule": "Schedule" + } + }, { "pkg": "dokploy", "mod": "index/security", @@ -185,6 +223,22 @@ _utilities.register( "classes": { "dokploy:index/sshKey:SshKey": "SshKey" } + }, + { + "pkg": "dokploy", + "mod": "index/vaultProvider", + "fqn": "pulumi_dokploy", + "classes": { + "dokploy:index/vaultProvider:VaultProvider": "VaultProvider" + } + }, + { + "pkg": "dokploy", + "mod": "index/volumeBackup", + "fqn": "pulumi_dokploy", + "classes": { + "dokploy:index/volumeBackup:VolumeBackup": "VolumeBackup" + } } ] """, diff --git a/sdk/python/pulumi_dokploy/_utilities.py b/sdk/python/pulumi_dokploy/_utilities.py index 9976fff..a9b1d89 100644 --- a/sdk/python/pulumi_dokploy/_utilities.py +++ b/sdk/python/pulumi_dokploy/_utilities.py @@ -13,12 +13,10 @@ import os import sys import typing import warnings -import base64 import pulumi import pulumi.runtime from pulumi.runtime.sync_await import _sync_await -from pulumi.runtime.proto import resource_pb2 from semver import VersionInfo as SemverVersion from parver import Version as PEP440Version diff --git a/sdk/python/pulumi_dokploy/application.py b/sdk/python/pulumi_dokploy/application.py index 942520a..037d330 100644 --- a/sdk/python/pulumi_dokploy/application.py +++ b/sdk/python/pulumi_dokploy/application.py @@ -20,99 +20,101 @@ __all__ = ['ApplicationArgs', 'Application'] class ApplicationArgs: def __init__(__self__, *, environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_build_path: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - build_args: Optional[pulumi.Input[_builtins.str]] = None, - build_path: Optional[pulumi.Input[_builtins.str]] = None, - build_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - build_server_id: Optional[pulumi.Input[_builtins.str]] = None, - build_type: Optional[pulumi.Input[_builtins.str]] = None, - clean_cache: Optional[pulumi.Input[_builtins.bool]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - create_env_file: Optional[pulumi.Input[_builtins.bool]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_build_path: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_build_stage: Optional[pulumi.Input[_builtins.str]] = None, - docker_context_path: Optional[pulumi.Input[_builtins.str]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - dockerfile: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - enabled: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - heroku_version: Optional[pulumi.Input[_builtins.str]] = None, - is_preview_deployments_active: Optional[pulumi.Input[_builtins.bool]] = None, - is_static_spa: Optional[pulumi.Input[_builtins.bool]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_args: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - preview_certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - preview_custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - preview_env: Optional[pulumi.Input[_builtins.str]] = None, - preview_https: Optional[pulumi.Input[_builtins.bool]] = None, - preview_labels: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - preview_limit: Optional[pulumi.Input[_builtins.int]] = None, - preview_path: Optional[pulumi.Input[_builtins.str]] = None, - preview_port: Optional[pulumi.Input[_builtins.int]] = None, - preview_wildcard: Optional[pulumi.Input[_builtins.str]] = None, - publish_directory: Optional[pulumi.Input[_builtins.str]] = None, - railpack_version: Optional[pulumi.Input[_builtins.str]] = None, - registry_id: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_active: Optional[pulumi.Input[_builtins.bool]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - subtitle: Optional[pulumi.Input[_builtins.str]] = None, - title: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_build_path: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + build_args: pulumi.Input[Optional[_builtins.str]] = None, + build_path: pulumi.Input[Optional[_builtins.str]] = None, + build_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + build_server_id: pulumi.Input[Optional[_builtins.str]] = None, + build_type: pulumi.Input[Optional[_builtins.str]] = None, + clean_cache: pulumi.Input[Optional[_builtins.bool]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_build_path: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_build_stage: pulumi.Input[Optional[_builtins.str]] = None, + docker_context_path: pulumi.Input[Optional[_builtins.str]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + dockerfile: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + heroku_version: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + is_preview_deployments_active: pulumi.Input[Optional[_builtins.bool]] = None, + is_static_spa: pulumi.Input[Optional[_builtins.bool]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_args: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + preview_certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + preview_custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + preview_env: pulumi.Input[Optional[_builtins.str]] = None, + preview_https: pulumi.Input[Optional[_builtins.bool]] = None, + preview_labels: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + preview_limit: pulumi.Input[Optional[_builtins.int]] = None, + preview_path: pulumi.Input[Optional[_builtins.str]] = None, + preview_port: pulumi.Input[Optional[_builtins.int]] = None, + preview_require_collaborator_permissions: pulumi.Input[Optional[_builtins.bool]] = None, + preview_wildcard: pulumi.Input[Optional[_builtins.str]] = None, + publish_directory: pulumi.Input[Optional[_builtins.str]] = None, + railpack_version: pulumi.Input[Optional[_builtins.str]] = None, + registry_id: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_active: pulumi.Input[Optional[_builtins.bool]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + subtitle: pulumi.Input[Optional[_builtins.str]] = None, + title: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None): """ The set of arguments for constructing a Application resource. @@ -167,6 +169,7 @@ class ApplicationArgs: :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. :param pulumi.Input[_builtins.str] heroku_version: Heroku buildpack stack version. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the service in the Dokploy UI. :param pulumi.Input[_builtins.bool] is_preview_deployments_active: Build a preview deployment for each pull request. :param pulumi.Input[_builtins.bool] is_static_spa: Serve a static build as a single-page application. :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. @@ -189,6 +192,7 @@ class ApplicationArgs: :param pulumi.Input[_builtins.int] preview_limit: Maximum number of concurrent preview deployments. :param pulumi.Input[_builtins.str] preview_path: Base path for preview deployments. :param pulumi.Input[_builtins.int] preview_port: Container port exposed by preview deployments. + :param pulumi.Input[_builtins.bool] preview_require_collaborator_permissions: Only build previews for pull requests opened by users with repository collaborator permissions. :param pulumi.Input[_builtins.str] preview_wildcard: Wildcard domain used to expose preview deployments. :param pulumi.Input[_builtins.str] publish_directory: Directory served when `build_type` is `static`. :param pulumi.Input[_builtins.str] railpack_version: Railpack version. @@ -312,6 +316,8 @@ class ApplicationArgs: pulumi.set(__self__, "health_check_swarm", health_check_swarm) if heroku_version is not None: pulumi.set(__self__, "heroku_version", heroku_version) + if icon is not None: + pulumi.set(__self__, "icon", icon) if is_preview_deployments_active is not None: pulumi.set(__self__, "is_preview_deployments_active", is_preview_deployments_active) if is_static_spa is not None: @@ -356,6 +362,8 @@ class ApplicationArgs: pulumi.set(__self__, "preview_path", preview_path) if preview_port is not None: pulumi.set(__self__, "preview_port", preview_port) + if preview_require_collaborator_permissions is not None: + pulumi.set(__self__, "preview_require_collaborator_permissions", preview_require_collaborator_permissions) if preview_wildcard is not None: pulumi.set(__self__, "preview_wildcard", preview_wildcard) if publish_directory is not None: @@ -413,1220 +421,1246 @@ class ApplicationArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter(name="autoDeploy") - def auto_deploy(self) -> Optional[pulumi.Input[_builtins.bool]]: + def auto_deploy(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Deploy automatically when the configured trigger fires. """ return pulumi.get(self, "auto_deploy") @auto_deploy.setter - def auto_deploy(self, value: Optional[pulumi.Input[_builtins.bool]]): + def auto_deploy(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "auto_deploy", value) @_builtins.property @pulumi.getter(name="bitbucketBranch") - def bitbucket_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket branch to build. """ return pulumi.get(self, "bitbucket_branch") @bitbucket_branch.setter - def bitbucket_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_branch", value) @_builtins.property @pulumi.getter(name="bitbucketBuildPath") - def bitbucket_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the Bitbucket repository to build from. """ return pulumi.get(self, "bitbucket_build_path") @bitbucket_build_path.setter - def bitbucket_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_build_path", value) @_builtins.property @pulumi.getter(name="bitbucketId") - def bitbucket_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Bitbucket provider connection. """ return pulumi.get(self, "bitbucket_id") @bitbucket_id.setter - def bitbucket_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_id", value) @_builtins.property @pulumi.getter(name="bitbucketOwner") - def bitbucket_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository owner. """ return pulumi.get(self, "bitbucket_owner") @bitbucket_owner.setter - def bitbucket_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_owner", value) @_builtins.property @pulumi.getter(name="bitbucketRepository") - def bitbucket_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository name. """ return pulumi.get(self, "bitbucket_repository") @bitbucket_repository.setter - def bitbucket_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository", value) @_builtins.property @pulumi.getter(name="bitbucketRepositorySlug") - def bitbucket_repository_slug(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository_slug(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository slug. """ return pulumi.get(self, "bitbucket_repository_slug") @bitbucket_repository_slug.setter - def bitbucket_repository_slug(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository_slug(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository_slug", value) @_builtins.property @pulumi.getter - def branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub branch to build. """ return pulumi.get(self, "branch") @branch.setter - def branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "branch", value) @_builtins.property @pulumi.getter(name="buildArgs") - def build_args(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_args(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker build arguments in `KEY=value` format, one per line. """ return pulumi.get(self, "build_args") @build_args.setter - def build_args(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_args(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_args", value) @_builtins.property @pulumi.getter(name="buildPath") - def build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the GitHub repository to build from. """ return pulumi.get(self, "build_path") @build_path.setter - def build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_path", value) @_builtins.property @pulumi.getter(name="buildRegistryId") - def build_registry_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_registry_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry used by a dedicated build server. """ return pulumi.get(self, "build_registry_id") @build_registry_id.setter - def build_registry_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_registry_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_registry_id", value) @_builtins.property @pulumi.getter(name="buildSecrets") - def build_secrets(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_secrets(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker build secrets in `KEY=value` format, one per line. """ return pulumi.get(self, "build_secrets") @build_secrets.setter - def build_secrets(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_secrets(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_secrets", value) @_builtins.property @pulumi.getter(name="buildServerId") - def build_server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server that performs builds, when separate from the deploy server. """ return pulumi.get(self, "build_server_id") @build_server_id.setter - def build_server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_server_id", value) @_builtins.property @pulumi.getter(name="buildType") - def build_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ How the application is built. Valid values: `dockerfile`, `heroku_buildpacks`, `paketo_buildpacks`, `nixpacks`, `static`, `railpack`. """ return pulumi.get(self, "build_type") @build_type.setter - def build_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_type", value) @_builtins.property @pulumi.getter(name="cleanCache") - def clean_cache(self) -> Optional[pulumi.Input[_builtins.bool]]: + def clean_cache(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Discard the build cache on the next deployment. """ return pulumi.get(self, "clean_cache") @clean_cache.setter - def clean_cache(self, value: Optional[pulumi.Input[_builtins.bool]]): + def clean_cache(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "clean_cache", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createEnvFile") - def create_env_file(self) -> Optional[pulumi.Input[_builtins.bool]]: + def create_env_file(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Write the environment variables to a `.env` file in the container. """ return pulumi.get(self, "create_env_file") @create_env_file.setter - def create_env_file(self, value: Optional[pulumi.Input[_builtins.bool]]): + def create_env_file(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "create_env_file", value) @_builtins.property @pulumi.getter(name="customGitBranch") - def custom_git_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Branch to build for a custom Git remote. """ return pulumi.get(self, "custom_git_branch") @custom_git_branch.setter - def custom_git_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_branch", value) @_builtins.property @pulumi.getter(name="customGitBuildPath") - def custom_git_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within a custom Git repository to build from. """ return pulumi.get(self, "custom_git_build_path") @custom_git_build_path.setter - def custom_git_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_build_path", value) @_builtins.property @pulumi.getter(name="customGitSshKeyId") - def custom_git_ssh_key_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_ssh_key_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ SSH key used to clone a private custom Git remote. """ return pulumi.get(self, "custom_git_ssh_key_id") @custom_git_ssh_key_id.setter - def custom_git_ssh_key_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_ssh_key_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_ssh_key_id", value) @_builtins.property @pulumi.getter(name="customGitUrl") - def custom_git_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Git remote URL, when `source_type` is `git`. """ return pulumi.get(self, "custom_git_url") @custom_git_url.setter - def custom_git_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_url", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerBuildStage") - def docker_build_stage(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_build_stage(self) -> pulumi.Input[Optional[_builtins.str]]: """ Target stage for a multi-stage Docker build. """ return pulumi.get(self, "docker_build_stage") @docker_build_stage.setter - def docker_build_stage(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_build_stage(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_build_stage", value) @_builtins.property @pulumi.getter(name="dockerContextPath") - def docker_context_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_context_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker build context path. """ return pulumi.get(self, "docker_context_path") @docker_context_path.setter - def docker_context_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_context_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_context_path", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker image reference, when `source_type` is `docker`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter - def dockerfile(self) -> Optional[pulumi.Input[_builtins.str]]: + def dockerfile(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path to the Dockerfile, when `build_type` is `dockerfile`. """ return pulumi.get(self, "dockerfile") @dockerfile.setter - def dockerfile(self, value: Optional[pulumi.Input[_builtins.str]]): + def dockerfile(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "dockerfile", value) @_builtins.property @pulumi.getter(name="enableSubmodules") - def enable_submodules(self) -> Optional[pulumi.Input[_builtins.bool]]: + def enable_submodules(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Clone Git submodules when checking out the repository. """ return pulumi.get(self, "enable_submodules") @enable_submodules.setter - def enable_submodules(self, value: Optional[pulumi.Input[_builtins.bool]]): + def enable_submodules(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "enable_submodules", value) @_builtins.property @pulumi.getter - def enabled(self) -> Optional[pulumi.Input[_builtins.bool]]: + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether the application is enabled. """ return pulumi.get(self, "enabled") @enabled.setter - def enabled(self, value: Optional[pulumi.Input[_builtins.bool]]): + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "enabled", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Runtime environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="giteaBranch") - def gitea_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea branch to build. """ return pulumi.get(self, "gitea_branch") @gitea_branch.setter - def gitea_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_branch", value) @_builtins.property @pulumi.getter(name="giteaBuildPath") - def gitea_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the Gitea repository to build from. """ return pulumi.get(self, "gitea_build_path") @gitea_build_path.setter - def gitea_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_build_path", value) @_builtins.property @pulumi.getter(name="giteaId") - def gitea_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Gitea provider connection. """ return pulumi.get(self, "gitea_id") @gitea_id.setter - def gitea_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_id", value) @_builtins.property @pulumi.getter(name="giteaOwner") - def gitea_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository owner. """ return pulumi.get(self, "gitea_owner") @gitea_owner.setter - def gitea_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_owner", value) @_builtins.property @pulumi.getter(name="giteaRepository") - def gitea_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository name. """ return pulumi.get(self, "gitea_repository") @gitea_repository.setter - def gitea_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_repository", value) @_builtins.property @pulumi.getter(name="githubId") - def github_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def github_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitHub provider connection. """ return pulumi.get(self, "github_id") @github_id.setter - def github_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def github_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "github_id", value) @_builtins.property @pulumi.getter(name="gitlabBranch") - def gitlab_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab branch to build. """ return pulumi.get(self, "gitlab_branch") @gitlab_branch.setter - def gitlab_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_branch", value) @_builtins.property @pulumi.getter(name="gitlabBuildPath") - def gitlab_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the GitLab repository to build from. """ return pulumi.get(self, "gitlab_build_path") @gitlab_build_path.setter - def gitlab_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_build_path", value) @_builtins.property @pulumi.getter(name="gitlabId") - def gitlab_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitLab provider connection. """ return pulumi.get(self, "gitlab_id") @gitlab_id.setter - def gitlab_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_id", value) @_builtins.property @pulumi.getter(name="gitlabOwner") - def gitlab_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository owner. """ return pulumi.get(self, "gitlab_owner") @gitlab_owner.setter - def gitlab_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_owner", value) @_builtins.property @pulumi.getter(name="gitlabPathNamespace") - def gitlab_path_namespace(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_path_namespace(self) -> pulumi.Input[Optional[_builtins.str]]: """ Full GitLab namespace path. """ return pulumi.get(self, "gitlab_path_namespace") @gitlab_path_namespace.setter - def gitlab_path_namespace(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_path_namespace(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_path_namespace", value) @_builtins.property @pulumi.getter(name="gitlabProjectId") - def gitlab_project_id(self) -> Optional[pulumi.Input[_builtins.int]]: + def gitlab_project_id(self) -> pulumi.Input[Optional[_builtins.int]]: """ Numeric GitLab project ID. """ return pulumi.get(self, "gitlab_project_id") @gitlab_project_id.setter - def gitlab_project_id(self, value: Optional[pulumi.Input[_builtins.int]]): + def gitlab_project_id(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "gitlab_project_id", value) @_builtins.property @pulumi.getter(name="gitlabRepository") - def gitlab_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository name. """ return pulumi.get(self, "gitlab_repository") @gitlab_repository.setter - def gitlab_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_repository", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="herokuVersion") - def heroku_version(self) -> Optional[pulumi.Input[_builtins.str]]: + def heroku_version(self) -> pulumi.Input[Optional[_builtins.str]]: """ Heroku buildpack stack version. """ return pulumi.get(self, "heroku_version") @heroku_version.setter - def heroku_version(self, value: Optional[pulumi.Input[_builtins.str]]): + def heroku_version(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "heroku_version", value) + @_builtins.property + @pulumi.getter + def icon(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Icon shown next to the service in the Dokploy UI. + """ + return pulumi.get(self, "icon") + + @icon.setter + def icon(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "icon", value) + @_builtins.property @pulumi.getter(name="isPreviewDeploymentsActive") - def is_preview_deployments_active(self) -> Optional[pulumi.Input[_builtins.bool]]: + def is_preview_deployments_active(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Build a preview deployment for each pull request. """ return pulumi.get(self, "is_preview_deployments_active") @is_preview_deployments_active.setter - def is_preview_deployments_active(self, value: Optional[pulumi.Input[_builtins.bool]]): + def is_preview_deployments_active(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "is_preview_deployments_active", value) @_builtins.property @pulumi.getter(name="isStaticSpa") - def is_static_spa(self) -> Optional[pulumi.Input[_builtins.bool]]: + def is_static_spa(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Serve a static build as a single-page application. """ return pulumi.get(self, "is_static_spa") @is_static_spa.setter - def is_static_spa(self, value: Optional[pulumi.Input[_builtins.bool]]): + def is_static_spa(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "is_static_spa", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the application. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter - def owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository owner. """ return pulumi.get(self, "owner") @owner.setter - def owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "owner", value) @_builtins.property @pulumi.getter - def password(self) -> Optional[pulumi.Input[_builtins.str]]: + def password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry password, when pulling a private image. """ return pulumi.get(self, "password") @password.setter - def password(self, value: Optional[pulumi.Input[_builtins.str]]): + def password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "password", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter(name="previewBuildArgs") - def preview_build_args(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_build_args(self) -> pulumi.Input[Optional[_builtins.str]]: """ Build arguments applied to preview deployments. """ return pulumi.get(self, "preview_build_args") @preview_build_args.setter - def preview_build_args(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_build_args(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_build_args", value) @_builtins.property @pulumi.getter(name="previewBuildSecrets") - def preview_build_secrets(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_build_secrets(self) -> pulumi.Input[Optional[_builtins.str]]: """ Build secrets applied to preview deployments. """ return pulumi.get(self, "preview_build_secrets") @preview_build_secrets.setter - def preview_build_secrets(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_build_secrets(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_build_secrets", value) @_builtins.property @pulumi.getter(name="previewCertificateType") - def preview_certificate_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_certificate_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Certificate strategy for preview deployments. Valid values: `letsencrypt`, `none`, `custom`. """ return pulumi.get(self, "preview_certificate_type") @preview_certificate_type.setter - def preview_certificate_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_certificate_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_certificate_type", value) @_builtins.property @pulumi.getter(name="previewCustomCertResolver") - def preview_custom_cert_resolver(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_custom_cert_resolver(self) -> pulumi.Input[Optional[_builtins.str]]: """ Traefik certificate resolver for preview deployments. """ return pulumi.get(self, "preview_custom_cert_resolver") @preview_custom_cert_resolver.setter - def preview_custom_cert_resolver(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_custom_cert_resolver(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_custom_cert_resolver", value) @_builtins.property @pulumi.getter(name="previewEnv") - def preview_env(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables applied to preview deployments. """ return pulumi.get(self, "preview_env") @preview_env.setter - def preview_env(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_env", value) @_builtins.property @pulumi.getter(name="previewHttps") - def preview_https(self) -> Optional[pulumi.Input[_builtins.bool]]: + def preview_https(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Serve preview deployments over HTTPS. """ return pulumi.get(self, "preview_https") @preview_https.setter - def preview_https(self, value: Optional[pulumi.Input[_builtins.bool]]): + def preview_https(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "preview_https", value) @_builtins.property @pulumi.getter(name="previewLabels") - def preview_labels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def preview_labels(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Pull request labels that opt into preview deployments. """ return pulumi.get(self, "preview_labels") @preview_labels.setter - def preview_labels(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def preview_labels(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "preview_labels", value) @_builtins.property @pulumi.getter(name="previewLimit") - def preview_limit(self) -> Optional[pulumi.Input[_builtins.int]]: + def preview_limit(self) -> pulumi.Input[Optional[_builtins.int]]: """ Maximum number of concurrent preview deployments. """ return pulumi.get(self, "preview_limit") @preview_limit.setter - def preview_limit(self, value: Optional[pulumi.Input[_builtins.int]]): + def preview_limit(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "preview_limit", value) @_builtins.property @pulumi.getter(name="previewPath") - def preview_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Base path for preview deployments. """ return pulumi.get(self, "preview_path") @preview_path.setter - def preview_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_path", value) @_builtins.property @pulumi.getter(name="previewPort") - def preview_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def preview_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Container port exposed by preview deployments. """ return pulumi.get(self, "preview_port") @preview_port.setter - def preview_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def preview_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "preview_port", value) + @_builtins.property + @pulumi.getter(name="previewRequireCollaboratorPermissions") + def preview_require_collaborator_permissions(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Only build previews for pull requests opened by users with repository collaborator permissions. + """ + return pulumi.get(self, "preview_require_collaborator_permissions") + + @preview_require_collaborator_permissions.setter + def preview_require_collaborator_permissions(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "preview_require_collaborator_permissions", value) + @_builtins.property @pulumi.getter(name="previewWildcard") - def preview_wildcard(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_wildcard(self) -> pulumi.Input[Optional[_builtins.str]]: """ Wildcard domain used to expose preview deployments. """ return pulumi.get(self, "preview_wildcard") @preview_wildcard.setter - def preview_wildcard(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_wildcard(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_wildcard", value) @_builtins.property @pulumi.getter(name="publishDirectory") - def publish_directory(self) -> Optional[pulumi.Input[_builtins.str]]: + def publish_directory(self) -> pulumi.Input[Optional[_builtins.str]]: """ Directory served when `build_type` is `static`. """ return pulumi.get(self, "publish_directory") @publish_directory.setter - def publish_directory(self, value: Optional[pulumi.Input[_builtins.str]]): + def publish_directory(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "publish_directory", value) @_builtins.property @pulumi.getter(name="railpackVersion") - def railpack_version(self) -> Optional[pulumi.Input[_builtins.str]]: + def railpack_version(self) -> pulumi.Input[Optional[_builtins.str]]: """ Railpack version. """ return pulumi.get(self, "railpack_version") @railpack_version.setter - def railpack_version(self, value: Optional[pulumi.Input[_builtins.str]]): + def railpack_version(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "railpack_version", value) @_builtins.property @pulumi.getter(name="registryId") - def registry_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry used to push the built image. """ return pulumi.get(self, "registry_id") @registry_id.setter - def registry_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_id", value) @_builtins.property @pulumi.getter(name="registryUrl") - def registry_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry URL, when pulling a private image. """ return pulumi.get(self, "registry_url") @registry_url.setter - def registry_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_url", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter - def repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository name. """ return pulumi.get(self, "repository") @repository.setter - def repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "repository", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackActive") - def rollback_active(self) -> Optional[pulumi.Input[_builtins.bool]]: + def rollback_active(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Keep previous images so deployments can be rolled back. """ return pulumi.get(self, "rollback_active") @rollback_active.setter - def rollback_active(self, value: Optional[pulumi.Input[_builtins.bool]]): + def rollback_active(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "rollback_active", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="rollbackRegistryId") - def rollback_registry_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_registry_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry used to store rollback images. """ return pulumi.get(self, "rollback_registry_id") @rollback_registry_id.setter - def rollback_registry_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_registry_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_registry_id", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="sourceType") - def source_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def source_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Where the application's code or image comes from. Valid values: `docker`, `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `drop`. """ return pulumi.get(self, "source_type") @source_type.setter - def source_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def source_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "source_type", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter - def subtitle(self) -> Optional[pulumi.Input[_builtins.str]]: + def subtitle(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display subtitle shown in the Dokploy UI. """ return pulumi.get(self, "subtitle") @subtitle.setter - def subtitle(self, value: Optional[pulumi.Input[_builtins.str]]): + def subtitle(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "subtitle", value) @_builtins.property @pulumi.getter - def title(self) -> Optional[pulumi.Input[_builtins.str]]: + def title(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display title shown in the Dokploy UI. """ return pulumi.get(self, "title") @title.setter - def title(self, value: Optional[pulumi.Input[_builtins.str]]): + def title(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "title", value) @_builtins.property @pulumi.getter(name="triggerType") - def trigger_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def trigger_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ What triggers an automatic GitHub deployment. Valid values: `push`, `tag`. """ return pulumi.get(self, "trigger_type") @trigger_type.setter - def trigger_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def trigger_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "trigger_type", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @_builtins.property @pulumi.getter - def username(self) -> Optional[pulumi.Input[_builtins.str]]: + def username(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry username, when pulling a private image. """ return pulumi.get(self, "username") @username.setter - def username(self, value: Optional[pulumi.Input[_builtins.str]]): + def username(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "username", value) @_builtins.property @pulumi.getter(name="watchPaths") - def watch_paths(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def watch_paths(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Glob patterns that limit which changed paths trigger an automatic deployment. """ return pulumi.get(self, "watch_paths") @watch_paths.setter - def watch_paths(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def watch_paths(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "watch_paths", value) @pulumi.input_type class _ApplicationState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_build_path: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - build_args: Optional[pulumi.Input[_builtins.str]] = None, - build_path: Optional[pulumi.Input[_builtins.str]] = None, - build_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - build_server_id: Optional[pulumi.Input[_builtins.str]] = None, - build_type: Optional[pulumi.Input[_builtins.str]] = None, - clean_cache: Optional[pulumi.Input[_builtins.bool]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - create_env_file: Optional[pulumi.Input[_builtins.bool]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_build_path: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_build_stage: Optional[pulumi.Input[_builtins.str]] = None, - docker_context_path: Optional[pulumi.Input[_builtins.str]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - dockerfile: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - enabled: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - heroku_version: Optional[pulumi.Input[_builtins.str]] = None, - is_preview_deployments_active: Optional[pulumi.Input[_builtins.bool]] = None, - is_static_spa: Optional[pulumi.Input[_builtins.bool]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_args: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - preview_certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - preview_custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - preview_env: Optional[pulumi.Input[_builtins.str]] = None, - preview_https: Optional[pulumi.Input[_builtins.bool]] = None, - preview_labels: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - preview_limit: Optional[pulumi.Input[_builtins.int]] = None, - preview_path: Optional[pulumi.Input[_builtins.str]] = None, - preview_port: Optional[pulumi.Input[_builtins.int]] = None, - preview_wildcard: Optional[pulumi.Input[_builtins.str]] = None, - publish_directory: Optional[pulumi.Input[_builtins.str]] = None, - railpack_version: Optional[pulumi.Input[_builtins.str]] = None, - registry_id: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_active: Optional[pulumi.Input[_builtins.bool]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - subtitle: Optional[pulumi.Input[_builtins.str]] = None, - title: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_build_path: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + build_args: pulumi.Input[Optional[_builtins.str]] = None, + build_path: pulumi.Input[Optional[_builtins.str]] = None, + build_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + build_server_id: pulumi.Input[Optional[_builtins.str]] = None, + build_type: pulumi.Input[Optional[_builtins.str]] = None, + clean_cache: pulumi.Input[Optional[_builtins.bool]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_build_path: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_build_stage: pulumi.Input[Optional[_builtins.str]] = None, + docker_context_path: pulumi.Input[Optional[_builtins.str]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + dockerfile: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + heroku_version: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + is_preview_deployments_active: pulumi.Input[Optional[_builtins.bool]] = None, + is_static_spa: pulumi.Input[Optional[_builtins.bool]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_args: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + preview_certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + preview_custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + preview_env: pulumi.Input[Optional[_builtins.str]] = None, + preview_https: pulumi.Input[Optional[_builtins.bool]] = None, + preview_labels: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + preview_limit: pulumi.Input[Optional[_builtins.int]] = None, + preview_path: pulumi.Input[Optional[_builtins.str]] = None, + preview_port: pulumi.Input[Optional[_builtins.int]] = None, + preview_require_collaborator_permissions: pulumi.Input[Optional[_builtins.bool]] = None, + preview_wildcard: pulumi.Input[Optional[_builtins.str]] = None, + publish_directory: pulumi.Input[Optional[_builtins.str]] = None, + railpack_version: pulumi.Input[Optional[_builtins.str]] = None, + registry_id: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_active: pulumi.Input[Optional[_builtins.bool]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + subtitle: pulumi.Input[Optional[_builtins.str]] = None, + title: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None): """ Input properties used for looking up and filtering Application resources. @@ -1683,6 +1717,7 @@ class _ApplicationState: :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. :param pulumi.Input[_builtins.str] heroku_version: Heroku buildpack stack version. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the service in the Dokploy UI. :param pulumi.Input[_builtins.bool] is_preview_deployments_active: Build a preview deployment for each pull request. :param pulumi.Input[_builtins.bool] is_static_spa: Serve a static build as a single-page application. :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. @@ -1705,6 +1740,7 @@ class _ApplicationState: :param pulumi.Input[_builtins.int] preview_limit: Maximum number of concurrent preview deployments. :param pulumi.Input[_builtins.str] preview_path: Base path for preview deployments. :param pulumi.Input[_builtins.int] preview_port: Container port exposed by preview deployments. + :param pulumi.Input[_builtins.bool] preview_require_collaborator_permissions: Only build previews for pull requests opened by users with repository collaborator permissions. :param pulumi.Input[_builtins.str] preview_wildcard: Wildcard domain used to expose preview deployments. :param pulumi.Input[_builtins.str] publish_directory: Directory served when `build_type` is `static`. :param pulumi.Input[_builtins.str] railpack_version: Railpack version. @@ -1833,6 +1869,8 @@ class _ApplicationState: pulumi.set(__self__, "health_check_swarm", health_check_swarm) if heroku_version is not None: pulumi.set(__self__, "heroku_version", heroku_version) + if icon is not None: + pulumi.set(__self__, "icon", icon) if is_preview_deployments_active is not None: pulumi.set(__self__, "is_preview_deployments_active", is_preview_deployments_active) if is_static_spa is not None: @@ -1877,6 +1915,8 @@ class _ApplicationState: pulumi.set(__self__, "preview_path", preview_path) if preview_port is not None: pulumi.set(__self__, "preview_port", preview_port) + if preview_require_collaborator_permissions is not None: + pulumi.set(__self__, "preview_require_collaborator_permissions", preview_require_collaborator_permissions) if preview_wildcard is not None: pulumi.set(__self__, "preview_wildcard", preview_wildcard) if publish_directory is not None: @@ -1922,1154 +1962,1178 @@ class _ApplicationState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="applicationStatus") - def application_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "application_status") @application_status.setter - def application_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_status", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter(name="autoDeploy") - def auto_deploy(self) -> Optional[pulumi.Input[_builtins.bool]]: + def auto_deploy(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Deploy automatically when the configured trigger fires. """ return pulumi.get(self, "auto_deploy") @auto_deploy.setter - def auto_deploy(self, value: Optional[pulumi.Input[_builtins.bool]]): + def auto_deploy(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "auto_deploy", value) @_builtins.property @pulumi.getter(name="bitbucketBranch") - def bitbucket_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket branch to build. """ return pulumi.get(self, "bitbucket_branch") @bitbucket_branch.setter - def bitbucket_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_branch", value) @_builtins.property @pulumi.getter(name="bitbucketBuildPath") - def bitbucket_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the Bitbucket repository to build from. """ return pulumi.get(self, "bitbucket_build_path") @bitbucket_build_path.setter - def bitbucket_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_build_path", value) @_builtins.property @pulumi.getter(name="bitbucketId") - def bitbucket_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Bitbucket provider connection. """ return pulumi.get(self, "bitbucket_id") @bitbucket_id.setter - def bitbucket_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_id", value) @_builtins.property @pulumi.getter(name="bitbucketOwner") - def bitbucket_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository owner. """ return pulumi.get(self, "bitbucket_owner") @bitbucket_owner.setter - def bitbucket_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_owner", value) @_builtins.property @pulumi.getter(name="bitbucketRepository") - def bitbucket_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository name. """ return pulumi.get(self, "bitbucket_repository") @bitbucket_repository.setter - def bitbucket_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository", value) @_builtins.property @pulumi.getter(name="bitbucketRepositorySlug") - def bitbucket_repository_slug(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository_slug(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository slug. """ return pulumi.get(self, "bitbucket_repository_slug") @bitbucket_repository_slug.setter - def bitbucket_repository_slug(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository_slug(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository_slug", value) @_builtins.property @pulumi.getter - def branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub branch to build. """ return pulumi.get(self, "branch") @branch.setter - def branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "branch", value) @_builtins.property @pulumi.getter(name="buildArgs") - def build_args(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_args(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker build arguments in `KEY=value` format, one per line. """ return pulumi.get(self, "build_args") @build_args.setter - def build_args(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_args(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_args", value) @_builtins.property @pulumi.getter(name="buildPath") - def build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the GitHub repository to build from. """ return pulumi.get(self, "build_path") @build_path.setter - def build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_path", value) @_builtins.property @pulumi.getter(name="buildRegistryId") - def build_registry_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_registry_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry used by a dedicated build server. """ return pulumi.get(self, "build_registry_id") @build_registry_id.setter - def build_registry_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_registry_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_registry_id", value) @_builtins.property @pulumi.getter(name="buildSecrets") - def build_secrets(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_secrets(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker build secrets in `KEY=value` format, one per line. """ return pulumi.get(self, "build_secrets") @build_secrets.setter - def build_secrets(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_secrets(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_secrets", value) @_builtins.property @pulumi.getter(name="buildServerId") - def build_server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server that performs builds, when separate from the deploy server. """ return pulumi.get(self, "build_server_id") @build_server_id.setter - def build_server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_server_id", value) @_builtins.property @pulumi.getter(name="buildType") - def build_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def build_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ How the application is built. Valid values: `dockerfile`, `heroku_buildpacks`, `paketo_buildpacks`, `nixpacks`, `static`, `railpack`. """ return pulumi.get(self, "build_type") @build_type.setter - def build_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def build_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "build_type", value) @_builtins.property @pulumi.getter(name="cleanCache") - def clean_cache(self) -> Optional[pulumi.Input[_builtins.bool]]: + def clean_cache(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Discard the build cache on the next deployment. """ return pulumi.get(self, "clean_cache") @clean_cache.setter - def clean_cache(self, value: Optional[pulumi.Input[_builtins.bool]]): + def clean_cache(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "clean_cache", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createEnvFile") - def create_env_file(self) -> Optional[pulumi.Input[_builtins.bool]]: + def create_env_file(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Write the environment variables to a `.env` file in the container. """ return pulumi.get(self, "create_env_file") @create_env_file.setter - def create_env_file(self, value: Optional[pulumi.Input[_builtins.bool]]): + def create_env_file(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "create_env_file", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the application was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="customGitBranch") - def custom_git_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Branch to build for a custom Git remote. """ return pulumi.get(self, "custom_git_branch") @custom_git_branch.setter - def custom_git_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_branch", value) @_builtins.property @pulumi.getter(name="customGitBuildPath") - def custom_git_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within a custom Git repository to build from. """ return pulumi.get(self, "custom_git_build_path") @custom_git_build_path.setter - def custom_git_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_build_path", value) @_builtins.property @pulumi.getter(name="customGitSshKeyId") - def custom_git_ssh_key_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_ssh_key_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ SSH key used to clone a private custom Git remote. """ return pulumi.get(self, "custom_git_ssh_key_id") @custom_git_ssh_key_id.setter - def custom_git_ssh_key_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_ssh_key_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_ssh_key_id", value) @_builtins.property @pulumi.getter(name="customGitUrl") - def custom_git_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Git remote URL, when `source_type` is `git`. """ return pulumi.get(self, "custom_git_url") @custom_git_url.setter - def custom_git_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_url", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerBuildStage") - def docker_build_stage(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_build_stage(self) -> pulumi.Input[Optional[_builtins.str]]: """ Target stage for a multi-stage Docker build. """ return pulumi.get(self, "docker_build_stage") @docker_build_stage.setter - def docker_build_stage(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_build_stage(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_build_stage", value) @_builtins.property @pulumi.getter(name="dockerContextPath") - def docker_context_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_context_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker build context path. """ return pulumi.get(self, "docker_context_path") @docker_context_path.setter - def docker_context_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_context_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_context_path", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker image reference, when `source_type` is `docker`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter - def dockerfile(self) -> Optional[pulumi.Input[_builtins.str]]: + def dockerfile(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path to the Dockerfile, when `build_type` is `dockerfile`. """ return pulumi.get(self, "dockerfile") @dockerfile.setter - def dockerfile(self, value: Optional[pulumi.Input[_builtins.str]]): + def dockerfile(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "dockerfile", value) @_builtins.property @pulumi.getter(name="enableSubmodules") - def enable_submodules(self) -> Optional[pulumi.Input[_builtins.bool]]: + def enable_submodules(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Clone Git submodules when checking out the repository. """ return pulumi.get(self, "enable_submodules") @enable_submodules.setter - def enable_submodules(self, value: Optional[pulumi.Input[_builtins.bool]]): + def enable_submodules(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "enable_submodules", value) @_builtins.property @pulumi.getter - def enabled(self) -> Optional[pulumi.Input[_builtins.bool]]: + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether the application is enabled. """ return pulumi.get(self, "enabled") @enabled.setter - def enabled(self, value: Optional[pulumi.Input[_builtins.bool]]): + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "enabled", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Runtime environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this application belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="giteaBranch") - def gitea_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea branch to build. """ return pulumi.get(self, "gitea_branch") @gitea_branch.setter - def gitea_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_branch", value) @_builtins.property @pulumi.getter(name="giteaBuildPath") - def gitea_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the Gitea repository to build from. """ return pulumi.get(self, "gitea_build_path") @gitea_build_path.setter - def gitea_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_build_path", value) @_builtins.property @pulumi.getter(name="giteaId") - def gitea_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Gitea provider connection. """ return pulumi.get(self, "gitea_id") @gitea_id.setter - def gitea_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_id", value) @_builtins.property @pulumi.getter(name="giteaOwner") - def gitea_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository owner. """ return pulumi.get(self, "gitea_owner") @gitea_owner.setter - def gitea_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_owner", value) @_builtins.property @pulumi.getter(name="giteaRepository") - def gitea_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository name. """ return pulumi.get(self, "gitea_repository") @gitea_repository.setter - def gitea_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_repository", value) @_builtins.property @pulumi.getter(name="githubId") - def github_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def github_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitHub provider connection. """ return pulumi.get(self, "github_id") @github_id.setter - def github_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def github_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "github_id", value) @_builtins.property @pulumi.getter(name="gitlabBranch") - def gitlab_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab branch to build. """ return pulumi.get(self, "gitlab_branch") @gitlab_branch.setter - def gitlab_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_branch", value) @_builtins.property @pulumi.getter(name="gitlabBuildPath") - def gitlab_build_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_build_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path within the GitLab repository to build from. """ return pulumi.get(self, "gitlab_build_path") @gitlab_build_path.setter - def gitlab_build_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_build_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_build_path", value) @_builtins.property @pulumi.getter(name="gitlabId") - def gitlab_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitLab provider connection. """ return pulumi.get(self, "gitlab_id") @gitlab_id.setter - def gitlab_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_id", value) @_builtins.property @pulumi.getter(name="gitlabOwner") - def gitlab_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository owner. """ return pulumi.get(self, "gitlab_owner") @gitlab_owner.setter - def gitlab_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_owner", value) @_builtins.property @pulumi.getter(name="gitlabPathNamespace") - def gitlab_path_namespace(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_path_namespace(self) -> pulumi.Input[Optional[_builtins.str]]: """ Full GitLab namespace path. """ return pulumi.get(self, "gitlab_path_namespace") @gitlab_path_namespace.setter - def gitlab_path_namespace(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_path_namespace(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_path_namespace", value) @_builtins.property @pulumi.getter(name="gitlabProjectId") - def gitlab_project_id(self) -> Optional[pulumi.Input[_builtins.int]]: + def gitlab_project_id(self) -> pulumi.Input[Optional[_builtins.int]]: """ Numeric GitLab project ID. """ return pulumi.get(self, "gitlab_project_id") @gitlab_project_id.setter - def gitlab_project_id(self, value: Optional[pulumi.Input[_builtins.int]]): + def gitlab_project_id(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "gitlab_project_id", value) @_builtins.property @pulumi.getter(name="gitlabRepository") - def gitlab_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository name. """ return pulumi.get(self, "gitlab_repository") @gitlab_repository.setter - def gitlab_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_repository", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="herokuVersion") - def heroku_version(self) -> Optional[pulumi.Input[_builtins.str]]: + def heroku_version(self) -> pulumi.Input[Optional[_builtins.str]]: """ Heroku buildpack stack version. """ return pulumi.get(self, "heroku_version") @heroku_version.setter - def heroku_version(self, value: Optional[pulumi.Input[_builtins.str]]): + def heroku_version(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "heroku_version", value) + @_builtins.property + @pulumi.getter + def icon(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Icon shown next to the service in the Dokploy UI. + """ + return pulumi.get(self, "icon") + + @icon.setter + def icon(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "icon", value) + @_builtins.property @pulumi.getter(name="isPreviewDeploymentsActive") - def is_preview_deployments_active(self) -> Optional[pulumi.Input[_builtins.bool]]: + def is_preview_deployments_active(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Build a preview deployment for each pull request. """ return pulumi.get(self, "is_preview_deployments_active") @is_preview_deployments_active.setter - def is_preview_deployments_active(self, value: Optional[pulumi.Input[_builtins.bool]]): + def is_preview_deployments_active(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "is_preview_deployments_active", value) @_builtins.property @pulumi.getter(name="isStaticSpa") - def is_static_spa(self) -> Optional[pulumi.Input[_builtins.bool]]: + def is_static_spa(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Serve a static build as a single-page application. """ return pulumi.get(self, "is_static_spa") @is_static_spa.setter - def is_static_spa(self, value: Optional[pulumi.Input[_builtins.bool]]): + def is_static_spa(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "is_static_spa", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the application. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter - def owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository owner. """ return pulumi.get(self, "owner") @owner.setter - def owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "owner", value) @_builtins.property @pulumi.getter - def password(self) -> Optional[pulumi.Input[_builtins.str]]: + def password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry password, when pulling a private image. """ return pulumi.get(self, "password") @password.setter - def password(self, value: Optional[pulumi.Input[_builtins.str]]): + def password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "password", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter(name="previewBuildArgs") - def preview_build_args(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_build_args(self) -> pulumi.Input[Optional[_builtins.str]]: """ Build arguments applied to preview deployments. """ return pulumi.get(self, "preview_build_args") @preview_build_args.setter - def preview_build_args(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_build_args(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_build_args", value) @_builtins.property @pulumi.getter(name="previewBuildSecrets") - def preview_build_secrets(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_build_secrets(self) -> pulumi.Input[Optional[_builtins.str]]: """ Build secrets applied to preview deployments. """ return pulumi.get(self, "preview_build_secrets") @preview_build_secrets.setter - def preview_build_secrets(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_build_secrets(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_build_secrets", value) @_builtins.property @pulumi.getter(name="previewCertificateType") - def preview_certificate_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_certificate_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Certificate strategy for preview deployments. Valid values: `letsencrypt`, `none`, `custom`. """ return pulumi.get(self, "preview_certificate_type") @preview_certificate_type.setter - def preview_certificate_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_certificate_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_certificate_type", value) @_builtins.property @pulumi.getter(name="previewCustomCertResolver") - def preview_custom_cert_resolver(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_custom_cert_resolver(self) -> pulumi.Input[Optional[_builtins.str]]: """ Traefik certificate resolver for preview deployments. """ return pulumi.get(self, "preview_custom_cert_resolver") @preview_custom_cert_resolver.setter - def preview_custom_cert_resolver(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_custom_cert_resolver(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_custom_cert_resolver", value) @_builtins.property @pulumi.getter(name="previewEnv") - def preview_env(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables applied to preview deployments. """ return pulumi.get(self, "preview_env") @preview_env.setter - def preview_env(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_env", value) @_builtins.property @pulumi.getter(name="previewHttps") - def preview_https(self) -> Optional[pulumi.Input[_builtins.bool]]: + def preview_https(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Serve preview deployments over HTTPS. """ return pulumi.get(self, "preview_https") @preview_https.setter - def preview_https(self, value: Optional[pulumi.Input[_builtins.bool]]): + def preview_https(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "preview_https", value) @_builtins.property @pulumi.getter(name="previewLabels") - def preview_labels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def preview_labels(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Pull request labels that opt into preview deployments. """ return pulumi.get(self, "preview_labels") @preview_labels.setter - def preview_labels(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def preview_labels(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "preview_labels", value) @_builtins.property @pulumi.getter(name="previewLimit") - def preview_limit(self) -> Optional[pulumi.Input[_builtins.int]]: + def preview_limit(self) -> pulumi.Input[Optional[_builtins.int]]: """ Maximum number of concurrent preview deployments. """ return pulumi.get(self, "preview_limit") @preview_limit.setter - def preview_limit(self, value: Optional[pulumi.Input[_builtins.int]]): + def preview_limit(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "preview_limit", value) @_builtins.property @pulumi.getter(name="previewPath") - def preview_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Base path for preview deployments. """ return pulumi.get(self, "preview_path") @preview_path.setter - def preview_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_path", value) @_builtins.property @pulumi.getter(name="previewPort") - def preview_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def preview_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Container port exposed by preview deployments. """ return pulumi.get(self, "preview_port") @preview_port.setter - def preview_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def preview_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "preview_port", value) + @_builtins.property + @pulumi.getter(name="previewRequireCollaboratorPermissions") + def preview_require_collaborator_permissions(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Only build previews for pull requests opened by users with repository collaborator permissions. + """ + return pulumi.get(self, "preview_require_collaborator_permissions") + + @preview_require_collaborator_permissions.setter + def preview_require_collaborator_permissions(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "preview_require_collaborator_permissions", value) + @_builtins.property @pulumi.getter(name="previewWildcard") - def preview_wildcard(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_wildcard(self) -> pulumi.Input[Optional[_builtins.str]]: """ Wildcard domain used to expose preview deployments. """ return pulumi.get(self, "preview_wildcard") @preview_wildcard.setter - def preview_wildcard(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_wildcard(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_wildcard", value) @_builtins.property @pulumi.getter(name="publishDirectory") - def publish_directory(self) -> Optional[pulumi.Input[_builtins.str]]: + def publish_directory(self) -> pulumi.Input[Optional[_builtins.str]]: """ Directory served when `build_type` is `static`. """ return pulumi.get(self, "publish_directory") @publish_directory.setter - def publish_directory(self, value: Optional[pulumi.Input[_builtins.str]]): + def publish_directory(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "publish_directory", value) @_builtins.property @pulumi.getter(name="railpackVersion") - def railpack_version(self) -> Optional[pulumi.Input[_builtins.str]]: + def railpack_version(self) -> pulumi.Input[Optional[_builtins.str]]: """ Railpack version. """ return pulumi.get(self, "railpack_version") @railpack_version.setter - def railpack_version(self, value: Optional[pulumi.Input[_builtins.str]]): + def railpack_version(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "railpack_version", value) @_builtins.property @pulumi.getter(name="registryId") - def registry_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry used to push the built image. """ return pulumi.get(self, "registry_id") @registry_id.setter - def registry_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_id", value) @_builtins.property @pulumi.getter(name="registryUrl") - def registry_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry URL, when pulling a private image. """ return pulumi.get(self, "registry_url") @registry_url.setter - def registry_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_url", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter - def repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository name. """ return pulumi.get(self, "repository") @repository.setter - def repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "repository", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackActive") - def rollback_active(self) -> Optional[pulumi.Input[_builtins.bool]]: + def rollback_active(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Keep previous images so deployments can be rolled back. """ return pulumi.get(self, "rollback_active") @rollback_active.setter - def rollback_active(self, value: Optional[pulumi.Input[_builtins.bool]]): + def rollback_active(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "rollback_active", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="rollbackRegistryId") - def rollback_registry_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_registry_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry used to store rollback images. """ return pulumi.get(self, "rollback_registry_id") @rollback_registry_id.setter - def rollback_registry_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_registry_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_registry_id", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="sourceType") - def source_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def source_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Where the application's code or image comes from. Valid values: `docker`, `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `drop`. """ return pulumi.get(self, "source_type") @source_type.setter - def source_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def source_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "source_type", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter - def subtitle(self) -> Optional[pulumi.Input[_builtins.str]]: + def subtitle(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display subtitle shown in the Dokploy UI. """ return pulumi.get(self, "subtitle") @subtitle.setter - def subtitle(self, value: Optional[pulumi.Input[_builtins.str]]): + def subtitle(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "subtitle", value) @_builtins.property @pulumi.getter - def title(self) -> Optional[pulumi.Input[_builtins.str]]: + def title(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display title shown in the Dokploy UI. """ return pulumi.get(self, "title") @title.setter - def title(self, value: Optional[pulumi.Input[_builtins.str]]): + def title(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "title", value) @_builtins.property @pulumi.getter(name="triggerType") - def trigger_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def trigger_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ What triggers an automatic GitHub deployment. Valid values: `push`, `tag`. """ return pulumi.get(self, "trigger_type") @trigger_type.setter - def trigger_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def trigger_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "trigger_type", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @_builtins.property @pulumi.getter - def username(self) -> Optional[pulumi.Input[_builtins.str]]: + def username(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry username, when pulling a private image. """ return pulumi.get(self, "username") @username.setter - def username(self, value: Optional[pulumi.Input[_builtins.str]]): + def username(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "username", value) @_builtins.property @pulumi.getter(name="watchPaths") - def watch_paths(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def watch_paths(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Glob patterns that limit which changed paths trigger an automatic deployment. """ return pulumi.get(self, "watch_paths") @watch_paths.setter - def watch_paths(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def watch_paths(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "watch_paths", value) @@ -3079,103 +3143,110 @@ class Application(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_build_path: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - build_args: Optional[pulumi.Input[_builtins.str]] = None, - build_path: Optional[pulumi.Input[_builtins.str]] = None, - build_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - build_server_id: Optional[pulumi.Input[_builtins.str]] = None, - build_type: Optional[pulumi.Input[_builtins.str]] = None, - clean_cache: Optional[pulumi.Input[_builtins.bool]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - create_env_file: Optional[pulumi.Input[_builtins.bool]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_build_path: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_build_stage: Optional[pulumi.Input[_builtins.str]] = None, - docker_context_path: Optional[pulumi.Input[_builtins.str]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - dockerfile: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - enabled: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - heroku_version: Optional[pulumi.Input[_builtins.str]] = None, - is_preview_deployments_active: Optional[pulumi.Input[_builtins.bool]] = None, - is_static_spa: Optional[pulumi.Input[_builtins.bool]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_args: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - preview_certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - preview_custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - preview_env: Optional[pulumi.Input[_builtins.str]] = None, - preview_https: Optional[pulumi.Input[_builtins.bool]] = None, - preview_labels: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - preview_limit: Optional[pulumi.Input[_builtins.int]] = None, - preview_path: Optional[pulumi.Input[_builtins.str]] = None, - preview_port: Optional[pulumi.Input[_builtins.int]] = None, - preview_wildcard: Optional[pulumi.Input[_builtins.str]] = None, - publish_directory: Optional[pulumi.Input[_builtins.str]] = None, - railpack_version: Optional[pulumi.Input[_builtins.str]] = None, - registry_id: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_active: Optional[pulumi.Input[_builtins.bool]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - subtitle: Optional[pulumi.Input[_builtins.str]] = None, - title: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_build_path: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + build_args: pulumi.Input[Optional[_builtins.str]] = None, + build_path: pulumi.Input[Optional[_builtins.str]] = None, + build_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + build_server_id: pulumi.Input[Optional[_builtins.str]] = None, + build_type: pulumi.Input[Optional[_builtins.str]] = None, + clean_cache: pulumi.Input[Optional[_builtins.bool]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_build_path: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_build_stage: pulumi.Input[Optional[_builtins.str]] = None, + docker_context_path: pulumi.Input[Optional[_builtins.str]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + dockerfile: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + heroku_version: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + is_preview_deployments_active: pulumi.Input[Optional[_builtins.bool]] = None, + is_static_spa: pulumi.Input[Optional[_builtins.bool]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_args: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + preview_certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + preview_custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + preview_env: pulumi.Input[Optional[_builtins.str]] = None, + preview_https: pulumi.Input[Optional[_builtins.bool]] = None, + preview_labels: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + preview_limit: pulumi.Input[Optional[_builtins.int]] = None, + preview_path: pulumi.Input[Optional[_builtins.str]] = None, + preview_port: pulumi.Input[Optional[_builtins.int]] = None, + preview_require_collaborator_permissions: pulumi.Input[Optional[_builtins.bool]] = None, + preview_wildcard: pulumi.Input[Optional[_builtins.str]] = None, + publish_directory: pulumi.Input[Optional[_builtins.str]] = None, + railpack_version: pulumi.Input[Optional[_builtins.str]] = None, + registry_id: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_active: pulumi.Input[Optional[_builtins.bool]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + subtitle: pulumi.Input[Optional[_builtins.str]] = None, + title: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, __props__=None): """ - Create a Application resource with the given unique name, props, and options. + A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact. + + Dokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`. + + > Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a `terraform_data` provisioner calling `application.deploy`. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -3230,6 +3301,7 @@ class Application(pulumi.CustomResource): :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. :param pulumi.Input[_builtins.str] heroku_version: Heroku buildpack stack version. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the service in the Dokploy UI. :param pulumi.Input[_builtins.bool] is_preview_deployments_active: Build a preview deployment for each pull request. :param pulumi.Input[_builtins.bool] is_static_spa: Serve a static build as a single-page application. :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. @@ -3252,6 +3324,7 @@ class Application(pulumi.CustomResource): :param pulumi.Input[_builtins.int] preview_limit: Maximum number of concurrent preview deployments. :param pulumi.Input[_builtins.str] preview_path: Base path for preview deployments. :param pulumi.Input[_builtins.int] preview_port: Container port exposed by preview deployments. + :param pulumi.Input[_builtins.bool] preview_require_collaborator_permissions: Only build previews for pull requests opened by users with repository collaborator permissions. :param pulumi.Input[_builtins.str] preview_wildcard: Wildcard domain used to expose preview deployments. :param pulumi.Input[_builtins.str] publish_directory: Directory served when `build_type` is `static`. :param pulumi.Input[_builtins.str] railpack_version: Railpack version. @@ -3281,7 +3354,12 @@ class Application(pulumi.CustomResource): args: ApplicationArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Application resource with the given unique name, props, and options. + A Dokploy application: a single service built from a Git repository, a Docker image, or an uploaded artifact. + + Dokploy's `application.create` endpoint accepts only a handful of fields, so this resource creates the application and then applies the rest of the configuration through `application.update`. + + > Creating this resource does **not** deploy the application. Trigger a deployment from the Dokploy UI, the CLI, or a `terraform_data` provisioner calling `application.deploy`. + :param str resource_name: The name of the resource. :param ApplicationArgs args: The arguments to use to populate this resource's properties. @@ -3298,100 +3376,102 @@ class Application(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_build_path: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - build_args: Optional[pulumi.Input[_builtins.str]] = None, - build_path: Optional[pulumi.Input[_builtins.str]] = None, - build_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - build_server_id: Optional[pulumi.Input[_builtins.str]] = None, - build_type: Optional[pulumi.Input[_builtins.str]] = None, - clean_cache: Optional[pulumi.Input[_builtins.bool]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - create_env_file: Optional[pulumi.Input[_builtins.bool]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_build_path: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_build_stage: Optional[pulumi.Input[_builtins.str]] = None, - docker_context_path: Optional[pulumi.Input[_builtins.str]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - dockerfile: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - enabled: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - heroku_version: Optional[pulumi.Input[_builtins.str]] = None, - is_preview_deployments_active: Optional[pulumi.Input[_builtins.bool]] = None, - is_static_spa: Optional[pulumi.Input[_builtins.bool]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_args: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - preview_certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - preview_custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - preview_env: Optional[pulumi.Input[_builtins.str]] = None, - preview_https: Optional[pulumi.Input[_builtins.bool]] = None, - preview_labels: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - preview_limit: Optional[pulumi.Input[_builtins.int]] = None, - preview_path: Optional[pulumi.Input[_builtins.str]] = None, - preview_port: Optional[pulumi.Input[_builtins.int]] = None, - preview_wildcard: Optional[pulumi.Input[_builtins.str]] = None, - publish_directory: Optional[pulumi.Input[_builtins.str]] = None, - railpack_version: Optional[pulumi.Input[_builtins.str]] = None, - registry_id: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_active: Optional[pulumi.Input[_builtins.bool]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - subtitle: Optional[pulumi.Input[_builtins.str]] = None, - title: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_build_path: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + build_args: pulumi.Input[Optional[_builtins.str]] = None, + build_path: pulumi.Input[Optional[_builtins.str]] = None, + build_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + build_server_id: pulumi.Input[Optional[_builtins.str]] = None, + build_type: pulumi.Input[Optional[_builtins.str]] = None, + clean_cache: pulumi.Input[Optional[_builtins.bool]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_build_path: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_build_stage: pulumi.Input[Optional[_builtins.str]] = None, + docker_context_path: pulumi.Input[Optional[_builtins.str]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + dockerfile: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + heroku_version: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + is_preview_deployments_active: pulumi.Input[Optional[_builtins.bool]] = None, + is_static_spa: pulumi.Input[Optional[_builtins.bool]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_args: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + preview_certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + preview_custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + preview_env: pulumi.Input[Optional[_builtins.str]] = None, + preview_https: pulumi.Input[Optional[_builtins.bool]] = None, + preview_labels: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + preview_limit: pulumi.Input[Optional[_builtins.int]] = None, + preview_path: pulumi.Input[Optional[_builtins.str]] = None, + preview_port: pulumi.Input[Optional[_builtins.int]] = None, + preview_require_collaborator_permissions: pulumi.Input[Optional[_builtins.bool]] = None, + preview_wildcard: pulumi.Input[Optional[_builtins.str]] = None, + publish_directory: pulumi.Input[Optional[_builtins.str]] = None, + railpack_version: pulumi.Input[Optional[_builtins.str]] = None, + registry_id: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_active: pulumi.Input[Optional[_builtins.bool]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + subtitle: pulumi.Input[Optional[_builtins.str]] = None, + title: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -3454,6 +3534,7 @@ class Application(pulumi.CustomResource): __props__.__dict__["gitlab_repository"] = gitlab_repository __props__.__dict__["health_check_swarm"] = health_check_swarm __props__.__dict__["heroku_version"] = heroku_version + __props__.__dict__["icon"] = icon __props__.__dict__["is_preview_deployments_active"] = is_preview_deployments_active __props__.__dict__["is_static_spa"] = is_static_spa __props__.__dict__["labels_swarm"] = labels_swarm @@ -3476,6 +3557,7 @@ class Application(pulumi.CustomResource): __props__.__dict__["preview_limit"] = preview_limit __props__.__dict__["preview_path"] = preview_path __props__.__dict__["preview_port"] = preview_port + __props__.__dict__["preview_require_collaborator_permissions"] = preview_require_collaborator_permissions __props__.__dict__["preview_wildcard"] = preview_wildcard __props__.__dict__["publish_directory"] = publish_directory __props__.__dict__["railpack_version"] = railpack_version @@ -3511,102 +3593,104 @@ class Application(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_build_path: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - build_args: Optional[pulumi.Input[_builtins.str]] = None, - build_path: Optional[pulumi.Input[_builtins.str]] = None, - build_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - build_server_id: Optional[pulumi.Input[_builtins.str]] = None, - build_type: Optional[pulumi.Input[_builtins.str]] = None, - clean_cache: Optional[pulumi.Input[_builtins.bool]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - create_env_file: Optional[pulumi.Input[_builtins.bool]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_build_path: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_build_stage: Optional[pulumi.Input[_builtins.str]] = None, - docker_context_path: Optional[pulumi.Input[_builtins.str]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - dockerfile: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - enabled: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_build_path: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - heroku_version: Optional[pulumi.Input[_builtins.str]] = None, - is_preview_deployments_active: Optional[pulumi.Input[_builtins.bool]] = None, - is_static_spa: Optional[pulumi.Input[_builtins.bool]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_args: Optional[pulumi.Input[_builtins.str]] = None, - preview_build_secrets: Optional[pulumi.Input[_builtins.str]] = None, - preview_certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - preview_custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - preview_env: Optional[pulumi.Input[_builtins.str]] = None, - preview_https: Optional[pulumi.Input[_builtins.bool]] = None, - preview_labels: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - preview_limit: Optional[pulumi.Input[_builtins.int]] = None, - preview_path: Optional[pulumi.Input[_builtins.str]] = None, - preview_port: Optional[pulumi.Input[_builtins.int]] = None, - preview_wildcard: Optional[pulumi.Input[_builtins.str]] = None, - publish_directory: Optional[pulumi.Input[_builtins.str]] = None, - railpack_version: Optional[pulumi.Input[_builtins.str]] = None, - registry_id: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_active: Optional[pulumi.Input[_builtins.bool]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_registry_id: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - subtitle: Optional[pulumi.Input[_builtins.str]] = None, - title: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None) -> 'Application': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_build_path: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + build_args: pulumi.Input[Optional[_builtins.str]] = None, + build_path: pulumi.Input[Optional[_builtins.str]] = None, + build_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + build_server_id: pulumi.Input[Optional[_builtins.str]] = None, + build_type: pulumi.Input[Optional[_builtins.str]] = None, + clean_cache: pulumi.Input[Optional[_builtins.bool]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_build_path: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_build_stage: pulumi.Input[Optional[_builtins.str]] = None, + docker_context_path: pulumi.Input[Optional[_builtins.str]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + dockerfile: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_build_path: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + heroku_version: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + is_preview_deployments_active: pulumi.Input[Optional[_builtins.bool]] = None, + is_static_spa: pulumi.Input[Optional[_builtins.bool]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_args: pulumi.Input[Optional[_builtins.str]] = None, + preview_build_secrets: pulumi.Input[Optional[_builtins.str]] = None, + preview_certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + preview_custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + preview_env: pulumi.Input[Optional[_builtins.str]] = None, + preview_https: pulumi.Input[Optional[_builtins.bool]] = None, + preview_labels: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + preview_limit: pulumi.Input[Optional[_builtins.int]] = None, + preview_path: pulumi.Input[Optional[_builtins.str]] = None, + preview_port: pulumi.Input[Optional[_builtins.int]] = None, + preview_require_collaborator_permissions: pulumi.Input[Optional[_builtins.bool]] = None, + preview_wildcard: pulumi.Input[Optional[_builtins.str]] = None, + publish_directory: pulumi.Input[Optional[_builtins.str]] = None, + railpack_version: pulumi.Input[Optional[_builtins.str]] = None, + registry_id: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_active: pulumi.Input[Optional[_builtins.bool]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_registry_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + subtitle: pulumi.Input[Optional[_builtins.str]] = None, + title: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None) -> 'Application': """ Get an existing Application resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -3667,6 +3751,7 @@ class Application(pulumi.CustomResource): :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. :param pulumi.Input[_builtins.str] heroku_version: Heroku buildpack stack version. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the service in the Dokploy UI. :param pulumi.Input[_builtins.bool] is_preview_deployments_active: Build a preview deployment for each pull request. :param pulumi.Input[_builtins.bool] is_static_spa: Serve a static build as a single-page application. :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. @@ -3689,6 +3774,7 @@ class Application(pulumi.CustomResource): :param pulumi.Input[_builtins.int] preview_limit: Maximum number of concurrent preview deployments. :param pulumi.Input[_builtins.str] preview_path: Base path for preview deployments. :param pulumi.Input[_builtins.int] preview_port: Container port exposed by preview deployments. + :param pulumi.Input[_builtins.bool] preview_require_collaborator_permissions: Only build previews for pull requests opened by users with repository collaborator permissions. :param pulumi.Input[_builtins.str] preview_wildcard: Wildcard domain used to expose preview deployments. :param pulumi.Input[_builtins.str] publish_directory: Directory served when `build_type` is `static`. :param pulumi.Input[_builtins.str] railpack_version: Railpack version. @@ -3768,6 +3854,7 @@ class Application(pulumi.CustomResource): __props__.__dict__["gitlab_repository"] = gitlab_repository __props__.__dict__["health_check_swarm"] = health_check_swarm __props__.__dict__["heroku_version"] = heroku_version + __props__.__dict__["icon"] = icon __props__.__dict__["is_preview_deployments_active"] = is_preview_deployments_active __props__.__dict__["is_static_spa"] = is_static_spa __props__.__dict__["labels_swarm"] = labels_swarm @@ -3790,6 +3877,7 @@ class Application(pulumi.CustomResource): __props__.__dict__["preview_limit"] = preview_limit __props__.__dict__["preview_path"] = preview_path __props__.__dict__["preview_port"] = preview_port + __props__.__dict__["preview_require_collaborator_permissions"] = preview_require_collaborator_permissions __props__.__dict__["preview_wildcard"] = preview_wildcard __props__.__dict__["publish_directory"] = publish_directory __props__.__dict__["railpack_version"] = railpack_version @@ -4237,6 +4325,14 @@ class Application(pulumi.CustomResource): """ return pulumi.get(self, "heroku_version") + @_builtins.property + @pulumi.getter + def icon(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Icon shown next to the service in the Dokploy UI. + """ + return pulumi.get(self, "icon") + @_builtins.property @pulumi.getter(name="isPreviewDeploymentsActive") def is_preview_deployments_active(self) -> pulumi.Output[_builtins.bool]: @@ -4413,6 +4509,14 @@ class Application(pulumi.CustomResource): """ return pulumi.get(self, "preview_port") + @_builtins.property + @pulumi.getter(name="previewRequireCollaboratorPermissions") + def preview_require_collaborator_permissions(self) -> pulumi.Output[_builtins.bool]: + """ + Only build previews for pull requests opened by users with repository collaborator permissions. + """ + return pulumi.get(self, "preview_require_collaborator_permissions") + @_builtins.property @pulumi.getter(name="previewWildcard") def preview_wildcard(self) -> pulumi.Output[Optional[_builtins.str]]: diff --git a/sdk/python/pulumi_dokploy/certificate.py b/sdk/python/pulumi_dokploy/certificate.py index 44ef3f3..5132c26 100644 --- a/sdk/python/pulumi_dokploy/certificate.py +++ b/sdk/python/pulumi_dokploy/certificate.py @@ -21,9 +21,9 @@ class CertificateArgs: def __init__(__self__, *, certificate_data: pulumi.Input[_builtins.str], private_key: pulumi.Input[_builtins.str], - auto_renew: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None): + auto_renew: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Certificate resource. @@ -68,50 +68,50 @@ class CertificateArgs: @_builtins.property @pulumi.getter(name="autoRenew") - def auto_renew(self) -> Optional[pulumi.Input[_builtins.bool]]: + def auto_renew(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether Dokploy should renew this certificate automatically. """ return pulumi.get(self, "auto_renew") @auto_renew.setter - def auto_renew(self, value: Optional[pulumi.Input[_builtins.bool]]): + def auto_renew(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "auto_renew", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the certificate. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server this certificate is installed on. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @pulumi.input_type class _CertificateState: def __init__(__self__, *, - auto_renew: Optional[pulumi.Input[_builtins.bool]] = None, - certificate_data: Optional[pulumi.Input[_builtins.str]] = None, - certificate_path: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None): + auto_renew: pulumi.Input[Optional[_builtins.bool]] = None, + certificate_data: pulumi.Input[Optional[_builtins.str]] = None, + certificate_path: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Certificate resources. @@ -137,74 +137,74 @@ class _CertificateState: @_builtins.property @pulumi.getter(name="autoRenew") - def auto_renew(self) -> Optional[pulumi.Input[_builtins.bool]]: + def auto_renew(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether Dokploy should renew this certificate automatically. """ return pulumi.get(self, "auto_renew") @auto_renew.setter - def auto_renew(self, value: Optional[pulumi.Input[_builtins.bool]]): + def auto_renew(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "auto_renew", value) @_builtins.property @pulumi.getter(name="certificateData") - def certificate_data(self) -> Optional[pulumi.Input[_builtins.str]]: + def certificate_data(self) -> pulumi.Input[Optional[_builtins.str]]: """ PEM-encoded certificate chain. """ return pulumi.get(self, "certificate_data") @certificate_data.setter - def certificate_data(self, value: Optional[pulumi.Input[_builtins.str]]): + def certificate_data(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "certificate_data", value) @_builtins.property @pulumi.getter(name="certificatePath") - def certificate_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def certificate_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path where Dokploy writes the certificate on disk. """ return pulumi.get(self, "certificate_path") @certificate_path.setter - def certificate_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def certificate_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "certificate_path", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the certificate. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="privateKey") - def private_key(self) -> Optional[pulumi.Input[_builtins.str]]: + def private_key(self) -> pulumi.Input[Optional[_builtins.str]]: """ PEM-encoded private key. """ return pulumi.get(self, "private_key") @private_key.setter - def private_key(self, value: Optional[pulumi.Input[_builtins.str]]): + def private_key(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "private_key", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server this certificate is installed on. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @@ -214,14 +214,17 @@ class Certificate(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - auto_renew: Optional[pulumi.Input[_builtins.bool]] = None, - certificate_data: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, + auto_renew: pulumi.Input[Optional[_builtins.bool]] = None, + certificate_data: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Certificate resource with the given unique name, props, and options. + A TLS certificate uploaded to Dokploy, for domains that use `certificate_type = "custom"`. + + > The private key is stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -238,7 +241,10 @@ class Certificate(pulumi.CustomResource): args: CertificateArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Certificate resource with the given unique name, props, and options. + A TLS certificate uploaded to Dokploy, for domains that use `certificate_type = "custom"`. + + > The private key is stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param CertificateArgs args: The arguments to use to populate this resource's properties. @@ -255,11 +261,11 @@ class Certificate(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - auto_renew: Optional[pulumi.Input[_builtins.bool]] = None, - certificate_data: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, + auto_renew: pulumi.Input[Optional[_builtins.bool]] = None, + certificate_data: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -291,12 +297,12 @@ class Certificate(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - auto_renew: Optional[pulumi.Input[_builtins.bool]] = None, - certificate_data: Optional[pulumi.Input[_builtins.str]] = None, - certificate_path: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'Certificate': + auto_renew: pulumi.Input[Optional[_builtins.bool]] = None, + certificate_data: pulumi.Input[Optional[_builtins.str]] = None, + certificate_path: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None) -> 'Certificate': """ Get an existing Certificate resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/compose.py b/sdk/python/pulumi_dokploy/compose.py index 9022f64..ee2e096 100644 --- a/sdk/python/pulumi_dokploy/compose.py +++ b/sdk/python/pulumi_dokploy/compose.py @@ -20,47 +20,50 @@ __all__ = ['ComposeArgs', 'Compose'] class ComposeArgs: def __init__(__self__, *, environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - compose_file: Optional[pulumi.Input[_builtins.str]] = None, - compose_path: Optional[pulumi.Input[_builtins.str]] = None, - compose_type: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - delete_volumes: Optional[pulumi.Input[_builtins.bool]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - isolated_deployment: Optional[pulumi.Input[_builtins.bool]] = None, - isolated_deployments_volume: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - randomize: Optional[pulumi.Input[_builtins.bool]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - suffix: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_file: pulumi.Input[Optional[_builtins.str]] = None, + compose_path: pulumi.Input[Optional[_builtins.str]] = None, + compose_type: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + delete_volumes: pulumi.Input[Optional[_builtins.bool]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + isolated_deployment: pulumi.Input[Optional[_builtins.bool]] = None, + isolated_deployments_volume: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + randomize: pulumi.Input[Optional[_builtins.bool]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_networks: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + suffix: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None): """ The set of arguments for constructing a Compose resource. @@ -77,6 +80,7 @@ class ComposeArgs: :param pulumi.Input[_builtins.str] compose_file: Inline Compose file contents. Used when `source_type` is `raw`. :param pulumi.Input[_builtins.str] compose_path: Path to the Compose file within the repository. :param pulumi.Input[_builtins.str] compose_type: Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. + :param pulumi.Input[_builtins.bool] create_env_file: Write the environment variables to a `.env` file next to the Compose file. :param pulumi.Input[_builtins.str] custom_git_branch: Branch to deploy for a custom Git remote. :param pulumi.Input[_builtins.str] custom_git_ssh_key_id: SSH key used to clone a private custom Git remote. :param pulumi.Input[_builtins.str] custom_git_url: Git remote URL, when `source_type` is `git`. @@ -95,6 +99,7 @@ class ComposeArgs: :param pulumi.Input[_builtins.str] gitlab_path_namespace: Full GitLab namespace path. :param pulumi.Input[_builtins.int] gitlab_project_id: Numeric GitLab project ID. :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the stack in the Dokploy UI. :param pulumi.Input[_builtins.bool] isolated_deployment: Run the stack on its own isolated Docker network. :param pulumi.Input[_builtins.bool] isolated_deployments_volume: Prefix volume names for isolated deployments. Retained for backwards compatibility. :param pulumi.Input[_builtins.str] name: Display name of the stack. @@ -102,6 +107,7 @@ class ComposeArgs: :param pulumi.Input[_builtins.bool] randomize: Append a random suffix to service and volume names. :param pulumi.Input[_builtins.str] repository: GitHub repository name. :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] service_networks: Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. :param pulumi.Input[_builtins.str] source_type: Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. :param pulumi.Input[_builtins.str] suffix: Suffix appended to generated resource names. :param pulumi.Input[_builtins.str] trigger_type: What triggers an automatic deployment. Valid values: `push`, `tag`. @@ -132,6 +138,8 @@ class ComposeArgs: pulumi.set(__self__, "compose_path", compose_path) if compose_type is not None: pulumi.set(__self__, "compose_type", compose_type) + if create_env_file is not None: + pulumi.set(__self__, "create_env_file", create_env_file) if custom_git_branch is not None: pulumi.set(__self__, "custom_git_branch", custom_git_branch) if custom_git_ssh_key_id is not None: @@ -168,6 +176,8 @@ class ComposeArgs: pulumi.set(__self__, "gitlab_project_id", gitlab_project_id) if gitlab_repository is not None: pulumi.set(__self__, "gitlab_repository", gitlab_repository) + if icon is not None: + pulumi.set(__self__, "icon", icon) if isolated_deployment is not None: pulumi.set(__self__, "isolated_deployment", isolated_deployment) if isolated_deployments_volume is not None: @@ -182,6 +192,8 @@ class ComposeArgs: pulumi.set(__self__, "repository", repository) if server_id is not None: pulumi.set(__self__, "server_id", server_id) + if service_networks is not None: + pulumi.set(__self__, "service_networks", service_networks) if source_type is not None: pulumi.set(__self__, "source_type", source_type) if suffix is not None: @@ -205,544 +217,583 @@ class ComposeArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="autoDeploy") - def auto_deploy(self) -> Optional[pulumi.Input[_builtins.bool]]: + def auto_deploy(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Deploy automatically when the configured trigger fires. """ return pulumi.get(self, "auto_deploy") @auto_deploy.setter - def auto_deploy(self, value: Optional[pulumi.Input[_builtins.bool]]): + def auto_deploy(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "auto_deploy", value) @_builtins.property @pulumi.getter(name="bitbucketBranch") - def bitbucket_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket branch to deploy. """ return pulumi.get(self, "bitbucket_branch") @bitbucket_branch.setter - def bitbucket_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_branch", value) @_builtins.property @pulumi.getter(name="bitbucketId") - def bitbucket_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Bitbucket provider connection. """ return pulumi.get(self, "bitbucket_id") @bitbucket_id.setter - def bitbucket_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_id", value) @_builtins.property @pulumi.getter(name="bitbucketOwner") - def bitbucket_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository owner. """ return pulumi.get(self, "bitbucket_owner") @bitbucket_owner.setter - def bitbucket_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_owner", value) @_builtins.property @pulumi.getter(name="bitbucketRepository") - def bitbucket_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository name. """ return pulumi.get(self, "bitbucket_repository") @bitbucket_repository.setter - def bitbucket_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository", value) @_builtins.property @pulumi.getter(name="bitbucketRepositorySlug") - def bitbucket_repository_slug(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository_slug(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository slug. """ return pulumi.get(self, "bitbucket_repository_slug") @bitbucket_repository_slug.setter - def bitbucket_repository_slug(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository_slug(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository_slug", value) @_builtins.property @pulumi.getter - def branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub branch to deploy. """ return pulumi.get(self, "branch") @branch.setter - def branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "branch", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Custom `docker compose` command to run. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="composeFile") - def compose_file(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_file(self) -> pulumi.Input[Optional[_builtins.str]]: """ Inline Compose file contents. Used when `source_type` is `raw`. """ return pulumi.get(self, "compose_file") @compose_file.setter - def compose_file(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_file(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_file", value) @_builtins.property @pulumi.getter(name="composePath") - def compose_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path to the Compose file within the repository. """ return pulumi.get(self, "compose_path") @compose_path.setter - def compose_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_path", value) @_builtins.property @pulumi.getter(name="composeType") - def compose_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. """ return pulumi.get(self, "compose_type") @compose_type.setter - def compose_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_type", value) + @_builtins.property + @pulumi.getter(name="createEnvFile") + def create_env_file(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Write the environment variables to a `.env` file next to the Compose file. + """ + return pulumi.get(self, "create_env_file") + + @create_env_file.setter + def create_env_file(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "create_env_file", value) + @_builtins.property @pulumi.getter(name="customGitBranch") - def custom_git_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Branch to deploy for a custom Git remote. """ return pulumi.get(self, "custom_git_branch") @custom_git_branch.setter - def custom_git_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_branch", value) @_builtins.property @pulumi.getter(name="customGitSshKeyId") - def custom_git_ssh_key_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_ssh_key_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ SSH key used to clone a private custom Git remote. """ return pulumi.get(self, "custom_git_ssh_key_id") @custom_git_ssh_key_id.setter - def custom_git_ssh_key_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_ssh_key_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_ssh_key_id", value) @_builtins.property @pulumi.getter(name="customGitUrl") - def custom_git_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Git remote URL, when `source_type` is `git`. """ return pulumi.get(self, "custom_git_url") @custom_git_url.setter - def custom_git_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_url", value) @_builtins.property @pulumi.getter(name="deleteVolumes") - def delete_volumes(self) -> Optional[pulumi.Input[_builtins.bool]]: + def delete_volumes(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data. """ return pulumi.get(self, "delete_volumes") @delete_volumes.setter - def delete_volumes(self, value: Optional[pulumi.Input[_builtins.bool]]): + def delete_volumes(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "delete_volumes", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="enableSubmodules") - def enable_submodules(self) -> Optional[pulumi.Input[_builtins.bool]]: + def enable_submodules(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Clone Git submodules when checking out the repository. """ return pulumi.get(self, "enable_submodules") @enable_submodules.setter - def enable_submodules(self, value: Optional[pulumi.Input[_builtins.bool]]): + def enable_submodules(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "enable_submodules", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="giteaBranch") - def gitea_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea branch to deploy. """ return pulumi.get(self, "gitea_branch") @gitea_branch.setter - def gitea_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_branch", value) @_builtins.property @pulumi.getter(name="giteaId") - def gitea_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Gitea provider connection. """ return pulumi.get(self, "gitea_id") @gitea_id.setter - def gitea_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_id", value) @_builtins.property @pulumi.getter(name="giteaOwner") - def gitea_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository owner. """ return pulumi.get(self, "gitea_owner") @gitea_owner.setter - def gitea_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_owner", value) @_builtins.property @pulumi.getter(name="giteaRepository") - def gitea_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository name. """ return pulumi.get(self, "gitea_repository") @gitea_repository.setter - def gitea_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_repository", value) @_builtins.property @pulumi.getter(name="githubId") - def github_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def github_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitHub provider connection. """ return pulumi.get(self, "github_id") @github_id.setter - def github_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def github_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "github_id", value) @_builtins.property @pulumi.getter(name="gitlabBranch") - def gitlab_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab branch to deploy. """ return pulumi.get(self, "gitlab_branch") @gitlab_branch.setter - def gitlab_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_branch", value) @_builtins.property @pulumi.getter(name="gitlabId") - def gitlab_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitLab provider connection. """ return pulumi.get(self, "gitlab_id") @gitlab_id.setter - def gitlab_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_id", value) @_builtins.property @pulumi.getter(name="gitlabOwner") - def gitlab_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository owner. """ return pulumi.get(self, "gitlab_owner") @gitlab_owner.setter - def gitlab_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_owner", value) @_builtins.property @pulumi.getter(name="gitlabPathNamespace") - def gitlab_path_namespace(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_path_namespace(self) -> pulumi.Input[Optional[_builtins.str]]: """ Full GitLab namespace path. """ return pulumi.get(self, "gitlab_path_namespace") @gitlab_path_namespace.setter - def gitlab_path_namespace(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_path_namespace(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_path_namespace", value) @_builtins.property @pulumi.getter(name="gitlabProjectId") - def gitlab_project_id(self) -> Optional[pulumi.Input[_builtins.int]]: + def gitlab_project_id(self) -> pulumi.Input[Optional[_builtins.int]]: """ Numeric GitLab project ID. """ return pulumi.get(self, "gitlab_project_id") @gitlab_project_id.setter - def gitlab_project_id(self, value: Optional[pulumi.Input[_builtins.int]]): + def gitlab_project_id(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "gitlab_project_id", value) @_builtins.property @pulumi.getter(name="gitlabRepository") - def gitlab_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository name. """ return pulumi.get(self, "gitlab_repository") @gitlab_repository.setter - def gitlab_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_repository", value) + @_builtins.property + @pulumi.getter + def icon(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Icon shown next to the stack in the Dokploy UI. + """ + return pulumi.get(self, "icon") + + @icon.setter + def icon(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "icon", value) + @_builtins.property @pulumi.getter(name="isolatedDeployment") - def isolated_deployment(self) -> Optional[pulumi.Input[_builtins.bool]]: + def isolated_deployment(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Run the stack on its own isolated Docker network. """ return pulumi.get(self, "isolated_deployment") @isolated_deployment.setter - def isolated_deployment(self, value: Optional[pulumi.Input[_builtins.bool]]): + def isolated_deployment(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "isolated_deployment", value) @_builtins.property @pulumi.getter(name="isolatedDeploymentsVolume") - def isolated_deployments_volume(self) -> Optional[pulumi.Input[_builtins.bool]]: + def isolated_deployments_volume(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Prefix volume names for isolated deployments. Retained for backwards compatibility. """ return pulumi.get(self, "isolated_deployments_volume") @isolated_deployments_volume.setter - def isolated_deployments_volume(self, value: Optional[pulumi.Input[_builtins.bool]]): + def isolated_deployments_volume(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "isolated_deployments_volume", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the stack. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter - def owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository owner. """ return pulumi.get(self, "owner") @owner.setter - def owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "owner", value) @_builtins.property @pulumi.getter - def randomize(self) -> Optional[pulumi.Input[_builtins.bool]]: + def randomize(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Append a random suffix to service and volume names. """ return pulumi.get(self, "randomize") @randomize.setter - def randomize(self, value: Optional[pulumi.Input[_builtins.bool]]): + def randomize(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "randomize", value) @_builtins.property @pulumi.getter - def repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository name. """ return pulumi.get(self, "repository") @repository.setter - def repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "repository", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) + @_builtins.property + @pulumi.getter(name="serviceNetworks") + def service_networks(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + """ + return pulumi.get(self, "service_networks") + + @service_networks.setter + def service_networks(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_networks", value) + @_builtins.property @pulumi.getter(name="sourceType") - def source_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def source_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. """ return pulumi.get(self, "source_type") @source_type.setter - def source_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def source_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "source_type", value) @_builtins.property @pulumi.getter - def suffix(self) -> Optional[pulumi.Input[_builtins.str]]: + def suffix(self) -> pulumi.Input[Optional[_builtins.str]]: """ Suffix appended to generated resource names. """ return pulumi.get(self, "suffix") @suffix.setter - def suffix(self, value: Optional[pulumi.Input[_builtins.str]]): + def suffix(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "suffix", value) @_builtins.property @pulumi.getter(name="triggerType") - def trigger_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def trigger_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ What triggers an automatic deployment. Valid values: `push`, `tag`. """ return pulumi.get(self, "trigger_type") @trigger_type.setter - def trigger_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def trigger_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "trigger_type", value) @_builtins.property @pulumi.getter(name="watchPaths") - def watch_paths(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def watch_paths(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Glob patterns that limit which changed paths trigger an automatic deployment. """ return pulumi.get(self, "watch_paths") @watch_paths.setter - def watch_paths(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def watch_paths(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "watch_paths", value) @pulumi.input_type class _ComposeState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - compose_file: Optional[pulumi.Input[_builtins.str]] = None, - compose_path: Optional[pulumi.Input[_builtins.str]] = None, - compose_status: Optional[pulumi.Input[_builtins.str]] = None, - compose_type: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - delete_volumes: Optional[pulumi.Input[_builtins.bool]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - isolated_deployment: Optional[pulumi.Input[_builtins.bool]] = None, - isolated_deployments_volume: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - randomize: Optional[pulumi.Input[_builtins.bool]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - suffix: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_file: pulumi.Input[Optional[_builtins.str]] = None, + compose_path: pulumi.Input[Optional[_builtins.str]] = None, + compose_status: pulumi.Input[Optional[_builtins.str]] = None, + compose_type: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + delete_volumes: pulumi.Input[Optional[_builtins.bool]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + isolated_deployment: pulumi.Input[Optional[_builtins.bool]] = None, + isolated_deployments_volume: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + randomize: pulumi.Input[Optional[_builtins.bool]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_networks: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + suffix: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None): """ Input properties used for looking up and filtering Compose resources. @@ -759,6 +810,7 @@ class _ComposeState: :param pulumi.Input[_builtins.str] compose_path: Path to the Compose file within the repository. :param pulumi.Input[_builtins.str] compose_status: Current status reported by Dokploy: `idle`, `running`, `done` or `error`. :param pulumi.Input[_builtins.str] compose_type: Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. + :param pulumi.Input[_builtins.bool] create_env_file: Write the environment variables to a `.env` file next to the Compose file. :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the stack was created. :param pulumi.Input[_builtins.str] custom_git_branch: Branch to deploy for a custom Git remote. :param pulumi.Input[_builtins.str] custom_git_ssh_key_id: SSH key used to clone a private custom Git remote. @@ -779,6 +831,7 @@ class _ComposeState: :param pulumi.Input[_builtins.str] gitlab_path_namespace: Full GitLab namespace path. :param pulumi.Input[_builtins.int] gitlab_project_id: Numeric GitLab project ID. :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the stack in the Dokploy UI. :param pulumi.Input[_builtins.bool] isolated_deployment: Run the stack on its own isolated Docker network. :param pulumi.Input[_builtins.bool] isolated_deployments_volume: Prefix volume names for isolated deployments. Retained for backwards compatibility. :param pulumi.Input[_builtins.str] name: Display name of the stack. @@ -786,6 +839,7 @@ class _ComposeState: :param pulumi.Input[_builtins.bool] randomize: Append a random suffix to service and volume names. :param pulumi.Input[_builtins.str] repository: GitHub repository name. :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] service_networks: Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. :param pulumi.Input[_builtins.str] source_type: Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. :param pulumi.Input[_builtins.str] suffix: Suffix appended to generated resource names. :param pulumi.Input[_builtins.str] trigger_type: What triggers an automatic deployment. Valid values: `push`, `tag`. @@ -817,6 +871,8 @@ class _ComposeState: pulumi.set(__self__, "compose_status", compose_status) if compose_type is not None: pulumi.set(__self__, "compose_type", compose_type) + if create_env_file is not None: + pulumi.set(__self__, "create_env_file", create_env_file) if created_at is not None: pulumi.set(__self__, "created_at", created_at) if custom_git_branch is not None: @@ -857,6 +913,8 @@ class _ComposeState: pulumi.set(__self__, "gitlab_project_id", gitlab_project_id) if gitlab_repository is not None: pulumi.set(__self__, "gitlab_repository", gitlab_repository) + if icon is not None: + pulumi.set(__self__, "icon", icon) if isolated_deployment is not None: pulumi.set(__self__, "isolated_deployment", isolated_deployment) if isolated_deployments_volume is not None: @@ -871,6 +929,8 @@ class _ComposeState: pulumi.set(__self__, "repository", repository) if server_id is not None: pulumi.set(__self__, "server_id", server_id) + if service_networks is not None: + pulumi.set(__self__, "service_networks", service_networks) if source_type is not None: pulumi.set(__self__, "source_type", source_type) if suffix is not None: @@ -882,530 +942,566 @@ class _ComposeState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="autoDeploy") - def auto_deploy(self) -> Optional[pulumi.Input[_builtins.bool]]: + def auto_deploy(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Deploy automatically when the configured trigger fires. """ return pulumi.get(self, "auto_deploy") @auto_deploy.setter - def auto_deploy(self, value: Optional[pulumi.Input[_builtins.bool]]): + def auto_deploy(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "auto_deploy", value) @_builtins.property @pulumi.getter(name="bitbucketBranch") - def bitbucket_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket branch to deploy. """ return pulumi.get(self, "bitbucket_branch") @bitbucket_branch.setter - def bitbucket_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_branch", value) @_builtins.property @pulumi.getter(name="bitbucketId") - def bitbucket_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Bitbucket provider connection. """ return pulumi.get(self, "bitbucket_id") @bitbucket_id.setter - def bitbucket_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_id", value) @_builtins.property @pulumi.getter(name="bitbucketOwner") - def bitbucket_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository owner. """ return pulumi.get(self, "bitbucket_owner") @bitbucket_owner.setter - def bitbucket_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_owner", value) @_builtins.property @pulumi.getter(name="bitbucketRepository") - def bitbucket_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository name. """ return pulumi.get(self, "bitbucket_repository") @bitbucket_repository.setter - def bitbucket_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository", value) @_builtins.property @pulumi.getter(name="bitbucketRepositorySlug") - def bitbucket_repository_slug(self) -> Optional[pulumi.Input[_builtins.str]]: + def bitbucket_repository_slug(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bitbucket repository slug. """ return pulumi.get(self, "bitbucket_repository_slug") @bitbucket_repository_slug.setter - def bitbucket_repository_slug(self, value: Optional[pulumi.Input[_builtins.str]]): + def bitbucket_repository_slug(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bitbucket_repository_slug", value) @_builtins.property @pulumi.getter - def branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub branch to deploy. """ return pulumi.get(self, "branch") @branch.setter - def branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "branch", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Custom `docker compose` command to run. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="composeFile") - def compose_file(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_file(self) -> pulumi.Input[Optional[_builtins.str]]: """ Inline Compose file contents. Used when `source_type` is `raw`. """ return pulumi.get(self, "compose_file") @compose_file.setter - def compose_file(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_file(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_file", value) @_builtins.property @pulumi.getter(name="composePath") - def compose_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path to the Compose file within the repository. """ return pulumi.get(self, "compose_path") @compose_path.setter - def compose_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_path", value) @_builtins.property @pulumi.getter(name="composeStatus") - def compose_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "compose_status") @compose_status.setter - def compose_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_status", value) @_builtins.property @pulumi.getter(name="composeType") - def compose_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. """ return pulumi.get(self, "compose_type") @compose_type.setter - def compose_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_type", value) + @_builtins.property + @pulumi.getter(name="createEnvFile") + def create_env_file(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Write the environment variables to a `.env` file next to the Compose file. + """ + return pulumi.get(self, "create_env_file") + + @create_env_file.setter + def create_env_file(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "create_env_file", value) + @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the stack was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="customGitBranch") - def custom_git_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Branch to deploy for a custom Git remote. """ return pulumi.get(self, "custom_git_branch") @custom_git_branch.setter - def custom_git_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_branch", value) @_builtins.property @pulumi.getter(name="customGitSshKeyId") - def custom_git_ssh_key_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_ssh_key_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ SSH key used to clone a private custom Git remote. """ return pulumi.get(self, "custom_git_ssh_key_id") @custom_git_ssh_key_id.setter - def custom_git_ssh_key_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_ssh_key_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_ssh_key_id", value) @_builtins.property @pulumi.getter(name="customGitUrl") - def custom_git_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_git_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Git remote URL, when `source_type` is `git`. """ return pulumi.get(self, "custom_git_url") @custom_git_url.setter - def custom_git_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_git_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_git_url", value) @_builtins.property @pulumi.getter(name="deleteVolumes") - def delete_volumes(self) -> Optional[pulumi.Input[_builtins.bool]]: + def delete_volumes(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data. """ return pulumi.get(self, "delete_volumes") @delete_volumes.setter - def delete_volumes(self, value: Optional[pulumi.Input[_builtins.bool]]): + def delete_volumes(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "delete_volumes", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="enableSubmodules") - def enable_submodules(self) -> Optional[pulumi.Input[_builtins.bool]]: + def enable_submodules(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Clone Git submodules when checking out the repository. """ return pulumi.get(self, "enable_submodules") @enable_submodules.setter - def enable_submodules(self, value: Optional[pulumi.Input[_builtins.bool]]): + def enable_submodules(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "enable_submodules", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this stack belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="giteaBranch") - def gitea_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea branch to deploy. """ return pulumi.get(self, "gitea_branch") @gitea_branch.setter - def gitea_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_branch", value) @_builtins.property @pulumi.getter(name="giteaId") - def gitea_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured Gitea provider connection. """ return pulumi.get(self, "gitea_id") @gitea_id.setter - def gitea_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_id", value) @_builtins.property @pulumi.getter(name="giteaOwner") - def gitea_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository owner. """ return pulumi.get(self, "gitea_owner") @gitea_owner.setter - def gitea_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_owner", value) @_builtins.property @pulumi.getter(name="giteaRepository") - def gitea_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitea_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ Gitea repository name. """ return pulumi.get(self, "gitea_repository") @gitea_repository.setter - def gitea_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitea_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitea_repository", value) @_builtins.property @pulumi.getter(name="githubId") - def github_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def github_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitHub provider connection. """ return pulumi.get(self, "github_id") @github_id.setter - def github_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def github_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "github_id", value) @_builtins.property @pulumi.getter(name="gitlabBranch") - def gitlab_branch(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_branch(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab branch to deploy. """ return pulumi.get(self, "gitlab_branch") @gitlab_branch.setter - def gitlab_branch(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_branch(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_branch", value) @_builtins.property @pulumi.getter(name="gitlabId") - def gitlab_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the configured GitLab provider connection. """ return pulumi.get(self, "gitlab_id") @gitlab_id.setter - def gitlab_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_id", value) @_builtins.property @pulumi.getter(name="gitlabOwner") - def gitlab_owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository owner. """ return pulumi.get(self, "gitlab_owner") @gitlab_owner.setter - def gitlab_owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_owner", value) @_builtins.property @pulumi.getter(name="gitlabPathNamespace") - def gitlab_path_namespace(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_path_namespace(self) -> pulumi.Input[Optional[_builtins.str]]: """ Full GitLab namespace path. """ return pulumi.get(self, "gitlab_path_namespace") @gitlab_path_namespace.setter - def gitlab_path_namespace(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_path_namespace(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_path_namespace", value) @_builtins.property @pulumi.getter(name="gitlabProjectId") - def gitlab_project_id(self) -> Optional[pulumi.Input[_builtins.int]]: + def gitlab_project_id(self) -> pulumi.Input[Optional[_builtins.int]]: """ Numeric GitLab project ID. """ return pulumi.get(self, "gitlab_project_id") @gitlab_project_id.setter - def gitlab_project_id(self, value: Optional[pulumi.Input[_builtins.int]]): + def gitlab_project_id(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "gitlab_project_id", value) @_builtins.property @pulumi.getter(name="gitlabRepository") - def gitlab_repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def gitlab_repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitLab repository name. """ return pulumi.get(self, "gitlab_repository") @gitlab_repository.setter - def gitlab_repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def gitlab_repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "gitlab_repository", value) + @_builtins.property + @pulumi.getter + def icon(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Icon shown next to the stack in the Dokploy UI. + """ + return pulumi.get(self, "icon") + + @icon.setter + def icon(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "icon", value) + @_builtins.property @pulumi.getter(name="isolatedDeployment") - def isolated_deployment(self) -> Optional[pulumi.Input[_builtins.bool]]: + def isolated_deployment(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Run the stack on its own isolated Docker network. """ return pulumi.get(self, "isolated_deployment") @isolated_deployment.setter - def isolated_deployment(self, value: Optional[pulumi.Input[_builtins.bool]]): + def isolated_deployment(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "isolated_deployment", value) @_builtins.property @pulumi.getter(name="isolatedDeploymentsVolume") - def isolated_deployments_volume(self) -> Optional[pulumi.Input[_builtins.bool]]: + def isolated_deployments_volume(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Prefix volume names for isolated deployments. Retained for backwards compatibility. """ return pulumi.get(self, "isolated_deployments_volume") @isolated_deployments_volume.setter - def isolated_deployments_volume(self, value: Optional[pulumi.Input[_builtins.bool]]): + def isolated_deployments_volume(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "isolated_deployments_volume", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the stack. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter - def owner(self) -> Optional[pulumi.Input[_builtins.str]]: + def owner(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository owner. """ return pulumi.get(self, "owner") @owner.setter - def owner(self, value: Optional[pulumi.Input[_builtins.str]]): + def owner(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "owner", value) @_builtins.property @pulumi.getter - def randomize(self) -> Optional[pulumi.Input[_builtins.bool]]: + def randomize(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Append a random suffix to service and volume names. """ return pulumi.get(self, "randomize") @randomize.setter - def randomize(self, value: Optional[pulumi.Input[_builtins.bool]]): + def randomize(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "randomize", value) @_builtins.property @pulumi.getter - def repository(self) -> Optional[pulumi.Input[_builtins.str]]: + def repository(self) -> pulumi.Input[Optional[_builtins.str]]: """ GitHub repository name. """ return pulumi.get(self, "repository") @repository.setter - def repository(self, value: Optional[pulumi.Input[_builtins.str]]): + def repository(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "repository", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) + @_builtins.property + @pulumi.getter(name="serviceNetworks") + def service_networks(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + """ + return pulumi.get(self, "service_networks") + + @service_networks.setter + def service_networks(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_networks", value) + @_builtins.property @pulumi.getter(name="sourceType") - def source_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def source_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. """ return pulumi.get(self, "source_type") @source_type.setter - def source_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def source_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "source_type", value) @_builtins.property @pulumi.getter - def suffix(self) -> Optional[pulumi.Input[_builtins.str]]: + def suffix(self) -> pulumi.Input[Optional[_builtins.str]]: """ Suffix appended to generated resource names. """ return pulumi.get(self, "suffix") @suffix.setter - def suffix(self, value: Optional[pulumi.Input[_builtins.str]]): + def suffix(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "suffix", value) @_builtins.property @pulumi.getter(name="triggerType") - def trigger_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def trigger_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ What triggers an automatic deployment. Valid values: `push`, `tag`. """ return pulumi.get(self, "trigger_type") @trigger_type.setter - def trigger_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def trigger_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "trigger_type", value) @_builtins.property @pulumi.getter(name="watchPaths") - def watch_paths(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def watch_paths(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Glob patterns that limit which changed paths trigger an automatic deployment. """ return pulumi.get(self, "watch_paths") @watch_paths.setter - def watch_paths(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def watch_paths(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "watch_paths", value) @@ -1415,51 +1511,59 @@ class Compose(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - compose_file: Optional[pulumi.Input[_builtins.str]] = None, - compose_path: Optional[pulumi.Input[_builtins.str]] = None, - compose_type: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - delete_volumes: Optional[pulumi.Input[_builtins.bool]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - isolated_deployment: Optional[pulumi.Input[_builtins.bool]] = None, - isolated_deployments_volume: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - randomize: Optional[pulumi.Input[_builtins.bool]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - suffix: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_file: pulumi.Input[Optional[_builtins.str]] = None, + compose_path: pulumi.Input[Optional[_builtins.str]] = None, + compose_type: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + delete_volumes: pulumi.Input[Optional[_builtins.bool]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + isolated_deployment: pulumi.Input[Optional[_builtins.bool]] = None, + isolated_deployments_volume: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + randomize: pulumi.Input[Optional[_builtins.bool]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_networks: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + suffix: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, __props__=None): """ - Create a Compose resource with the given unique name, props, and options. + A Docker Compose or Docker Swarm stack managed by Dokploy. + + Set `compose_file` to manage the stack definition inline (with `source_type = "raw"`), or point the stack at a Git repository and set `compose_path`. + + > Creating this resource does **not** deploy the stack. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -1475,6 +1579,7 @@ class Compose(pulumi.CustomResource): :param pulumi.Input[_builtins.str] compose_file: Inline Compose file contents. Used when `source_type` is `raw`. :param pulumi.Input[_builtins.str] compose_path: Path to the Compose file within the repository. :param pulumi.Input[_builtins.str] compose_type: Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. + :param pulumi.Input[_builtins.bool] create_env_file: Write the environment variables to a `.env` file next to the Compose file. :param pulumi.Input[_builtins.str] custom_git_branch: Branch to deploy for a custom Git remote. :param pulumi.Input[_builtins.str] custom_git_ssh_key_id: SSH key used to clone a private custom Git remote. :param pulumi.Input[_builtins.str] custom_git_url: Git remote URL, when `source_type` is `git`. @@ -1494,6 +1599,7 @@ class Compose(pulumi.CustomResource): :param pulumi.Input[_builtins.str] gitlab_path_namespace: Full GitLab namespace path. :param pulumi.Input[_builtins.int] gitlab_project_id: Numeric GitLab project ID. :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the stack in the Dokploy UI. :param pulumi.Input[_builtins.bool] isolated_deployment: Run the stack on its own isolated Docker network. :param pulumi.Input[_builtins.bool] isolated_deployments_volume: Prefix volume names for isolated deployments. Retained for backwards compatibility. :param pulumi.Input[_builtins.str] name: Display name of the stack. @@ -1501,6 +1607,7 @@ class Compose(pulumi.CustomResource): :param pulumi.Input[_builtins.bool] randomize: Append a random suffix to service and volume names. :param pulumi.Input[_builtins.str] repository: GitHub repository name. :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] service_networks: Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. :param pulumi.Input[_builtins.str] source_type: Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. :param pulumi.Input[_builtins.str] suffix: Suffix appended to generated resource names. :param pulumi.Input[_builtins.str] trigger_type: What triggers an automatic deployment. Valid values: `push`, `tag`. @@ -1513,7 +1620,12 @@ class Compose(pulumi.CustomResource): args: ComposeArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Compose resource with the given unique name, props, and options. + A Docker Compose or Docker Swarm stack managed by Dokploy. + + Set `compose_file` to manage the stack definition inline (with `source_type = "raw"`), or point the stack at a Git repository and set `compose_path`. + + > Creating this resource does **not** deploy the stack. + :param str resource_name: The name of the resource. :param ComposeArgs args: The arguments to use to populate this resource's properties. @@ -1530,48 +1642,51 @@ class Compose(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - compose_file: Optional[pulumi.Input[_builtins.str]] = None, - compose_path: Optional[pulumi.Input[_builtins.str]] = None, - compose_type: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - delete_volumes: Optional[pulumi.Input[_builtins.bool]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - isolated_deployment: Optional[pulumi.Input[_builtins.bool]] = None, - isolated_deployments_volume: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - randomize: Optional[pulumi.Input[_builtins.bool]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - suffix: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_file: pulumi.Input[Optional[_builtins.str]] = None, + compose_path: pulumi.Input[Optional[_builtins.str]] = None, + compose_type: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + delete_volumes: pulumi.Input[Optional[_builtins.bool]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + isolated_deployment: pulumi.Input[Optional[_builtins.bool]] = None, + isolated_deployments_volume: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + randomize: pulumi.Input[Optional[_builtins.bool]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_networks: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + suffix: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1593,6 +1708,7 @@ class Compose(pulumi.CustomResource): __props__.__dict__["compose_file"] = compose_file __props__.__dict__["compose_path"] = compose_path __props__.__dict__["compose_type"] = compose_type + __props__.__dict__["create_env_file"] = create_env_file __props__.__dict__["custom_git_branch"] = custom_git_branch __props__.__dict__["custom_git_ssh_key_id"] = custom_git_ssh_key_id __props__.__dict__["custom_git_url"] = custom_git_url @@ -1614,6 +1730,7 @@ class Compose(pulumi.CustomResource): __props__.__dict__["gitlab_path_namespace"] = gitlab_path_namespace __props__.__dict__["gitlab_project_id"] = gitlab_project_id __props__.__dict__["gitlab_repository"] = gitlab_repository + __props__.__dict__["icon"] = icon __props__.__dict__["isolated_deployment"] = isolated_deployment __props__.__dict__["isolated_deployments_volume"] = isolated_deployments_volume __props__.__dict__["name"] = name @@ -1621,6 +1738,7 @@ class Compose(pulumi.CustomResource): __props__.__dict__["randomize"] = randomize __props__.__dict__["repository"] = repository __props__.__dict__["server_id"] = server_id + __props__.__dict__["service_networks"] = service_networks __props__.__dict__["source_type"] = source_type __props__.__dict__["suffix"] = suffix __props__.__dict__["trigger_type"] = trigger_type @@ -1637,50 +1755,53 @@ class Compose(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - auto_deploy: Optional[pulumi.Input[_builtins.bool]] = None, - bitbucket_branch: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_id: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_owner: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository: Optional[pulumi.Input[_builtins.str]] = None, - bitbucket_repository_slug: Optional[pulumi.Input[_builtins.str]] = None, - branch: Optional[pulumi.Input[_builtins.str]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - compose_file: Optional[pulumi.Input[_builtins.str]] = None, - compose_path: Optional[pulumi.Input[_builtins.str]] = None, - compose_status: Optional[pulumi.Input[_builtins.str]] = None, - compose_type: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_branch: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_ssh_key_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_git_url: Optional[pulumi.Input[_builtins.str]] = None, - delete_volumes: Optional[pulumi.Input[_builtins.bool]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - enable_submodules: Optional[pulumi.Input[_builtins.bool]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitea_id: Optional[pulumi.Input[_builtins.str]] = None, - gitea_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitea_repository: Optional[pulumi.Input[_builtins.str]] = None, - github_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_branch: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_id: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_owner: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_path_namespace: Optional[pulumi.Input[_builtins.str]] = None, - gitlab_project_id: Optional[pulumi.Input[_builtins.int]] = None, - gitlab_repository: Optional[pulumi.Input[_builtins.str]] = None, - isolated_deployment: Optional[pulumi.Input[_builtins.bool]] = None, - isolated_deployments_volume: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - owner: Optional[pulumi.Input[_builtins.str]] = None, - randomize: Optional[pulumi.Input[_builtins.bool]] = None, - repository: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - source_type: Optional[pulumi.Input[_builtins.str]] = None, - suffix: Optional[pulumi.Input[_builtins.str]] = None, - trigger_type: Optional[pulumi.Input[_builtins.str]] = None, - watch_paths: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None) -> 'Compose': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + auto_deploy: pulumi.Input[Optional[_builtins.bool]] = None, + bitbucket_branch: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_id: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_owner: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository: pulumi.Input[Optional[_builtins.str]] = None, + bitbucket_repository_slug: pulumi.Input[Optional[_builtins.str]] = None, + branch: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_file: pulumi.Input[Optional[_builtins.str]] = None, + compose_path: pulumi.Input[Optional[_builtins.str]] = None, + compose_status: pulumi.Input[Optional[_builtins.str]] = None, + compose_type: pulumi.Input[Optional[_builtins.str]] = None, + create_env_file: pulumi.Input[Optional[_builtins.bool]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_branch: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_ssh_key_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_git_url: pulumi.Input[Optional[_builtins.str]] = None, + delete_volumes: pulumi.Input[Optional[_builtins.bool]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enable_submodules: pulumi.Input[Optional[_builtins.bool]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitea_id: pulumi.Input[Optional[_builtins.str]] = None, + gitea_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitea_repository: pulumi.Input[Optional[_builtins.str]] = None, + github_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_branch: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_id: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_owner: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_path_namespace: pulumi.Input[Optional[_builtins.str]] = None, + gitlab_project_id: pulumi.Input[Optional[_builtins.int]] = None, + gitlab_repository: pulumi.Input[Optional[_builtins.str]] = None, + icon: pulumi.Input[Optional[_builtins.str]] = None, + isolated_deployment: pulumi.Input[Optional[_builtins.bool]] = None, + isolated_deployments_volume: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + owner: pulumi.Input[Optional[_builtins.str]] = None, + randomize: pulumi.Input[Optional[_builtins.bool]] = None, + repository: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_networks: pulumi.Input[Optional[_builtins.str]] = None, + source_type: pulumi.Input[Optional[_builtins.str]] = None, + suffix: pulumi.Input[Optional[_builtins.str]] = None, + trigger_type: pulumi.Input[Optional[_builtins.str]] = None, + watch_paths: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None) -> 'Compose': """ Get an existing Compose resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -1701,6 +1822,7 @@ class Compose(pulumi.CustomResource): :param pulumi.Input[_builtins.str] compose_path: Path to the Compose file within the repository. :param pulumi.Input[_builtins.str] compose_status: Current status reported by Dokploy: `idle`, `running`, `done` or `error`. :param pulumi.Input[_builtins.str] compose_type: Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`. + :param pulumi.Input[_builtins.bool] create_env_file: Write the environment variables to a `.env` file next to the Compose file. :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the stack was created. :param pulumi.Input[_builtins.str] custom_git_branch: Branch to deploy for a custom Git remote. :param pulumi.Input[_builtins.str] custom_git_ssh_key_id: SSH key used to clone a private custom Git remote. @@ -1721,6 +1843,7 @@ class Compose(pulumi.CustomResource): :param pulumi.Input[_builtins.str] gitlab_path_namespace: Full GitLab namespace path. :param pulumi.Input[_builtins.int] gitlab_project_id: Numeric GitLab project ID. :param pulumi.Input[_builtins.str] gitlab_repository: GitLab repository name. + :param pulumi.Input[_builtins.str] icon: Icon shown next to the stack in the Dokploy UI. :param pulumi.Input[_builtins.bool] isolated_deployment: Run the stack on its own isolated Docker network. :param pulumi.Input[_builtins.bool] isolated_deployments_volume: Prefix volume names for isolated deployments. Retained for backwards compatibility. :param pulumi.Input[_builtins.str] name: Display name of the stack. @@ -1728,6 +1851,7 @@ class Compose(pulumi.CustomResource): :param pulumi.Input[_builtins.bool] randomize: Append a random suffix to service and volume names. :param pulumi.Input[_builtins.str] repository: GitHub repository name. :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] service_networks: Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. :param pulumi.Input[_builtins.str] source_type: Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`. :param pulumi.Input[_builtins.str] suffix: Suffix appended to generated resource names. :param pulumi.Input[_builtins.str] trigger_type: What triggers an automatic deployment. Valid values: `push`, `tag`. @@ -1750,6 +1874,7 @@ class Compose(pulumi.CustomResource): __props__.__dict__["compose_path"] = compose_path __props__.__dict__["compose_status"] = compose_status __props__.__dict__["compose_type"] = compose_type + __props__.__dict__["create_env_file"] = create_env_file __props__.__dict__["created_at"] = created_at __props__.__dict__["custom_git_branch"] = custom_git_branch __props__.__dict__["custom_git_ssh_key_id"] = custom_git_ssh_key_id @@ -1770,6 +1895,7 @@ class Compose(pulumi.CustomResource): __props__.__dict__["gitlab_path_namespace"] = gitlab_path_namespace __props__.__dict__["gitlab_project_id"] = gitlab_project_id __props__.__dict__["gitlab_repository"] = gitlab_repository + __props__.__dict__["icon"] = icon __props__.__dict__["isolated_deployment"] = isolated_deployment __props__.__dict__["isolated_deployments_volume"] = isolated_deployments_volume __props__.__dict__["name"] = name @@ -1777,6 +1903,7 @@ class Compose(pulumi.CustomResource): __props__.__dict__["randomize"] = randomize __props__.__dict__["repository"] = repository __props__.__dict__["server_id"] = server_id + __props__.__dict__["service_networks"] = service_networks __props__.__dict__["source_type"] = source_type __props__.__dict__["suffix"] = suffix __props__.__dict__["trigger_type"] = trigger_type @@ -1887,6 +2014,14 @@ class Compose(pulumi.CustomResource): """ return pulumi.get(self, "compose_type") + @_builtins.property + @pulumi.getter(name="createEnvFile") + def create_env_file(self) -> pulumi.Output[_builtins.bool]: + """ + Write the environment variables to a `.env` file next to the Compose file. + """ + return pulumi.get(self, "create_env_file") + @_builtins.property @pulumi.getter(name="createdAt") def created_at(self) -> pulumi.Output[_builtins.str]: @@ -2047,6 +2182,14 @@ class Compose(pulumi.CustomResource): """ return pulumi.get(self, "gitlab_repository") + @_builtins.property + @pulumi.getter + def icon(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Icon shown next to the stack in the Dokploy UI. + """ + return pulumi.get(self, "icon") + @_builtins.property @pulumi.getter(name="isolatedDeployment") def isolated_deployment(self) -> pulumi.Output[_builtins.bool]: @@ -2103,6 +2246,14 @@ class Compose(pulumi.CustomResource): """ return pulumi.get(self, "server_id") + @_builtins.property + @pulumi.getter(name="serviceNetworks") + def service_networks(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Per-service Docker network attachments, as a JSON object mapping each service name in the stack to an array of network IDs. + """ + return pulumi.get(self, "service_networks") + @_builtins.property @pulumi.getter(name="sourceType") def source_type(self) -> pulumi.Output[_builtins.str]: diff --git a/sdk/python/pulumi_dokploy/destination.py b/sdk/python/pulumi_dokploy/destination.py index a3fc7d9..72ba478 100644 --- a/sdk/python/pulumi_dokploy/destination.py +++ b/sdk/python/pulumi_dokploy/destination.py @@ -24,10 +24,10 @@ class DestinationArgs: endpoint: pulumi.Input[_builtins.str], region: pulumi.Input[_builtins.str], secret_access_key: pulumi.Input[_builtins.str], - additional_flags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - provider_name: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None): + additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + provider_name: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Destination resource. @@ -117,66 +117,66 @@ class DestinationArgs: @_builtins.property @pulumi.getter(name="additionalFlags") - def additional_flags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def additional_flags(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Extra flags passed to the underlying `rclone` invocation. """ return pulumi.get(self, "additional_flags") @additional_flags.setter - def additional_flags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def additional_flags(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "additional_flags", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the destination. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="providerName") - def provider_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def provider_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform. """ return pulumi.get(self, "provider_name") @provider_name.setter - def provider_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def provider_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "provider_name", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server this destination is scoped to. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @pulumi.input_type class _DestinationState: def __init__(__self__, *, - access_key: Optional[pulumi.Input[_builtins.str]] = None, - additional_flags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - bucket: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - endpoint: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - provider_name: Optional[pulumi.Input[_builtins.str]] = None, - region: Optional[pulumi.Input[_builtins.str]] = None, - secret_access_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None): + access_key: pulumi.Input[Optional[_builtins.str]] = None, + additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + bucket: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + endpoint: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + provider_name: pulumi.Input[Optional[_builtins.str]] = None, + region: pulumi.Input[Optional[_builtins.str]] = None, + secret_access_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Destination resources. @@ -214,122 +214,122 @@ class _DestinationState: @_builtins.property @pulumi.getter(name="accessKey") - def access_key(self) -> Optional[pulumi.Input[_builtins.str]]: + def access_key(self) -> pulumi.Input[Optional[_builtins.str]]: """ S3 access key ID. """ return pulumi.get(self, "access_key") @access_key.setter - def access_key(self, value: Optional[pulumi.Input[_builtins.str]]): + def access_key(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "access_key", value) @_builtins.property @pulumi.getter(name="additionalFlags") - def additional_flags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def additional_flags(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Extra flags passed to the underlying `rclone` invocation. """ return pulumi.get(self, "additional_flags") @additional_flags.setter - def additional_flags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def additional_flags(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "additional_flags", value) @_builtins.property @pulumi.getter - def bucket(self) -> Optional[pulumi.Input[_builtins.str]]: + def bucket(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bucket name. """ return pulumi.get(self, "bucket") @bucket.setter - def bucket(self, value: Optional[pulumi.Input[_builtins.str]]): + def bucket(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "bucket", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ Timestamp of when the destination was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter - def endpoint(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint(self) -> pulumi.Input[Optional[_builtins.str]]: """ S3 endpoint URL. """ return pulumi.get(self, "endpoint") @endpoint.setter - def endpoint(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the destination. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="providerName") - def provider_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def provider_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform. """ return pulumi.get(self, "provider_name") @provider_name.setter - def provider_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def provider_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "provider_name", value) @_builtins.property @pulumi.getter - def region(self) -> Optional[pulumi.Input[_builtins.str]]: + def region(self) -> pulumi.Input[Optional[_builtins.str]]: """ Bucket region, for example `us-east-1`. """ return pulumi.get(self, "region") @region.setter - def region(self, value: Optional[pulumi.Input[_builtins.str]]): + def region(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "region", value) @_builtins.property @pulumi.getter(name="secretAccessKey") - def secret_access_key(self) -> Optional[pulumi.Input[_builtins.str]]: + def secret_access_key(self) -> pulumi.Input[Optional[_builtins.str]]: """ S3 secret access key. """ return pulumi.get(self, "secret_access_key") @secret_access_key.setter - def secret_access_key(self, value: Optional[pulumi.Input[_builtins.str]]): + def secret_access_key(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "secret_access_key", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server this destination is scoped to. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @@ -339,18 +339,21 @@ class Destination(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - access_key: Optional[pulumi.Input[_builtins.str]] = None, - additional_flags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - bucket: Optional[pulumi.Input[_builtins.str]] = None, - endpoint: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - provider_name: Optional[pulumi.Input[_builtins.str]] = None, - region: Optional[pulumi.Input[_builtins.str]] = None, - secret_access_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, + access_key: pulumi.Input[Optional[_builtins.str]] = None, + additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + bucket: pulumi.Input[Optional[_builtins.str]] = None, + endpoint: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + provider_name: pulumi.Input[Optional[_builtins.str]] = None, + region: pulumi.Input[Optional[_builtins.str]] = None, + secret_access_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Destination resource with the given unique name, props, and options. + An S3-compatible bucket that Dokploy writes database and volume backups to. + + > The secret access key is stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -371,7 +374,10 @@ class Destination(pulumi.CustomResource): args: DestinationArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Destination resource with the given unique name, props, and options. + An S3-compatible bucket that Dokploy writes database and volume backups to. + + > The secret access key is stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param DestinationArgs args: The arguments to use to populate this resource's properties. @@ -388,15 +394,15 @@ class Destination(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - access_key: Optional[pulumi.Input[_builtins.str]] = None, - additional_flags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - bucket: Optional[pulumi.Input[_builtins.str]] = None, - endpoint: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - provider_name: Optional[pulumi.Input[_builtins.str]] = None, - region: Optional[pulumi.Input[_builtins.str]] = None, - secret_access_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, + access_key: pulumi.Input[Optional[_builtins.str]] = None, + additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + bucket: pulumi.Input[Optional[_builtins.str]] = None, + endpoint: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + provider_name: pulumi.Input[Optional[_builtins.str]] = None, + region: pulumi.Input[Optional[_builtins.str]] = None, + secret_access_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -438,16 +444,16 @@ class Destination(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - access_key: Optional[pulumi.Input[_builtins.str]] = None, - additional_flags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - bucket: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - endpoint: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - provider_name: Optional[pulumi.Input[_builtins.str]] = None, - region: Optional[pulumi.Input[_builtins.str]] = None, - secret_access_key: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'Destination': + access_key: pulumi.Input[Optional[_builtins.str]] = None, + additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + bucket: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + endpoint: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + provider_name: pulumi.Input[Optional[_builtins.str]] = None, + region: pulumi.Input[Optional[_builtins.str]] = None, + secret_access_key: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None) -> 'Destination': """ Get an existing Destination resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/dns_provider.py b/sdk/python/pulumi_dokploy/dns_provider.py new file mode 100644 index 0000000..55186e7 --- /dev/null +++ b/sdk/python/pulumi_dokploy/dns_provider.py @@ -0,0 +1,293 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import builtins as _builtins +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities + +__all__ = ['DnsProviderArgs', 'DnsProvider'] + +@pulumi.input_type +class DnsProviderArgs: + def __init__(__self__, *, + config: pulumi.Input[_builtins.str], + name: pulumi.Input[Optional[_builtins.str]] = None): + """ + The set of arguments for constructing a DnsProvider resource. + + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] name: Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + """ + pulumi.set(__self__, "config", config) + if name is not None: + pulumi.set(__self__, "name", name) + + @_builtins.property + @pulumi.getter + def config(self) -> pulumi.Input[_builtins.str]: + """ + Provider credentials as a JSON object, including the `providerType` discriminator. + """ + return pulumi.get(self, "config") + + @config.setter + def config(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "config", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _DnsProviderState: + def __init__(__self__, *, + config: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None, + provider_type: pulumi.Input[Optional[_builtins.str]] = None): + """ + Input properties used for looking up and filtering DnsProvider resources. + + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the connection was created. + :param pulumi.Input[_builtins.str] name: Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + :param pulumi.Input[_builtins.str] organization_id: Organization that owns the connection. + :param pulumi.Input[_builtins.str] provider_type: Provider kind derived from `config`: `cloudflare` or `route53`. + """ + if config is not None: + pulumi.set(__self__, "config", config) + if created_at is not None: + pulumi.set(__self__, "created_at", created_at) + if name is not None: + pulumi.set(__self__, "name", name) + if organization_id is not None: + pulumi.set(__self__, "organization_id", organization_id) + if provider_type is not None: + pulumi.set(__self__, "provider_type", provider_type) + + @_builtins.property + @pulumi.getter + def config(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Provider credentials as a JSON object, including the `providerType` discriminator. + """ + return pulumi.get(self, "config") + + @config.setter + def config(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "config", value) + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + RFC 3339 timestamp of when the connection was created. + """ + return pulumi.get(self, "created_at") + + @created_at.setter + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "created_at", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="organizationId") + def organization_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Organization that owns the connection. + """ + return pulumi.get(self, "organization_id") + + @organization_id.setter + def organization_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "organization_id", value) + + @_builtins.property + @pulumi.getter(name="providerType") + def provider_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Provider kind derived from `config`: `cloudflare` or `route53`. + """ + return pulumi.get(self, "provider_type") + + @provider_type.setter + def provider_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "provider_type", value) + + +@pulumi.type_token("dokploy:index/dnsProvider:DnsProvider") +class DnsProvider(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + """ + A DNS provider connection Dokploy uses to create records for domains automatically. + + `config` is a JSON object whose shape depends on `providerType`: + + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] name: Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: DnsProviderArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + A DNS provider connection Dokploy uses to create records for domains automatically. + + `config` is a JSON object whose shape depends on `providerType`: + + + :param str resource_name: The name of the resource. + :param DnsProviderArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(DnsProviderArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = DnsProviderArgs.__new__(DnsProviderArgs) + + if config is None and not opts.urn: + raise TypeError("Missing required property 'config'") + __props__.__dict__["config"] = None if config is None else pulumi.Output.secret(config) + __props__.__dict__["name"] = name + __props__.__dict__["created_at"] = None + __props__.__dict__["organization_id"] = None + __props__.__dict__["provider_type"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["config"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(DnsProvider, __self__).__init__( + 'dokploy:index/dnsProvider:DnsProvider', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None, + provider_type: pulumi.Input[Optional[_builtins.str]] = None) -> 'DnsProvider': + """ + Get an existing DnsProvider resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the connection was created. + :param pulumi.Input[_builtins.str] name: Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + :param pulumi.Input[_builtins.str] organization_id: Organization that owns the connection. + :param pulumi.Input[_builtins.str] provider_type: Provider kind derived from `config`: `cloudflare` or `route53`. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _DnsProviderState.__new__(_DnsProviderState) + + __props__.__dict__["config"] = config + __props__.__dict__["created_at"] = created_at + __props__.__dict__["name"] = name + __props__.__dict__["organization_id"] = organization_id + __props__.__dict__["provider_type"] = provider_type + return DnsProvider(resource_name, opts=opts, __props__=__props__) + + @_builtins.property + @pulumi.getter + def config(self) -> pulumi.Output[_builtins.str]: + """ + Provider credentials as a JSON object, including the `providerType` discriminator. + """ + return pulumi.get(self, "config") + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Output[_builtins.str]: + """ + RFC 3339 timestamp of when the connection was created. + """ + return pulumi.get(self, "created_at") + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Output[_builtins.str]: + """ + Name of the connection. Must be unique within the organization and may contain only letters, digits, `-` and `_`. + """ + return pulumi.get(self, "name") + + @_builtins.property + @pulumi.getter(name="organizationId") + def organization_id(self) -> pulumi.Output[_builtins.str]: + """ + Organization that owns the connection. + """ + return pulumi.get(self, "organization_id") + + @_builtins.property + @pulumi.getter(name="providerType") + def provider_type(self) -> pulumi.Output[_builtins.str]: + """ + Provider kind derived from `config`: `cloudflare` or `route53`. + """ + return pulumi.get(self, "provider_type") + diff --git a/sdk/python/pulumi_dokploy/domain.py b/sdk/python/pulumi_dokploy/domain.py index b3c5c6a..1c83057 100644 --- a/sdk/python/pulumi_dokploy/domain.py +++ b/sdk/python/pulumi_dokploy/domain.py @@ -20,21 +20,22 @@ __all__ = ['DomainArgs', 'Domain'] class DomainArgs: def __init__(__self__, *, host: pulumi.Input[_builtins.str], - application_id: Optional[pulumi.Input[_builtins.str]] = None, - certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - compose_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None, - domain_type: Optional[pulumi.Input[_builtins.str]] = None, - forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None, - https: Optional[pulumi.Input[_builtins.bool]] = None, - internal_path: Optional[pulumi.Input[_builtins.str]] = None, - middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - path: Optional[pulumi.Input[_builtins.str]] = None, - port: Optional[pulumi.Input[_builtins.int]] = None, - preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None, - service_name: Optional[pulumi.Input[_builtins.str]] = None, - strip_path: Optional[pulumi.Input[_builtins.bool]] = None): + application_id: pulumi.Input[Optional[_builtins.str]] = None, + certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None, + domain_type: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None, + https: pulumi.Input[Optional[_builtins.bool]] = None, + internal_path: pulumi.Input[Optional[_builtins.str]] = None, + middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + path: pulumi.Input[Optional[_builtins.str]] = None, + port: pulumi.Input[Optional[_builtins.int]] = None, + preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + strip_path: pulumi.Input[Optional[_builtins.bool]] = None): """ The set of arguments for constructing a Domain resource. @@ -45,6 +46,7 @@ class DomainArgs: :param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`. :param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults. :param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. + :param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. :param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth. :param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it. :param pulumi.Input[_builtins.str] internal_path: Path the request is rewritten to before it reaches the container, defaults to `/`. @@ -68,6 +70,8 @@ class DomainArgs: pulumi.set(__self__, "custom_entrypoint", custom_entrypoint) if domain_type is not None: pulumi.set(__self__, "domain_type", domain_type) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) if forward_auth_enabled is not None: pulumi.set(__self__, "forward_auth_enabled", forward_auth_enabled) if https is not None: @@ -101,205 +105,218 @@ class DomainArgs: @_builtins.property @pulumi.getter(name="applicationId") - def application_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Application this domain routes to. """ return pulumi.get(self, "application_id") @application_id.setter - def application_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_id", value) @_builtins.property @pulumi.getter(name="certificateType") - def certificate_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def certificate_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`. """ return pulumi.get(self, "certificate_type") @certificate_type.setter - def certificate_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def certificate_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "certificate_type", value) @_builtins.property @pulumi.getter(name="composeId") - def compose_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Compose stack this domain routes to. """ return pulumi.get(self, "compose_id") @compose_id.setter - def compose_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_id", value) @_builtins.property @pulumi.getter(name="customCertResolver") - def custom_cert_resolver(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_cert_resolver(self) -> pulumi.Input[Optional[_builtins.str]]: """ Traefik certificate resolver name, when `certificate_type` is `custom`. """ return pulumi.get(self, "custom_cert_resolver") @custom_cert_resolver.setter - def custom_cert_resolver(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_cert_resolver(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_cert_resolver", value) @_builtins.property @pulumi.getter(name="customEntrypoint") - def custom_entrypoint(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_entrypoint(self) -> pulumi.Input[Optional[_builtins.str]]: """ Traefik entrypoint to bind, when not using the defaults. """ return pulumi.get(self, "custom_entrypoint") @custom_entrypoint.setter - def custom_entrypoint(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_entrypoint(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_entrypoint", value) @_builtins.property @pulumi.getter(name="domainType") - def domain_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def domain_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. """ return pulumi.get(self, "domain_type") @domain_type.setter - def domain_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def domain_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "domain_type", value) + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enabled", value) + @_builtins.property @pulumi.getter(name="forwardAuthEnabled") - def forward_auth_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]: + def forward_auth_enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Protect this domain with Dokploy's forward auth. """ return pulumi.get(self, "forward_auth_enabled") @forward_auth_enabled.setter - def forward_auth_enabled(self, value: Optional[pulumi.Input[_builtins.bool]]): + def forward_auth_enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "forward_auth_enabled", value) @_builtins.property @pulumi.getter - def https(self) -> Optional[pulumi.Input[_builtins.bool]]: + def https(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Serve the domain over HTTPS and redirect HTTP traffic to it. """ return pulumi.get(self, "https") @https.setter - def https(self, value: Optional[pulumi.Input[_builtins.bool]]): + def https(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "https", value) @_builtins.property @pulumi.getter(name="internalPath") - def internal_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def internal_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path the request is rewritten to before it reaches the container, defaults to `/`. """ return pulumi.get(self, "internal_path") @internal_path.setter - def internal_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def internal_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "internal_path", value) @_builtins.property @pulumi.getter - def middlewares(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def middlewares(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Names of Traefik middlewares to apply. """ return pulumi.get(self, "middlewares") @middlewares.setter - def middlewares(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def middlewares(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "middlewares", value) @_builtins.property @pulumi.getter - def path(self) -> Optional[pulumi.Input[_builtins.str]]: + def path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path prefix this domain routes, defaults to `/`. """ return pulumi.get(self, "path") @path.setter - def path(self, value: Optional[pulumi.Input[_builtins.str]]): + def path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "path", value) @_builtins.property @pulumi.getter - def port(self) -> Optional[pulumi.Input[_builtins.int]]: + def port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Container port that receives the traffic, defaults to `3000`. """ return pulumi.get(self, "port") @port.setter - def port(self, value: Optional[pulumi.Input[_builtins.int]]): + def port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "port", value) @_builtins.property @pulumi.getter(name="previewDeploymentId") - def preview_deployment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_deployment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Preview deployment this domain routes to. """ return pulumi.get(self, "preview_deployment_id") @preview_deployment_id.setter - def preview_deployment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_deployment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_deployment_id", value) @_builtins.property @pulumi.getter(name="serviceName") - def service_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def service_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set. """ return pulumi.get(self, "service_name") @service_name.setter - def service_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def service_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "service_name", value) @_builtins.property @pulumi.getter(name="stripPath") - def strip_path(self) -> Optional[pulumi.Input[_builtins.bool]]: + def strip_path(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Strip `path` from the request before forwarding it. """ return pulumi.get(self, "strip_path") @strip_path.setter - def strip_path(self, value: Optional[pulumi.Input[_builtins.bool]]): + def strip_path(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "strip_path", value) @pulumi.input_type class _DomainState: def __init__(__self__, *, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - compose_id: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None, - domain_type: Optional[pulumi.Input[_builtins.str]] = None, - forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - https: Optional[pulumi.Input[_builtins.bool]] = None, - internal_path: Optional[pulumi.Input[_builtins.str]] = None, - middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - path: Optional[pulumi.Input[_builtins.str]] = None, - port: Optional[pulumi.Input[_builtins.int]] = None, - preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None, - service_name: Optional[pulumi.Input[_builtins.str]] = None, - strip_path: Optional[pulumi.Input[_builtins.bool]] = None): + application_id: pulumi.Input[Optional[_builtins.str]] = None, + certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None, + domain_type: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + https: pulumi.Input[Optional[_builtins.bool]] = None, + internal_path: pulumi.Input[Optional[_builtins.str]] = None, + middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + path: pulumi.Input[Optional[_builtins.str]] = None, + port: pulumi.Input[Optional[_builtins.int]] = None, + preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + strip_path: pulumi.Input[Optional[_builtins.bool]] = None): """ Input properties used for looking up and filtering Domain resources. @@ -310,6 +327,7 @@ class _DomainState: :param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`. :param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults. :param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. + :param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. :param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth. :param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`. :param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it. @@ -335,6 +353,8 @@ class _DomainState: pulumi.set(__self__, "custom_entrypoint", custom_entrypoint) if domain_type is not None: pulumi.set(__self__, "domain_type", domain_type) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) if forward_auth_enabled is not None: pulumi.set(__self__, "forward_auth_enabled", forward_auth_enabled) if host is not None: @@ -358,206 +378,218 @@ class _DomainState: @_builtins.property @pulumi.getter(name="applicationId") - def application_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Application this domain routes to. """ return pulumi.get(self, "application_id") @application_id.setter - def application_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_id", value) @_builtins.property @pulumi.getter(name="certificateType") - def certificate_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def certificate_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`. """ return pulumi.get(self, "certificate_type") @certificate_type.setter - def certificate_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def certificate_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "certificate_type", value) @_builtins.property @pulumi.getter(name="composeId") - def compose_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Compose stack this domain routes to. """ return pulumi.get(self, "compose_id") @compose_id.setter - def compose_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "compose_id", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the domain was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="customCertResolver") - def custom_cert_resolver(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_cert_resolver(self) -> pulumi.Input[Optional[_builtins.str]]: """ Traefik certificate resolver name, when `certificate_type` is `custom`. """ return pulumi.get(self, "custom_cert_resolver") @custom_cert_resolver.setter - def custom_cert_resolver(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_cert_resolver(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_cert_resolver", value) @_builtins.property @pulumi.getter(name="customEntrypoint") - def custom_entrypoint(self) -> Optional[pulumi.Input[_builtins.str]]: + def custom_entrypoint(self) -> pulumi.Input[Optional[_builtins.str]]: """ Traefik entrypoint to bind, when not using the defaults. """ return pulumi.get(self, "custom_entrypoint") @custom_entrypoint.setter - def custom_entrypoint(self, value: Optional[pulumi.Input[_builtins.str]]): + def custom_entrypoint(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "custom_entrypoint", value) @_builtins.property @pulumi.getter(name="domainType") - def domain_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def domain_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. """ return pulumi.get(self, "domain_type") @domain_type.setter - def domain_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def domain_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "domain_type", value) + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enabled", value) + @_builtins.property @pulumi.getter(name="forwardAuthEnabled") - def forward_auth_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]: + def forward_auth_enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Protect this domain with Dokploy's forward auth. """ return pulumi.get(self, "forward_auth_enabled") @forward_auth_enabled.setter - def forward_auth_enabled(self, value: Optional[pulumi.Input[_builtins.bool]]): + def forward_auth_enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "forward_auth_enabled", value) @_builtins.property @pulumi.getter - def host(self) -> Optional[pulumi.Input[_builtins.str]]: + def host(self) -> pulumi.Input[Optional[_builtins.str]]: """ Fully-qualified hostname, for example `api.example.com`. """ return pulumi.get(self, "host") @host.setter - def host(self, value: Optional[pulumi.Input[_builtins.str]]): + def host(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "host", value) @_builtins.property @pulumi.getter - def https(self) -> Optional[pulumi.Input[_builtins.bool]]: + def https(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Serve the domain over HTTPS and redirect HTTP traffic to it. """ return pulumi.get(self, "https") @https.setter - def https(self, value: Optional[pulumi.Input[_builtins.bool]]): + def https(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "https", value) @_builtins.property @pulumi.getter(name="internalPath") - def internal_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def internal_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path the request is rewritten to before it reaches the container, defaults to `/`. """ return pulumi.get(self, "internal_path") @internal_path.setter - def internal_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def internal_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "internal_path", value) @_builtins.property @pulumi.getter - def middlewares(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def middlewares(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Names of Traefik middlewares to apply. """ return pulumi.get(self, "middlewares") @middlewares.setter - def middlewares(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def middlewares(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "middlewares", value) @_builtins.property @pulumi.getter - def path(self) -> Optional[pulumi.Input[_builtins.str]]: + def path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path prefix this domain routes, defaults to `/`. """ return pulumi.get(self, "path") @path.setter - def path(self, value: Optional[pulumi.Input[_builtins.str]]): + def path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "path", value) @_builtins.property @pulumi.getter - def port(self) -> Optional[pulumi.Input[_builtins.int]]: + def port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Container port that receives the traffic, defaults to `3000`. """ return pulumi.get(self, "port") @port.setter - def port(self, value: Optional[pulumi.Input[_builtins.int]]): + def port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "port", value) @_builtins.property @pulumi.getter(name="previewDeploymentId") - def preview_deployment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def preview_deployment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Preview deployment this domain routes to. """ return pulumi.get(self, "preview_deployment_id") @preview_deployment_id.setter - def preview_deployment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def preview_deployment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "preview_deployment_id", value) @_builtins.property @pulumi.getter(name="serviceName") - def service_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def service_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the service inside a Compose stack that receives the traffic. Required when `compose_id` is set. """ return pulumi.get(self, "service_name") @service_name.setter - def service_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def service_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "service_name", value) @_builtins.property @pulumi.getter(name="stripPath") - def strip_path(self) -> Optional[pulumi.Input[_builtins.bool]]: + def strip_path(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Strip `path` from the request before forwarding it. """ return pulumi.get(self, "strip_path") @strip_path.setter - def strip_path(self, value: Optional[pulumi.Input[_builtins.bool]]): + def strip_path(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "strip_path", value) @@ -567,25 +599,29 @@ class Domain(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - compose_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None, - domain_type: Optional[pulumi.Input[_builtins.str]] = None, - forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - https: Optional[pulumi.Input[_builtins.bool]] = None, - internal_path: Optional[pulumi.Input[_builtins.str]] = None, - middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - path: Optional[pulumi.Input[_builtins.str]] = None, - port: Optional[pulumi.Input[_builtins.int]] = None, - preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None, - service_name: Optional[pulumi.Input[_builtins.str]] = None, - strip_path: Optional[pulumi.Input[_builtins.bool]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None, + domain_type: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + https: pulumi.Input[Optional[_builtins.bool]] = None, + internal_path: pulumi.Input[Optional[_builtins.str]] = None, + middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + path: pulumi.Input[Optional[_builtins.str]] = None, + port: pulumi.Input[Optional[_builtins.int]] = None, + preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + strip_path: pulumi.Input[Optional[_builtins.bool]] = None, __props__=None): """ - Create a Domain resource with the given unique name, props, and options. + A domain routed to an application or a Compose service through Dokploy's Traefik instance. + + Set exactly one of `application_id` or `compose_id`. When targeting a Compose stack, `service_name` selects which service in the stack receives the traffic. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -595,6 +631,7 @@ class Domain(pulumi.CustomResource): :param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`. :param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults. :param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. + :param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. :param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth. :param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`. :param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it. @@ -613,7 +650,10 @@ class Domain(pulumi.CustomResource): args: DomainArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Domain resource with the given unique name, props, and options. + A domain routed to an application or a Compose service through Dokploy's Traefik instance. + + Set exactly one of `application_id` or `compose_id`. When targeting a Compose stack, `service_name` selects which service in the stack receives the traffic. + :param str resource_name: The name of the resource. :param DomainArgs args: The arguments to use to populate this resource's properties. @@ -630,22 +670,23 @@ class Domain(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - compose_id: Optional[pulumi.Input[_builtins.str]] = None, - custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None, - domain_type: Optional[pulumi.Input[_builtins.str]] = None, - forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - https: Optional[pulumi.Input[_builtins.bool]] = None, - internal_path: Optional[pulumi.Input[_builtins.str]] = None, - middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - path: Optional[pulumi.Input[_builtins.str]] = None, - port: Optional[pulumi.Input[_builtins.int]] = None, - preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None, - service_name: Optional[pulumi.Input[_builtins.str]] = None, - strip_path: Optional[pulumi.Input[_builtins.bool]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None, + domain_type: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + https: pulumi.Input[Optional[_builtins.bool]] = None, + internal_path: pulumi.Input[Optional[_builtins.str]] = None, + middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + path: pulumi.Input[Optional[_builtins.str]] = None, + port: pulumi.Input[Optional[_builtins.int]] = None, + preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + strip_path: pulumi.Input[Optional[_builtins.bool]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -661,6 +702,7 @@ class Domain(pulumi.CustomResource): __props__.__dict__["custom_cert_resolver"] = custom_cert_resolver __props__.__dict__["custom_entrypoint"] = custom_entrypoint __props__.__dict__["domain_type"] = domain_type + __props__.__dict__["enabled"] = enabled __props__.__dict__["forward_auth_enabled"] = forward_auth_enabled if host is None and not opts.urn: raise TypeError("Missing required property 'host'") @@ -684,23 +726,24 @@ class Domain(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - certificate_type: Optional[pulumi.Input[_builtins.str]] = None, - compose_id: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - custom_cert_resolver: Optional[pulumi.Input[_builtins.str]] = None, - custom_entrypoint: Optional[pulumi.Input[_builtins.str]] = None, - domain_type: Optional[pulumi.Input[_builtins.str]] = None, - forward_auth_enabled: Optional[pulumi.Input[_builtins.bool]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - https: Optional[pulumi.Input[_builtins.bool]] = None, - internal_path: Optional[pulumi.Input[_builtins.str]] = None, - middlewares: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - path: Optional[pulumi.Input[_builtins.str]] = None, - port: Optional[pulumi.Input[_builtins.int]] = None, - preview_deployment_id: Optional[pulumi.Input[_builtins.str]] = None, - service_name: Optional[pulumi.Input[_builtins.str]] = None, - strip_path: Optional[pulumi.Input[_builtins.bool]] = None) -> 'Domain': + application_id: pulumi.Input[Optional[_builtins.str]] = None, + certificate_type: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + custom_cert_resolver: pulumi.Input[Optional[_builtins.str]] = None, + custom_entrypoint: pulumi.Input[Optional[_builtins.str]] = None, + domain_type: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + forward_auth_enabled: pulumi.Input[Optional[_builtins.bool]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + https: pulumi.Input[Optional[_builtins.bool]] = None, + internal_path: pulumi.Input[Optional[_builtins.str]] = None, + middlewares: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + path: pulumi.Input[Optional[_builtins.str]] = None, + port: pulumi.Input[Optional[_builtins.int]] = None, + preview_deployment_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + strip_path: pulumi.Input[Optional[_builtins.bool]] = None) -> 'Domain': """ Get an existing Domain resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -715,6 +758,7 @@ class Domain(pulumi.CustomResource): :param pulumi.Input[_builtins.str] custom_cert_resolver: Traefik certificate resolver name, when `certificate_type` is `custom`. :param pulumi.Input[_builtins.str] custom_entrypoint: Traefik entrypoint to bind, when not using the defaults. :param pulumi.Input[_builtins.str] domain_type: What kind of target this domain points at. Valid values: `compose`, `application`, `preview`. + :param pulumi.Input[_builtins.bool] enabled: Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. :param pulumi.Input[_builtins.bool] forward_auth_enabled: Protect this domain with Dokploy's forward auth. :param pulumi.Input[_builtins.str] host: Fully-qualified hostname, for example `api.example.com`. :param pulumi.Input[_builtins.bool] https: Serve the domain over HTTPS and redirect HTTP traffic to it. @@ -737,6 +781,7 @@ class Domain(pulumi.CustomResource): __props__.__dict__["custom_cert_resolver"] = custom_cert_resolver __props__.__dict__["custom_entrypoint"] = custom_entrypoint __props__.__dict__["domain_type"] = domain_type + __props__.__dict__["enabled"] = enabled __props__.__dict__["forward_auth_enabled"] = forward_auth_enabled __props__.__dict__["host"] = host __props__.__dict__["https"] = https @@ -805,6 +850,14 @@ class Domain(pulumi.CustomResource): """ return pulumi.get(self, "domain_type") + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Output[_builtins.bool]: + """ + Whether the domain is served. Setting this to `false` removes the route from Traefik but keeps the certificate, path and middleware configuration intact, so the domain can be brought back without reconfiguring it. + """ + return pulumi.get(self, "enabled") + @_builtins.property @pulumi.getter(name="forwardAuthEnabled") def forward_auth_enabled(self) -> pulumi.Output[_builtins.bool]: diff --git a/sdk/python/pulumi_dokploy/environment.py b/sdk/python/pulumi_dokploy/environment.py index c460ad8..69ed02c 100644 --- a/sdk/python/pulumi_dokploy/environment.py +++ b/sdk/python/pulumi_dokploy/environment.py @@ -20,9 +20,9 @@ __all__ = ['EnvironmentArgs', 'Environment'] class EnvironmentArgs: def __init__(__self__, *, project_id: pulumi.Input[_builtins.str], - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None): + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Environment resource. @@ -53,50 +53,50 @@ class EnvironmentArgs: @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment name, for example `staging`. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @pulumi.input_type class _EnvironmentState: def __init__(__self__, *, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - is_default: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - project_id: Optional[pulumi.Input[_builtins.str]] = None): + created_at: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + is_default: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + project_id: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Environment resources. @@ -122,74 +122,74 @@ class _EnvironmentState: @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the environment was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="isDefault") - def is_default(self) -> Optional[pulumi.Input[_builtins.bool]]: + def is_default(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Whether this is the project's default environment. """ return pulumi.get(self, "is_default") @is_default.setter - def is_default(self, value: Optional[pulumi.Input[_builtins.bool]]): + def is_default(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "is_default", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment name, for example `staging`. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="projectId") - def project_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def project_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Project this environment belongs to. """ return pulumi.get(self, "project_id") @project_id.setter - def project_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def project_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "project_id", value) @@ -199,13 +199,16 @@ class Environment(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - project_id: Optional[pulumi.Input[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + project_id: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Environment resource with the given unique name, props, and options. + An environment inside a Dokploy project, such as `staging` or `production`. Services belong to an environment rather than directly to a project. + + Dokploy creates a default `production` environment with every project; reference it via `dokploy_project..default_environment_id` instead of declaring it here. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -221,7 +224,10 @@ class Environment(pulumi.CustomResource): args: EnvironmentArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Environment resource with the given unique name, props, and options. + An environment inside a Dokploy project, such as `staging` or `production`. Services belong to an environment rather than directly to a project. + + Dokploy creates a default `production` environment with every project; reference it via `dokploy_project..default_environment_id` instead of declaring it here. + :param str resource_name: The name of the resource. :param EnvironmentArgs args: The arguments to use to populate this resource's properties. @@ -238,10 +244,10 @@ class Environment(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - project_id: Optional[pulumi.Input[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + project_id: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -269,12 +275,12 @@ class Environment(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - is_default: Optional[pulumi.Input[_builtins.bool]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - project_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'Environment': + created_at: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + is_default: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + project_id: pulumi.Input[Optional[_builtins.str]] = None) -> 'Environment': """ Get an existing Environment resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/get_application.py b/sdk/python/pulumi_dokploy/get_application.py index 1a55b77..bb452d2 100644 --- a/sdk/python/pulumi_dokploy/get_application.py +++ b/sdk/python/pulumi_dokploy/get_application.py @@ -58,46 +58,73 @@ class GetApplicationResult: @_builtins.property @pulumi.getter(name="appName") def app_name(self) -> _builtins.str: + """ + Docker service name. + """ return pulumi.get(self, "app_name") @_builtins.property @pulumi.getter(name="applicationStatus") def application_status(self) -> _builtins.str: + """ + Current status. + """ return pulumi.get(self, "application_status") @_builtins.property @pulumi.getter(name="buildType") def build_type(self) -> _builtins.str: + """ + Build strategy. + """ return pulumi.get(self, "build_type") @_builtins.property @pulumi.getter(name="createdAt") def created_at(self) -> _builtins.str: + """ + Creation timestamp. + """ return pulumi.get(self, "created_at") @_builtins.property @pulumi.getter def description(self) -> _builtins.str: + """ + Application description. + """ return pulumi.get(self, "description") @_builtins.property @pulumi.getter(name="environmentId") def environment_id(self) -> _builtins.str: + """ + Owning environment. + """ return pulumi.get(self, "environment_id") @_builtins.property @pulumi.getter def id(self) -> _builtins.str: + """ + Application identifier. + """ return pulumi.get(self, "id") @_builtins.property @pulumi.getter def name(self) -> _builtins.str: + """ + Application name. + """ return pulumi.get(self, "name") @_builtins.property @pulumi.getter(name="sourceType") def source_type(self) -> _builtins.str: + """ + Source of the code or image. + """ return pulumi.get(self, "source_type") @@ -121,7 +148,10 @@ class AwaitableGetApplicationResult(GetApplicationResult): def get_application(id: Optional[_builtins.str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetApplicationResult: """ - Use this data source to access information about an existing resource. + Look up an existing application by ID. + + + :param _builtins.str id: Application identifier. """ __args__ = dict() __args__['id'] = id @@ -138,10 +168,13 @@ def get_application(id: Optional[_builtins.str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), source_type=pulumi.get(__ret__, 'source_type')) -def get_application_output(id: Optional[pulumi.Input[_builtins.str]] = None, +def get_application_output(id: pulumi.Input[Optional[_builtins.str]] = None, opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetApplicationResult]: """ - Use this data source to access information about an existing resource. + Look up an existing application by ID. + + + :param _builtins.str id: Application identifier. """ __args__ = dict() __args__['id'] = id diff --git a/sdk/python/pulumi_dokploy/get_environment.py b/sdk/python/pulumi_dokploy/get_environment.py index c8d8de1..ddea347 100644 --- a/sdk/python/pulumi_dokploy/get_environment.py +++ b/sdk/python/pulumi_dokploy/get_environment.py @@ -52,36 +52,57 @@ class GetEnvironmentResult: @_builtins.property @pulumi.getter(name="createdAt") def created_at(self) -> _builtins.str: + """ + Creation timestamp. + """ return pulumi.get(self, "created_at") @_builtins.property @pulumi.getter def description(self) -> _builtins.str: + """ + Environment description. + """ return pulumi.get(self, "description") @_builtins.property @pulumi.getter def env(self) -> _builtins.str: + """ + Environment-wide variables. + """ return pulumi.get(self, "env") @_builtins.property @pulumi.getter def id(self) -> _builtins.str: + """ + Environment identifier. + """ return pulumi.get(self, "id") @_builtins.property @pulumi.getter(name="isDefault") def is_default(self) -> _builtins.bool: + """ + Whether this is the project's default environment. + """ return pulumi.get(self, "is_default") @_builtins.property @pulumi.getter def name(self) -> _builtins.str: + """ + Environment name. + """ return pulumi.get(self, "name") @_builtins.property @pulumi.getter(name="projectId") def project_id(self) -> _builtins.str: + """ + Owning project. + """ return pulumi.get(self, "project_id") @@ -103,7 +124,10 @@ class AwaitableGetEnvironmentResult(GetEnvironmentResult): def get_environment(id: Optional[_builtins.str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetEnvironmentResult: """ - Use this data source to access information about an existing resource. + Look up an existing environment by ID. + + + :param _builtins.str id: Environment identifier. """ __args__ = dict() __args__['id'] = id @@ -118,10 +142,13 @@ def get_environment(id: Optional[_builtins.str] = None, is_default=pulumi.get(__ret__, 'is_default'), name=pulumi.get(__ret__, 'name'), project_id=pulumi.get(__ret__, 'project_id')) -def get_environment_output(id: Optional[pulumi.Input[_builtins.str]] = None, +def get_environment_output(id: pulumi.Input[Optional[_builtins.str]] = None, opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetEnvironmentResult]: """ - Use this data source to access information about an existing resource. + Look up an existing environment by ID. + + + :param _builtins.str id: Environment identifier. """ __args__ = dict() __args__['id'] = id diff --git a/sdk/python/pulumi_dokploy/get_project.py b/sdk/python/pulumi_dokploy/get_project.py index 5af8121..95fe363 100644 --- a/sdk/python/pulumi_dokploy/get_project.py +++ b/sdk/python/pulumi_dokploy/get_project.py @@ -56,41 +56,65 @@ class GetProjectResult: @_builtins.property @pulumi.getter(name="createdAt") def created_at(self) -> _builtins.str: + """ + Creation timestamp. + """ return pulumi.get(self, "created_at") @_builtins.property @pulumi.getter(name="defaultEnvironmentId") def default_environment_id(self) -> _builtins.str: + """ + ID of the project's default environment. + """ return pulumi.get(self, "default_environment_id") @_builtins.property @pulumi.getter def description(self) -> _builtins.str: + """ + Project description. + """ return pulumi.get(self, "description") @_builtins.property @pulumi.getter def env(self) -> _builtins.str: + """ + Project-wide environment variables. + """ return pulumi.get(self, "env") @_builtins.property @pulumi.getter def environments(self) -> Sequence['outputs.GetProjectEnvironmentResult']: + """ + Every environment in the project. + """ return pulumi.get(self, "environments") @_builtins.property @pulumi.getter def id(self) -> _builtins.str: + """ + Project identifier. + """ return pulumi.get(self, "id") @_builtins.property @pulumi.getter def name(self) -> _builtins.str: + """ + Project name. + """ return pulumi.get(self, "name") @_builtins.property @pulumi.getter(name="organizationId") def organization_id(self) -> _builtins.str: + """ + Owning organization. + """ return pulumi.get(self, "organization_id") @@ -113,7 +137,10 @@ class AwaitableGetProjectResult(GetProjectResult): def get_project(id: Optional[_builtins.str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetProjectResult: """ - Use this data source to access information about an existing resource. + Look up an existing Dokploy project by ID, including its environments. + + + :param _builtins.str id: Project identifier. """ __args__ = dict() __args__['id'] = id @@ -129,10 +156,13 @@ def get_project(id: Optional[_builtins.str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), organization_id=pulumi.get(__ret__, 'organization_id')) -def get_project_output(id: Optional[pulumi.Input[_builtins.str]] = None, +def get_project_output(id: pulumi.Input[Optional[_builtins.str]] = None, opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetProjectResult]: """ - Use this data source to access information about an existing resource. + Look up an existing Dokploy project by ID, including its environments. + + + :param _builtins.str id: Project identifier. """ __args__ = dict() __args__['id'] = id diff --git a/sdk/python/pulumi_dokploy/get_projects.py b/sdk/python/pulumi_dokploy/get_projects.py index ce1ad57..5d9f0cc 100644 --- a/sdk/python/pulumi_dokploy/get_projects.py +++ b/sdk/python/pulumi_dokploy/get_projects.py @@ -35,6 +35,9 @@ class GetProjectsResult: @_builtins.property @pulumi.getter def projects(self) -> Sequence['outputs.GetProjectsProjectResult']: + """ + All visible projects. + """ return pulumi.get(self, "projects") @@ -49,7 +52,7 @@ class AwaitableGetProjectsResult(GetProjectsResult): def get_projects(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetProjectsResult: """ - Use this data source to access information about an existing resource. + List every Dokploy project the API token can see. """ __args__ = dict() opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) @@ -59,7 +62,7 @@ def get_projects(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetPro projects=pulumi.get(__ret__, 'projects')) def get_projects_output(opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetProjectsResult]: """ - Use this data source to access information about an existing resource. + List every Dokploy project the API token can see. """ __args__ = dict() opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts) diff --git a/sdk/python/pulumi_dokploy/get_servers.py b/sdk/python/pulumi_dokploy/get_servers.py index fb23848..e01ebb2 100644 --- a/sdk/python/pulumi_dokploy/get_servers.py +++ b/sdk/python/pulumi_dokploy/get_servers.py @@ -35,6 +35,9 @@ class GetServersResult: @_builtins.property @pulumi.getter def servers(self) -> Sequence['outputs.GetServersServerResult']: + """ + All registered servers. + """ return pulumi.get(self, "servers") @@ -49,7 +52,7 @@ class AwaitableGetServersResult(GetServersResult): def get_servers(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetServersResult: """ - Use this data source to access information about an existing resource. + List the remote servers registered with Dokploy. Use a server's `id` as the `server_id` of an application, stack, or database to deploy it away from the Dokploy host. """ __args__ = dict() opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) @@ -59,7 +62,7 @@ def get_servers(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetServ servers=pulumi.get(__ret__, 'servers')) def get_servers_output(opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetServersResult]: """ - Use this data source to access information about an existing resource. + List the remote servers registered with Dokploy. Use a server's `id` as the `server_id` of an application, stack, or database to deploy it away from the Dokploy host. """ __args__ = dict() opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts) diff --git a/sdk/python/pulumi_dokploy/libsql.py b/sdk/python/pulumi_dokploy/libsql.py new file mode 100644 index 0000000..3458aaa --- /dev/null +++ b/sdk/python/pulumi_dokploy/libsql.py @@ -0,0 +1,1733 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import builtins as _builtins +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities + +__all__ = ['LibsqlArgs', 'Libsql'] + +@pulumi.input_type +class LibsqlArgs: + def __init__(__self__, *, + database_password: pulumi.Input[_builtins.str], + database_user: pulumi.Input[_builtins.str], + docker_image: pulumi.Input[_builtins.str], + environment_id: pulumi.Input[_builtins.str], + app_name: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + enable_namespaces: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + external_admin_port: pulumi.Input[Optional[_builtins.int]] = None, + external_grpc_port: pulumi.Input[Optional[_builtins.int]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + sqld_node: pulumi.Input[Optional[_builtins.str]] = None, + sqld_primary_url: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): + """ + The set of arguments for constructing a Libsql resource. + + :param pulumi.Input[_builtins.str] database_password: Password for the database user. + :param pulumi.Input[_builtins.str] database_user: Database user to create. + :param pulumi.Input[_builtins.str] docker_image: libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + :param pulumi.Input[_builtins.str] environment_id: Environment this database belongs to. + :param pulumi.Input[_builtins.str] app_name: Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + :param pulumi.Input[_builtins.str] command: Override the container entrypoint command. + :param pulumi.Input[_builtins.str] cpu_limit: Hard CPU limit, for example `1`. + :param pulumi.Input[_builtins.str] cpu_reservation: Soft CPU reservation, for example `0.5`. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] detach_dokploy_network: Detach the service from the shared `dokploy-network`. + :param pulumi.Input[_builtins.bool] enable_namespaces: Serve multiple logical databases from one instance through libSQL namespaces. + :param pulumi.Input[_builtins.str] endpoint_spec_swarm: Docker Swarm endpoint specification, as a JSON object. + :param pulumi.Input[_builtins.str] env: Environment variables in `KEY=value` format, one per line. + :param pulumi.Input[_builtins.int] external_admin_port: Host port exposing the admin API. + :param pulumi.Input[_builtins.int] external_grpc_port: Host port exposing the gRPC replication endpoint. + :param pulumi.Input[_builtins.int] external_port: Host port exposing the HTTP API. + :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. + :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. + :param pulumi.Input[_builtins.str] memory_limit: Hard memory limit, for example `512m`. + :param pulumi.Input[_builtins.str] memory_reservation: Soft memory reservation, for example `256m`. + :param pulumi.Input[_builtins.str] mode_swarm: Docker Swarm service mode, as a JSON object. + :param pulumi.Input[_builtins.str] name: Display name of the database. + :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] network_ids: IDs of additional Docker networks to attach. + :param pulumi.Input[_builtins.str] network_swarm: Docker Swarm network attachments, as a JSON array. + :param pulumi.Input[_builtins.str] placement_swarm: Docker Swarm placement constraints, as a JSON object. + :param pulumi.Input[_builtins.int] replicas: Number of replicas to run. + :param pulumi.Input[_builtins.str] restart_policy_swarm: Docker Swarm restart policy, as a JSON object. + :param pulumi.Input[_builtins.str] rollback_config_swarm: Docker Swarm rollback configuration, as a JSON object. + :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] sqld_node: Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + :param pulumi.Input[_builtins.str] sqld_primary_url: URL of the primary node, when `sqld_node` is `replica`. + :param pulumi.Input[_builtins.int] stop_grace_period_swarm: Grace period in nanoseconds before a container is killed. + :param pulumi.Input[_builtins.str] update_config_swarm: Docker Swarm rolling update configuration, as a JSON object. + """ + pulumi.set(__self__, "database_password", database_password) + pulumi.set(__self__, "database_user", database_user) + pulumi.set(__self__, "docker_image", docker_image) + pulumi.set(__self__, "environment_id", environment_id) + if app_name is not None: + pulumi.set(__self__, "app_name", app_name) + if command is not None: + pulumi.set(__self__, "command", command) + if cpu_limit is not None: + pulumi.set(__self__, "cpu_limit", cpu_limit) + if cpu_reservation is not None: + pulumi.set(__self__, "cpu_reservation", cpu_reservation) + if description is not None: + pulumi.set(__self__, "description", description) + if detach_dokploy_network is not None: + pulumi.set(__self__, "detach_dokploy_network", detach_dokploy_network) + if enable_namespaces is not None: + pulumi.set(__self__, "enable_namespaces", enable_namespaces) + if endpoint_spec_swarm is not None: + pulumi.set(__self__, "endpoint_spec_swarm", endpoint_spec_swarm) + if env is not None: + pulumi.set(__self__, "env", env) + if external_admin_port is not None: + pulumi.set(__self__, "external_admin_port", external_admin_port) + if external_grpc_port is not None: + pulumi.set(__self__, "external_grpc_port", external_grpc_port) + if external_port is not None: + pulumi.set(__self__, "external_port", external_port) + if health_check_swarm is not None: + pulumi.set(__self__, "health_check_swarm", health_check_swarm) + if labels_swarm is not None: + pulumi.set(__self__, "labels_swarm", labels_swarm) + if memory_limit is not None: + pulumi.set(__self__, "memory_limit", memory_limit) + if memory_reservation is not None: + pulumi.set(__self__, "memory_reservation", memory_reservation) + if mode_swarm is not None: + pulumi.set(__self__, "mode_swarm", mode_swarm) + if name is not None: + pulumi.set(__self__, "name", name) + if network_ids is not None: + pulumi.set(__self__, "network_ids", network_ids) + if network_swarm is not None: + pulumi.set(__self__, "network_swarm", network_swarm) + if placement_swarm is not None: + pulumi.set(__self__, "placement_swarm", placement_swarm) + if replicas is not None: + pulumi.set(__self__, "replicas", replicas) + if restart_policy_swarm is not None: + pulumi.set(__self__, "restart_policy_swarm", restart_policy_swarm) + if rollback_config_swarm is not None: + pulumi.set(__self__, "rollback_config_swarm", rollback_config_swarm) + if server_id is not None: + pulumi.set(__self__, "server_id", server_id) + if sqld_node is not None: + pulumi.set(__self__, "sqld_node", sqld_node) + if sqld_primary_url is not None: + pulumi.set(__self__, "sqld_primary_url", sqld_primary_url) + if stop_grace_period_swarm is not None: + pulumi.set(__self__, "stop_grace_period_swarm", stop_grace_period_swarm) + if update_config_swarm is not None: + pulumi.set(__self__, "update_config_swarm", update_config_swarm) + + @_builtins.property + @pulumi.getter(name="databasePassword") + def database_password(self) -> pulumi.Input[_builtins.str]: + """ + Password for the database user. + """ + return pulumi.get(self, "database_password") + + @database_password.setter + def database_password(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "database_password", value) + + @_builtins.property + @pulumi.getter(name="databaseUser") + def database_user(self) -> pulumi.Input[_builtins.str]: + """ + Database user to create. + """ + return pulumi.get(self, "database_user") + + @database_user.setter + def database_user(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "database_user", value) + + @_builtins.property + @pulumi.getter(name="dockerImage") + def docker_image(self) -> pulumi.Input[_builtins.str]: + """ + libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + """ + return pulumi.get(self, "docker_image") + + @docker_image.setter + def docker_image(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "docker_image", value) + + @_builtins.property + @pulumi.getter(name="environmentId") + def environment_id(self) -> pulumi.Input[_builtins.str]: + """ + Environment this database belongs to. + """ + return pulumi.get(self, "environment_id") + + @environment_id.setter + def environment_id(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "environment_id", value) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + """ + return pulumi.get(self, "app_name") + + @app_name.setter + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "app_name", value) + + @_builtins.property + @pulumi.getter + def command(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Override the container entrypoint command. + """ + return pulumi.get(self, "command") + + @command.setter + def command(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "command", value) + + @_builtins.property + @pulumi.getter(name="cpuLimit") + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Hard CPU limit, for example `1`. + """ + return pulumi.get(self, "cpu_limit") + + @cpu_limit.setter + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "cpu_limit", value) + + @_builtins.property + @pulumi.getter(name="cpuReservation") + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Soft CPU reservation, for example `0.5`. + """ + return pulumi.get(self, "cpu_reservation") + + @cpu_reservation.setter + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "cpu_reservation", value) + + @_builtins.property + @pulumi.getter + def description(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Free-form description. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "description", value) + + @_builtins.property + @pulumi.getter(name="detachDokployNetwork") + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Detach the service from the shared `dokploy-network`. + """ + return pulumi.get(self, "detach_dokploy_network") + + @detach_dokploy_network.setter + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "detach_dokploy_network", value) + + @_builtins.property + @pulumi.getter(name="enableNamespaces") + def enable_namespaces(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Serve multiple logical databases from one instance through libSQL namespaces. + """ + return pulumi.get(self, "enable_namespaces") + + @enable_namespaces.setter + def enable_namespaces(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enable_namespaces", value) + + @_builtins.property + @pulumi.getter(name="endpointSpecSwarm") + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm endpoint specification, as a JSON object. + """ + return pulumi.get(self, "endpoint_spec_swarm") + + @endpoint_spec_swarm.setter + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "endpoint_spec_swarm", value) + + @_builtins.property + @pulumi.getter + def env(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Environment variables in `KEY=value` format, one per line. + """ + return pulumi.get(self, "env") + + @env.setter + def env(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "env", value) + + @_builtins.property + @pulumi.getter(name="externalAdminPort") + def external_admin_port(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Host port exposing the admin API. + """ + return pulumi.get(self, "external_admin_port") + + @external_admin_port.setter + def external_admin_port(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "external_admin_port", value) + + @_builtins.property + @pulumi.getter(name="externalGrpcPort") + def external_grpc_port(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Host port exposing the gRPC replication endpoint. + """ + return pulumi.get(self, "external_grpc_port") + + @external_grpc_port.setter + def external_grpc_port(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "external_grpc_port", value) + + @_builtins.property + @pulumi.getter(name="externalPort") + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Host port exposing the HTTP API. + """ + return pulumi.get(self, "external_port") + + @external_port.setter + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "external_port", value) + + @_builtins.property + @pulumi.getter(name="healthCheckSwarm") + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm health check configuration, as a JSON object. + """ + return pulumi.get(self, "health_check_swarm") + + @health_check_swarm.setter + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "health_check_swarm", value) + + @_builtins.property + @pulumi.getter(name="labelsSwarm") + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm service labels, as a JSON object. + """ + return pulumi.get(self, "labels_swarm") + + @labels_swarm.setter + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "labels_swarm", value) + + @_builtins.property + @pulumi.getter(name="memoryLimit") + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Hard memory limit, for example `512m`. + """ + return pulumi.get(self, "memory_limit") + + @memory_limit.setter + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "memory_limit", value) + + @_builtins.property + @pulumi.getter(name="memoryReservation") + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Soft memory reservation, for example `256m`. + """ + return pulumi.get(self, "memory_reservation") + + @memory_reservation.setter + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "memory_reservation", value) + + @_builtins.property + @pulumi.getter(name="modeSwarm") + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm service mode, as a JSON object. + """ + return pulumi.get(self, "mode_swarm") + + @mode_swarm.setter + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mode_swarm", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Display name of the database. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="networkIds") + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: + """ + IDs of additional Docker networks to attach. + """ + return pulumi.get(self, "network_ids") + + @network_ids.setter + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): + pulumi.set(self, "network_ids", value) + + @_builtins.property + @pulumi.getter(name="networkSwarm") + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm network attachments, as a JSON array. + """ + return pulumi.get(self, "network_swarm") + + @network_swarm.setter + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "network_swarm", value) + + @_builtins.property + @pulumi.getter(name="placementSwarm") + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm placement constraints, as a JSON object. + """ + return pulumi.get(self, "placement_swarm") + + @placement_swarm.setter + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "placement_swarm", value) + + @_builtins.property + @pulumi.getter + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Number of replicas to run. + """ + return pulumi.get(self, "replicas") + + @replicas.setter + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "replicas", value) + + @_builtins.property + @pulumi.getter(name="restartPolicySwarm") + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm restart policy, as a JSON object. + """ + return pulumi.get(self, "restart_policy_swarm") + + @restart_policy_swarm.setter + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "restart_policy_swarm", value) + + @_builtins.property + @pulumi.getter(name="rollbackConfigSwarm") + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm rollback configuration, as a JSON object. + """ + return pulumi.get(self, "rollback_config_swarm") + + @rollback_config_swarm.setter + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "rollback_config_swarm", value) + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Remote server to deploy on. Omit to use the Dokploy host itself. + """ + return pulumi.get(self, "server_id") + + @server_id.setter + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "server_id", value) + + @_builtins.property + @pulumi.getter(name="sqldNode") + def sqld_node(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + """ + return pulumi.get(self, "sqld_node") + + @sqld_node.setter + def sqld_node(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "sqld_node", value) + + @_builtins.property + @pulumi.getter(name="sqldPrimaryUrl") + def sqld_primary_url(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + URL of the primary node, when `sqld_node` is `replica`. + """ + return pulumi.get(self, "sqld_primary_url") + + @sqld_primary_url.setter + def sqld_primary_url(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "sqld_primary_url", value) + + @_builtins.property + @pulumi.getter(name="stopGracePeriodSwarm") + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Grace period in nanoseconds before a container is killed. + """ + return pulumi.get(self, "stop_grace_period_swarm") + + @stop_grace_period_swarm.setter + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "stop_grace_period_swarm", value) + + @_builtins.property + @pulumi.getter(name="updateConfigSwarm") + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm rolling update configuration, as a JSON object. + """ + return pulumi.get(self, "update_config_swarm") + + @update_config_swarm.setter + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "update_config_swarm", value) + + +@pulumi.input_type +class _LibsqlState: + def __init__(__self__, *, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + enable_namespaces: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_admin_port: pulumi.Input[Optional[_builtins.int]] = None, + external_grpc_port: pulumi.Input[Optional[_builtins.int]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + sqld_node: pulumi.Input[Optional[_builtins.str]] = None, + sqld_primary_url: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): + """ + Input properties used for looking up and filtering Libsql resources. + + :param pulumi.Input[_builtins.str] app_name: Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + :param pulumi.Input[_builtins.str] application_status: Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + :param pulumi.Input[_builtins.str] command: Override the container entrypoint command. + :param pulumi.Input[_builtins.str] cpu_limit: Hard CPU limit, for example `1`. + :param pulumi.Input[_builtins.str] cpu_reservation: Soft CPU reservation, for example `0.5`. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the database was created. + :param pulumi.Input[_builtins.str] database_password: Password for the database user. + :param pulumi.Input[_builtins.str] database_user: Database user to create. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] detach_dokploy_network: Detach the service from the shared `dokploy-network`. + :param pulumi.Input[_builtins.str] docker_image: libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + :param pulumi.Input[_builtins.bool] enable_namespaces: Serve multiple logical databases from one instance through libSQL namespaces. + :param pulumi.Input[_builtins.str] endpoint_spec_swarm: Docker Swarm endpoint specification, as a JSON object. + :param pulumi.Input[_builtins.str] env: Environment variables in `KEY=value` format, one per line. + :param pulumi.Input[_builtins.str] environment_id: Environment this database belongs to. + :param pulumi.Input[_builtins.int] external_admin_port: Host port exposing the admin API. + :param pulumi.Input[_builtins.int] external_grpc_port: Host port exposing the gRPC replication endpoint. + :param pulumi.Input[_builtins.int] external_port: Host port exposing the HTTP API. + :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. + :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. + :param pulumi.Input[_builtins.str] memory_limit: Hard memory limit, for example `512m`. + :param pulumi.Input[_builtins.str] memory_reservation: Soft memory reservation, for example `256m`. + :param pulumi.Input[_builtins.str] mode_swarm: Docker Swarm service mode, as a JSON object. + :param pulumi.Input[_builtins.str] name: Display name of the database. + :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] network_ids: IDs of additional Docker networks to attach. + :param pulumi.Input[_builtins.str] network_swarm: Docker Swarm network attachments, as a JSON array. + :param pulumi.Input[_builtins.str] placement_swarm: Docker Swarm placement constraints, as a JSON object. + :param pulumi.Input[_builtins.int] replicas: Number of replicas to run. + :param pulumi.Input[_builtins.str] restart_policy_swarm: Docker Swarm restart policy, as a JSON object. + :param pulumi.Input[_builtins.str] rollback_config_swarm: Docker Swarm rollback configuration, as a JSON object. + :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] sqld_node: Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + :param pulumi.Input[_builtins.str] sqld_primary_url: URL of the primary node, when `sqld_node` is `replica`. + :param pulumi.Input[_builtins.int] stop_grace_period_swarm: Grace period in nanoseconds before a container is killed. + :param pulumi.Input[_builtins.str] update_config_swarm: Docker Swarm rolling update configuration, as a JSON object. + """ + if app_name is not None: + pulumi.set(__self__, "app_name", app_name) + if application_status is not None: + pulumi.set(__self__, "application_status", application_status) + if command is not None: + pulumi.set(__self__, "command", command) + if cpu_limit is not None: + pulumi.set(__self__, "cpu_limit", cpu_limit) + if cpu_reservation is not None: + pulumi.set(__self__, "cpu_reservation", cpu_reservation) + if created_at is not None: + pulumi.set(__self__, "created_at", created_at) + if database_password is not None: + pulumi.set(__self__, "database_password", database_password) + if database_user is not None: + pulumi.set(__self__, "database_user", database_user) + if description is not None: + pulumi.set(__self__, "description", description) + if detach_dokploy_network is not None: + pulumi.set(__self__, "detach_dokploy_network", detach_dokploy_network) + if docker_image is not None: + pulumi.set(__self__, "docker_image", docker_image) + if enable_namespaces is not None: + pulumi.set(__self__, "enable_namespaces", enable_namespaces) + if endpoint_spec_swarm is not None: + pulumi.set(__self__, "endpoint_spec_swarm", endpoint_spec_swarm) + if env is not None: + pulumi.set(__self__, "env", env) + if environment_id is not None: + pulumi.set(__self__, "environment_id", environment_id) + if external_admin_port is not None: + pulumi.set(__self__, "external_admin_port", external_admin_port) + if external_grpc_port is not None: + pulumi.set(__self__, "external_grpc_port", external_grpc_port) + if external_port is not None: + pulumi.set(__self__, "external_port", external_port) + if health_check_swarm is not None: + pulumi.set(__self__, "health_check_swarm", health_check_swarm) + if labels_swarm is not None: + pulumi.set(__self__, "labels_swarm", labels_swarm) + if memory_limit is not None: + pulumi.set(__self__, "memory_limit", memory_limit) + if memory_reservation is not None: + pulumi.set(__self__, "memory_reservation", memory_reservation) + if mode_swarm is not None: + pulumi.set(__self__, "mode_swarm", mode_swarm) + if name is not None: + pulumi.set(__self__, "name", name) + if network_ids is not None: + pulumi.set(__self__, "network_ids", network_ids) + if network_swarm is not None: + pulumi.set(__self__, "network_swarm", network_swarm) + if placement_swarm is not None: + pulumi.set(__self__, "placement_swarm", placement_swarm) + if replicas is not None: + pulumi.set(__self__, "replicas", replicas) + if restart_policy_swarm is not None: + pulumi.set(__self__, "restart_policy_swarm", restart_policy_swarm) + if rollback_config_swarm is not None: + pulumi.set(__self__, "rollback_config_swarm", rollback_config_swarm) + if server_id is not None: + pulumi.set(__self__, "server_id", server_id) + if sqld_node is not None: + pulumi.set(__self__, "sqld_node", sqld_node) + if sqld_primary_url is not None: + pulumi.set(__self__, "sqld_primary_url", sqld_primary_url) + if stop_grace_period_swarm is not None: + pulumi.set(__self__, "stop_grace_period_swarm", stop_grace_period_swarm) + if update_config_swarm is not None: + pulumi.set(__self__, "update_config_swarm", update_config_swarm) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + """ + return pulumi.get(self, "app_name") + + @app_name.setter + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "app_name", value) + + @_builtins.property + @pulumi.getter(name="applicationStatus") + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + """ + return pulumi.get(self, "application_status") + + @application_status.setter + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "application_status", value) + + @_builtins.property + @pulumi.getter + def command(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Override the container entrypoint command. + """ + return pulumi.get(self, "command") + + @command.setter + def command(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "command", value) + + @_builtins.property + @pulumi.getter(name="cpuLimit") + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Hard CPU limit, for example `1`. + """ + return pulumi.get(self, "cpu_limit") + + @cpu_limit.setter + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "cpu_limit", value) + + @_builtins.property + @pulumi.getter(name="cpuReservation") + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Soft CPU reservation, for example `0.5`. + """ + return pulumi.get(self, "cpu_reservation") + + @cpu_reservation.setter + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "cpu_reservation", value) + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + RFC 3339 timestamp of when the database was created. + """ + return pulumi.get(self, "created_at") + + @created_at.setter + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "created_at", value) + + @_builtins.property + @pulumi.getter(name="databasePassword") + def database_password(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Password for the database user. + """ + return pulumi.get(self, "database_password") + + @database_password.setter + def database_password(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "database_password", value) + + @_builtins.property + @pulumi.getter(name="databaseUser") + def database_user(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Database user to create. + """ + return pulumi.get(self, "database_user") + + @database_user.setter + def database_user(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "database_user", value) + + @_builtins.property + @pulumi.getter + def description(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Free-form description. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "description", value) + + @_builtins.property + @pulumi.getter(name="detachDokployNetwork") + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Detach the service from the shared `dokploy-network`. + """ + return pulumi.get(self, "detach_dokploy_network") + + @detach_dokploy_network.setter + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "detach_dokploy_network", value) + + @_builtins.property + @pulumi.getter(name="dockerImage") + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + """ + return pulumi.get(self, "docker_image") + + @docker_image.setter + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "docker_image", value) + + @_builtins.property + @pulumi.getter(name="enableNamespaces") + def enable_namespaces(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Serve multiple logical databases from one instance through libSQL namespaces. + """ + return pulumi.get(self, "enable_namespaces") + + @enable_namespaces.setter + def enable_namespaces(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enable_namespaces", value) + + @_builtins.property + @pulumi.getter(name="endpointSpecSwarm") + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm endpoint specification, as a JSON object. + """ + return pulumi.get(self, "endpoint_spec_swarm") + + @endpoint_spec_swarm.setter + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "endpoint_spec_swarm", value) + + @_builtins.property + @pulumi.getter + def env(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Environment variables in `KEY=value` format, one per line. + """ + return pulumi.get(self, "env") + + @env.setter + def env(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "env", value) + + @_builtins.property + @pulumi.getter(name="environmentId") + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Environment this database belongs to. + """ + return pulumi.get(self, "environment_id") + + @environment_id.setter + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "environment_id", value) + + @_builtins.property + @pulumi.getter(name="externalAdminPort") + def external_admin_port(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Host port exposing the admin API. + """ + return pulumi.get(self, "external_admin_port") + + @external_admin_port.setter + def external_admin_port(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "external_admin_port", value) + + @_builtins.property + @pulumi.getter(name="externalGrpcPort") + def external_grpc_port(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Host port exposing the gRPC replication endpoint. + """ + return pulumi.get(self, "external_grpc_port") + + @external_grpc_port.setter + def external_grpc_port(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "external_grpc_port", value) + + @_builtins.property + @pulumi.getter(name="externalPort") + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Host port exposing the HTTP API. + """ + return pulumi.get(self, "external_port") + + @external_port.setter + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "external_port", value) + + @_builtins.property + @pulumi.getter(name="healthCheckSwarm") + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm health check configuration, as a JSON object. + """ + return pulumi.get(self, "health_check_swarm") + + @health_check_swarm.setter + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "health_check_swarm", value) + + @_builtins.property + @pulumi.getter(name="labelsSwarm") + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm service labels, as a JSON object. + """ + return pulumi.get(self, "labels_swarm") + + @labels_swarm.setter + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "labels_swarm", value) + + @_builtins.property + @pulumi.getter(name="memoryLimit") + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Hard memory limit, for example `512m`. + """ + return pulumi.get(self, "memory_limit") + + @memory_limit.setter + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "memory_limit", value) + + @_builtins.property + @pulumi.getter(name="memoryReservation") + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Soft memory reservation, for example `256m`. + """ + return pulumi.get(self, "memory_reservation") + + @memory_reservation.setter + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "memory_reservation", value) + + @_builtins.property + @pulumi.getter(name="modeSwarm") + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm service mode, as a JSON object. + """ + return pulumi.get(self, "mode_swarm") + + @mode_swarm.setter + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mode_swarm", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Display name of the database. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="networkIds") + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: + """ + IDs of additional Docker networks to attach. + """ + return pulumi.get(self, "network_ids") + + @network_ids.setter + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): + pulumi.set(self, "network_ids", value) + + @_builtins.property + @pulumi.getter(name="networkSwarm") + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm network attachments, as a JSON array. + """ + return pulumi.get(self, "network_swarm") + + @network_swarm.setter + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "network_swarm", value) + + @_builtins.property + @pulumi.getter(name="placementSwarm") + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm placement constraints, as a JSON object. + """ + return pulumi.get(self, "placement_swarm") + + @placement_swarm.setter + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "placement_swarm", value) + + @_builtins.property + @pulumi.getter + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Number of replicas to run. + """ + return pulumi.get(self, "replicas") + + @replicas.setter + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "replicas", value) + + @_builtins.property + @pulumi.getter(name="restartPolicySwarm") + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm restart policy, as a JSON object. + """ + return pulumi.get(self, "restart_policy_swarm") + + @restart_policy_swarm.setter + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "restart_policy_swarm", value) + + @_builtins.property + @pulumi.getter(name="rollbackConfigSwarm") + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm rollback configuration, as a JSON object. + """ + return pulumi.get(self, "rollback_config_swarm") + + @rollback_config_swarm.setter + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "rollback_config_swarm", value) + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Remote server to deploy on. Omit to use the Dokploy host itself. + """ + return pulumi.get(self, "server_id") + + @server_id.setter + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "server_id", value) + + @_builtins.property + @pulumi.getter(name="sqldNode") + def sqld_node(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + """ + return pulumi.get(self, "sqld_node") + + @sqld_node.setter + def sqld_node(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "sqld_node", value) + + @_builtins.property + @pulumi.getter(name="sqldPrimaryUrl") + def sqld_primary_url(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + URL of the primary node, when `sqld_node` is `replica`. + """ + return pulumi.get(self, "sqld_primary_url") + + @sqld_primary_url.setter + def sqld_primary_url(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "sqld_primary_url", value) + + @_builtins.property + @pulumi.getter(name="stopGracePeriodSwarm") + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Grace period in nanoseconds before a container is killed. + """ + return pulumi.get(self, "stop_grace_period_swarm") + + @stop_grace_period_swarm.setter + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "stop_grace_period_swarm", value) + + @_builtins.property + @pulumi.getter(name="updateConfigSwarm") + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker Swarm rolling update configuration, as a JSON object. + """ + return pulumi.get(self, "update_config_swarm") + + @update_config_swarm.setter + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "update_config_swarm", value) + + +@pulumi.type_token("dokploy:index/libsql:Libsql") +class Libsql(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + enable_namespaces: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_admin_port: pulumi.Input[Optional[_builtins.int]] = None, + external_grpc_port: pulumi.Input[Optional[_builtins.int]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + sqld_node: pulumi.Input[Optional[_builtins.str]] = None, + sqld_primary_url: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + """ + A managed libSQL instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + + libSQL runs as a `sqld` server. A `primary` node owns the data; a `replica` node follows a primary named by `sqld_primary_url`. + + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] app_name: Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + :param pulumi.Input[_builtins.str] command: Override the container entrypoint command. + :param pulumi.Input[_builtins.str] cpu_limit: Hard CPU limit, for example `1`. + :param pulumi.Input[_builtins.str] cpu_reservation: Soft CPU reservation, for example `0.5`. + :param pulumi.Input[_builtins.str] database_password: Password for the database user. + :param pulumi.Input[_builtins.str] database_user: Database user to create. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] detach_dokploy_network: Detach the service from the shared `dokploy-network`. + :param pulumi.Input[_builtins.str] docker_image: libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + :param pulumi.Input[_builtins.bool] enable_namespaces: Serve multiple logical databases from one instance through libSQL namespaces. + :param pulumi.Input[_builtins.str] endpoint_spec_swarm: Docker Swarm endpoint specification, as a JSON object. + :param pulumi.Input[_builtins.str] env: Environment variables in `KEY=value` format, one per line. + :param pulumi.Input[_builtins.str] environment_id: Environment this database belongs to. + :param pulumi.Input[_builtins.int] external_admin_port: Host port exposing the admin API. + :param pulumi.Input[_builtins.int] external_grpc_port: Host port exposing the gRPC replication endpoint. + :param pulumi.Input[_builtins.int] external_port: Host port exposing the HTTP API. + :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. + :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. + :param pulumi.Input[_builtins.str] memory_limit: Hard memory limit, for example `512m`. + :param pulumi.Input[_builtins.str] memory_reservation: Soft memory reservation, for example `256m`. + :param pulumi.Input[_builtins.str] mode_swarm: Docker Swarm service mode, as a JSON object. + :param pulumi.Input[_builtins.str] name: Display name of the database. + :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] network_ids: IDs of additional Docker networks to attach. + :param pulumi.Input[_builtins.str] network_swarm: Docker Swarm network attachments, as a JSON array. + :param pulumi.Input[_builtins.str] placement_swarm: Docker Swarm placement constraints, as a JSON object. + :param pulumi.Input[_builtins.int] replicas: Number of replicas to run. + :param pulumi.Input[_builtins.str] restart_policy_swarm: Docker Swarm restart policy, as a JSON object. + :param pulumi.Input[_builtins.str] rollback_config_swarm: Docker Swarm rollback configuration, as a JSON object. + :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] sqld_node: Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + :param pulumi.Input[_builtins.str] sqld_primary_url: URL of the primary node, when `sqld_node` is `replica`. + :param pulumi.Input[_builtins.int] stop_grace_period_swarm: Grace period in nanoseconds before a container is killed. + :param pulumi.Input[_builtins.str] update_config_swarm: Docker Swarm rolling update configuration, as a JSON object. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: LibsqlArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + A managed libSQL instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + + libSQL runs as a `sqld` server. A `primary` node owns the data; a `replica` node follows a primary named by `sqld_primary_url`. + + + :param str resource_name: The name of the resource. + :param LibsqlArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(LibsqlArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + enable_namespaces: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_admin_port: pulumi.Input[Optional[_builtins.int]] = None, + external_grpc_port: pulumi.Input[Optional[_builtins.int]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + sqld_node: pulumi.Input[Optional[_builtins.str]] = None, + sqld_primary_url: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = LibsqlArgs.__new__(LibsqlArgs) + + __props__.__dict__["app_name"] = app_name + __props__.__dict__["command"] = command + __props__.__dict__["cpu_limit"] = cpu_limit + __props__.__dict__["cpu_reservation"] = cpu_reservation + if database_password is None and not opts.urn: + raise TypeError("Missing required property 'database_password'") + __props__.__dict__["database_password"] = None if database_password is None else pulumi.Output.secret(database_password) + if database_user is None and not opts.urn: + raise TypeError("Missing required property 'database_user'") + __props__.__dict__["database_user"] = database_user + __props__.__dict__["description"] = description + __props__.__dict__["detach_dokploy_network"] = detach_dokploy_network + if docker_image is None and not opts.urn: + raise TypeError("Missing required property 'docker_image'") + __props__.__dict__["docker_image"] = docker_image + __props__.__dict__["enable_namespaces"] = enable_namespaces + __props__.__dict__["endpoint_spec_swarm"] = endpoint_spec_swarm + __props__.__dict__["env"] = env + if environment_id is None and not opts.urn: + raise TypeError("Missing required property 'environment_id'") + __props__.__dict__["environment_id"] = environment_id + __props__.__dict__["external_admin_port"] = external_admin_port + __props__.__dict__["external_grpc_port"] = external_grpc_port + __props__.__dict__["external_port"] = external_port + __props__.__dict__["health_check_swarm"] = health_check_swarm + __props__.__dict__["labels_swarm"] = labels_swarm + __props__.__dict__["memory_limit"] = memory_limit + __props__.__dict__["memory_reservation"] = memory_reservation + __props__.__dict__["mode_swarm"] = mode_swarm + __props__.__dict__["name"] = name + __props__.__dict__["network_ids"] = network_ids + __props__.__dict__["network_swarm"] = network_swarm + __props__.__dict__["placement_swarm"] = placement_swarm + __props__.__dict__["replicas"] = replicas + __props__.__dict__["restart_policy_swarm"] = restart_policy_swarm + __props__.__dict__["rollback_config_swarm"] = rollback_config_swarm + __props__.__dict__["server_id"] = server_id + __props__.__dict__["sqld_node"] = sqld_node + __props__.__dict__["sqld_primary_url"] = sqld_primary_url + __props__.__dict__["stop_grace_period_swarm"] = stop_grace_period_swarm + __props__.__dict__["update_config_swarm"] = update_config_swarm + __props__.__dict__["application_status"] = None + __props__.__dict__["created_at"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["databasePassword"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(Libsql, __self__).__init__( + 'dokploy:index/libsql:Libsql', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + enable_namespaces: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_admin_port: pulumi.Input[Optional[_builtins.int]] = None, + external_grpc_port: pulumi.Input[Optional[_builtins.int]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + sqld_node: pulumi.Input[Optional[_builtins.str]] = None, + sqld_primary_url: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None) -> 'Libsql': + """ + Get an existing Libsql resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] app_name: Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + :param pulumi.Input[_builtins.str] application_status: Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + :param pulumi.Input[_builtins.str] command: Override the container entrypoint command. + :param pulumi.Input[_builtins.str] cpu_limit: Hard CPU limit, for example `1`. + :param pulumi.Input[_builtins.str] cpu_reservation: Soft CPU reservation, for example `0.5`. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the database was created. + :param pulumi.Input[_builtins.str] database_password: Password for the database user. + :param pulumi.Input[_builtins.str] database_user: Database user to create. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] detach_dokploy_network: Detach the service from the shared `dokploy-network`. + :param pulumi.Input[_builtins.str] docker_image: libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + :param pulumi.Input[_builtins.bool] enable_namespaces: Serve multiple logical databases from one instance through libSQL namespaces. + :param pulumi.Input[_builtins.str] endpoint_spec_swarm: Docker Swarm endpoint specification, as a JSON object. + :param pulumi.Input[_builtins.str] env: Environment variables in `KEY=value` format, one per line. + :param pulumi.Input[_builtins.str] environment_id: Environment this database belongs to. + :param pulumi.Input[_builtins.int] external_admin_port: Host port exposing the admin API. + :param pulumi.Input[_builtins.int] external_grpc_port: Host port exposing the gRPC replication endpoint. + :param pulumi.Input[_builtins.int] external_port: Host port exposing the HTTP API. + :param pulumi.Input[_builtins.str] health_check_swarm: Docker Swarm health check configuration, as a JSON object. + :param pulumi.Input[_builtins.str] labels_swarm: Docker Swarm service labels, as a JSON object. + :param pulumi.Input[_builtins.str] memory_limit: Hard memory limit, for example `512m`. + :param pulumi.Input[_builtins.str] memory_reservation: Soft memory reservation, for example `256m`. + :param pulumi.Input[_builtins.str] mode_swarm: Docker Swarm service mode, as a JSON object. + :param pulumi.Input[_builtins.str] name: Display name of the database. + :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] network_ids: IDs of additional Docker networks to attach. + :param pulumi.Input[_builtins.str] network_swarm: Docker Swarm network attachments, as a JSON array. + :param pulumi.Input[_builtins.str] placement_swarm: Docker Swarm placement constraints, as a JSON object. + :param pulumi.Input[_builtins.int] replicas: Number of replicas to run. + :param pulumi.Input[_builtins.str] restart_policy_swarm: Docker Swarm restart policy, as a JSON object. + :param pulumi.Input[_builtins.str] rollback_config_swarm: Docker Swarm rollback configuration, as a JSON object. + :param pulumi.Input[_builtins.str] server_id: Remote server to deploy on. Omit to use the Dokploy host itself. + :param pulumi.Input[_builtins.str] sqld_node: Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + :param pulumi.Input[_builtins.str] sqld_primary_url: URL of the primary node, when `sqld_node` is `replica`. + :param pulumi.Input[_builtins.int] stop_grace_period_swarm: Grace period in nanoseconds before a container is killed. + :param pulumi.Input[_builtins.str] update_config_swarm: Docker Swarm rolling update configuration, as a JSON object. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _LibsqlState.__new__(_LibsqlState) + + __props__.__dict__["app_name"] = app_name + __props__.__dict__["application_status"] = application_status + __props__.__dict__["command"] = command + __props__.__dict__["cpu_limit"] = cpu_limit + __props__.__dict__["cpu_reservation"] = cpu_reservation + __props__.__dict__["created_at"] = created_at + __props__.__dict__["database_password"] = database_password + __props__.__dict__["database_user"] = database_user + __props__.__dict__["description"] = description + __props__.__dict__["detach_dokploy_network"] = detach_dokploy_network + __props__.__dict__["docker_image"] = docker_image + __props__.__dict__["enable_namespaces"] = enable_namespaces + __props__.__dict__["endpoint_spec_swarm"] = endpoint_spec_swarm + __props__.__dict__["env"] = env + __props__.__dict__["environment_id"] = environment_id + __props__.__dict__["external_admin_port"] = external_admin_port + __props__.__dict__["external_grpc_port"] = external_grpc_port + __props__.__dict__["external_port"] = external_port + __props__.__dict__["health_check_swarm"] = health_check_swarm + __props__.__dict__["labels_swarm"] = labels_swarm + __props__.__dict__["memory_limit"] = memory_limit + __props__.__dict__["memory_reservation"] = memory_reservation + __props__.__dict__["mode_swarm"] = mode_swarm + __props__.__dict__["name"] = name + __props__.__dict__["network_ids"] = network_ids + __props__.__dict__["network_swarm"] = network_swarm + __props__.__dict__["placement_swarm"] = placement_swarm + __props__.__dict__["replicas"] = replicas + __props__.__dict__["restart_policy_swarm"] = restart_policy_swarm + __props__.__dict__["rollback_config_swarm"] = rollback_config_swarm + __props__.__dict__["server_id"] = server_id + __props__.__dict__["sqld_node"] = sqld_node + __props__.__dict__["sqld_primary_url"] = sqld_primary_url + __props__.__dict__["stop_grace_period_swarm"] = stop_grace_period_swarm + __props__.__dict__["update_config_swarm"] = update_config_swarm + return Libsql(resource_name, opts=opts, __props__=__props__) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Output[_builtins.str]: + """ + Unique Docker service name. Generated from `name` when omitted, because Dokploy's libSQL endpoint does not generate one. Changing it forces a new database. + """ + return pulumi.get(self, "app_name") + + @_builtins.property + @pulumi.getter(name="applicationStatus") + def application_status(self) -> pulumi.Output[_builtins.str]: + """ + Current status reported by Dokploy: `idle`, `running`, `done` or `error`. + """ + return pulumi.get(self, "application_status") + + @_builtins.property + @pulumi.getter + def command(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Override the container entrypoint command. + """ + return pulumi.get(self, "command") + + @_builtins.property + @pulumi.getter(name="cpuLimit") + def cpu_limit(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Hard CPU limit, for example `1`. + """ + return pulumi.get(self, "cpu_limit") + + @_builtins.property + @pulumi.getter(name="cpuReservation") + def cpu_reservation(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Soft CPU reservation, for example `0.5`. + """ + return pulumi.get(self, "cpu_reservation") + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Output[_builtins.str]: + """ + RFC 3339 timestamp of when the database was created. + """ + return pulumi.get(self, "created_at") + + @_builtins.property + @pulumi.getter(name="databasePassword") + def database_password(self) -> pulumi.Output[_builtins.str]: + """ + Password for the database user. + """ + return pulumi.get(self, "database_password") + + @_builtins.property + @pulumi.getter(name="databaseUser") + def database_user(self) -> pulumi.Output[_builtins.str]: + """ + Database user to create. + """ + return pulumi.get(self, "database_user") + + @_builtins.property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Free-form description. + """ + return pulumi.get(self, "description") + + @_builtins.property + @pulumi.getter(name="detachDokployNetwork") + def detach_dokploy_network(self) -> pulumi.Output[_builtins.bool]: + """ + Detach the service from the shared `dokploy-network`. + """ + return pulumi.get(self, "detach_dokploy_network") + + @_builtins.property + @pulumi.getter(name="dockerImage") + def docker_image(self) -> pulumi.Output[_builtins.str]: + """ + libSQL server image to run, for example `ghcr.io/tursodatabase/libsql-server:latest`. + """ + return pulumi.get(self, "docker_image") + + @_builtins.property + @pulumi.getter(name="enableNamespaces") + def enable_namespaces(self) -> pulumi.Output[_builtins.bool]: + """ + Serve multiple logical databases from one instance through libSQL namespaces. + """ + return pulumi.get(self, "enable_namespaces") + + @_builtins.property + @pulumi.getter(name="endpointSpecSwarm") + def endpoint_spec_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm endpoint specification, as a JSON object. + """ + return pulumi.get(self, "endpoint_spec_swarm") + + @_builtins.property + @pulumi.getter + def env(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Environment variables in `KEY=value` format, one per line. + """ + return pulumi.get(self, "env") + + @_builtins.property + @pulumi.getter(name="environmentId") + def environment_id(self) -> pulumi.Output[_builtins.str]: + """ + Environment this database belongs to. + """ + return pulumi.get(self, "environment_id") + + @_builtins.property + @pulumi.getter(name="externalAdminPort") + def external_admin_port(self) -> pulumi.Output[Optional[_builtins.int]]: + """ + Host port exposing the admin API. + """ + return pulumi.get(self, "external_admin_port") + + @_builtins.property + @pulumi.getter(name="externalGrpcPort") + def external_grpc_port(self) -> pulumi.Output[Optional[_builtins.int]]: + """ + Host port exposing the gRPC replication endpoint. + """ + return pulumi.get(self, "external_grpc_port") + + @_builtins.property + @pulumi.getter(name="externalPort") + def external_port(self) -> pulumi.Output[Optional[_builtins.int]]: + """ + Host port exposing the HTTP API. + """ + return pulumi.get(self, "external_port") + + @_builtins.property + @pulumi.getter(name="healthCheckSwarm") + def health_check_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm health check configuration, as a JSON object. + """ + return pulumi.get(self, "health_check_swarm") + + @_builtins.property + @pulumi.getter(name="labelsSwarm") + def labels_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm service labels, as a JSON object. + """ + return pulumi.get(self, "labels_swarm") + + @_builtins.property + @pulumi.getter(name="memoryLimit") + def memory_limit(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Hard memory limit, for example `512m`. + """ + return pulumi.get(self, "memory_limit") + + @_builtins.property + @pulumi.getter(name="memoryReservation") + def memory_reservation(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Soft memory reservation, for example `256m`. + """ + return pulumi.get(self, "memory_reservation") + + @_builtins.property + @pulumi.getter(name="modeSwarm") + def mode_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm service mode, as a JSON object. + """ + return pulumi.get(self, "mode_swarm") + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Output[_builtins.str]: + """ + Display name of the database. + """ + return pulumi.get(self, "name") + + @_builtins.property + @pulumi.getter(name="networkIds") + def network_ids(self) -> pulumi.Output[Sequence[_builtins.str]]: + """ + IDs of additional Docker networks to attach. + """ + return pulumi.get(self, "network_ids") + + @_builtins.property + @pulumi.getter(name="networkSwarm") + def network_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm network attachments, as a JSON array. + """ + return pulumi.get(self, "network_swarm") + + @_builtins.property + @pulumi.getter(name="placementSwarm") + def placement_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm placement constraints, as a JSON object. + """ + return pulumi.get(self, "placement_swarm") + + @_builtins.property + @pulumi.getter + def replicas(self) -> pulumi.Output[_builtins.int]: + """ + Number of replicas to run. + """ + return pulumi.get(self, "replicas") + + @_builtins.property + @pulumi.getter(name="restartPolicySwarm") + def restart_policy_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm restart policy, as a JSON object. + """ + return pulumi.get(self, "restart_policy_swarm") + + @_builtins.property + @pulumi.getter(name="rollbackConfigSwarm") + def rollback_config_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm rollback configuration, as a JSON object. + """ + return pulumi.get(self, "rollback_config_swarm") + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Remote server to deploy on. Omit to use the Dokploy host itself. + """ + return pulumi.get(self, "server_id") + + @_builtins.property + @pulumi.getter(name="sqldNode") + def sqld_node(self) -> pulumi.Output[_builtins.str]: + """ + Role this node plays in a libSQL cluster. Valid values: `primary`, `replica`. Defaults to `primary`. + """ + return pulumi.get(self, "sqld_node") + + @_builtins.property + @pulumi.getter(name="sqldPrimaryUrl") + def sqld_primary_url(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + URL of the primary node, when `sqld_node` is `replica`. + """ + return pulumi.get(self, "sqld_primary_url") + + @_builtins.property + @pulumi.getter(name="stopGracePeriodSwarm") + def stop_grace_period_swarm(self) -> pulumi.Output[Optional[_builtins.int]]: + """ + Grace period in nanoseconds before a container is killed. + """ + return pulumi.get(self, "stop_grace_period_swarm") + + @_builtins.property + @pulumi.getter(name="updateConfigSwarm") + def update_config_swarm(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Docker Swarm rolling update configuration, as a JSON object. + """ + return pulumi.get(self, "update_config_swarm") + diff --git a/sdk/python/pulumi_dokploy/maria_db.py b/sdk/python/pulumi_dokploy/maria_db.py index 5522109..ed74dc8 100644 --- a/sdk/python/pulumi_dokploy/maria_db.py +++ b/sdk/python/pulumi_dokploy/maria_db.py @@ -25,32 +25,32 @@ class MariaDbArgs: database_user: pulumi.Input[_builtins.str], docker_image: pulumi.Input[_builtins.str], environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a MariaDb resource. @@ -220,354 +220,354 @@ class MariaDbArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @pulumi.input_type class _MariaDbState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering MariaDb resources. @@ -677,410 +677,410 @@ class _MariaDbState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="applicationStatus") - def application_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "application_status") @application_status.setter - def application_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_status", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the database was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="databaseName") - def database_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the database to create. """ return pulumi.get(self, "database_name") @database_name.setter - def database_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_name", value) @_builtins.property @pulumi.getter(name="databasePassword") - def database_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password for the database user. """ return pulumi.get(self, "database_password") @database_password.setter - def database_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_password", value) @_builtins.property @pulumi.getter(name="databaseRootPassword") - def database_root_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_root_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password for the MariaDB `root` user. """ return pulumi.get(self, "database_root_password") @database_root_password.setter - def database_root_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_root_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_root_password", value) @_builtins.property @pulumi.getter(name="databaseUser") - def database_user(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_user(self) -> pulumi.Input[Optional[_builtins.str]]: """ Database user to create. """ return pulumi.get(self, "database_user") @database_user.setter - def database_user(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_user(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_user", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ MariaDB image to run, for example `mariadb:11`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this database belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @@ -1090,41 +1090,46 @@ class MariaDb(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a MariaDb resource with the given unique name, props, and options. + A managed MariaDB instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -1168,7 +1173,12 @@ class MariaDb(pulumi.CustomResource): args: MariaDbArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a MariaDb resource with the given unique name, props, and options. + A managed MariaDB instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param MariaDbArgs args: The arguments to use to populate this resource's properties. @@ -1185,38 +1195,38 @@ class MariaDb(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1284,40 +1294,40 @@ class MariaDb(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None) -> 'MariaDb': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None) -> 'MariaDb': """ Get an existing MariaDb resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/mongo.py b/sdk/python/pulumi_dokploy/mongo.py index f28e9e3..a231a6a 100644 --- a/sdk/python/pulumi_dokploy/mongo.py +++ b/sdk/python/pulumi_dokploy/mongo.py @@ -22,34 +22,34 @@ class MongoArgs: database_password: pulumi.Input[_builtins.str], database_user: pulumi.Input[_builtins.str], environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replica_sets: Optional[pulumi.Input[_builtins.bool]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replica_sets: pulumi.Input[Optional[_builtins.bool]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Mongo resource. @@ -183,377 +183,377 @@ class MongoArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ MongoDB image to run. Defaults to `mongo:8`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter(name="replicaSets") - def replica_sets(self) -> Optional[pulumi.Input[_builtins.bool]]: + def replica_sets(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Start the instance as a single-node replica set. """ return pulumi.get(self, "replica_sets") @replica_sets.setter - def replica_sets(self, value: Optional[pulumi.Input[_builtins.bool]]): + def replica_sets(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "replica_sets", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @pulumi.input_type class _MongoState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replica_sets: Optional[pulumi.Input[_builtins.bool]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replica_sets: pulumi.Input[Optional[_builtins.bool]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Mongo resources. @@ -660,398 +660,398 @@ class _MongoState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="applicationStatus") - def application_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "application_status") @application_status.setter - def application_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_status", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the database was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="databasePassword") - def database_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password for the root user. """ return pulumi.get(self, "database_password") @database_password.setter - def database_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_password", value) @_builtins.property @pulumi.getter(name="databaseUser") - def database_user(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_user(self) -> pulumi.Input[Optional[_builtins.str]]: """ Root username to create. """ return pulumi.get(self, "database_user") @database_user.setter - def database_user(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_user(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_user", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ MongoDB image to run. Defaults to `mongo:8`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this database belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter(name="replicaSets") - def replica_sets(self) -> Optional[pulumi.Input[_builtins.bool]]: + def replica_sets(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Start the instance as a single-node replica set. """ return pulumi.get(self, "replica_sets") @replica_sets.setter - def replica_sets(self, value: Optional[pulumi.Input[_builtins.bool]]): + def replica_sets(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "replica_sets", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @@ -1061,40 +1061,45 @@ class Mongo(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replica_sets: Optional[pulumi.Input[_builtins.bool]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replica_sets: pulumi.Input[Optional[_builtins.bool]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Mongo resource with the given unique name, props, and options. + A managed MongoDB instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -1137,7 +1142,12 @@ class Mongo(pulumi.CustomResource): args: MongoArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Mongo resource with the given unique name, props, and options. + A managed MongoDB instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param MongoArgs args: The arguments to use to populate this resource's properties. @@ -1154,37 +1164,37 @@ class Mongo(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replica_sets: Optional[pulumi.Input[_builtins.bool]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replica_sets: pulumi.Input[Optional[_builtins.bool]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1245,39 +1255,39 @@ class Mongo(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replica_sets: Optional[pulumi.Input[_builtins.bool]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None) -> 'Mongo': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replica_sets: pulumi.Input[Optional[_builtins.bool]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None) -> 'Mongo': """ Get an existing Mongo resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/mount.py b/sdk/python/pulumi_dokploy/mount.py index 80389a1..f3e551e 100644 --- a/sdk/python/pulumi_dokploy/mount.py +++ b/sdk/python/pulumi_dokploy/mount.py @@ -23,16 +23,16 @@ class MountArgs: service_id: pulumi.Input[_builtins.str], service_type: pulumi.Input[_builtins.str], type: pulumi.Input[_builtins.str], - content: Optional[pulumi.Input[_builtins.str]] = None, - file_path: Optional[pulumi.Input[_builtins.str]] = None, - host_path: Optional[pulumi.Input[_builtins.str]] = None, - volume_name: Optional[pulumi.Input[_builtins.str]] = None): + content: pulumi.Input[Optional[_builtins.str]] = None, + file_path: pulumi.Input[Optional[_builtins.str]] = None, + host_path: pulumi.Input[Optional[_builtins.str]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Mount resource. :param pulumi.Input[_builtins.str] mount_path: Path inside the container where the mount appears. :param pulumi.Input[_builtins.str] service_id: ID of the service this mount attaches to. Must match `service_type` — an application ID, a compose ID, a postgres ID, and so on. - :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. :param pulumi.Input[_builtins.str] type: The kind of mount to create. Valid values: `bind`, `volume`, `file`. :param pulumi.Input[_builtins.str] content: Contents of the generated file, when `type` is `file`. :param pulumi.Input[_builtins.str] file_path: Path of the generated file, when `type` is `file`. @@ -80,7 +80,7 @@ class MountArgs: @pulumi.getter(name="serviceType") def service_type(self) -> pulumi.Input[_builtins.str]: """ - The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. """ return pulumi.get(self, "service_type") @@ -102,64 +102,64 @@ class MountArgs: @_builtins.property @pulumi.getter - def content(self) -> Optional[pulumi.Input[_builtins.str]]: + def content(self) -> pulumi.Input[Optional[_builtins.str]]: """ Contents of the generated file, when `type` is `file`. """ return pulumi.get(self, "content") @content.setter - def content(self, value: Optional[pulumi.Input[_builtins.str]]): + def content(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "content", value) @_builtins.property @pulumi.getter(name="filePath") - def file_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def file_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path of the generated file, when `type` is `file`. """ return pulumi.get(self, "file_path") @file_path.setter - def file_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def file_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "file_path", value) @_builtins.property @pulumi.getter(name="hostPath") - def host_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def host_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path on the host, when `type` is `bind`. """ return pulumi.get(self, "host_path") @host_path.setter - def host_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def host_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "host_path", value) @_builtins.property @pulumi.getter(name="volumeName") - def volume_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def volume_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the Docker volume, when `type` is `volume`. """ return pulumi.get(self, "volume_name") @volume_name.setter - def volume_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def volume_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "volume_name", value) @pulumi.input_type class _MountState: def __init__(__self__, *, - content: Optional[pulumi.Input[_builtins.str]] = None, - file_path: Optional[pulumi.Input[_builtins.str]] = None, - host_path: Optional[pulumi.Input[_builtins.str]] = None, - mount_path: Optional[pulumi.Input[_builtins.str]] = None, - service_id: Optional[pulumi.Input[_builtins.str]] = None, - service_type: Optional[pulumi.Input[_builtins.str]] = None, - type: Optional[pulumi.Input[_builtins.str]] = None, - volume_name: Optional[pulumi.Input[_builtins.str]] = None): + content: pulumi.Input[Optional[_builtins.str]] = None, + file_path: pulumi.Input[Optional[_builtins.str]] = None, + host_path: pulumi.Input[Optional[_builtins.str]] = None, + mount_path: pulumi.Input[Optional[_builtins.str]] = None, + service_id: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + type: pulumi.Input[Optional[_builtins.str]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Mount resources. @@ -168,7 +168,7 @@ class _MountState: :param pulumi.Input[_builtins.str] host_path: Path on the host, when `type` is `bind`. :param pulumi.Input[_builtins.str] mount_path: Path inside the container where the mount appears. :param pulumi.Input[_builtins.str] service_id: ID of the service this mount attaches to. Must match `service_type` — an application ID, a compose ID, a postgres ID, and so on. - :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. :param pulumi.Input[_builtins.str] type: The kind of mount to create. Valid values: `bind`, `volume`, `file`. :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume, when `type` is `volume`. """ @@ -191,98 +191,98 @@ class _MountState: @_builtins.property @pulumi.getter - def content(self) -> Optional[pulumi.Input[_builtins.str]]: + def content(self) -> pulumi.Input[Optional[_builtins.str]]: """ Contents of the generated file, when `type` is `file`. """ return pulumi.get(self, "content") @content.setter - def content(self, value: Optional[pulumi.Input[_builtins.str]]): + def content(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "content", value) @_builtins.property @pulumi.getter(name="filePath") - def file_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def file_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path of the generated file, when `type` is `file`. """ return pulumi.get(self, "file_path") @file_path.setter - def file_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def file_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "file_path", value) @_builtins.property @pulumi.getter(name="hostPath") - def host_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def host_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path on the host, when `type` is `bind`. """ return pulumi.get(self, "host_path") @host_path.setter - def host_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def host_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "host_path", value) @_builtins.property @pulumi.getter(name="mountPath") - def mount_path(self) -> Optional[pulumi.Input[_builtins.str]]: + def mount_path(self) -> pulumi.Input[Optional[_builtins.str]]: """ Path inside the container where the mount appears. """ return pulumi.get(self, "mount_path") @mount_path.setter - def mount_path(self, value: Optional[pulumi.Input[_builtins.str]]): + def mount_path(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mount_path", value) @_builtins.property @pulumi.getter(name="serviceId") - def service_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def service_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the service this mount attaches to. Must match `service_type` — an application ID, a compose ID, a postgres ID, and so on. """ return pulumi.get(self, "service_id") @service_id.setter - def service_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def service_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "service_id", value) @_builtins.property @pulumi.getter(name="serviceType") - def service_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def service_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ - The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. """ return pulumi.get(self, "service_type") @service_type.setter - def service_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def service_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "service_type", value) @_builtins.property @pulumi.getter - def type(self) -> Optional[pulumi.Input[_builtins.str]]: + def type(self) -> pulumi.Input[Optional[_builtins.str]]: """ The kind of mount to create. Valid values: `bind`, `volume`, `file`. """ return pulumi.get(self, "type") @type.setter - def type(self, value: Optional[pulumi.Input[_builtins.str]]): + def type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "type", value) @_builtins.property @pulumi.getter(name="volumeName") - def volume_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def volume_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the Docker volume, when `type` is `volume`. """ return pulumi.get(self, "volume_name") @volume_name.setter - def volume_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def volume_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "volume_name", value) @@ -292,17 +292,24 @@ class Mount(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - content: Optional[pulumi.Input[_builtins.str]] = None, - file_path: Optional[pulumi.Input[_builtins.str]] = None, - host_path: Optional[pulumi.Input[_builtins.str]] = None, - mount_path: Optional[pulumi.Input[_builtins.str]] = None, - service_id: Optional[pulumi.Input[_builtins.str]] = None, - service_type: Optional[pulumi.Input[_builtins.str]] = None, - type: Optional[pulumi.Input[_builtins.str]] = None, - volume_name: Optional[pulumi.Input[_builtins.str]] = None, + content: pulumi.Input[Optional[_builtins.str]] = None, + file_path: pulumi.Input[Optional[_builtins.str]] = None, + host_path: pulumi.Input[Optional[_builtins.str]] = None, + mount_path: pulumi.Input[Optional[_builtins.str]] = None, + service_id: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + type: pulumi.Input[Optional[_builtins.str]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Mount resource with the given unique name, props, and options. + A volume, bind mount, or config file attached to a Dokploy service. + + * `type = "volume"` — a named Docker volume; set `volume_name`. + * `type = "bind"` — a path on the host; set `host_path`. + * `type = "file"` — a file rendered from `content`; set `file_path`. + + > **A `volume` mount must set `volume_name`.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -311,7 +318,7 @@ class Mount(pulumi.CustomResource): :param pulumi.Input[_builtins.str] host_path: Path on the host, when `type` is `bind`. :param pulumi.Input[_builtins.str] mount_path: Path inside the container where the mount appears. :param pulumi.Input[_builtins.str] service_id: ID of the service this mount attaches to. Must match `service_type` — an application ID, a compose ID, a postgres ID, and so on. - :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. :param pulumi.Input[_builtins.str] type: The kind of mount to create. Valid values: `bind`, `volume`, `file`. :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume, when `type` is `volume`. """ @@ -322,7 +329,14 @@ class Mount(pulumi.CustomResource): args: MountArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Mount resource with the given unique name, props, and options. + A volume, bind mount, or config file attached to a Dokploy service. + + * `type = "volume"` — a named Docker volume; set `volume_name`. + * `type = "bind"` — a path on the host; set `host_path`. + * `type = "file"` — a file rendered from `content`; set `file_path`. + + > **A `volume` mount must set `volume_name`.** Dokploy hands an unset name to Docker as an empty source, which creates a fresh anonymous volume on every deploy and orphans the previous one — the data never survives a redeploy. The provider rejects that combination at plan time. + :param str resource_name: The name of the resource. :param MountArgs args: The arguments to use to populate this resource's properties. @@ -339,14 +353,14 @@ class Mount(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - content: Optional[pulumi.Input[_builtins.str]] = None, - file_path: Optional[pulumi.Input[_builtins.str]] = None, - host_path: Optional[pulumi.Input[_builtins.str]] = None, - mount_path: Optional[pulumi.Input[_builtins.str]] = None, - service_id: Optional[pulumi.Input[_builtins.str]] = None, - service_type: Optional[pulumi.Input[_builtins.str]] = None, - type: Optional[pulumi.Input[_builtins.str]] = None, - volume_name: Optional[pulumi.Input[_builtins.str]] = None, + content: pulumi.Input[Optional[_builtins.str]] = None, + file_path: pulumi.Input[Optional[_builtins.str]] = None, + host_path: pulumi.Input[Optional[_builtins.str]] = None, + mount_path: pulumi.Input[Optional[_builtins.str]] = None, + service_id: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + type: pulumi.Input[Optional[_builtins.str]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -382,14 +396,14 @@ class Mount(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - content: Optional[pulumi.Input[_builtins.str]] = None, - file_path: Optional[pulumi.Input[_builtins.str]] = None, - host_path: Optional[pulumi.Input[_builtins.str]] = None, - mount_path: Optional[pulumi.Input[_builtins.str]] = None, - service_id: Optional[pulumi.Input[_builtins.str]] = None, - service_type: Optional[pulumi.Input[_builtins.str]] = None, - type: Optional[pulumi.Input[_builtins.str]] = None, - volume_name: Optional[pulumi.Input[_builtins.str]] = None) -> 'Mount': + content: pulumi.Input[Optional[_builtins.str]] = None, + file_path: pulumi.Input[Optional[_builtins.str]] = None, + host_path: pulumi.Input[Optional[_builtins.str]] = None, + mount_path: pulumi.Input[Optional[_builtins.str]] = None, + service_id: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + type: pulumi.Input[Optional[_builtins.str]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None) -> 'Mount': """ Get an existing Mount resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -402,7 +416,7 @@ class Mount(pulumi.CustomResource): :param pulumi.Input[_builtins.str] host_path: Path on the host, when `type` is `bind`. :param pulumi.Input[_builtins.str] mount_path: Path inside the container where the mount appears. :param pulumi.Input[_builtins.str] service_id: ID of the service this mount attaches to. Must match `service_type` — an application ID, a compose ID, a postgres ID, and so on. - :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + :param pulumi.Input[_builtins.str] service_type: The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. :param pulumi.Input[_builtins.str] type: The kind of mount to create. Valid values: `bind`, `volume`, `file`. :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume, when `type` is `volume`. """ @@ -464,7 +478,7 @@ class Mount(pulumi.CustomResource): @pulumi.getter(name="serviceType") def service_type(self) -> pulumi.Output[_builtins.str]: """ - The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`. + The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. """ return pulumi.get(self, "service_type") diff --git a/sdk/python/pulumi_dokploy/my_sql.py b/sdk/python/pulumi_dokploy/my_sql.py index fb01374..2909703 100644 --- a/sdk/python/pulumi_dokploy/my_sql.py +++ b/sdk/python/pulumi_dokploy/my_sql.py @@ -25,32 +25,32 @@ class MySqlArgs: database_user: pulumi.Input[_builtins.str], docker_image: pulumi.Input[_builtins.str], environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a MySql resource. @@ -220,354 +220,354 @@ class MySqlArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @pulumi.input_type class _MySqlState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering MySql resources. @@ -677,410 +677,410 @@ class _MySqlState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="applicationStatus") - def application_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "application_status") @application_status.setter - def application_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_status", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the database was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="databaseName") - def database_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the database to create. """ return pulumi.get(self, "database_name") @database_name.setter - def database_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_name", value) @_builtins.property @pulumi.getter(name="databasePassword") - def database_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password for the database user. """ return pulumi.get(self, "database_password") @database_password.setter - def database_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_password", value) @_builtins.property @pulumi.getter(name="databaseRootPassword") - def database_root_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_root_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password for the MySQL `root` user. """ return pulumi.get(self, "database_root_password") @database_root_password.setter - def database_root_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_root_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_root_password", value) @_builtins.property @pulumi.getter(name="databaseUser") - def database_user(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_user(self) -> pulumi.Input[Optional[_builtins.str]]: """ Database user to create. """ return pulumi.get(self, "database_user") @database_user.setter - def database_user(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_user(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_user", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ MySQL image to run, for example `mysql:8`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this database belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @@ -1090,41 +1090,46 @@ class MySql(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a MySql resource with the given unique name, props, and options. + A managed MySQL instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -1168,7 +1173,12 @@ class MySql(pulumi.CustomResource): args: MySqlArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a MySql resource with the given unique name, props, and options. + A managed MySQL instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param MySqlArgs args: The arguments to use to populate this resource's properties. @@ -1185,38 +1195,38 @@ class MySql(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1284,40 +1294,40 @@ class MySql(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_root_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None) -> 'MySql': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_root_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None) -> 'MySql': """ Get an existing MySql resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/network.py b/sdk/python/pulumi_dokploy/network.py new file mode 100644 index 0000000..3372abc --- /dev/null +++ b/sdk/python/pulumi_dokploy/network.py @@ -0,0 +1,595 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import builtins as _builtins +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities + +__all__ = ['NetworkArgs', 'Network'] + +@pulumi.input_type +class NetworkArgs: + def __init__(__self__, *, + attachable: pulumi.Input[Optional[_builtins.bool]] = None, + driver: pulumi.Input[Optional[_builtins.str]] = None, + enable_ipv4: pulumi.Input[Optional[_builtins.bool]] = None, + enable_ipv6: pulumi.Input[Optional[_builtins.bool]] = None, + internal: pulumi.Input[Optional[_builtins.bool]] = None, + ipam: pulumi.Input[Optional[_builtins.str]] = None, + mtu: pulumi.Input[Optional[_builtins.int]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): + """ + The set of arguments for constructing a Network resource. + + :param pulumi.Input[_builtins.bool] attachable: Allow standalone containers to attach to an overlay network. + :param pulumi.Input[_builtins.str] driver: Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + :param pulumi.Input[_builtins.bool] enable_ipv4: Enable IPv4 address allocation. + :param pulumi.Input[_builtins.bool] enable_ipv6: Enable IPv6 address allocation. + :param pulumi.Input[_builtins.bool] internal: Isolate the network from external access. + :param pulumi.Input[_builtins.str] ipam: Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + :param pulumi.Input[_builtins.int] mtu: Maximum transmission unit for the network. Leave unset to use Docker's default. + :param pulumi.Input[_builtins.str] name: Name of the Docker network. + :param pulumi.Input[_builtins.str] server_id: Remote server to create the network on. Omit to use the Dokploy host itself. + """ + if attachable is not None: + pulumi.set(__self__, "attachable", attachable) + if driver is not None: + pulumi.set(__self__, "driver", driver) + if enable_ipv4 is not None: + pulumi.set(__self__, "enable_ipv4", enable_ipv4) + if enable_ipv6 is not None: + pulumi.set(__self__, "enable_ipv6", enable_ipv6) + if internal is not None: + pulumi.set(__self__, "internal", internal) + if ipam is not None: + pulumi.set(__self__, "ipam", ipam) + if mtu is not None: + pulumi.set(__self__, "mtu", mtu) + if name is not None: + pulumi.set(__self__, "name", name) + if server_id is not None: + pulumi.set(__self__, "server_id", server_id) + + @_builtins.property + @pulumi.getter + def attachable(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Allow standalone containers to attach to an overlay network. + """ + return pulumi.get(self, "attachable") + + @attachable.setter + def attachable(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "attachable", value) + + @_builtins.property + @pulumi.getter + def driver(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + """ + return pulumi.get(self, "driver") + + @driver.setter + def driver(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "driver", value) + + @_builtins.property + @pulumi.getter(name="enableIpv4") + def enable_ipv4(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Enable IPv4 address allocation. + """ + return pulumi.get(self, "enable_ipv4") + + @enable_ipv4.setter + def enable_ipv4(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enable_ipv4", value) + + @_builtins.property + @pulumi.getter(name="enableIpv6") + def enable_ipv6(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Enable IPv6 address allocation. + """ + return pulumi.get(self, "enable_ipv6") + + @enable_ipv6.setter + def enable_ipv6(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enable_ipv6", value) + + @_builtins.property + @pulumi.getter + def internal(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Isolate the network from external access. + """ + return pulumi.get(self, "internal") + + @internal.setter + def internal(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "internal", value) + + @_builtins.property + @pulumi.getter + def ipam(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + """ + return pulumi.get(self, "ipam") + + @ipam.setter + def ipam(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "ipam", value) + + @_builtins.property + @pulumi.getter + def mtu(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Maximum transmission unit for the network. Leave unset to use Docker's default. + """ + return pulumi.get(self, "mtu") + + @mtu.setter + def mtu(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "mtu", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the Docker network. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Remote server to create the network on. Omit to use the Dokploy host itself. + """ + return pulumi.get(self, "server_id") + + @server_id.setter + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "server_id", value) + + +@pulumi.input_type +class _NetworkState: + def __init__(__self__, *, + attachable: pulumi.Input[Optional[_builtins.bool]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + driver: pulumi.Input[Optional[_builtins.str]] = None, + enable_ipv4: pulumi.Input[Optional[_builtins.bool]] = None, + enable_ipv6: pulumi.Input[Optional[_builtins.bool]] = None, + internal: pulumi.Input[Optional[_builtins.bool]] = None, + ipam: pulumi.Input[Optional[_builtins.str]] = None, + mtu: pulumi.Input[Optional[_builtins.int]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): + """ + Input properties used for looking up and filtering Network resources. + + :param pulumi.Input[_builtins.bool] attachable: Allow standalone containers to attach to an overlay network. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the network was created. + :param pulumi.Input[_builtins.str] driver: Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + :param pulumi.Input[_builtins.bool] enable_ipv4: Enable IPv4 address allocation. + :param pulumi.Input[_builtins.bool] enable_ipv6: Enable IPv6 address allocation. + :param pulumi.Input[_builtins.bool] internal: Isolate the network from external access. + :param pulumi.Input[_builtins.str] ipam: Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + :param pulumi.Input[_builtins.int] mtu: Maximum transmission unit for the network. Leave unset to use Docker's default. + :param pulumi.Input[_builtins.str] name: Name of the Docker network. + :param pulumi.Input[_builtins.str] organization_id: Organization that owns the network. + :param pulumi.Input[_builtins.str] server_id: Remote server to create the network on. Omit to use the Dokploy host itself. + """ + if attachable is not None: + pulumi.set(__self__, "attachable", attachable) + if created_at is not None: + pulumi.set(__self__, "created_at", created_at) + if driver is not None: + pulumi.set(__self__, "driver", driver) + if enable_ipv4 is not None: + pulumi.set(__self__, "enable_ipv4", enable_ipv4) + if enable_ipv6 is not None: + pulumi.set(__self__, "enable_ipv6", enable_ipv6) + if internal is not None: + pulumi.set(__self__, "internal", internal) + if ipam is not None: + pulumi.set(__self__, "ipam", ipam) + if mtu is not None: + pulumi.set(__self__, "mtu", mtu) + if name is not None: + pulumi.set(__self__, "name", name) + if organization_id is not None: + pulumi.set(__self__, "organization_id", organization_id) + if server_id is not None: + pulumi.set(__self__, "server_id", server_id) + + @_builtins.property + @pulumi.getter + def attachable(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Allow standalone containers to attach to an overlay network. + """ + return pulumi.get(self, "attachable") + + @attachable.setter + def attachable(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "attachable", value) + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + RFC 3339 timestamp of when the network was created. + """ + return pulumi.get(self, "created_at") + + @created_at.setter + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "created_at", value) + + @_builtins.property + @pulumi.getter + def driver(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + """ + return pulumi.get(self, "driver") + + @driver.setter + def driver(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "driver", value) + + @_builtins.property + @pulumi.getter(name="enableIpv4") + def enable_ipv4(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Enable IPv4 address allocation. + """ + return pulumi.get(self, "enable_ipv4") + + @enable_ipv4.setter + def enable_ipv4(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enable_ipv4", value) + + @_builtins.property + @pulumi.getter(name="enableIpv6") + def enable_ipv6(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Enable IPv6 address allocation. + """ + return pulumi.get(self, "enable_ipv6") + + @enable_ipv6.setter + def enable_ipv6(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enable_ipv6", value) + + @_builtins.property + @pulumi.getter + def internal(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Isolate the network from external access. + """ + return pulumi.get(self, "internal") + + @internal.setter + def internal(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "internal", value) + + @_builtins.property + @pulumi.getter + def ipam(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + """ + return pulumi.get(self, "ipam") + + @ipam.setter + def ipam(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "ipam", value) + + @_builtins.property + @pulumi.getter + def mtu(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Maximum transmission unit for the network. Leave unset to use Docker's default. + """ + return pulumi.get(self, "mtu") + + @mtu.setter + def mtu(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "mtu", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the Docker network. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="organizationId") + def organization_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Organization that owns the network. + """ + return pulumi.get(self, "organization_id") + + @organization_id.setter + def organization_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "organization_id", value) + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Remote server to create the network on. Omit to use the Dokploy host itself. + """ + return pulumi.get(self, "server_id") + + @server_id.setter + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "server_id", value) + + +@pulumi.type_token("dokploy:index/network:Network") +class Network(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + attachable: pulumi.Input[Optional[_builtins.bool]] = None, + driver: pulumi.Input[Optional[_builtins.str]] = None, + enable_ipv4: pulumi.Input[Optional[_builtins.bool]] = None, + enable_ipv6: pulumi.Input[Optional[_builtins.bool]] = None, + internal: pulumi.Input[Optional[_builtins.bool]] = None, + ipam: pulumi.Input[Optional[_builtins.str]] = None, + mtu: pulumi.Input[Optional[_builtins.int]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + """ + A Docker network managed by Dokploy. + + Attach services to it with `network_ids` on `Application`, `Compose` and the database resources. Every service also joins the shared `dokploy-network` unless `detach_dokploy_network` is set. + + > Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy. + + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.bool] attachable: Allow standalone containers to attach to an overlay network. + :param pulumi.Input[_builtins.str] driver: Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + :param pulumi.Input[_builtins.bool] enable_ipv4: Enable IPv4 address allocation. + :param pulumi.Input[_builtins.bool] enable_ipv6: Enable IPv6 address allocation. + :param pulumi.Input[_builtins.bool] internal: Isolate the network from external access. + :param pulumi.Input[_builtins.str] ipam: Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + :param pulumi.Input[_builtins.int] mtu: Maximum transmission unit for the network. Leave unset to use Docker's default. + :param pulumi.Input[_builtins.str] name: Name of the Docker network. + :param pulumi.Input[_builtins.str] server_id: Remote server to create the network on. Omit to use the Dokploy host itself. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: Optional[NetworkArgs] = None, + opts: Optional[pulumi.ResourceOptions] = None): + """ + A Docker network managed by Dokploy. + + Attach services to it with `network_ids` on `Application`, `Compose` and the database resources. Every service also joins the shared `dokploy-network` unless `detach_dokploy_network` is set. + + > Docker networks are immutable. Dokploy has no update endpoint, so changing any attribute replaces the network — which detaches the services currently using it until they redeploy. + + + :param str resource_name: The name of the resource. + :param NetworkArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(NetworkArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + attachable: pulumi.Input[Optional[_builtins.bool]] = None, + driver: pulumi.Input[Optional[_builtins.str]] = None, + enable_ipv4: pulumi.Input[Optional[_builtins.bool]] = None, + enable_ipv6: pulumi.Input[Optional[_builtins.bool]] = None, + internal: pulumi.Input[Optional[_builtins.bool]] = None, + ipam: pulumi.Input[Optional[_builtins.str]] = None, + mtu: pulumi.Input[Optional[_builtins.int]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = NetworkArgs.__new__(NetworkArgs) + + __props__.__dict__["attachable"] = attachable + __props__.__dict__["driver"] = driver + __props__.__dict__["enable_ipv4"] = enable_ipv4 + __props__.__dict__["enable_ipv6"] = enable_ipv6 + __props__.__dict__["internal"] = internal + __props__.__dict__["ipam"] = ipam + __props__.__dict__["mtu"] = mtu + __props__.__dict__["name"] = name + __props__.__dict__["server_id"] = server_id + __props__.__dict__["created_at"] = None + __props__.__dict__["organization_id"] = None + super(Network, __self__).__init__( + 'dokploy:index/network:Network', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + attachable: pulumi.Input[Optional[_builtins.bool]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + driver: pulumi.Input[Optional[_builtins.str]] = None, + enable_ipv4: pulumi.Input[Optional[_builtins.bool]] = None, + enable_ipv6: pulumi.Input[Optional[_builtins.bool]] = None, + internal: pulumi.Input[Optional[_builtins.bool]] = None, + ipam: pulumi.Input[Optional[_builtins.str]] = None, + mtu: pulumi.Input[Optional[_builtins.int]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None) -> 'Network': + """ + Get an existing Network resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.bool] attachable: Allow standalone containers to attach to an overlay network. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the network was created. + :param pulumi.Input[_builtins.str] driver: Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + :param pulumi.Input[_builtins.bool] enable_ipv4: Enable IPv4 address allocation. + :param pulumi.Input[_builtins.bool] enable_ipv6: Enable IPv6 address allocation. + :param pulumi.Input[_builtins.bool] internal: Isolate the network from external access. + :param pulumi.Input[_builtins.str] ipam: Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + :param pulumi.Input[_builtins.int] mtu: Maximum transmission unit for the network. Leave unset to use Docker's default. + :param pulumi.Input[_builtins.str] name: Name of the Docker network. + :param pulumi.Input[_builtins.str] organization_id: Organization that owns the network. + :param pulumi.Input[_builtins.str] server_id: Remote server to create the network on. Omit to use the Dokploy host itself. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _NetworkState.__new__(_NetworkState) + + __props__.__dict__["attachable"] = attachable + __props__.__dict__["created_at"] = created_at + __props__.__dict__["driver"] = driver + __props__.__dict__["enable_ipv4"] = enable_ipv4 + __props__.__dict__["enable_ipv6"] = enable_ipv6 + __props__.__dict__["internal"] = internal + __props__.__dict__["ipam"] = ipam + __props__.__dict__["mtu"] = mtu + __props__.__dict__["name"] = name + __props__.__dict__["organization_id"] = organization_id + __props__.__dict__["server_id"] = server_id + return Network(resource_name, opts=opts, __props__=__props__) + + @_builtins.property + @pulumi.getter + def attachable(self) -> pulumi.Output[_builtins.bool]: + """ + Allow standalone containers to attach to an overlay network. + """ + return pulumi.get(self, "attachable") + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Output[_builtins.str]: + """ + RFC 3339 timestamp of when the network was created. + """ + return pulumi.get(self, "created_at") + + @_builtins.property + @pulumi.getter + def driver(self) -> pulumi.Output[_builtins.str]: + """ + Network driver. Use `overlay` for multi-node Swarm clusters and `bridge` for a single host. Valid values: `bridge`, `overlay`. + """ + return pulumi.get(self, "driver") + + @_builtins.property + @pulumi.getter(name="enableIpv4") + def enable_ipv4(self) -> pulumi.Output[_builtins.bool]: + """ + Enable IPv4 address allocation. + """ + return pulumi.get(self, "enable_ipv4") + + @_builtins.property + @pulumi.getter(name="enableIpv6") + def enable_ipv6(self) -> pulumi.Output[_builtins.bool]: + """ + Enable IPv6 address allocation. + """ + return pulumi.get(self, "enable_ipv6") + + @_builtins.property + @pulumi.getter + def internal(self) -> pulumi.Output[_builtins.bool]: + """ + Isolate the network from external access. + """ + return pulumi.get(self, "internal") + + @_builtins.property + @pulumi.getter + def ipam(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Custom IP address management, as a JSON object with `subnet`, `gateway` and `ipRange` keys. Leave unset to let Docker choose a subnet. + """ + return pulumi.get(self, "ipam") + + @_builtins.property + @pulumi.getter + def mtu(self) -> pulumi.Output[Optional[_builtins.int]]: + """ + Maximum transmission unit for the network. Leave unset to use Docker's default. + """ + return pulumi.get(self, "mtu") + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Output[_builtins.str]: + """ + Name of the Docker network. + """ + return pulumi.get(self, "name") + + @_builtins.property + @pulumi.getter(name="organizationId") + def organization_id(self) -> pulumi.Output[_builtins.str]: + """ + Organization that owns the network. + """ + return pulumi.get(self, "organization_id") + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Remote server to create the network on. Omit to use the Dokploy host itself. + """ + return pulumi.get(self, "server_id") + diff --git a/sdk/python/pulumi_dokploy/port.py b/sdk/python/pulumi_dokploy/port.py index ee66e8a..a3e38d9 100644 --- a/sdk/python/pulumi_dokploy/port.py +++ b/sdk/python/pulumi_dokploy/port.py @@ -23,7 +23,7 @@ class PortArgs: protocol: pulumi.Input[_builtins.str], published_port: pulumi.Input[_builtins.int], target_port: pulumi.Input[_builtins.int], - publish_mode: Optional[pulumi.Input[_builtins.str]] = None): + publish_mode: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Port resource. @@ -90,25 +90,25 @@ class PortArgs: @_builtins.property @pulumi.getter(name="publishMode") - def publish_mode(self) -> Optional[pulumi.Input[_builtins.str]]: + def publish_mode(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`. """ return pulumi.get(self, "publish_mode") @publish_mode.setter - def publish_mode(self, value: Optional[pulumi.Input[_builtins.str]]): + def publish_mode(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "publish_mode", value) @pulumi.input_type class _PortState: def __init__(__self__, *, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - protocol: Optional[pulumi.Input[_builtins.str]] = None, - publish_mode: Optional[pulumi.Input[_builtins.str]] = None, - published_port: Optional[pulumi.Input[_builtins.int]] = None, - target_port: Optional[pulumi.Input[_builtins.int]] = None): + application_id: pulumi.Input[Optional[_builtins.str]] = None, + protocol: pulumi.Input[Optional[_builtins.str]] = None, + publish_mode: pulumi.Input[Optional[_builtins.str]] = None, + published_port: pulumi.Input[Optional[_builtins.int]] = None, + target_port: pulumi.Input[Optional[_builtins.int]] = None): """ Input properties used for looking up and filtering Port resources. @@ -131,62 +131,62 @@ class _PortState: @_builtins.property @pulumi.getter(name="applicationId") - def application_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Application this port belongs to. """ return pulumi.get(self, "application_id") @application_id.setter - def application_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_id", value) @_builtins.property @pulumi.getter - def protocol(self) -> Optional[pulumi.Input[_builtins.str]]: + def protocol(self) -> pulumi.Input[Optional[_builtins.str]]: """ Transport protocol. Valid values: `tcp`, `udp`. """ return pulumi.get(self, "protocol") @protocol.setter - def protocol(self, value: Optional[pulumi.Input[_builtins.str]]): + def protocol(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "protocol", value) @_builtins.property @pulumi.getter(name="publishMode") - def publish_mode(self) -> Optional[pulumi.Input[_builtins.str]]: + def publish_mode(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`. """ return pulumi.get(self, "publish_mode") @publish_mode.setter - def publish_mode(self, value: Optional[pulumi.Input[_builtins.str]]): + def publish_mode(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "publish_mode", value) @_builtins.property @pulumi.getter(name="publishedPort") - def published_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def published_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Port exposed on the host. """ return pulumi.get(self, "published_port") @published_port.setter - def published_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def published_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "published_port", value) @_builtins.property @pulumi.getter(name="targetPort") - def target_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def target_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Port the container listens on. """ return pulumi.get(self, "target_port") @target_port.setter - def target_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def target_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "target_port", value) @@ -196,14 +196,15 @@ class Port(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - protocol: Optional[pulumi.Input[_builtins.str]] = None, - publish_mode: Optional[pulumi.Input[_builtins.str]] = None, - published_port: Optional[pulumi.Input[_builtins.int]] = None, - target_port: Optional[pulumi.Input[_builtins.int]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + protocol: pulumi.Input[Optional[_builtins.str]] = None, + publish_mode: pulumi.Input[Optional[_builtins.str]] = None, + published_port: pulumi.Input[Optional[_builtins.int]] = None, + target_port: pulumi.Input[Optional[_builtins.int]] = None, __props__=None): """ - Create a Port resource with the given unique name, props, and options. + A published port that exposes an application directly on the host, bypassing Traefik. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -220,7 +221,8 @@ class Port(pulumi.CustomResource): args: PortArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Port resource with the given unique name, props, and options. + A published port that exposes an application directly on the host, bypassing Traefik. + :param str resource_name: The name of the resource. :param PortArgs args: The arguments to use to populate this resource's properties. @@ -237,11 +239,11 @@ class Port(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - protocol: Optional[pulumi.Input[_builtins.str]] = None, - publish_mode: Optional[pulumi.Input[_builtins.str]] = None, - published_port: Optional[pulumi.Input[_builtins.int]] = None, - target_port: Optional[pulumi.Input[_builtins.int]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + protocol: pulumi.Input[Optional[_builtins.str]] = None, + publish_mode: pulumi.Input[Optional[_builtins.str]] = None, + published_port: pulumi.Input[Optional[_builtins.int]] = None, + target_port: pulumi.Input[Optional[_builtins.int]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -274,11 +276,11 @@ class Port(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - protocol: Optional[pulumi.Input[_builtins.str]] = None, - publish_mode: Optional[pulumi.Input[_builtins.str]] = None, - published_port: Optional[pulumi.Input[_builtins.int]] = None, - target_port: Optional[pulumi.Input[_builtins.int]] = None) -> 'Port': + application_id: pulumi.Input[Optional[_builtins.str]] = None, + protocol: pulumi.Input[Optional[_builtins.str]] = None, + publish_mode: pulumi.Input[Optional[_builtins.str]] = None, + published_port: pulumi.Input[Optional[_builtins.int]] = None, + target_port: pulumi.Input[Optional[_builtins.int]] = None) -> 'Port': """ Get an existing Port resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/postgres.py b/sdk/python/pulumi_dokploy/postgres.py index c71a735..7f493d8 100644 --- a/sdk/python/pulumi_dokploy/postgres.py +++ b/sdk/python/pulumi_dokploy/postgres.py @@ -24,32 +24,32 @@ class PostgresArgs: database_user: pulumi.Input[_builtins.str], docker_image: pulumi.Input[_builtins.str], environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Postgres resource. @@ -205,353 +205,353 @@ class PostgresArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @pulumi.input_type class _PostgresState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Postgres resources. @@ -658,398 +658,398 @@ class _PostgresState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="applicationStatus") - def application_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "application_status") @application_status.setter - def application_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_status", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the database was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="databaseName") - def database_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Name of the database to create. """ return pulumi.get(self, "database_name") @database_name.setter - def database_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_name", value) @_builtins.property @pulumi.getter(name="databasePassword") - def database_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password for the database user. """ return pulumi.get(self, "database_password") @database_password.setter - def database_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_password", value) @_builtins.property @pulumi.getter(name="databaseUser") - def database_user(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_user(self) -> pulumi.Input[Optional[_builtins.str]]: """ Database user to create. """ return pulumi.get(self, "database_user") @database_user.setter - def database_user(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_user(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_user", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ PostgreSQL image to run, for example `postgres:16`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this database belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @@ -1059,40 +1059,45 @@ class Postgres(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Postgres resource with the given unique name, props, and options. + A managed PostgreSQL instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -1135,7 +1140,12 @@ class Postgres(pulumi.CustomResource): args: PostgresArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Postgres resource with the given unique name, props, and options. + A managed PostgreSQL instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param PostgresArgs args: The arguments to use to populate this resource's properties. @@ -1152,37 +1162,37 @@ class Postgres(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1247,39 +1257,39 @@ class Postgres(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_name: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - database_user: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None) -> 'Postgres': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_name: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + database_user: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None) -> 'Postgres': """ Get an existing Postgres resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/project.py b/sdk/python/pulumi_dokploy/project.py index 6f862bb..f88de4b 100644 --- a/sdk/python/pulumi_dokploy/project.py +++ b/sdk/python/pulumi_dokploy/project.py @@ -19,9 +19,9 @@ __all__ = ['ProjectArgs', 'Project'] @pulumi.input_type class ProjectArgs: def __init__(__self__, *, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None): + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Project resource. @@ -38,50 +38,50 @@ class ProjectArgs: @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the project. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @pulumi.input_type class _ProjectState: def __init__(__self__, *, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - default_environment_id: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - organization_id: Optional[pulumi.Input[_builtins.str]] = None): + created_at: pulumi.Input[Optional[_builtins.str]] = None, + default_environment_id: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Project resources. @@ -107,74 +107,74 @@ class _ProjectState: @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the project was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="defaultEnvironmentId") - def default_environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def default_environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ ID of the `production` environment that Dokploy creates automatically with the project. """ return pulumi.get(self, "default_environment_id") @default_environment_id.setter - def default_environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def default_environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "default_environment_id", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the project. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="organizationId") - def organization_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def organization_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Organization that owns the project. """ return pulumi.get(self, "organization_id") @organization_id.setter - def organization_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def organization_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "organization_id", value) @@ -184,12 +184,15 @@ class Project(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Project resource with the given unique name, props, and options. + A Dokploy project: the top-level container for environments and services. + + Creating a project automatically creates a default `production` environment. Its ID is exposed as `default_environment_id`, so services can be attached without declaring a separate `Environment` resource. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -204,7 +207,10 @@ class Project(pulumi.CustomResource): args: Optional[ProjectArgs] = None, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Project resource with the given unique name, props, and options. + A Dokploy project: the top-level container for environments and services. + + Creating a project automatically creates a default `production` environment. Its ID is exposed as `default_environment_id`, so services can be attached without declaring a separate `Environment` resource. + :param str resource_name: The name of the resource. :param ProjectArgs args: The arguments to use to populate this resource's properties. @@ -221,9 +227,9 @@ class Project(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -249,12 +255,12 @@ class Project(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - default_environment_id: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - organization_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'Project': + created_at: pulumi.Input[Optional[_builtins.str]] = None, + default_environment_id: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None) -> 'Project': """ Get an existing Project resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/provider.py b/sdk/python/pulumi_dokploy/provider.py index b169f3d..940471a 100644 --- a/sdk/python/pulumi_dokploy/provider.py +++ b/sdk/python/pulumi_dokploy/provider.py @@ -19,10 +19,10 @@ __all__ = ['ProviderArgs', 'Provider'] @pulumi.input_type class ProviderArgs: def __init__(__self__, *, - api_key: Optional[pulumi.Input[_builtins.str]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - insecure_skip_verify: Optional[pulumi.Input[_builtins.bool]] = None, - timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None): + api_key: pulumi.Input[Optional[_builtins.str]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + insecure_skip_verify: pulumi.Input[Optional[_builtins.bool]] = None, + timeout_seconds: pulumi.Input[Optional[_builtins.int]] = None): """ The set of arguments for constructing a Provider resource. @@ -48,50 +48,50 @@ class ProviderArgs: @_builtins.property @pulumi.getter(name="apiKey") - def api_key(self) -> Optional[pulumi.Input[_builtins.str]]: + def api_key(self) -> pulumi.Input[Optional[_builtins.str]]: """ API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable. """ return pulumi.get(self, "api_key") @api_key.setter - def api_key(self, value: Optional[pulumi.Input[_builtins.str]]): + def api_key(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "api_key", value) @_builtins.property @pulumi.getter - def host(self) -> Optional[pulumi.Input[_builtins.str]]: + def host(self) -> pulumi.Input[Optional[_builtins.str]]: """ Base URL of the Dokploy instance, for example `https://dokploy.example.com`. A trailing `/api` is optional. May also be set with the `DOKPLOY_HOST` environment variable. """ return pulumi.get(self, "host") @host.setter - def host(self, value: Optional[pulumi.Input[_builtins.str]]): + def host(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "host", value) @_builtins.property @pulumi.getter(name="insecureSkipVerify") - def insecure_skip_verify(self) -> Optional[pulumi.Input[_builtins.bool]]: + def insecure_skip_verify(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`. """ return pulumi.get(self, "insecure_skip_verify") @insecure_skip_verify.setter - def insecure_skip_verify(self, value: Optional[pulumi.Input[_builtins.bool]]): + def insecure_skip_verify(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "insecure_skip_verify", value) @_builtins.property @pulumi.getter(name="timeoutSeconds") - def timeout_seconds(self) -> Optional[pulumi.Input[_builtins.int]]: + def timeout_seconds(self) -> pulumi.Input[Optional[_builtins.int]]: """ Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable. """ return pulumi.get(self, "timeout_seconds") @timeout_seconds.setter - def timeout_seconds(self, value: Optional[pulumi.Input[_builtins.int]]): + def timeout_seconds(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "timeout_seconds", value) @@ -101,10 +101,10 @@ class Provider(pulumi.ProviderResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - api_key: Optional[pulumi.Input[_builtins.str]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - insecure_skip_verify: Optional[pulumi.Input[_builtins.bool]] = None, - timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None, + api_key: pulumi.Input[Optional[_builtins.str]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + insecure_skip_verify: pulumi.Input[Optional[_builtins.bool]] = None, + timeout_seconds: pulumi.Input[Optional[_builtins.int]] = None, __props__=None): """ The provider type for the dokploy package. By default, resources use package-wide configuration @@ -148,10 +148,10 @@ class Provider(pulumi.ProviderResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - api_key: Optional[pulumi.Input[_builtins.str]] = None, - host: Optional[pulumi.Input[_builtins.str]] = None, - insecure_skip_verify: Optional[pulumi.Input[_builtins.bool]] = None, - timeout_seconds: Optional[pulumi.Input[_builtins.int]] = None, + api_key: pulumi.Input[Optional[_builtins.str]] = None, + host: pulumi.Input[Optional[_builtins.str]] = None, + insecure_skip_verify: pulumi.Input[Optional[_builtins.bool]] = None, + timeout_seconds: pulumi.Input[Optional[_builtins.int]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): diff --git a/sdk/python/pulumi_dokploy/pulumi-plugin.json b/sdk/python/pulumi_dokploy/pulumi-plugin.json index 599eadc..db03583 100644 --- a/sdk/python/pulumi_dokploy/pulumi-plugin.json +++ b/sdk/python/pulumi_dokploy/pulumi-plugin.json @@ -1,6 +1,6 @@ { "resource": true, "name": "dokploy", - "version": "0.1.0", + "version": "0.2.0", "server": "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}" } diff --git a/sdk/python/pulumi_dokploy/redirect.py b/sdk/python/pulumi_dokploy/redirect.py index 17a9848..df9c570 100644 --- a/sdk/python/pulumi_dokploy/redirect.py +++ b/sdk/python/pulumi_dokploy/redirect.py @@ -22,7 +22,7 @@ class RedirectArgs: application_id: pulumi.Input[_builtins.str], regex: pulumi.Input[_builtins.str], replacement: pulumi.Input[_builtins.str], - permanent: Optional[pulumi.Input[_builtins.bool]] = None): + permanent: pulumi.Input[Optional[_builtins.bool]] = None): """ The set of arguments for constructing a Redirect resource. @@ -75,25 +75,25 @@ class RedirectArgs: @_builtins.property @pulumi.getter - def permanent(self) -> Optional[pulumi.Input[_builtins.bool]]: + def permanent(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Issue a permanent (301) redirect instead of a temporary (302) one. """ return pulumi.get(self, "permanent") @permanent.setter - def permanent(self, value: Optional[pulumi.Input[_builtins.bool]]): + def permanent(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "permanent", value) @pulumi.input_type class _RedirectState: def __init__(__self__, *, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - permanent: Optional[pulumi.Input[_builtins.bool]] = None, - regex: Optional[pulumi.Input[_builtins.str]] = None, - replacement: Optional[pulumi.Input[_builtins.str]] = None): + application_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + permanent: pulumi.Input[Optional[_builtins.bool]] = None, + regex: pulumi.Input[Optional[_builtins.str]] = None, + replacement: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Redirect resources. @@ -116,62 +116,62 @@ class _RedirectState: @_builtins.property @pulumi.getter(name="applicationId") - def application_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Application this redirect belongs to. """ return pulumi.get(self, "application_id") @application_id.setter - def application_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_id", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the redirect was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter - def permanent(self) -> Optional[pulumi.Input[_builtins.bool]]: + def permanent(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Issue a permanent (301) redirect instead of a temporary (302) one. """ return pulumi.get(self, "permanent") @permanent.setter - def permanent(self, value: Optional[pulumi.Input[_builtins.bool]]): + def permanent(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "permanent", value) @_builtins.property @pulumi.getter - def regex(self) -> Optional[pulumi.Input[_builtins.str]]: + def regex(self) -> pulumi.Input[Optional[_builtins.str]]: """ Regular expression matched against the incoming URL. """ return pulumi.get(self, "regex") @regex.setter - def regex(self, value: Optional[pulumi.Input[_builtins.str]]): + def regex(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "regex", value) @_builtins.property @pulumi.getter - def replacement(self) -> Optional[pulumi.Input[_builtins.str]]: + def replacement(self) -> pulumi.Input[Optional[_builtins.str]]: """ Replacement URL, which may reference capture groups such as `${1}`. """ return pulumi.get(self, "replacement") @replacement.setter - def replacement(self, value: Optional[pulumi.Input[_builtins.str]]): + def replacement(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "replacement", value) @@ -181,13 +181,14 @@ class Redirect(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - permanent: Optional[pulumi.Input[_builtins.bool]] = None, - regex: Optional[pulumi.Input[_builtins.str]] = None, - replacement: Optional[pulumi.Input[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + permanent: pulumi.Input[Optional[_builtins.bool]] = None, + regex: pulumi.Input[Optional[_builtins.str]] = None, + replacement: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Redirect resource with the given unique name, props, and options. + A Traefik redirect rule attached to an application. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -203,7 +204,8 @@ class Redirect(pulumi.CustomResource): args: RedirectArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Redirect resource with the given unique name, props, and options. + A Traefik redirect rule attached to an application. + :param str resource_name: The name of the resource. :param RedirectArgs args: The arguments to use to populate this resource's properties. @@ -220,10 +222,10 @@ class Redirect(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - permanent: Optional[pulumi.Input[_builtins.bool]] = None, - regex: Optional[pulumi.Input[_builtins.str]] = None, - replacement: Optional[pulumi.Input[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + permanent: pulumi.Input[Optional[_builtins.bool]] = None, + regex: pulumi.Input[Optional[_builtins.str]] = None, + replacement: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -254,11 +256,11 @@ class Redirect(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - permanent: Optional[pulumi.Input[_builtins.bool]] = None, - regex: Optional[pulumi.Input[_builtins.str]] = None, - replacement: Optional[pulumi.Input[_builtins.str]] = None) -> 'Redirect': + application_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + permanent: pulumi.Input[Optional[_builtins.bool]] = None, + regex: pulumi.Input[Optional[_builtins.str]] = None, + replacement: pulumi.Input[Optional[_builtins.str]] = None) -> 'Redirect': """ Get an existing Redirect resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/redis.py b/sdk/python/pulumi_dokploy/redis.py index 904312c..6474c9a 100644 --- a/sdk/python/pulumi_dokploy/redis.py +++ b/sdk/python/pulumi_dokploy/redis.py @@ -22,32 +22,32 @@ class RedisArgs: database_password: pulumi.Input[_builtins.str], docker_image: pulumi.Input[_builtins.str], environment_id: pulumi.Input[_builtins.str], - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Redis resource. @@ -175,351 +175,351 @@ class RedisArgs: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @pulumi.input_type class _RedisState: def __init__(__self__, *, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None): + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Redis resources. @@ -620,374 +620,374 @@ class _RedisState: @_builtins.property @pulumi.getter(name="appName") - def app_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database. """ return pulumi.get(self, "app_name") @app_name.setter - def app_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "app_name", value) @_builtins.property @pulumi.getter(name="applicationStatus") - def application_status(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_status(self) -> pulumi.Input[Optional[_builtins.str]]: """ Current status reported by Dokploy: `idle`, `running`, `done` or `error`. """ return pulumi.get(self, "application_status") @application_status.setter - def application_status(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_status(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_status", value) @_builtins.property @pulumi.getter - def args(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def args(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ Arguments appended to the container command. """ return pulumi.get(self, "args") @args.setter - def args(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def args(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "args", value) @_builtins.property @pulumi.getter - def command(self) -> Optional[pulumi.Input[_builtins.str]]: + def command(self) -> pulumi.Input[Optional[_builtins.str]]: """ Override the container entrypoint command. """ return pulumi.get(self, "command") @command.setter - def command(self, value: Optional[pulumi.Input[_builtins.str]]): + def command(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "command", value) @_builtins.property @pulumi.getter(name="cpuLimit") - def cpu_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard CPU limit, for example `1`. """ return pulumi.get(self, "cpu_limit") @cpu_limit.setter - def cpu_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_limit", value) @_builtins.property @pulumi.getter(name="cpuReservation") - def cpu_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def cpu_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft CPU reservation, for example `0.5`. """ return pulumi.get(self, "cpu_reservation") @cpu_reservation.setter - def cpu_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def cpu_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "cpu_reservation", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the database was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="databasePassword") - def database_password(self) -> Optional[pulumi.Input[_builtins.str]]: + def database_password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password used to authenticate to Redis. """ return pulumi.get(self, "database_password") @database_password.setter - def database_password(self, value: Optional[pulumi.Input[_builtins.str]]): + def database_password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "database_password", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="detachDokployNetwork") - def detach_dokploy_network(self) -> Optional[pulumi.Input[_builtins.bool]]: + def detach_dokploy_network(self) -> pulumi.Input[Optional[_builtins.bool]]: """ Detach the service from the shared `dokploy-network`. """ return pulumi.get(self, "detach_dokploy_network") @detach_dokploy_network.setter - def detach_dokploy_network(self, value: Optional[pulumi.Input[_builtins.bool]]): + def detach_dokploy_network(self, value: pulumi.Input[Optional[_builtins.bool]]): pulumi.set(self, "detach_dokploy_network", value) @_builtins.property @pulumi.getter(name="dockerImage") - def docker_image(self) -> Optional[pulumi.Input[_builtins.str]]: + def docker_image(self) -> pulumi.Input[Optional[_builtins.str]]: """ Redis image to run, for example `redis:7`. """ return pulumi.get(self, "docker_image") @docker_image.setter - def docker_image(self, value: Optional[pulumi.Input[_builtins.str]]): + def docker_image(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "docker_image", value) @_builtins.property @pulumi.getter(name="endpointSpecSwarm") - def endpoint_spec_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def endpoint_spec_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm endpoint specification, as a JSON object. """ return pulumi.get(self, "endpoint_spec_swarm") @endpoint_spec_swarm.setter - def endpoint_spec_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def endpoint_spec_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "endpoint_spec_swarm", value) @_builtins.property @pulumi.getter - def env(self) -> Optional[pulumi.Input[_builtins.str]]: + def env(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment variables in `KEY=value` format, one per line. """ return pulumi.get(self, "env") @env.setter - def env(self, value: Optional[pulumi.Input[_builtins.str]]): + def env(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "env", value) @_builtins.property @pulumi.getter(name="environmentId") - def environment_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def environment_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Environment this database belongs to. """ return pulumi.get(self, "environment_id") @environment_id.setter - def environment_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def environment_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "environment_id", value) @_builtins.property @pulumi.getter(name="externalPort") - def external_port(self) -> Optional[pulumi.Input[_builtins.int]]: + def external_port(self) -> pulumi.Input[Optional[_builtins.int]]: """ Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network. """ return pulumi.get(self, "external_port") @external_port.setter - def external_port(self, value: Optional[pulumi.Input[_builtins.int]]): + def external_port(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "external_port", value) @_builtins.property @pulumi.getter(name="healthCheckSwarm") - def health_check_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def health_check_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm health check configuration, as a JSON object. """ return pulumi.get(self, "health_check_swarm") @health_check_swarm.setter - def health_check_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def health_check_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "health_check_swarm", value) @_builtins.property @pulumi.getter(name="labelsSwarm") - def labels_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def labels_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service labels, as a JSON object. """ return pulumi.get(self, "labels_swarm") @labels_swarm.setter - def labels_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def labels_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "labels_swarm", value) @_builtins.property @pulumi.getter(name="memoryLimit") - def memory_limit(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_limit(self) -> pulumi.Input[Optional[_builtins.str]]: """ Hard memory limit, for example `512m`. """ return pulumi.get(self, "memory_limit") @memory_limit.setter - def memory_limit(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_limit(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_limit", value) @_builtins.property @pulumi.getter(name="memoryReservation") - def memory_reservation(self) -> Optional[pulumi.Input[_builtins.str]]: + def memory_reservation(self) -> pulumi.Input[Optional[_builtins.str]]: """ Soft memory reservation, for example `256m`. """ return pulumi.get(self, "memory_reservation") @memory_reservation.setter - def memory_reservation(self, value: Optional[pulumi.Input[_builtins.str]]): + def memory_reservation(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "memory_reservation", value) @_builtins.property @pulumi.getter(name="modeSwarm") - def mode_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def mode_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm service mode, as a JSON object. """ return pulumi.get(self, "mode_swarm") @mode_swarm.setter - def mode_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def mode_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "mode_swarm", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the database. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="networkIds") - def network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]: + def network_ids(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]: """ IDs of additional Docker networks to attach. """ return pulumi.get(self, "network_ids") @network_ids.setter - def network_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]): + def network_ids(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]): pulumi.set(self, "network_ids", value) @_builtins.property @pulumi.getter(name="networkSwarm") - def network_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def network_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm network attachments, as a JSON array. """ return pulumi.get(self, "network_swarm") @network_swarm.setter - def network_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def network_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "network_swarm", value) @_builtins.property @pulumi.getter(name="placementSwarm") - def placement_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def placement_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm placement constraints, as a JSON object. """ return pulumi.get(self, "placement_swarm") @placement_swarm.setter - def placement_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def placement_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "placement_swarm", value) @_builtins.property @pulumi.getter - def replicas(self) -> Optional[pulumi.Input[_builtins.int]]: + def replicas(self) -> pulumi.Input[Optional[_builtins.int]]: """ Number of replicas to run. """ return pulumi.get(self, "replicas") @replicas.setter - def replicas(self, value: Optional[pulumi.Input[_builtins.int]]): + def replicas(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "replicas", value) @_builtins.property @pulumi.getter(name="restartPolicySwarm") - def restart_policy_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def restart_policy_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm restart policy, as a JSON object. """ return pulumi.get(self, "restart_policy_swarm") @restart_policy_swarm.setter - def restart_policy_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def restart_policy_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "restart_policy_swarm", value) @_builtins.property @pulumi.getter(name="rollbackConfigSwarm") - def rollback_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def rollback_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rollback configuration, as a JSON object. """ return pulumi.get(self, "rollback_config_swarm") @rollback_config_swarm.setter - def rollback_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def rollback_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "rollback_config_swarm", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Remote server to deploy on. Omit to use the Dokploy host itself. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter(name="stopGracePeriodSwarm") - def stop_grace_period_swarm(self) -> Optional[pulumi.Input[_builtins.int]]: + def stop_grace_period_swarm(self) -> pulumi.Input[Optional[_builtins.int]]: """ Grace period in nanoseconds before a container is killed. """ return pulumi.get(self, "stop_grace_period_swarm") @stop_grace_period_swarm.setter - def stop_grace_period_swarm(self, value: Optional[pulumi.Input[_builtins.int]]): + def stop_grace_period_swarm(self, value: pulumi.Input[Optional[_builtins.int]]): pulumi.set(self, "stop_grace_period_swarm", value) @_builtins.property @pulumi.getter(name="ulimitsSwarm") - def ulimits_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def ulimits_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm ulimits, as a JSON object. """ return pulumi.get(self, "ulimits_swarm") @ulimits_swarm.setter - def ulimits_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def ulimits_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "ulimits_swarm", value) @_builtins.property @pulumi.getter(name="updateConfigSwarm") - def update_config_swarm(self) -> Optional[pulumi.Input[_builtins.str]]: + def update_config_swarm(self) -> pulumi.Input[Optional[_builtins.str]]: """ Docker Swarm rolling update configuration, as a JSON object. """ return pulumi.get(self, "update_config_swarm") @update_config_swarm.setter - def update_config_swarm(self, value: Optional[pulumi.Input[_builtins.str]]): + def update_config_swarm(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "update_config_swarm", value) @@ -997,38 +997,43 @@ class Redis(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Redis resource with the given unique name, props, and options. + A managed Redis instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -1069,7 +1074,12 @@ class Redis(pulumi.CustomResource): args: RedisArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Redis resource with the given unique name, props, and options. + A managed Redis instance running on Dokploy. + + > Creating this resource provisions the service definition but does **not** start a deployment. Deploy it from the Dokploy UI or CLI. + + > Credentials are stored in Terraform state. Use a state backend with encryption at rest. + :param str resource_name: The name of the resource. :param RedisArgs args: The arguments to use to populate this resource's properties. @@ -1086,35 +1096,35 @@ class Redis(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1173,37 +1183,37 @@ class Redis(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - app_name: Optional[pulumi.Input[_builtins.str]] = None, - application_status: Optional[pulumi.Input[_builtins.str]] = None, - args: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - command: Optional[pulumi.Input[_builtins.str]] = None, - cpu_limit: Optional[pulumi.Input[_builtins.str]] = None, - cpu_reservation: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - database_password: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - detach_dokploy_network: Optional[pulumi.Input[_builtins.bool]] = None, - docker_image: Optional[pulumi.Input[_builtins.str]] = None, - endpoint_spec_swarm: Optional[pulumi.Input[_builtins.str]] = None, - env: Optional[pulumi.Input[_builtins.str]] = None, - environment_id: Optional[pulumi.Input[_builtins.str]] = None, - external_port: Optional[pulumi.Input[_builtins.int]] = None, - health_check_swarm: Optional[pulumi.Input[_builtins.str]] = None, - labels_swarm: Optional[pulumi.Input[_builtins.str]] = None, - memory_limit: Optional[pulumi.Input[_builtins.str]] = None, - memory_reservation: Optional[pulumi.Input[_builtins.str]] = None, - mode_swarm: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None, - network_swarm: Optional[pulumi.Input[_builtins.str]] = None, - placement_swarm: Optional[pulumi.Input[_builtins.str]] = None, - replicas: Optional[pulumi.Input[_builtins.int]] = None, - restart_policy_swarm: Optional[pulumi.Input[_builtins.str]] = None, - rollback_config_swarm: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - stop_grace_period_swarm: Optional[pulumi.Input[_builtins.int]] = None, - ulimits_swarm: Optional[pulumi.Input[_builtins.str]] = None, - update_config_swarm: Optional[pulumi.Input[_builtins.str]] = None) -> 'Redis': + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_status: pulumi.Input[Optional[_builtins.str]] = None, + args: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + cpu_limit: pulumi.Input[Optional[_builtins.str]] = None, + cpu_reservation: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + database_password: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + detach_dokploy_network: pulumi.Input[Optional[_builtins.bool]] = None, + docker_image: pulumi.Input[Optional[_builtins.str]] = None, + endpoint_spec_swarm: pulumi.Input[Optional[_builtins.str]] = None, + env: pulumi.Input[Optional[_builtins.str]] = None, + environment_id: pulumi.Input[Optional[_builtins.str]] = None, + external_port: pulumi.Input[Optional[_builtins.int]] = None, + health_check_swarm: pulumi.Input[Optional[_builtins.str]] = None, + labels_swarm: pulumi.Input[Optional[_builtins.str]] = None, + memory_limit: pulumi.Input[Optional[_builtins.str]] = None, + memory_reservation: pulumi.Input[Optional[_builtins.str]] = None, + mode_swarm: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + network_ids: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None, + network_swarm: pulumi.Input[Optional[_builtins.str]] = None, + placement_swarm: pulumi.Input[Optional[_builtins.str]] = None, + replicas: pulumi.Input[Optional[_builtins.int]] = None, + restart_policy_swarm: pulumi.Input[Optional[_builtins.str]] = None, + rollback_config_swarm: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + stop_grace_period_swarm: pulumi.Input[Optional[_builtins.int]] = None, + ulimits_swarm: pulumi.Input[Optional[_builtins.str]] = None, + update_config_swarm: pulumi.Input[Optional[_builtins.str]] = None) -> 'Redis': """ Get an existing Redis resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/registry.py b/sdk/python/pulumi_dokploy/registry.py index 9d32469..6ee665e 100644 --- a/sdk/python/pulumi_dokploy/registry.py +++ b/sdk/python/pulumi_dokploy/registry.py @@ -23,9 +23,9 @@ class RegistryArgs: registry_name: pulumi.Input[_builtins.str], registry_url: pulumi.Input[_builtins.str], username: pulumi.Input[_builtins.str], - image_prefix: Optional[pulumi.Input[_builtins.str]] = None, - registry_type: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None): + image_prefix: pulumi.Input[Optional[_builtins.str]] = None, + registry_type: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a Registry resource. @@ -98,52 +98,52 @@ class RegistryArgs: @_builtins.property @pulumi.getter(name="imagePrefix") - def image_prefix(self) -> Optional[pulumi.Input[_builtins.str]]: + def image_prefix(self) -> pulumi.Input[Optional[_builtins.str]]: """ Prefix prepended to pushed image names, for example an organization or namespace. """ return pulumi.get(self, "image_prefix") @image_prefix.setter - def image_prefix(self, value: Optional[pulumi.Input[_builtins.str]]): + def image_prefix(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "image_prefix", value) @_builtins.property @pulumi.getter(name="registryType") - def registry_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`. """ return pulumi.get(self, "registry_type") @registry_type.setter - def registry_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_type", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server this registry is scoped to. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @pulumi.input_type class _RegistryState: def __init__(__self__, *, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - image_prefix: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - registry_name: Optional[pulumi.Input[_builtins.str]] = None, - registry_type: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None): + created_at: pulumi.Input[Optional[_builtins.str]] = None, + image_prefix: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + registry_name: pulumi.Input[Optional[_builtins.str]] = None, + registry_type: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Registry resources. @@ -175,98 +175,98 @@ class _RegistryState: @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the registry was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter(name="imagePrefix") - def image_prefix(self) -> Optional[pulumi.Input[_builtins.str]]: + def image_prefix(self) -> pulumi.Input[Optional[_builtins.str]]: """ Prefix prepended to pushed image names, for example an organization or namespace. """ return pulumi.get(self, "image_prefix") @image_prefix.setter - def image_prefix(self, value: Optional[pulumi.Input[_builtins.str]]): + def image_prefix(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "image_prefix", value) @_builtins.property @pulumi.getter - def password(self) -> Optional[pulumi.Input[_builtins.str]]: + def password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Password or access token used to authenticate. """ return pulumi.get(self, "password") @password.setter - def password(self, value: Optional[pulumi.Input[_builtins.str]]): + def password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "password", value) @_builtins.property @pulumi.getter(name="registryName") - def registry_name(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the registry. """ return pulumi.get(self, "registry_name") @registry_name.setter - def registry_name(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_name", value) @_builtins.property @pulumi.getter(name="registryType") - def registry_type(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_type(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`. """ return pulumi.get(self, "registry_type") @registry_type.setter - def registry_type(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_type(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_type", value) @_builtins.property @pulumi.getter(name="registryUrl") - def registry_url(self) -> Optional[pulumi.Input[_builtins.str]]: + def registry_url(self) -> pulumi.Input[Optional[_builtins.str]]: """ Registry hostname, for example `ghcr.io`. """ return pulumi.get(self, "registry_url") @registry_url.setter - def registry_url(self, value: Optional[pulumi.Input[_builtins.str]]): + def registry_url(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "registry_url", value) @_builtins.property @pulumi.getter(name="serverId") - def server_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Server this registry is scoped to. """ return pulumi.get(self, "server_id") @server_id.setter - def server_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "server_id", value) @_builtins.property @pulumi.getter - def username(self) -> Optional[pulumi.Input[_builtins.str]]: + def username(self) -> pulumi.Input[Optional[_builtins.str]]: """ Username used to authenticate to the registry. """ return pulumi.get(self, "username") @username.setter - def username(self, value: Optional[pulumi.Input[_builtins.str]]): + def username(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "username", value) @@ -276,16 +276,17 @@ class Registry(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - image_prefix: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - registry_name: Optional[pulumi.Input[_builtins.str]] = None, - registry_type: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, + image_prefix: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + registry_name: pulumi.Input[Optional[_builtins.str]] = None, + registry_type: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Registry resource with the given unique name, props, and options. + A container registry that Dokploy pushes built images to and pulls them from. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -304,7 +305,8 @@ class Registry(pulumi.CustomResource): args: RegistryArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Registry resource with the given unique name, props, and options. + A container registry that Dokploy pushes built images to and pulls them from. + :param str resource_name: The name of the resource. :param RegistryArgs args: The arguments to use to populate this resource's properties. @@ -321,13 +323,13 @@ class Registry(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - image_prefix: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - registry_name: Optional[pulumi.Input[_builtins.str]] = None, - registry_type: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, + image_prefix: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + registry_name: pulumi.Input[Optional[_builtins.str]] = None, + registry_type: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -365,14 +367,14 @@ class Registry(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - image_prefix: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - registry_name: Optional[pulumi.Input[_builtins.str]] = None, - registry_type: Optional[pulumi.Input[_builtins.str]] = None, - registry_url: Optional[pulumi.Input[_builtins.str]] = None, - server_id: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None) -> 'Registry': + created_at: pulumi.Input[Optional[_builtins.str]] = None, + image_prefix: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + registry_name: pulumi.Input[Optional[_builtins.str]] = None, + registry_type: pulumi.Input[Optional[_builtins.str]] = None, + registry_url: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None) -> 'Registry': """ Get an existing Registry resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/schedule.py b/sdk/python/pulumi_dokploy/schedule.py new file mode 100644 index 0000000..4d50718 --- /dev/null +++ b/sdk/python/pulumi_dokploy/schedule.py @@ -0,0 +1,814 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import builtins as _builtins +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities + +__all__ = ['ScheduleArgs', 'Schedule'] + +@pulumi.input_type +class ScheduleArgs: + def __init__(__self__, *, + command: pulumi.Input[_builtins.str], + cron_expression: pulumi.Input[_builtins.str], + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + schedule_type: pulumi.Input[Optional[_builtins.str]] = None, + script: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + shell_type: pulumi.Input[Optional[_builtins.str]] = None, + timezone: pulumi.Input[Optional[_builtins.str]] = None): + """ + The set of arguments for constructing a Schedule resource. + + :param pulumi.Input[_builtins.str] command: Command to run. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 3 * * *`. + :param pulumi.Input[_builtins.str] app_name: Docker service name the schedule targets. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application this schedule belongs to. + :param pulumi.Input[_builtins.str] compose_id: Compose stack this schedule belongs to. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] enabled: Whether the schedule is active. + :param pulumi.Input[_builtins.str] name: Display name of the schedule. + :param pulumi.Input[_builtins.str] schedule_type: Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + :param pulumi.Input[_builtins.str] script: Multi-line script to run instead of a single command. + :param pulumi.Input[_builtins.str] server_id: Server this schedule runs on. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack to run the command in. + :param pulumi.Input[_builtins.str] shell_type: Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + :param pulumi.Input[_builtins.str] timezone: IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + pulumi.set(__self__, "command", command) + pulumi.set(__self__, "cron_expression", cron_expression) + if app_name is not None: + pulumi.set(__self__, "app_name", app_name) + if application_id is not None: + pulumi.set(__self__, "application_id", application_id) + if compose_id is not None: + pulumi.set(__self__, "compose_id", compose_id) + if description is not None: + pulumi.set(__self__, "description", description) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if name is not None: + pulumi.set(__self__, "name", name) + if schedule_type is not None: + pulumi.set(__self__, "schedule_type", schedule_type) + if script is not None: + pulumi.set(__self__, "script", script) + if server_id is not None: + pulumi.set(__self__, "server_id", server_id) + if service_name is not None: + pulumi.set(__self__, "service_name", service_name) + if shell_type is not None: + pulumi.set(__self__, "shell_type", shell_type) + if timezone is not None: + pulumi.set(__self__, "timezone", timezone) + + @_builtins.property + @pulumi.getter + def command(self) -> pulumi.Input[_builtins.str]: + """ + Command to run. + """ + return pulumi.get(self, "command") + + @command.setter + def command(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "command", value) + + @_builtins.property + @pulumi.getter(name="cronExpression") + def cron_expression(self) -> pulumi.Input[_builtins.str]: + """ + Standard five-field cron expression, for example `0 3 * * *`. + """ + return pulumi.get(self, "cron_expression") + + @cron_expression.setter + def cron_expression(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "cron_expression", value) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker service name the schedule targets. Derived by Dokploy when omitted. + """ + return pulumi.get(self, "app_name") + + @app_name.setter + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "app_name", value) + + @_builtins.property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Application this schedule belongs to. + """ + return pulumi.get(self, "application_id") + + @application_id.setter + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "application_id", value) + + @_builtins.property + @pulumi.getter(name="composeId") + def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Compose stack this schedule belongs to. + """ + return pulumi.get(self, "compose_id") + + @compose_id.setter + def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "compose_id", value) + + @_builtins.property + @pulumi.getter + def description(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Free-form description. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "description", value) + + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Whether the schedule is active. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enabled", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Display name of the schedule. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="scheduleType") + def schedule_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + """ + return pulumi.get(self, "schedule_type") + + @schedule_type.setter + def schedule_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "schedule_type", value) + + @_builtins.property + @pulumi.getter + def script(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Multi-line script to run instead of a single command. + """ + return pulumi.get(self, "script") + + @script.setter + def script(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "script", value) + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Server this schedule runs on. + """ + return pulumi.get(self, "server_id") + + @server_id.setter + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "server_id", value) + + @_builtins.property + @pulumi.getter(name="serviceName") + def service_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Service inside a Compose stack to run the command in. + """ + return pulumi.get(self, "service_name") + + @service_name.setter + def service_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_name", value) + + @_builtins.property + @pulumi.getter(name="shellType") + def shell_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + """ + return pulumi.get(self, "shell_type") + + @shell_type.setter + def shell_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "shell_type", value) + + @_builtins.property + @pulumi.getter + def timezone(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + return pulumi.get(self, "timezone") + + @timezone.setter + def timezone(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "timezone", value) + + +@pulumi.input_type +class _ScheduleState: + def __init__(__self__, *, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + schedule_type: pulumi.Input[Optional[_builtins.str]] = None, + script: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + shell_type: pulumi.Input[Optional[_builtins.str]] = None, + timezone: pulumi.Input[Optional[_builtins.str]] = None): + """ + Input properties used for looking up and filtering Schedule resources. + + :param pulumi.Input[_builtins.str] app_name: Docker service name the schedule targets. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application this schedule belongs to. + :param pulumi.Input[_builtins.str] command: Command to run. + :param pulumi.Input[_builtins.str] compose_id: Compose stack this schedule belongs to. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the schedule was created. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 3 * * *`. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] enabled: Whether the schedule is active. + :param pulumi.Input[_builtins.str] name: Display name of the schedule. + :param pulumi.Input[_builtins.str] schedule_type: Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + :param pulumi.Input[_builtins.str] script: Multi-line script to run instead of a single command. + :param pulumi.Input[_builtins.str] server_id: Server this schedule runs on. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack to run the command in. + :param pulumi.Input[_builtins.str] shell_type: Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + :param pulumi.Input[_builtins.str] timezone: IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + if app_name is not None: + pulumi.set(__self__, "app_name", app_name) + if application_id is not None: + pulumi.set(__self__, "application_id", application_id) + if command is not None: + pulumi.set(__self__, "command", command) + if compose_id is not None: + pulumi.set(__self__, "compose_id", compose_id) + if created_at is not None: + pulumi.set(__self__, "created_at", created_at) + if cron_expression is not None: + pulumi.set(__self__, "cron_expression", cron_expression) + if description is not None: + pulumi.set(__self__, "description", description) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if name is not None: + pulumi.set(__self__, "name", name) + if schedule_type is not None: + pulumi.set(__self__, "schedule_type", schedule_type) + if script is not None: + pulumi.set(__self__, "script", script) + if server_id is not None: + pulumi.set(__self__, "server_id", server_id) + if service_name is not None: + pulumi.set(__self__, "service_name", service_name) + if shell_type is not None: + pulumi.set(__self__, "shell_type", shell_type) + if timezone is not None: + pulumi.set(__self__, "timezone", timezone) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker service name the schedule targets. Derived by Dokploy when omitted. + """ + return pulumi.get(self, "app_name") + + @app_name.setter + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "app_name", value) + + @_builtins.property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Application this schedule belongs to. + """ + return pulumi.get(self, "application_id") + + @application_id.setter + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "application_id", value) + + @_builtins.property + @pulumi.getter + def command(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Command to run. + """ + return pulumi.get(self, "command") + + @command.setter + def command(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "command", value) + + @_builtins.property + @pulumi.getter(name="composeId") + def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Compose stack this schedule belongs to. + """ + return pulumi.get(self, "compose_id") + + @compose_id.setter + def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "compose_id", value) + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + RFC 3339 timestamp of when the schedule was created. + """ + return pulumi.get(self, "created_at") + + @created_at.setter + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "created_at", value) + + @_builtins.property + @pulumi.getter(name="cronExpression") + def cron_expression(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Standard five-field cron expression, for example `0 3 * * *`. + """ + return pulumi.get(self, "cron_expression") + + @cron_expression.setter + def cron_expression(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "cron_expression", value) + + @_builtins.property + @pulumi.getter + def description(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Free-form description. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "description", value) + + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Whether the schedule is active. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enabled", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Display name of the schedule. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="scheduleType") + def schedule_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + """ + return pulumi.get(self, "schedule_type") + + @schedule_type.setter + def schedule_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "schedule_type", value) + + @_builtins.property + @pulumi.getter + def script(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Multi-line script to run instead of a single command. + """ + return pulumi.get(self, "script") + + @script.setter + def script(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "script", value) + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Server this schedule runs on. + """ + return pulumi.get(self, "server_id") + + @server_id.setter + def server_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "server_id", value) + + @_builtins.property + @pulumi.getter(name="serviceName") + def service_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Service inside a Compose stack to run the command in. + """ + return pulumi.get(self, "service_name") + + @service_name.setter + def service_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_name", value) + + @_builtins.property + @pulumi.getter(name="shellType") + def shell_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + """ + return pulumi.get(self, "shell_type") + + @shell_type.setter + def shell_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "shell_type", value) + + @_builtins.property + @pulumi.getter + def timezone(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + return pulumi.get(self, "timezone") + + @timezone.setter + def timezone(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "timezone", value) + + +@pulumi.type_token("dokploy:index/schedule:Schedule") +class Schedule(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + schedule_type: pulumi.Input[Optional[_builtins.str]] = None, + script: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + shell_type: pulumi.Input[Optional[_builtins.str]] = None, + timezone: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + """ + A cron job Dokploy runs on a schedule. + + `schedule_type` selects where the command runs: + + * `application` — inside a running application container; set `application_id`. + * `compose` — inside one service of a Compose stack; set `compose_id` and `service_name`. + * `server` — on a remote server; set `server_id`. + * `dokploy-server` — on the Dokploy host itself. + + > A schedule targeting an application runs inside its container, so the container has to be running when the cron fires. + + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] app_name: Docker service name the schedule targets. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application this schedule belongs to. + :param pulumi.Input[_builtins.str] command: Command to run. + :param pulumi.Input[_builtins.str] compose_id: Compose stack this schedule belongs to. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 3 * * *`. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] enabled: Whether the schedule is active. + :param pulumi.Input[_builtins.str] name: Display name of the schedule. + :param pulumi.Input[_builtins.str] schedule_type: Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + :param pulumi.Input[_builtins.str] script: Multi-line script to run instead of a single command. + :param pulumi.Input[_builtins.str] server_id: Server this schedule runs on. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack to run the command in. + :param pulumi.Input[_builtins.str] shell_type: Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + :param pulumi.Input[_builtins.str] timezone: IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: ScheduleArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + A cron job Dokploy runs on a schedule. + + `schedule_type` selects where the command runs: + + * `application` — inside a running application container; set `application_id`. + * `compose` — inside one service of a Compose stack; set `compose_id` and `service_name`. + * `server` — on a remote server; set `server_id`. + * `dokploy-server` — on the Dokploy host itself. + + > A schedule targeting an application runs inside its container, so the container has to be running when the cron fires. + + + :param str resource_name: The name of the resource. + :param ScheduleArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(ScheduleArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + schedule_type: pulumi.Input[Optional[_builtins.str]] = None, + script: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + shell_type: pulumi.Input[Optional[_builtins.str]] = None, + timezone: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = ScheduleArgs.__new__(ScheduleArgs) + + __props__.__dict__["app_name"] = app_name + __props__.__dict__["application_id"] = application_id + if command is None and not opts.urn: + raise TypeError("Missing required property 'command'") + __props__.__dict__["command"] = command + __props__.__dict__["compose_id"] = compose_id + if cron_expression is None and not opts.urn: + raise TypeError("Missing required property 'cron_expression'") + __props__.__dict__["cron_expression"] = cron_expression + __props__.__dict__["description"] = description + __props__.__dict__["enabled"] = enabled + __props__.__dict__["name"] = name + __props__.__dict__["schedule_type"] = schedule_type + __props__.__dict__["script"] = script + __props__.__dict__["server_id"] = server_id + __props__.__dict__["service_name"] = service_name + __props__.__dict__["shell_type"] = shell_type + __props__.__dict__["timezone"] = timezone + __props__.__dict__["created_at"] = None + super(Schedule, __self__).__init__( + 'dokploy:index/schedule:Schedule', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + command: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + schedule_type: pulumi.Input[Optional[_builtins.str]] = None, + script: pulumi.Input[Optional[_builtins.str]] = None, + server_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + shell_type: pulumi.Input[Optional[_builtins.str]] = None, + timezone: pulumi.Input[Optional[_builtins.str]] = None) -> 'Schedule': + """ + Get an existing Schedule resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] app_name: Docker service name the schedule targets. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application this schedule belongs to. + :param pulumi.Input[_builtins.str] command: Command to run. + :param pulumi.Input[_builtins.str] compose_id: Compose stack this schedule belongs to. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the schedule was created. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 3 * * *`. + :param pulumi.Input[_builtins.str] description: Free-form description. + :param pulumi.Input[_builtins.bool] enabled: Whether the schedule is active. + :param pulumi.Input[_builtins.str] name: Display name of the schedule. + :param pulumi.Input[_builtins.str] schedule_type: Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + :param pulumi.Input[_builtins.str] script: Multi-line script to run instead of a single command. + :param pulumi.Input[_builtins.str] server_id: Server this schedule runs on. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack to run the command in. + :param pulumi.Input[_builtins.str] shell_type: Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + :param pulumi.Input[_builtins.str] timezone: IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _ScheduleState.__new__(_ScheduleState) + + __props__.__dict__["app_name"] = app_name + __props__.__dict__["application_id"] = application_id + __props__.__dict__["command"] = command + __props__.__dict__["compose_id"] = compose_id + __props__.__dict__["created_at"] = created_at + __props__.__dict__["cron_expression"] = cron_expression + __props__.__dict__["description"] = description + __props__.__dict__["enabled"] = enabled + __props__.__dict__["name"] = name + __props__.__dict__["schedule_type"] = schedule_type + __props__.__dict__["script"] = script + __props__.__dict__["server_id"] = server_id + __props__.__dict__["service_name"] = service_name + __props__.__dict__["shell_type"] = shell_type + __props__.__dict__["timezone"] = timezone + return Schedule(resource_name, opts=opts, __props__=__props__) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Output[_builtins.str]: + """ + Docker service name the schedule targets. Derived by Dokploy when omitted. + """ + return pulumi.get(self, "app_name") + + @_builtins.property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Application this schedule belongs to. + """ + return pulumi.get(self, "application_id") + + @_builtins.property + @pulumi.getter + def command(self) -> pulumi.Output[_builtins.str]: + """ + Command to run. + """ + return pulumi.get(self, "command") + + @_builtins.property + @pulumi.getter(name="composeId") + def compose_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Compose stack this schedule belongs to. + """ + return pulumi.get(self, "compose_id") + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Output[_builtins.str]: + """ + RFC 3339 timestamp of when the schedule was created. + """ + return pulumi.get(self, "created_at") + + @_builtins.property + @pulumi.getter(name="cronExpression") + def cron_expression(self) -> pulumi.Output[_builtins.str]: + """ + Standard five-field cron expression, for example `0 3 * * *`. + """ + return pulumi.get(self, "cron_expression") + + @_builtins.property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Free-form description. + """ + return pulumi.get(self, "description") + + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Output[_builtins.bool]: + """ + Whether the schedule is active. + """ + return pulumi.get(self, "enabled") + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Output[_builtins.str]: + """ + Display name of the schedule. + """ + return pulumi.get(self, "name") + + @_builtins.property + @pulumi.getter(name="scheduleType") + def schedule_type(self) -> pulumi.Output[_builtins.str]: + """ + Where the command runs. Valid values: `application`, `compose`, `server`, `dokploy-server`. Defaults to `application`. + """ + return pulumi.get(self, "schedule_type") + + @_builtins.property + @pulumi.getter + def script(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Multi-line script to run instead of a single command. + """ + return pulumi.get(self, "script") + + @_builtins.property + @pulumi.getter(name="serverId") + def server_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Server this schedule runs on. + """ + return pulumi.get(self, "server_id") + + @_builtins.property + @pulumi.getter(name="serviceName") + def service_name(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Service inside a Compose stack to run the command in. + """ + return pulumi.get(self, "service_name") + + @_builtins.property + @pulumi.getter(name="shellType") + def shell_type(self) -> pulumi.Output[_builtins.str]: + """ + Shell used to interpret the command. Valid values: `bash`, `sh`. Defaults to `bash`. + """ + return pulumi.get(self, "shell_type") + + @_builtins.property + @pulumi.getter + def timezone(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + IANA timezone the cron expression is evaluated in, for example `Europe/Berlin`. + """ + return pulumi.get(self, "timezone") + diff --git a/sdk/python/pulumi_dokploy/security.py b/sdk/python/pulumi_dokploy/security.py index 23b6708..6900802 100644 --- a/sdk/python/pulumi_dokploy/security.py +++ b/sdk/python/pulumi_dokploy/security.py @@ -73,10 +73,10 @@ class SecurityArgs: @pulumi.input_type class _SecurityState: def __init__(__self__, *, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None): + application_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering Security resources. @@ -96,50 +96,50 @@ class _SecurityState: @_builtins.property @pulumi.getter(name="applicationId") - def application_id(self) -> Optional[pulumi.Input[_builtins.str]]: + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: """ Application these credentials protect. """ return pulumi.get(self, "application_id") @application_id.setter - def application_id(self, value: Optional[pulumi.Input[_builtins.str]]): + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "application_id", value) @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the credentials were created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter - def password(self) -> Optional[pulumi.Input[_builtins.str]]: + def password(self) -> pulumi.Input[Optional[_builtins.str]]: """ Basic auth password. """ return pulumi.get(self, "password") @password.setter - def password(self, value: Optional[pulumi.Input[_builtins.str]]): + def password(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "password", value) @_builtins.property @pulumi.getter - def username(self) -> Optional[pulumi.Input[_builtins.str]]: + def username(self) -> pulumi.Input[Optional[_builtins.str]]: """ Basic auth username. """ return pulumi.get(self, "username") @username.setter - def username(self, value: Optional[pulumi.Input[_builtins.str]]): + def username(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "username", value) @@ -149,12 +149,15 @@ class Security(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a Security resource with the given unique name, props, and options. + HTTP basic authentication credentials protecting an application's domains. + + > Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -169,7 +172,10 @@ class Security(pulumi.CustomResource): args: SecurityArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a Security resource with the given unique name, props, and options. + HTTP basic authentication credentials protecting an application's domains. + + > Dokploy stores the password hashed and does not return it. The value in Terraform state is the one you configured. + :param str resource_name: The name of the resource. :param SecurityArgs args: The arguments to use to populate this resource's properties. @@ -186,9 +192,9 @@ class Security(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -220,10 +226,10 @@ class Security(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - application_id: Optional[pulumi.Input[_builtins.str]] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - password: Optional[pulumi.Input[_builtins.str]] = None, - username: Optional[pulumi.Input[_builtins.str]] = None) -> 'Security': + application_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + password: pulumi.Input[Optional[_builtins.str]] = None, + username: pulumi.Input[Optional[_builtins.str]] = None) -> 'Security': """ Get an existing Security resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/ssh_key.py b/sdk/python/pulumi_dokploy/ssh_key.py index 944b47b..b4858c1 100644 --- a/sdk/python/pulumi_dokploy/ssh_key.py +++ b/sdk/python/pulumi_dokploy/ssh_key.py @@ -21,8 +21,8 @@ class SshKeyArgs: def __init__(__self__, *, private_key: pulumi.Input[_builtins.str], public_key: pulumi.Input[_builtins.str], - description: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None): + description: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None): """ The set of arguments for constructing a SshKey resource. @@ -64,38 +64,38 @@ class SshKeyArgs: @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the key pair. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @pulumi.input_type class _SshKeyState: def __init__(__self__, *, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - last_used_at: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - public_key: Optional[pulumi.Input[_builtins.str]] = None): + created_at: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + last_used_at: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + public_key: pulumi.Input[Optional[_builtins.str]] = None): """ Input properties used for looking up and filtering SshKey resources. @@ -121,74 +121,74 @@ class _SshKeyState: @_builtins.property @pulumi.getter(name="createdAt") - def created_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the key was created. """ return pulumi.get(self, "created_at") @created_at.setter - def created_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "created_at", value) @_builtins.property @pulumi.getter - def description(self) -> Optional[pulumi.Input[_builtins.str]]: + def description(self) -> pulumi.Input[Optional[_builtins.str]]: """ Free-form description. """ return pulumi.get(self, "description") @description.setter - def description(self, value: Optional[pulumi.Input[_builtins.str]]): + def description(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "description", value) @_builtins.property @pulumi.getter(name="lastUsedAt") - def last_used_at(self) -> Optional[pulumi.Input[_builtins.str]]: + def last_used_at(self) -> pulumi.Input[Optional[_builtins.str]]: """ RFC 3339 timestamp of when the key was last used, if ever. """ return pulumi.get(self, "last_used_at") @last_used_at.setter - def last_used_at(self, value: Optional[pulumi.Input[_builtins.str]]): + def last_used_at(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "last_used_at", value) @_builtins.property @pulumi.getter - def name(self) -> Optional[pulumi.Input[_builtins.str]]: + def name(self) -> pulumi.Input[Optional[_builtins.str]]: """ Display name of the key pair. """ return pulumi.get(self, "name") @name.setter - def name(self, value: Optional[pulumi.Input[_builtins.str]]): + def name(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "name", value) @_builtins.property @pulumi.getter(name="privateKey") - def private_key(self) -> Optional[pulumi.Input[_builtins.str]]: + def private_key(self) -> pulumi.Input[Optional[_builtins.str]]: """ PEM-encoded private key. """ return pulumi.get(self, "private_key") @private_key.setter - def private_key(self, value: Optional[pulumi.Input[_builtins.str]]): + def private_key(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "private_key", value) @_builtins.property @pulumi.getter(name="publicKey") - def public_key(self) -> Optional[pulumi.Input[_builtins.str]]: + def public_key(self) -> pulumi.Input[Optional[_builtins.str]]: """ OpenSSH-formatted public key. """ return pulumi.get(self, "public_key") @public_key.setter - def public_key(self, value: Optional[pulumi.Input[_builtins.str]]): + def public_key(self, value: pulumi.Input[Optional[_builtins.str]]): pulumi.set(self, "public_key", value) @@ -198,13 +198,18 @@ class SshKey(pulumi.CustomResource): def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - public_key: Optional[pulumi.Input[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + public_key: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): """ - Create a SshKey resource with the given unique name, props, and options. + An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers. + + > The private key is stored in Terraform state. Use a state backend with encryption at rest. + + > Dokploy's update endpoint only accepts `name` and `description`. Changing either key forces a new resource. + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. @@ -220,7 +225,12 @@ class SshKey(pulumi.CustomResource): args: SshKeyArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Create a SshKey resource with the given unique name, props, and options. + An SSH key pair Dokploy uses to clone private Git repositories and to reach remote servers. + + > The private key is stored in Terraform state. Use a state backend with encryption at rest. + + > Dokploy's update endpoint only accepts `name` and `description`. Changing either key forces a new resource. + :param str resource_name: The name of the resource. :param SshKeyArgs args: The arguments to use to populate this resource's properties. @@ -237,10 +247,10 @@ class SshKey(pulumi.CustomResource): def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - public_key: Optional[pulumi.Input[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + public_key: pulumi.Input[Optional[_builtins.str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -272,12 +282,12 @@ class SshKey(pulumi.CustomResource): def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, - created_at: Optional[pulumi.Input[_builtins.str]] = None, - description: Optional[pulumi.Input[_builtins.str]] = None, - last_used_at: Optional[pulumi.Input[_builtins.str]] = None, - name: Optional[pulumi.Input[_builtins.str]] = None, - private_key: Optional[pulumi.Input[_builtins.str]] = None, - public_key: Optional[pulumi.Input[_builtins.str]] = None) -> 'SshKey': + created_at: pulumi.Input[Optional[_builtins.str]] = None, + description: pulumi.Input[Optional[_builtins.str]] = None, + last_used_at: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + private_key: pulumi.Input[Optional[_builtins.str]] = None, + public_key: pulumi.Input[Optional[_builtins.str]] = None) -> 'SshKey': """ Get an existing SshKey resource's state with the given name, id, and optional extra properties used to qualify the lookup. diff --git a/sdk/python/pulumi_dokploy/vault_provider.py b/sdk/python/pulumi_dokploy/vault_provider.py new file mode 100644 index 0000000..402a915 --- /dev/null +++ b/sdk/python/pulumi_dokploy/vault_provider.py @@ -0,0 +1,345 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import builtins as _builtins +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities + +__all__ = ['VaultProviderArgs', 'VaultProvider'] + +@pulumi.input_type +class VaultProviderArgs: + def __init__(__self__, *, + assignments: pulumi.Input[_builtins.str], + config: pulumi.Input[_builtins.str], + name: pulumi.Input[Optional[_builtins.str]] = None): + """ + The set of arguments for constructing a VaultProvider resource. + + :param pulumi.Input[_builtins.str] assignments: JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] name: Name of the connection, unique within the organization. + """ + pulumi.set(__self__, "assignments", assignments) + pulumi.set(__self__, "config", config) + if name is not None: + pulumi.set(__self__, "name", name) + + @_builtins.property + @pulumi.getter + def assignments(self) -> pulumi.Input[_builtins.str]: + """ + JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + """ + return pulumi.get(self, "assignments") + + @assignments.setter + def assignments(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "assignments", value) + + @_builtins.property + @pulumi.getter + def config(self) -> pulumi.Input[_builtins.str]: + """ + Provider credentials as a JSON object, including the `providerType` discriminator. + """ + return pulumi.get(self, "config") + + @config.setter + def config(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "config", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the connection, unique within the organization. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _VaultProviderState: + def __init__(__self__, *, + assignments: pulumi.Input[Optional[_builtins.str]] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None, + provider_type: pulumi.Input[Optional[_builtins.str]] = None): + """ + Input properties used for looking up and filtering VaultProvider resources. + + :param pulumi.Input[_builtins.str] assignments: JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the connection was created. + :param pulumi.Input[_builtins.str] name: Name of the connection, unique within the organization. + :param pulumi.Input[_builtins.str] organization_id: Organization that owns the connection. + :param pulumi.Input[_builtins.str] provider_type: Provider kind derived from `config`. + """ + if assignments is not None: + pulumi.set(__self__, "assignments", assignments) + if config is not None: + pulumi.set(__self__, "config", config) + if created_at is not None: + pulumi.set(__self__, "created_at", created_at) + if name is not None: + pulumi.set(__self__, "name", name) + if organization_id is not None: + pulumi.set(__self__, "organization_id", organization_id) + if provider_type is not None: + pulumi.set(__self__, "provider_type", provider_type) + + @_builtins.property + @pulumi.getter + def assignments(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + """ + return pulumi.get(self, "assignments") + + @assignments.setter + def assignments(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "assignments", value) + + @_builtins.property + @pulumi.getter + def config(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Provider credentials as a JSON object, including the `providerType` discriminator. + """ + return pulumi.get(self, "config") + + @config.setter + def config(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "config", value) + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + RFC 3339 timestamp of when the connection was created. + """ + return pulumi.get(self, "created_at") + + @created_at.setter + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "created_at", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the connection, unique within the organization. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="organizationId") + def organization_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Organization that owns the connection. + """ + return pulumi.get(self, "organization_id") + + @organization_id.setter + def organization_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "organization_id", value) + + @_builtins.property + @pulumi.getter(name="providerType") + def provider_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Provider kind derived from `config`. + """ + return pulumi.get(self, "provider_type") + + @provider_type.setter + def provider_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "provider_type", value) + + +@pulumi.type_token("dokploy:index/vaultProvider:VaultProvider") +class VaultProvider(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + assignments: pulumi.Input[Optional[_builtins.str]] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + """ + An external secret manager Dokploy resolves environment variables from at deploy time. + + Reference a secret from any `env` value with `${{vault..}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change. + + Supported `providerType` values: `hashicorp` (Vault/OpenBao), `infisical`, `aws` (Secrets Manager), `doppler`, `azure` (Key Vault) and `scaleway`. + + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] assignments: JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] name: Name of the connection, unique within the organization. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: VaultProviderArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + An external secret manager Dokploy resolves environment variables from at deploy time. + + Reference a secret from any `env` value with `${{vault..}}`. The value is fetched when the deployment runs and is never stored in Dokploy — so rotating it in the vault takes effect on the next deploy with no Terraform change. + + Supported `providerType` values: `hashicorp` (Vault/OpenBao), `infisical`, `aws` (Secrets Manager), `doppler`, `azure` (Key Vault) and `scaleway`. + + + :param str resource_name: The name of the resource. + :param VaultProviderArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(VaultProviderArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + assignments: pulumi.Input[Optional[_builtins.str]] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = VaultProviderArgs.__new__(VaultProviderArgs) + + if assignments is None and not opts.urn: + raise TypeError("Missing required property 'assignments'") + __props__.__dict__["assignments"] = assignments + if config is None and not opts.urn: + raise TypeError("Missing required property 'config'") + __props__.__dict__["config"] = None if config is None else pulumi.Output.secret(config) + __props__.__dict__["name"] = name + __props__.__dict__["created_at"] = None + __props__.__dict__["organization_id"] = None + __props__.__dict__["provider_type"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["config"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(VaultProvider, __self__).__init__( + 'dokploy:index/vaultProvider:VaultProvider', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + assignments: pulumi.Input[Optional[_builtins.str]] = None, + config: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + organization_id: pulumi.Input[Optional[_builtins.str]] = None, + provider_type: pulumi.Input[Optional[_builtins.str]] = None) -> 'VaultProvider': + """ + Get an existing VaultProvider resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] assignments: JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + :param pulumi.Input[_builtins.str] config: Provider credentials as a JSON object, including the `providerType` discriminator. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the connection was created. + :param pulumi.Input[_builtins.str] name: Name of the connection, unique within the organization. + :param pulumi.Input[_builtins.str] organization_id: Organization that owns the connection. + :param pulumi.Input[_builtins.str] provider_type: Provider kind derived from `config`. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _VaultProviderState.__new__(_VaultProviderState) + + __props__.__dict__["assignments"] = assignments + __props__.__dict__["config"] = config + __props__.__dict__["created_at"] = created_at + __props__.__dict__["name"] = name + __props__.__dict__["organization_id"] = organization_id + __props__.__dict__["provider_type"] = provider_type + return VaultProvider(resource_name, opts=opts, __props__=__props__) + + @_builtins.property + @pulumi.getter + def assignments(self) -> pulumi.Output[_builtins.str]: + """ + JSON array scoping which projects or environments may resolve secrets from this provider. Pass `jsonencode([])` to leave it unscoped. + """ + return pulumi.get(self, "assignments") + + @_builtins.property + @pulumi.getter + def config(self) -> pulumi.Output[_builtins.str]: + """ + Provider credentials as a JSON object, including the `providerType` discriminator. + """ + return pulumi.get(self, "config") + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Output[_builtins.str]: + """ + RFC 3339 timestamp of when the connection was created. + """ + return pulumi.get(self, "created_at") + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Output[_builtins.str]: + """ + Name of the connection, unique within the organization. + """ + return pulumi.get(self, "name") + + @_builtins.property + @pulumi.getter(name="organizationId") + def organization_id(self) -> pulumi.Output[_builtins.str]: + """ + Organization that owns the connection. + """ + return pulumi.get(self, "organization_id") + + @_builtins.property + @pulumi.getter(name="providerType") + def provider_type(self) -> pulumi.Output[_builtins.str]: + """ + Provider kind derived from `config`. + """ + return pulumi.get(self, "provider_type") + diff --git a/sdk/python/pulumi_dokploy/volume_backup.py b/sdk/python/pulumi_dokploy/volume_backup.py new file mode 100644 index 0000000..f586936 --- /dev/null +++ b/sdk/python/pulumi_dokploy/volume_backup.py @@ -0,0 +1,1041 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import builtins as _builtins +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from . import _utilities + +__all__ = ['VolumeBackupArgs', 'VolumeBackup'] + +@pulumi.input_type +class VolumeBackupArgs: + def __init__(__self__, *, + cron_expression: pulumi.Input[_builtins.str], + destination_id: pulumi.Input[_builtins.str], + prefix: pulumi.Input[_builtins.str], + volume_name: pulumi.Input[_builtins.str], + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + keep_latest_count: pulumi.Input[Optional[_builtins.int]] = None, + libsql_id: pulumi.Input[Optional[_builtins.str]] = None, + mariadb_id: pulumi.Input[Optional[_builtins.str]] = None, + mongo_id: pulumi.Input[Optional[_builtins.str]] = None, + mysql_id: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + postgres_id: pulumi.Input[Optional[_builtins.str]] = None, + redis_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + turn_off: pulumi.Input[Optional[_builtins.bool]] = None): + """ + The set of arguments for constructing a VolumeBackup resource. + + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 4 * * *`. + :param pulumi.Input[_builtins.str] destination_id: Backup destination (S3-compatible bucket) to upload to. + :param pulumi.Input[_builtins.str] prefix: Path prefix inside the destination bucket, for example `backups/shop/`. + :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume to back up. + :param pulumi.Input[_builtins.str] app_name: Docker service name that owns the volume. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application that owns the volume. + :param pulumi.Input[_builtins.str] compose_id: Compose stack that owns the volume. + :param pulumi.Input[_builtins.bool] enabled: Whether the backup schedule is active. + :param pulumi.Input[_builtins.int] keep_latest_count: Number of backups to retain. Older ones are pruned. + :param pulumi.Input[_builtins.str] libsql_id: libSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] mariadb_id: MariaDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mongo_id: MongoDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mysql_id: MySQL instance that owns the volume. + :param pulumi.Input[_builtins.str] name: Display name of the backup job. + :param pulumi.Input[_builtins.str] postgres_id: PostgreSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] redis_id: Redis instance that owns the volume. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] service_type: The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + :param pulumi.Input[_builtins.bool] turn_off: Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + """ + pulumi.set(__self__, "cron_expression", cron_expression) + pulumi.set(__self__, "destination_id", destination_id) + pulumi.set(__self__, "prefix", prefix) + pulumi.set(__self__, "volume_name", volume_name) + if app_name is not None: + pulumi.set(__self__, "app_name", app_name) + if application_id is not None: + pulumi.set(__self__, "application_id", application_id) + if compose_id is not None: + pulumi.set(__self__, "compose_id", compose_id) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if keep_latest_count is not None: + pulumi.set(__self__, "keep_latest_count", keep_latest_count) + if libsql_id is not None: + pulumi.set(__self__, "libsql_id", libsql_id) + if mariadb_id is not None: + pulumi.set(__self__, "mariadb_id", mariadb_id) + if mongo_id is not None: + pulumi.set(__self__, "mongo_id", mongo_id) + if mysql_id is not None: + pulumi.set(__self__, "mysql_id", mysql_id) + if name is not None: + pulumi.set(__self__, "name", name) + if postgres_id is not None: + pulumi.set(__self__, "postgres_id", postgres_id) + if redis_id is not None: + pulumi.set(__self__, "redis_id", redis_id) + if service_name is not None: + pulumi.set(__self__, "service_name", service_name) + if service_type is not None: + pulumi.set(__self__, "service_type", service_type) + if turn_off is not None: + pulumi.set(__self__, "turn_off", turn_off) + + @_builtins.property + @pulumi.getter(name="cronExpression") + def cron_expression(self) -> pulumi.Input[_builtins.str]: + """ + Standard five-field cron expression, for example `0 4 * * *`. + """ + return pulumi.get(self, "cron_expression") + + @cron_expression.setter + def cron_expression(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "cron_expression", value) + + @_builtins.property + @pulumi.getter(name="destinationId") + def destination_id(self) -> pulumi.Input[_builtins.str]: + """ + Backup destination (S3-compatible bucket) to upload to. + """ + return pulumi.get(self, "destination_id") + + @destination_id.setter + def destination_id(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "destination_id", value) + + @_builtins.property + @pulumi.getter + def prefix(self) -> pulumi.Input[_builtins.str]: + """ + Path prefix inside the destination bucket, for example `backups/shop/`. + """ + return pulumi.get(self, "prefix") + + @prefix.setter + def prefix(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "prefix", value) + + @_builtins.property + @pulumi.getter(name="volumeName") + def volume_name(self) -> pulumi.Input[_builtins.str]: + """ + Name of the Docker volume to back up. + """ + return pulumi.get(self, "volume_name") + + @volume_name.setter + def volume_name(self, value: pulumi.Input[_builtins.str]): + pulumi.set(self, "volume_name", value) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker service name that owns the volume. Derived by Dokploy when omitted. + """ + return pulumi.get(self, "app_name") + + @app_name.setter + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "app_name", value) + + @_builtins.property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Application that owns the volume. + """ + return pulumi.get(self, "application_id") + + @application_id.setter + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "application_id", value) + + @_builtins.property + @pulumi.getter(name="composeId") + def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Compose stack that owns the volume. + """ + return pulumi.get(self, "compose_id") + + @compose_id.setter + def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "compose_id", value) + + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Whether the backup schedule is active. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enabled", value) + + @_builtins.property + @pulumi.getter(name="keepLatestCount") + def keep_latest_count(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Number of backups to retain. Older ones are pruned. + """ + return pulumi.get(self, "keep_latest_count") + + @keep_latest_count.setter + def keep_latest_count(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "keep_latest_count", value) + + @_builtins.property + @pulumi.getter(name="libsqlId") + def libsql_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + libSQL instance that owns the volume. + """ + return pulumi.get(self, "libsql_id") + + @libsql_id.setter + def libsql_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "libsql_id", value) + + @_builtins.property + @pulumi.getter(name="mariadbId") + def mariadb_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + MariaDB instance that owns the volume. + """ + return pulumi.get(self, "mariadb_id") + + @mariadb_id.setter + def mariadb_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mariadb_id", value) + + @_builtins.property + @pulumi.getter(name="mongoId") + def mongo_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + MongoDB instance that owns the volume. + """ + return pulumi.get(self, "mongo_id") + + @mongo_id.setter + def mongo_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mongo_id", value) + + @_builtins.property + @pulumi.getter(name="mysqlId") + def mysql_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + MySQL instance that owns the volume. + """ + return pulumi.get(self, "mysql_id") + + @mysql_id.setter + def mysql_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mysql_id", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Display name of the backup job. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="postgresId") + def postgres_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + PostgreSQL instance that owns the volume. + """ + return pulumi.get(self, "postgres_id") + + @postgres_id.setter + def postgres_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "postgres_id", value) + + @_builtins.property + @pulumi.getter(name="redisId") + def redis_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Redis instance that owns the volume. + """ + return pulumi.get(self, "redis_id") + + @redis_id.setter + def redis_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "redis_id", value) + + @_builtins.property + @pulumi.getter(name="serviceName") + def service_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Service inside a Compose stack that owns the volume. + """ + return pulumi.get(self, "service_name") + + @service_name.setter + def service_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_name", value) + + @_builtins.property + @pulumi.getter(name="serviceType") + def service_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + """ + return pulumi.get(self, "service_type") + + @service_type.setter + def service_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_type", value) + + @_builtins.property + @pulumi.getter(name="turnOff") + def turn_off(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + """ + return pulumi.get(self, "turn_off") + + @turn_off.setter + def turn_off(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "turn_off", value) + + +@pulumi.input_type +class _VolumeBackupState: + def __init__(__self__, *, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + destination_id: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + keep_latest_count: pulumi.Input[Optional[_builtins.int]] = None, + libsql_id: pulumi.Input[Optional[_builtins.str]] = None, + mariadb_id: pulumi.Input[Optional[_builtins.str]] = None, + mongo_id: pulumi.Input[Optional[_builtins.str]] = None, + mysql_id: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + postgres_id: pulumi.Input[Optional[_builtins.str]] = None, + prefix: pulumi.Input[Optional[_builtins.str]] = None, + redis_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + turn_off: pulumi.Input[Optional[_builtins.bool]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None): + """ + Input properties used for looking up and filtering VolumeBackup resources. + + :param pulumi.Input[_builtins.str] app_name: Docker service name that owns the volume. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application that owns the volume. + :param pulumi.Input[_builtins.str] compose_id: Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the backup job was created. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 4 * * *`. + :param pulumi.Input[_builtins.str] destination_id: Backup destination (S3-compatible bucket) to upload to. + :param pulumi.Input[_builtins.bool] enabled: Whether the backup schedule is active. + :param pulumi.Input[_builtins.int] keep_latest_count: Number of backups to retain. Older ones are pruned. + :param pulumi.Input[_builtins.str] libsql_id: libSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] mariadb_id: MariaDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mongo_id: MongoDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mysql_id: MySQL instance that owns the volume. + :param pulumi.Input[_builtins.str] name: Display name of the backup job. + :param pulumi.Input[_builtins.str] postgres_id: PostgreSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] prefix: Path prefix inside the destination bucket, for example `backups/shop/`. + :param pulumi.Input[_builtins.str] redis_id: Redis instance that owns the volume. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] service_type: The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + :param pulumi.Input[_builtins.bool] turn_off: Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume to back up. + """ + if app_name is not None: + pulumi.set(__self__, "app_name", app_name) + if application_id is not None: + pulumi.set(__self__, "application_id", application_id) + if compose_id is not None: + pulumi.set(__self__, "compose_id", compose_id) + if created_at is not None: + pulumi.set(__self__, "created_at", created_at) + if cron_expression is not None: + pulumi.set(__self__, "cron_expression", cron_expression) + if destination_id is not None: + pulumi.set(__self__, "destination_id", destination_id) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if keep_latest_count is not None: + pulumi.set(__self__, "keep_latest_count", keep_latest_count) + if libsql_id is not None: + pulumi.set(__self__, "libsql_id", libsql_id) + if mariadb_id is not None: + pulumi.set(__self__, "mariadb_id", mariadb_id) + if mongo_id is not None: + pulumi.set(__self__, "mongo_id", mongo_id) + if mysql_id is not None: + pulumi.set(__self__, "mysql_id", mysql_id) + if name is not None: + pulumi.set(__self__, "name", name) + if postgres_id is not None: + pulumi.set(__self__, "postgres_id", postgres_id) + if prefix is not None: + pulumi.set(__self__, "prefix", prefix) + if redis_id is not None: + pulumi.set(__self__, "redis_id", redis_id) + if service_name is not None: + pulumi.set(__self__, "service_name", service_name) + if service_type is not None: + pulumi.set(__self__, "service_type", service_type) + if turn_off is not None: + pulumi.set(__self__, "turn_off", turn_off) + if volume_name is not None: + pulumi.set(__self__, "volume_name", volume_name) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Docker service name that owns the volume. Derived by Dokploy when omitted. + """ + return pulumi.get(self, "app_name") + + @app_name.setter + def app_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "app_name", value) + + @_builtins.property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Application that owns the volume. + """ + return pulumi.get(self, "application_id") + + @application_id.setter + def application_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "application_id", value) + + @_builtins.property + @pulumi.getter(name="composeId") + def compose_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Compose stack that owns the volume. + """ + return pulumi.get(self, "compose_id") + + @compose_id.setter + def compose_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "compose_id", value) + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + RFC 3339 timestamp of when the backup job was created. + """ + return pulumi.get(self, "created_at") + + @created_at.setter + def created_at(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "created_at", value) + + @_builtins.property + @pulumi.getter(name="cronExpression") + def cron_expression(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Standard five-field cron expression, for example `0 4 * * *`. + """ + return pulumi.get(self, "cron_expression") + + @cron_expression.setter + def cron_expression(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "cron_expression", value) + + @_builtins.property + @pulumi.getter(name="destinationId") + def destination_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Backup destination (S3-compatible bucket) to upload to. + """ + return pulumi.get(self, "destination_id") + + @destination_id.setter + def destination_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "destination_id", value) + + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Whether the backup schedule is active. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "enabled", value) + + @_builtins.property + @pulumi.getter(name="keepLatestCount") + def keep_latest_count(self) -> pulumi.Input[Optional[_builtins.int]]: + """ + Number of backups to retain. Older ones are pruned. + """ + return pulumi.get(self, "keep_latest_count") + + @keep_latest_count.setter + def keep_latest_count(self, value: pulumi.Input[Optional[_builtins.int]]): + pulumi.set(self, "keep_latest_count", value) + + @_builtins.property + @pulumi.getter(name="libsqlId") + def libsql_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + libSQL instance that owns the volume. + """ + return pulumi.get(self, "libsql_id") + + @libsql_id.setter + def libsql_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "libsql_id", value) + + @_builtins.property + @pulumi.getter(name="mariadbId") + def mariadb_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + MariaDB instance that owns the volume. + """ + return pulumi.get(self, "mariadb_id") + + @mariadb_id.setter + def mariadb_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mariadb_id", value) + + @_builtins.property + @pulumi.getter(name="mongoId") + def mongo_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + MongoDB instance that owns the volume. + """ + return pulumi.get(self, "mongo_id") + + @mongo_id.setter + def mongo_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mongo_id", value) + + @_builtins.property + @pulumi.getter(name="mysqlId") + def mysql_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + MySQL instance that owns the volume. + """ + return pulumi.get(self, "mysql_id") + + @mysql_id.setter + def mysql_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "mysql_id", value) + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Display name of the backup job. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "name", value) + + @_builtins.property + @pulumi.getter(name="postgresId") + def postgres_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + PostgreSQL instance that owns the volume. + """ + return pulumi.get(self, "postgres_id") + + @postgres_id.setter + def postgres_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "postgres_id", value) + + @_builtins.property + @pulumi.getter + def prefix(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Path prefix inside the destination bucket, for example `backups/shop/`. + """ + return pulumi.get(self, "prefix") + + @prefix.setter + def prefix(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "prefix", value) + + @_builtins.property + @pulumi.getter(name="redisId") + def redis_id(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Redis instance that owns the volume. + """ + return pulumi.get(self, "redis_id") + + @redis_id.setter + def redis_id(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "redis_id", value) + + @_builtins.property + @pulumi.getter(name="serviceName") + def service_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Service inside a Compose stack that owns the volume. + """ + return pulumi.get(self, "service_name") + + @service_name.setter + def service_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_name", value) + + @_builtins.property + @pulumi.getter(name="serviceType") + def service_type(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + """ + return pulumi.get(self, "service_type") + + @service_type.setter + def service_type(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "service_type", value) + + @_builtins.property + @pulumi.getter(name="turnOff") + def turn_off(self) -> pulumi.Input[Optional[_builtins.bool]]: + """ + Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + """ + return pulumi.get(self, "turn_off") + + @turn_off.setter + def turn_off(self, value: pulumi.Input[Optional[_builtins.bool]]): + pulumi.set(self, "turn_off", value) + + @_builtins.property + @pulumi.getter(name="volumeName") + def volume_name(self) -> pulumi.Input[Optional[_builtins.str]]: + """ + Name of the Docker volume to back up. + """ + return pulumi.get(self, "volume_name") + + @volume_name.setter + def volume_name(self, value: pulumi.Input[Optional[_builtins.str]]): + pulumi.set(self, "volume_name", value) + + +@pulumi.type_token("dokploy:index/volumeBackup:VolumeBackup") +class VolumeBackup(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + destination_id: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + keep_latest_count: pulumi.Input[Optional[_builtins.int]] = None, + libsql_id: pulumi.Input[Optional[_builtins.str]] = None, + mariadb_id: pulumi.Input[Optional[_builtins.str]] = None, + mongo_id: pulumi.Input[Optional[_builtins.str]] = None, + mysql_id: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + postgres_id: pulumi.Input[Optional[_builtins.str]] = None, + prefix: pulumi.Input[Optional[_builtins.str]] = None, + redis_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + turn_off: pulumi.Input[Optional[_builtins.bool]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + """ + A scheduled backup of a Docker volume to a configured `Destination`. + + This is the counterpart to a `Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule. + + Set exactly one of the `*_id` attributes to say which service owns the volume. + + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] app_name: Docker service name that owns the volume. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application that owns the volume. + :param pulumi.Input[_builtins.str] compose_id: Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 4 * * *`. + :param pulumi.Input[_builtins.str] destination_id: Backup destination (S3-compatible bucket) to upload to. + :param pulumi.Input[_builtins.bool] enabled: Whether the backup schedule is active. + :param pulumi.Input[_builtins.int] keep_latest_count: Number of backups to retain. Older ones are pruned. + :param pulumi.Input[_builtins.str] libsql_id: libSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] mariadb_id: MariaDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mongo_id: MongoDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mysql_id: MySQL instance that owns the volume. + :param pulumi.Input[_builtins.str] name: Display name of the backup job. + :param pulumi.Input[_builtins.str] postgres_id: PostgreSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] prefix: Path prefix inside the destination bucket, for example `backups/shop/`. + :param pulumi.Input[_builtins.str] redis_id: Redis instance that owns the volume. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] service_type: The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + :param pulumi.Input[_builtins.bool] turn_off: Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume to back up. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: VolumeBackupArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + A scheduled backup of a Docker volume to a configured `Destination`. + + This is the counterpart to a `Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule. + + Set exactly one of the `*_id` attributes to say which service owns the volume. + + + :param str resource_name: The name of the resource. + :param VolumeBackupArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(VolumeBackupArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + destination_id: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + keep_latest_count: pulumi.Input[Optional[_builtins.int]] = None, + libsql_id: pulumi.Input[Optional[_builtins.str]] = None, + mariadb_id: pulumi.Input[Optional[_builtins.str]] = None, + mongo_id: pulumi.Input[Optional[_builtins.str]] = None, + mysql_id: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + postgres_id: pulumi.Input[Optional[_builtins.str]] = None, + prefix: pulumi.Input[Optional[_builtins.str]] = None, + redis_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + turn_off: pulumi.Input[Optional[_builtins.bool]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = VolumeBackupArgs.__new__(VolumeBackupArgs) + + __props__.__dict__["app_name"] = app_name + __props__.__dict__["application_id"] = application_id + __props__.__dict__["compose_id"] = compose_id + if cron_expression is None and not opts.urn: + raise TypeError("Missing required property 'cron_expression'") + __props__.__dict__["cron_expression"] = cron_expression + if destination_id is None and not opts.urn: + raise TypeError("Missing required property 'destination_id'") + __props__.__dict__["destination_id"] = destination_id + __props__.__dict__["enabled"] = enabled + __props__.__dict__["keep_latest_count"] = keep_latest_count + __props__.__dict__["libsql_id"] = libsql_id + __props__.__dict__["mariadb_id"] = mariadb_id + __props__.__dict__["mongo_id"] = mongo_id + __props__.__dict__["mysql_id"] = mysql_id + __props__.__dict__["name"] = name + __props__.__dict__["postgres_id"] = postgres_id + if prefix is None and not opts.urn: + raise TypeError("Missing required property 'prefix'") + __props__.__dict__["prefix"] = prefix + __props__.__dict__["redis_id"] = redis_id + __props__.__dict__["service_name"] = service_name + __props__.__dict__["service_type"] = service_type + __props__.__dict__["turn_off"] = turn_off + if volume_name is None and not opts.urn: + raise TypeError("Missing required property 'volume_name'") + __props__.__dict__["volume_name"] = volume_name + __props__.__dict__["created_at"] = None + super(VolumeBackup, __self__).__init__( + 'dokploy:index/volumeBackup:VolumeBackup', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + app_name: pulumi.Input[Optional[_builtins.str]] = None, + application_id: pulumi.Input[Optional[_builtins.str]] = None, + compose_id: pulumi.Input[Optional[_builtins.str]] = None, + created_at: pulumi.Input[Optional[_builtins.str]] = None, + cron_expression: pulumi.Input[Optional[_builtins.str]] = None, + destination_id: pulumi.Input[Optional[_builtins.str]] = None, + enabled: pulumi.Input[Optional[_builtins.bool]] = None, + keep_latest_count: pulumi.Input[Optional[_builtins.int]] = None, + libsql_id: pulumi.Input[Optional[_builtins.str]] = None, + mariadb_id: pulumi.Input[Optional[_builtins.str]] = None, + mongo_id: pulumi.Input[Optional[_builtins.str]] = None, + mysql_id: pulumi.Input[Optional[_builtins.str]] = None, + name: pulumi.Input[Optional[_builtins.str]] = None, + postgres_id: pulumi.Input[Optional[_builtins.str]] = None, + prefix: pulumi.Input[Optional[_builtins.str]] = None, + redis_id: pulumi.Input[Optional[_builtins.str]] = None, + service_name: pulumi.Input[Optional[_builtins.str]] = None, + service_type: pulumi.Input[Optional[_builtins.str]] = None, + turn_off: pulumi.Input[Optional[_builtins.bool]] = None, + volume_name: pulumi.Input[Optional[_builtins.str]] = None) -> 'VolumeBackup': + """ + Get an existing VolumeBackup resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[_builtins.str] app_name: Docker service name that owns the volume. Derived by Dokploy when omitted. + :param pulumi.Input[_builtins.str] application_id: Application that owns the volume. + :param pulumi.Input[_builtins.str] compose_id: Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] created_at: RFC 3339 timestamp of when the backup job was created. + :param pulumi.Input[_builtins.str] cron_expression: Standard five-field cron expression, for example `0 4 * * *`. + :param pulumi.Input[_builtins.str] destination_id: Backup destination (S3-compatible bucket) to upload to. + :param pulumi.Input[_builtins.bool] enabled: Whether the backup schedule is active. + :param pulumi.Input[_builtins.int] keep_latest_count: Number of backups to retain. Older ones are pruned. + :param pulumi.Input[_builtins.str] libsql_id: libSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] mariadb_id: MariaDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mongo_id: MongoDB instance that owns the volume. + :param pulumi.Input[_builtins.str] mysql_id: MySQL instance that owns the volume. + :param pulumi.Input[_builtins.str] name: Display name of the backup job. + :param pulumi.Input[_builtins.str] postgres_id: PostgreSQL instance that owns the volume. + :param pulumi.Input[_builtins.str] prefix: Path prefix inside the destination bucket, for example `backups/shop/`. + :param pulumi.Input[_builtins.str] redis_id: Redis instance that owns the volume. + :param pulumi.Input[_builtins.str] service_name: Service inside a Compose stack that owns the volume. + :param pulumi.Input[_builtins.str] service_type: The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + :param pulumi.Input[_builtins.bool] turn_off: Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + :param pulumi.Input[_builtins.str] volume_name: Name of the Docker volume to back up. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _VolumeBackupState.__new__(_VolumeBackupState) + + __props__.__dict__["app_name"] = app_name + __props__.__dict__["application_id"] = application_id + __props__.__dict__["compose_id"] = compose_id + __props__.__dict__["created_at"] = created_at + __props__.__dict__["cron_expression"] = cron_expression + __props__.__dict__["destination_id"] = destination_id + __props__.__dict__["enabled"] = enabled + __props__.__dict__["keep_latest_count"] = keep_latest_count + __props__.__dict__["libsql_id"] = libsql_id + __props__.__dict__["mariadb_id"] = mariadb_id + __props__.__dict__["mongo_id"] = mongo_id + __props__.__dict__["mysql_id"] = mysql_id + __props__.__dict__["name"] = name + __props__.__dict__["postgres_id"] = postgres_id + __props__.__dict__["prefix"] = prefix + __props__.__dict__["redis_id"] = redis_id + __props__.__dict__["service_name"] = service_name + __props__.__dict__["service_type"] = service_type + __props__.__dict__["turn_off"] = turn_off + __props__.__dict__["volume_name"] = volume_name + return VolumeBackup(resource_name, opts=opts, __props__=__props__) + + @_builtins.property + @pulumi.getter(name="appName") + def app_name(self) -> pulumi.Output[_builtins.str]: + """ + Docker service name that owns the volume. Derived by Dokploy when omitted. + """ + return pulumi.get(self, "app_name") + + @_builtins.property + @pulumi.getter(name="applicationId") + def application_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Application that owns the volume. + """ + return pulumi.get(self, "application_id") + + @_builtins.property + @pulumi.getter(name="composeId") + def compose_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Compose stack that owns the volume. + """ + return pulumi.get(self, "compose_id") + + @_builtins.property + @pulumi.getter(name="createdAt") + def created_at(self) -> pulumi.Output[_builtins.str]: + """ + RFC 3339 timestamp of when the backup job was created. + """ + return pulumi.get(self, "created_at") + + @_builtins.property + @pulumi.getter(name="cronExpression") + def cron_expression(self) -> pulumi.Output[_builtins.str]: + """ + Standard five-field cron expression, for example `0 4 * * *`. + """ + return pulumi.get(self, "cron_expression") + + @_builtins.property + @pulumi.getter(name="destinationId") + def destination_id(self) -> pulumi.Output[_builtins.str]: + """ + Backup destination (S3-compatible bucket) to upload to. + """ + return pulumi.get(self, "destination_id") + + @_builtins.property + @pulumi.getter + def enabled(self) -> pulumi.Output[_builtins.bool]: + """ + Whether the backup schedule is active. + """ + return pulumi.get(self, "enabled") + + @_builtins.property + @pulumi.getter(name="keepLatestCount") + def keep_latest_count(self) -> pulumi.Output[_builtins.int]: + """ + Number of backups to retain. Older ones are pruned. + """ + return pulumi.get(self, "keep_latest_count") + + @_builtins.property + @pulumi.getter(name="libsqlId") + def libsql_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + libSQL instance that owns the volume. + """ + return pulumi.get(self, "libsql_id") + + @_builtins.property + @pulumi.getter(name="mariadbId") + def mariadb_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + MariaDB instance that owns the volume. + """ + return pulumi.get(self, "mariadb_id") + + @_builtins.property + @pulumi.getter(name="mongoId") + def mongo_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + MongoDB instance that owns the volume. + """ + return pulumi.get(self, "mongo_id") + + @_builtins.property + @pulumi.getter(name="mysqlId") + def mysql_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + MySQL instance that owns the volume. + """ + return pulumi.get(self, "mysql_id") + + @_builtins.property + @pulumi.getter + def name(self) -> pulumi.Output[_builtins.str]: + """ + Display name of the backup job. + """ + return pulumi.get(self, "name") + + @_builtins.property + @pulumi.getter(name="postgresId") + def postgres_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + PostgreSQL instance that owns the volume. + """ + return pulumi.get(self, "postgres_id") + + @_builtins.property + @pulumi.getter + def prefix(self) -> pulumi.Output[_builtins.str]: + """ + Path prefix inside the destination bucket, for example `backups/shop/`. + """ + return pulumi.get(self, "prefix") + + @_builtins.property + @pulumi.getter(name="redisId") + def redis_id(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Redis instance that owns the volume. + """ + return pulumi.get(self, "redis_id") + + @_builtins.property + @pulumi.getter(name="serviceName") + def service_name(self) -> pulumi.Output[Optional[_builtins.str]]: + """ + Service inside a Compose stack that owns the volume. + """ + return pulumi.get(self, "service_name") + + @_builtins.property + @pulumi.getter(name="serviceType") + def service_type(self) -> pulumi.Output[_builtins.str]: + """ + The kind of service that owns the volume. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`, `libsql`. Defaults to `application`. + """ + return pulumi.get(self, "service_type") + + @_builtins.property + @pulumi.getter(name="turnOff") + def turn_off(self) -> pulumi.Output[_builtins.bool]: + """ + Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to. + """ + return pulumi.get(self, "turn_off") + + @_builtins.property + @pulumi.getter(name="volumeName") + def volume_name(self) -> pulumi.Output[_builtins.str]: + """ + Name of the Docker volume to back up. + """ + return pulumi.get(self, "volume_name") + diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml index 90cb89b..b954bdc 100644 --- a/sdk/python/pyproject.toml +++ b/sdk/python/pyproject.toml @@ -5,7 +5,7 @@ keywords = ["pulumi", "dokploy", "paas", "docker", "deployment", "category/cloud", "category/infrastructure"] readme = "README.md" requires-python = ">=3.9" - version = "0.1.0" + version = "0.2.0" [project.license] text = "MPL-2.0" [project.urls]