From 73386ba0ff39b5dad5c6bff621420f0bc4a24756 Mon Sep 17 00:00:00 2001 From: max-voitcov Date: Wed, 26 Aug 2026 00:46:32 +0300 Subject: [PATCH] Bridge what Dokploy v0.30 added, and let the docs through Six new resources from terraform-provider-dokploy v0.2.0 -- Network, DnsProvider, VaultProvider, Schedule, VolumeBackup and Libsql -- plus the new properties on Domain (`enabled`), Compose (`serviceNetworks`, `createEnvFile`, `icon`) and Application. Verified with `pulumi up` against a live v0.30.2 instance: create, preview-clean, and destroy. The upstream provider also now refuses a volume Mount with no `volumeName`, which Dokploy would otherwise turn into an anonymous Docker volume recreated on every deploy. That surfaces here at preview time, before anything exists. Two things made that fix nearly invisible to Pulumi users, so this commit fixes the second one: the bridge resolves the upstream `docs/` through the Go module cache, where a locally `replace`d dependency never lands, so tfgen was emitting every resource with no description at all. UpstreamRepoPath now points at the checkout and all 445 inputs carry documentation -- with names rendered per language, so Python readers see `volume_name` where TypeScript readers see `volumeName`. --- CHANGELOG.md | 98 + README.md | 39 +- .../bridge-metadata.json | 23 + .../cmd/pulumi-resource-dokploy/schema.json | 3669 +++++++++++------ provider/resources.go | 34 + sdk/dotnet/Application.cs | 43 + sdk/dotnet/Certificate.cs | 5 + sdk/dotnet/Compose.cs | 61 + sdk/dotnet/Destination.cs | 5 + sdk/dotnet/DnsProvider.cs | 177 + sdk/dotnet/Domain.cs | 23 + sdk/dotnet/Environment.cs | 5 + sdk/dotnet/GetApplication.cs | 42 + sdk/dotnet/GetEnvironment.cs | 36 + sdk/dotnet/GetProject.cs | 39 + sdk/dotnet/GetProjects.cs | 12 + sdk/dotnet/GetServers.cs | 12 + sdk/dotnet/Libsql.cs | 739 ++++ sdk/dotnet/MariaDb.cs | 7 + sdk/dotnet/Maxvojtkov.Dokploy.csproj | 2 +- sdk/dotnet/Mongo.cs | 7 + sdk/dotnet/Mount.cs | 15 +- sdk/dotnet/MySql.cs | 7 + sdk/dotnet/Network.cs | 269 ++ sdk/dotnet/Port.cs | 3 + sdk/dotnet/Postgres.cs | 7 + sdk/dotnet/Project.cs | 5 + sdk/dotnet/Redirect.cs | 3 + sdk/dotnet/Redis.cs | 7 + sdk/dotnet/Registry.cs | 3 + sdk/dotnet/Schedule.cs | 352 ++ sdk/dotnet/Security.cs | 5 + sdk/dotnet/SshKey.cs | 7 + sdk/dotnet/VaultProvider.cs | 197 + sdk/dotnet/VolumeBackup.cs | 437 ++ sdk/dotnet/pulumi-plugin.json | 2 +- sdk/dotnet/version.txt | 2 +- sdk/go/dokploy/application.go | 35 + sdk/go/dokploy/certificate.go | 3 + sdk/go/dokploy/compose.go | 50 + sdk/go/dokploy/destination.go | 3 + sdk/go/dokploy/dnsProvider.go | 276 ++ sdk/go/dokploy/domain.go | 18 + sdk/go/dokploy/environment.go | 3 + sdk/go/dokploy/getApplication.go | 37 +- sdk/go/dokploy/getEnvironment.go | 29 +- sdk/go/dokploy/getProject.go | 35 +- sdk/go/dokploy/getProjects.go | 3 + sdk/go/dokploy/getServers.go | 3 + sdk/go/dokploy/init.go | 42 + sdk/go/dokploy/internal/pulumiUtilities.go | 4 +- sdk/go/dokploy/libsql.go | 743 ++++ sdk/go/dokploy/mariaDb.go | 5 + sdk/go/dokploy/mongo.go | 5 + sdk/go/dokploy/mount.go | 19 +- sdk/go/dokploy/mySql.go | 5 + sdk/go/dokploy/network.go | 361 ++ sdk/go/dokploy/port.go | 1 + sdk/go/dokploy/postgres.go | 5 + sdk/go/dokploy/project.go | 3 + sdk/go/dokploy/pulumi-plugin.json | 2 +- sdk/go/dokploy/redirect.go | 1 + sdk/go/dokploy/redis.go | 5 + sdk/go/dokploy/registry.go | 1 + sdk/go/dokploy/schedule.go | 437 ++ sdk/go/dokploy/security.go | 3 + sdk/go/dokploy/sshKey.go | 5 + sdk/go/dokploy/vaultProvider.go | 296 ++ sdk/go/dokploy/volumeBackup.go | 513 +++ sdk/nodejs/application.ts | 413 +- sdk/nodejs/certificate.ts | 23 +- sdk/nodejs/compose.ts | 219 +- sdk/nodejs/destination.ts | 33 +- sdk/nodejs/dnsProvider.ts | 135 + sdk/nodejs/domain.ts | 83 +- sdk/nodejs/environment.ts | 23 +- sdk/nodejs/getApplication.ts | 39 + sdk/nodejs/getEnvironment.ts | 33 + sdk/nodejs/getProject.ts | 36 + sdk/nodejs/getProjects.ts | 9 + sdk/nodejs/getServers.ts | 9 + sdk/nodejs/index.ts | 48 + sdk/nodejs/libsql.ts | 572 +++ sdk/nodejs/mariaDb.ts | 127 +- sdk/nodejs/mongo.ts | 129 +- sdk/nodejs/mount.ts | 39 +- sdk/nodejs/mySql.ts | 127 +- sdk/nodejs/network.ts | 220 + sdk/nodejs/package-lock.json | 68 +- sdk/nodejs/package.json | 6 +- sdk/nodejs/port.ts | 15 +- sdk/nodejs/postgres.ts | 125 +- sdk/nodejs/project.ts | 23 +- sdk/nodejs/provider.ts | 8 +- sdk/nodejs/redirect.ts | 15 +- sdk/nodejs/redis.ts | 121 +- sdk/nodejs/registry.ts | 25 +- sdk/nodejs/schedule.ts | 291 ++ sdk/nodejs/security.ts | 13 +- sdk/nodejs/sshKey.ts | 23 +- sdk/nodejs/tsconfig.json | 26 +- sdk/nodejs/vaultProvider.ts | 154 + sdk/nodejs/volumeBackup.ts | 362 ++ sdk/python/pulumi_dokploy/__init__.py | 54 + sdk/python/pulumi_dokploy/_utilities.py | 2 - sdk/python/pulumi_dokploy/application.py | 1810 ++++---- sdk/python/pulumi_dokploy/certificate.py | 96 +- sdk/python/pulumi_dokploy/compose.py | 921 +++-- sdk/python/pulumi_dokploy/destination.py | 150 +- sdk/python/pulumi_dokploy/dns_provider.py | 293 ++ sdk/python/pulumi_dokploy/domain.py | 347 +- sdk/python/pulumi_dokploy/environment.py | 92 +- sdk/python/pulumi_dokploy/get_application.py | 39 +- sdk/python/pulumi_dokploy/get_environment.py | 33 +- sdk/python/pulumi_dokploy/get_project.py | 36 +- sdk/python/pulumi_dokploy/get_projects.py | 7 +- sdk/python/pulumi_dokploy/get_servers.py | 7 +- sdk/python/pulumi_dokploy/libsql.py | 1733 ++++++++ sdk/python/pulumi_dokploy/maria_db.py | 570 +-- sdk/python/pulumi_dokploy/mongo.py | 570 +-- sdk/python/pulumi_dokploy/mount.py | 152 +- sdk/python/pulumi_dokploy/my_sql.py | 570 +-- sdk/python/pulumi_dokploy/network.py | 595 +++ sdk/python/pulumi_dokploy/port.py | 72 +- sdk/python/pulumi_dokploy/postgres.py | 558 +-- sdk/python/pulumi_dokploy/project.py | 88 +- sdk/python/pulumi_dokploy/provider.py | 40 +- sdk/python/pulumi_dokploy/pulumi-plugin.json | 2 +- sdk/python/pulumi_dokploy/redirect.py | 68 +- sdk/python/pulumi_dokploy/redis.py | 534 +-- sdk/python/pulumi_dokploy/registry.py | 116 +- sdk/python/pulumi_dokploy/schedule.py | 814 ++++ sdk/python/pulumi_dokploy/security.py | 54 +- sdk/python/pulumi_dokploy/ssh_key.py | 90 +- sdk/python/pulumi_dokploy/vault_provider.py | 345 ++ sdk/python/pulumi_dokploy/volume_backup.py | 1041 +++++ sdk/python/pyproject.toml | 2 +- 137 files changed, 19660 insertions(+), 5183 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 sdk/dotnet/DnsProvider.cs create mode 100644 sdk/dotnet/Libsql.cs create mode 100644 sdk/dotnet/Network.cs create mode 100644 sdk/dotnet/Schedule.cs create mode 100644 sdk/dotnet/VaultProvider.cs create mode 100644 sdk/dotnet/VolumeBackup.cs create mode 100644 sdk/go/dokploy/dnsProvider.go create mode 100644 sdk/go/dokploy/libsql.go create mode 100644 sdk/go/dokploy/network.go create mode 100644 sdk/go/dokploy/schedule.go create mode 100644 sdk/go/dokploy/vaultProvider.go create mode 100644 sdk/go/dokploy/volumeBackup.go create mode 100644 sdk/nodejs/dnsProvider.ts create mode 100644 sdk/nodejs/libsql.ts create mode 100644 sdk/nodejs/network.ts create mode 100644 sdk/nodejs/schedule.ts create mode 100644 sdk/nodejs/vaultProvider.ts create mode 100644 sdk/nodejs/volumeBackup.ts create mode 100644 sdk/python/pulumi_dokploy/dns_provider.py create mode 100644 sdk/python/pulumi_dokploy/libsql.py create mode 100644 sdk/python/pulumi_dokploy/network.py create mode 100644 sdk/python/pulumi_dokploy/schedule.py create mode 100644 sdk/python/pulumi_dokploy/vault_provider.py create mode 100644 sdk/python/pulumi_dokploy/volume_backup.py 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]