Bridge terraform-provider-dokploy into a Pulumi provider

18 resources and 5 data sources mapped into the dokploy:index module, with
SDKs generated for TypeScript, Python, Go and .NET.
This commit is contained in:
2026-08-08 15:28:16 +03:00
commit bb3c15135b
175 changed files with 61774 additions and 0 deletions

79
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,79 @@
name: build
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch: {}
env:
GO_VERSION: "1.25.x"
NODE_VERSION: "20.x"
PYTHON_VERSION: "3.11"
DOTNET_VERSION: "8.0.x"
# The provider's go.mod carries a local `replace` for the upstream Terraform
# provider, so it has to sit next to this checkout under this exact name.
UPSTREAM_REPO: maxvojtkov/terraform-provider-dokploy
UPSTREAM_DIR: dokploy-teraform
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout pulumi-dokploy
uses: actions/checkout@v4
with:
path: pulumi-dokploy
- name: Checkout upstream Terraform provider
uses: actions/checkout@v4
with:
repository: ${{ env.UPSTREAM_REPO }}
path: ${{ env.UPSTREAM_DIR }}
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: |
pulumi-dokploy/provider/go.sum
pulumi-dokploy/sdk/go.sum
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- uses: pulumi/actions@v6
- name: Lint provider
working-directory: pulumi-dokploy
run: make lint
- name: Build provider plugin
working-directory: pulumi-dokploy
run: make provider
- name: Fail if the checked-in schema is stale
working-directory: pulumi-dokploy
run: git diff --exit-code -- provider/cmd/pulumi-resource-dokploy/schema.json
provider/cmd/pulumi-resource-dokploy/bridge-metadata.json
- name: Build SDKs
working-directory: pulumi-dokploy
run: make build_sdks
- name: Build Go SDK
working-directory: pulumi-dokploy/sdk
run: go build ./...
- name: Build .NET SDK
working-directory: pulumi-dokploy/sdk/dotnet
run: dotnet build --nologo

121
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,121 @@
name: release
on:
push:
tags:
- "v*.*.*"
permissions:
contents: write
env:
GO_VERSION: "1.25.x"
NODE_VERSION: "20.x"
PYTHON_VERSION: "3.11"
DOTNET_VERSION: "8.0.x"
UPSTREAM_REPO: maxvojtkov/terraform-provider-dokploy
UPSTREAM_DIR: dokploy-teraform
jobs:
# Publishes the plugin binaries. Pulumi resolves them from this release via
# the provider's `github://api.github.com/maxvojtkov/pulumi-dokploy` URL.
plugin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: pulumi-dokploy
fetch-depth: 0
- uses: actions/checkout@v4
with:
repository: ${{ env.UPSTREAM_REPO }}
path: ${{ env.UPSTREAM_DIR }}
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- uses: goreleaser/goreleaser-action@v6
with:
version: latest
args: release --clean
workdir: pulumi-dokploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
sdks:
needs: plugin
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: pulumi-dokploy
- uses: actions/checkout@v4
with:
repository: ${{ env.UPSTREAM_REPO }}
path: ${{ env.UPSTREAM_DIR }}
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
registry-url: https://registry.npmjs.org
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Derive version from tag
run: echo "VERSION=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV"
- name: Build SDKs
working-directory: pulumi-dokploy
run: make build_sdks VERSION=${{ env.VERSION }}
- name: Publish to npm
working-directory: pulumi-dokploy/sdk/nodejs/bin
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish to PyPI
working-directory: pulumi-dokploy/sdk/python
run: |
python -m pip install --upgrade build twine
python -m build
python -m twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
- name: Publish to NuGet
working-directory: pulumi-dokploy/sdk/dotnet
run: |
dotnet pack --configuration Release --output ./nupkg
dotnet nuget push ./nupkg/*.nupkg \
--source https://api.nuget.org/v3/index.json \
--api-key "$NUGET_PUBLISH_KEY" --skip-duplicate
env:
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
# Go modules are consumed straight from the repository, so the generated
# SDK has to be committed and tagged as `sdk/vX.Y.Z`.
- name: Commit and tag the Go SDK
working-directory: pulumi-dokploy
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add sdk provider/cmd/pulumi-resource-dokploy/schema.json \
provider/cmd/pulumi-resource-dokploy/bridge-metadata.json
git diff --cached --quiet || git commit -m "chore: SDKs for v${{ env.VERSION }}"
git tag "sdk/v${{ env.VERSION }}"
git push origin HEAD:main --tags

29
.gitignore vendored Normal file
View File

@@ -0,0 +1,29 @@
# Provider and codegen binaries
/bin/
# The generated SDKs under sdk/ ARE committed — Go module consumers fetch them
# straight from this repo. Only their build output is ignored.
/sdk/nodejs/bin/
/sdk/nodejs/node_modules/
/sdk/dotnet/bin/
/sdk/dotnet/obj/
/sdk/python/build/
/sdk/python/dist/
/sdk/python/*.egg-info/
__pycache__/
*.tsbuildinfo
# Pulumi stack state from examples
Pulumi.*.yaml
!examples/**/Pulumi.yaml
.pulumi/
# Go
vendor/
*.test
coverage.out
# Example dependencies
/examples/**/node_modules/
/examples/**/package-lock.json
/examples/**/venv/

55
.goreleaser.yml Normal file
View File

@@ -0,0 +1,55 @@
# Builds the provider plugin for every platform Pulumi supports and publishes
# the archives to a GitHub release. The archive names must match what
# `PluginDownloadURL: github://api.github.com/maxvojtkov/pulumi-dokploy`
# expects, so do not rename them.
version: 2
project_name: pulumi-dokploy
before:
hooks:
- go -C provider mod download
builds:
- id: pulumi-resource-dokploy
dir: provider
main: ./cmd/pulumi-resource-dokploy
binary: pulumi-resource-dokploy
env:
- CGO_ENABLED=0
flags:
- -trimpath
ldflags:
- -s -w
- -X github.com/maxvojtkov/pulumi-dokploy/provider/pkg/version.Version={{ .Version }}
goos:
- darwin
- linux
- windows
goarch:
- amd64
- arm64
archives:
- id: plugin
formats: [tar.gz]
name_template: "{{ .Binary }}-v{{ .Version }}-{{ .Os }}-{{ .Arch }}"
files:
- none*
checksum:
name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"
snapshot:
version_template: "{{ .Version }}-SNAPSHOT"
changelog:
use: github
filters:
exclude:
- "^docs:"
- "^chore:"
- "^test:"
release:
prerelease: auto

356
LICENSE Normal file
View File

@@ -0,0 +1,356 @@
Copyright (c) 2026 Max Vojtkov
Mozilla Public License, version 2.0
1. Definitions
1.1. “Contributor”
means each individual or legal entity that creates, contributes to the
creation of, or owns Covered Software.
1.2. “Contributor Version”
means the combination of the Contributions of others (if any) used by a
Contributor and that particular Contributors Contribution.
1.3. “Contribution”
means Covered Software of a particular Contributor.
1.4. “Covered Software”
means Source Code Form to which the initial Contributor has attached the
notice in Exhibit A, the Executable Form of such Source Code Form, and
Modifications of such Source Code Form, in each case including portions
thereof.
1.5. “Incompatible With Secondary Licenses”
means
a. that the initial Contributor has attached the notice described in
Exhibit B to the Covered Software; or
b. that the Covered Software was made available under the terms of version
1.1 or earlier of the License, but not also under the terms of a
Secondary License.
1.6. “Executable Form”
means any form of the work other than Source Code Form.
1.7. “Larger Work”
means a work that combines Covered Software with other material, in a separate
file or files, that is not Covered Software.
1.8. “License”
means this document.
1.9. “Licensable”
means having the right to grant, to the maximum extent possible, whether at the
time of the initial grant or subsequently, any and all of the rights conveyed by
this License.
1.10. “Modifications”
means any of the following:
a. any file in Source Code Form that results from an addition to, deletion
from, or modification of the contents of Covered Software; or
b. any new file in Source Code Form that contains any Covered Software.
1.11. “Patent Claims” of a Contributor
means any patent claim(s), including without limitation, method, process,
and apparatus claims, in any patent Licensable by such Contributor that
would be infringed, but for the grant of the License, by the making,
using, selling, offering for sale, having made, import, or transfer of
either its Contributions or its Contributor Version.
1.12. “Secondary License”
means either the GNU General Public License, Version 2.0, the GNU Lesser
General Public License, Version 2.1, the GNU Affero General Public
License, Version 3.0, or any later versions of those licenses.
1.13. “Source Code Form”
means the form of the work preferred for making modifications.
1.14. “You” (or “Your”)
means an individual or a legal entity exercising rights under this
License. For legal entities, “You” includes any entity that controls, is
controlled by, or is under common control with You. For purposes of this
definition, “control” means (a) the power, direct or indirect, to cause
the direction or management of such entity, whether by contract or
otherwise, or (b) ownership of more than fifty percent (50%) of the
outstanding shares or beneficial ownership of such entity.
2. License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
a. under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or as
part of a Larger Work; and
b. under Patent Claims of such Contributor to make, use, sell, offer for
sale, have made, import, and otherwise transfer either its Contributions
or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution become
effective for each Contribution on the date the Contributor first distributes
such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under this
License. No additional rights or licenses will be implied from the distribution
or licensing of Covered Software under this License. Notwithstanding Section
2.1(b) above, no patent license is granted by a Contributor:
a. for any code that a Contributor has removed from Covered Software; or
b. for infringements caused by: (i) Your and any other third partys
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
c. under Patent Claims infringed by Covered Software in the absence of its
Contributions.
This License does not grant any rights in the trademarks, service marks, or
logos of any Contributor (except as may be necessary to comply with the
notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this License
(see Section 10.2) or under the terms of a Secondary License (if permitted
under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its Contributions
are its original creation(s) or it has sufficient rights to grant the
rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under applicable
copyright doctrines of fair use, fair dealing, or other equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
Section 2.1.
3. Responsibilities
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under the
terms of this License. You must inform recipients that the Source Code Form
of the Covered Software is governed by the terms of this License, and how
they can obtain a copy of this License. You may not attempt to alter or
restrict the recipients rights in the Source Code Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
a. such Covered Software must also be made available in Source Code Form,
as described in Section 3.1, and You must inform recipients of the
Executable Form how they can obtain a copy of such Source Code Form by
reasonable means in a timely manner, at a charge no more than the cost
of distribution to the recipient; and
b. You may distribute such Executable Form under the terms of this License,
or sublicense it under different terms, provided that the license for
the Executable Form does not attempt to limit or alter the recipients
rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for the
Covered Software. If the Larger Work is a combination of Covered Software
with a work governed by one or more Secondary Licenses, and the Covered
Software is not Incompatible With Secondary Licenses, this License permits
You to additionally distribute such Covered Software under the terms of
such Secondary License(s), so that the recipient of the Larger Work may, at
their option, further distribute the Covered Software under the terms of
either this License or such Secondary License(s).
3.4. Notices
You may not remove or alter the substance of any license notices (including
copyright notices, patent notices, disclaimers of warranty, or limitations
of liability) contained within the Source Code Form of the Covered
Software, except that You may alter any license notices to the extent
required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on behalf
of any Contributor. You must make it absolutely clear that any such
warranty, support, indemnity, or liability obligation is offered by You
alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
If it is impossible for You to comply with any of the terms of this License
with respect to some or all of the Covered Software due to statute, judicial
order, or regulation then You must: (a) comply with the terms of this License
to the maximum extent possible; and (b) describe the limitations and the code
they affect. Such description must be placed in a text file included with all
distributions of the Covered Software under this License. Except to the
extent prohibited by statute or regulation, such description must be
sufficiently detailed for a recipient of ordinary skill to be able to
understand it.
5. Termination
5.1. The rights granted under this License will terminate automatically if You
fail to comply with any of its terms. However, if You become compliant,
then the rights granted under this License from a particular Contributor
are reinstated (a) provisionally, unless and until such Contributor
explicitly and finally terminates Your grants, and (b) on an ongoing basis,
if such Contributor fails to notify You of the non-compliance by some
reasonable means prior to 60 days after You have come back into compliance.
Moreover, Your grants from a particular Contributor are reinstated on an
ongoing basis if such Contributor notifies You of the non-compliance by
some reasonable means, this is the first time You have received notice of
non-compliance with this License from such Contributor, and You become
compliant prior to 30 days after Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions, counter-claims,
and cross-claims) alleging that a Contributor Version directly or
indirectly infringes any patent, then the rights granted to You by any and
all Contributors for the Covered Software under Section 2.1 of this License
shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
license agreements (excluding distributors and resellers) which have been
validly granted by You or Your distributors under this License prior to
termination shall survive termination.
6. Disclaimer of Warranty
Covered Software is provided under this License on an “as is” basis, without
warranty of any kind, either expressed, implied, or statutory, including,
without limitation, warranties that the Covered Software is free of defects,
merchantable, fit for a particular purpose or non-infringing. The entire
risk as to the quality and performance of the Covered Software is with You.
Should any Covered Software prove defective in any respect, You (not any
Contributor) assume the cost of any necessary servicing, repair, or
correction. This disclaimer of warranty constitutes an essential part of this
License. No use of any Covered Software is authorized under this License
except under this disclaimer.
7. Limitation of Liability
Under no circumstances and under no legal theory, whether tort (including
negligence), contract, or otherwise, shall any Contributor, or anyone who
distributes Covered Software as permitted above, be liable to You for any
direct, indirect, special, incidental, or consequential damages of any
character including, without limitation, damages for lost profits, loss of
goodwill, work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses, even if such party shall have been
informed of the possibility of such damages. This limitation of liability
shall not apply to liability for death or personal injury resulting from such
partys negligence to the extent applicable law prohibits such limitation.
Some jurisdictions do not allow the exclusion or limitation of incidental or
consequential damages, so this exclusion and limitation may not apply to You.
8. Litigation
Any litigation relating to this License may be brought only in the courts of
a jurisdiction where the defendant maintains its principal place of business
and such litigation shall be governed by laws of that jurisdiction, without
reference to its conflict-of-law provisions. Nothing in this Section shall
prevent a partys ability to bring cross-claims or counter-claims.
9. Miscellaneous
This License represents the complete agreement concerning the subject matter
hereof. If any provision of this License is held to be unenforceable, such
provision shall be reformed only to the extent necessary to make it
enforceable. Any law or regulation which provides that the language of a
contract shall be construed against the drafter shall not be used to construe
this License against a Contributor.
10. Versions of the License
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version of
the License under which You originally received the Covered Software, or
under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a modified
version of this License if you rename the license and remove any
references to the name of the license steward (except to note that such
modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
This Source Code Form is subject to the
terms of the Mozilla Public License, v.
2.0. If a copy of the MPL was not
distributed with this file, You can
obtain one at
http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file, then
You may include the notice in a location (such as a LICENSE file in a relevant
directory) where a recipient would be likely to look for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - “Incompatible With Secondary Licenses” Notice
This Source Code Form is “Incompatible
With Secondary Licenses”, as defined by
the Mozilla Public License, v. 2.0.

89
Makefile Normal file
View File

@@ -0,0 +1,89 @@
PACK := dokploy
ORG := maxvojtkov
PROJECT := github.com/$(ORG)/pulumi-$(PACK)
PROVIDER_PATH := provider
VERSION_PATH := $(PROVIDER_PATH)/pkg/version.Version
TFGEN := pulumi-tfgen-$(PACK)
PROVIDER := pulumi-resource-$(PACK)
WORKING_DIR := $(shell pwd)
SCHEMA_DIR := $(WORKING_DIR)/provider/cmd/$(PROVIDER)
# Override on the command line for a release build, e.g. `make build VERSION=0.2.0`.
VERSION ?= 0.1.0
LDFLAGS := -X $(PROJECT)/$(VERSION_PATH)=$(VERSION)
JAVASCRIPT_PKG := @$(ORG)/pulumi-$(PACK)
PYTHON_PKG := pulumi_$(PACK)
.PHONY: default
default: provider build_sdks ## Build the provider plugin and all SDKs
# ---------------------------------------------------------------- code gen ---
.PHONY: tfgen
tfgen: ## Regenerate schema.json and bridge-metadata.json
(cd provider && go build -o $(WORKING_DIR)/bin/$(TFGEN) -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(TFGEN))
$(WORKING_DIR)/bin/$(TFGEN) schema --out $(SCHEMA_DIR)
.PHONY: provider
provider: tfgen ## Build the provider plugin binary into bin/
(cd provider && go build -o $(WORKING_DIR)/bin/$(PROVIDER) -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(PROVIDER))
.PHONY: build_sdks
build_sdks: build_nodejs build_python build_go build_dotnet ## Generate every language SDK
# sdk/nodejs/bin is what gets published to npm, so package.json and the docs
# have to be copied in next to the compiled JavaScript.
.PHONY: build_nodejs
build_nodejs: tfgen
rm -rf sdk/nodejs
$(WORKING_DIR)/bin/$(TFGEN) nodejs --out sdk/nodejs/
cd sdk/nodejs && npm install && npm run build
cp README.md LICENSE sdk/nodejs/package.json sdk/nodejs/bin/
.PHONY: build_python
build_python: tfgen
rm -rf sdk/python
$(WORKING_DIR)/bin/$(TFGEN) python --out sdk/python/
cp README.md LICENSE sdk/python/
.PHONY: build_go
build_go: tfgen
rm -rf sdk/go
$(WORKING_DIR)/bin/$(TFGEN) go --out sdk/go/
.PHONY: build_dotnet
build_dotnet: tfgen
rm -rf sdk/dotnet
$(WORKING_DIR)/bin/$(TFGEN) dotnet --out sdk/dotnet/
cp README.md LICENSE sdk/dotnet/
printf "$(VERSION)" > sdk/dotnet/version.txt
# ------------------------------------------------------------------ local ----
.PHONY: install
install: provider install_nodejs_sdk ## Install the plugin locally so `pulumi up` can find it
pulumi plugin install resource $(PACK) $(VERSION) --file $(WORKING_DIR)/bin/$(PROVIDER) --reinstall
.PHONY: install_nodejs_sdk
install_nodejs_sdk:
@if [ -d sdk/nodejs/bin ]; then yarn link --cwd sdk/nodejs/bin; fi
.PHONY: lint
lint: ## Vet and format-check the provider sources
cd provider && go vet ./... && test -z "$$(gofmt -l .)"
.PHONY: test
test: ## Run provider unit tests
cd provider && go test ./... -count=1
.PHONY: clean
clean: ## Remove build artifacts and generated SDKs
rm -rf bin sdk/nodejs sdk/python sdk/go sdk/dotnet
.PHONY: help
help:
@grep -hE '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \
| awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-16s\033[0m %s\n", $$1, $$2}'

206
README.md Normal file
View File

@@ -0,0 +1,206 @@
# pulumi-dokploy
A Pulumi provider for [Dokploy](https://dokploy.com): projects, environments,
applications, Compose stacks, managed databases, domains, mounts, ports,
redirects, basic auth, registries, SSH keys, certificates and backup
destinations.
This is a *bridged* provider. All of the behaviour lives in
[`terraform-provider-dokploy`](https://github.com/maxvojtkov/terraform-provider-dokploy);
[`pulumi-terraform-bridge`](https://github.com/pulumi/pulumi-terraform-bridge)
turns it into a Pulumi package with typed SDKs for TypeScript, Python, Go and
.NET. The two providers stay in lockstep — a resource added upstream shows up
here after a `make tfgen`.
```ts
import * as dokploy from "@maxvojtkov/pulumi-dokploy";
const shop = new dokploy.Project("shop", { name: "shop" });
const db = new dokploy.Postgres("db", {
name: "shop-db",
environmentId: shop.defaultEnvironmentId,
dockerImage: "postgres:16-alpine",
databaseName: "shop",
databaseUser: "shop",
databasePassword: dbPassword,
});
const api = new dokploy.Application("api", {
name: "api",
environmentId: shop.defaultEnvironmentId,
sourceType: "docker",
dockerImage: "ghcr.io/acme/api:1.4.0",
env: pulumi.interpolate`DATABASE_URL=postgresql://shop:${dbPassword}@${db.appName}:5432/shop`,
});
new dokploy.Domain("api", {
applicationId: api.id,
domainType: "application",
host: "api.example.com",
port: 3000,
https: true,
certificateType: "letsencrypt",
});
```
## Contents
- [Installing](#installing)
- [Configuration](#configuration)
- [Resources and data sources](#resources-and-data-sources)
- [Differences from the Terraform provider](#differences-from-the-terraform-provider)
- [Examples](#examples)
- [Development](#development)
- [Releasing](#releasing)
## Installing
The SDKs are published per language; the plugin binary is resolved
automatically from this repository's GitHub releases.
```bash
# TypeScript / JavaScript
npm install @maxvojtkov/pulumi-dokploy
# Python
pip install pulumi_dokploy
# Go
go get github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy
# .NET
dotnet add package Maxvojtkov.Dokploy
```
Before the first release, build and install it locally instead:
```bash
make install VERSION=0.1.0
```
That drops `pulumi-resource-dokploy` into the local plugin cache, so
`pulumi up` finds it without a network fetch.
### Do I need the static SDK?
Not necessarily. Pulumi can consume the Terraform provider directly, with no
build step and no published SDK:
```bash
pulumi package add terraform-provider maxvojtkov/dokploy
```
That generates a local SDK on the spot and is the fastest way to try things.
Use this repository when you want a *versioned, published* package — stable
tokens across releases, real package-manager installs, and SDKs your teammates
can depend on without a codegen step.
## Configuration
| Setting | Environment variable | Required | Description |
| ---------------------- | ------------------------- | -------- | --------------------------------------------------------------------------- |
| `dokploy:host` | `DOKPLOY_HOST` | yes | Base URL of the instance, e.g. `https://dokploy.example.com`. Trailing `/api` optional. |
| `dokploy:apiKey` | `DOKPLOY_API_KEY` | yes | Token from *Settings → Profile → API/CLI*. Always treated as a secret. |
| `dokploy:timeoutSeconds` | `DOKPLOY_TIMEOUT_SECONDS` | no | Per-request timeout. Defaults to `60`. |
| `dokploy:insecureSkipVerify` | — | no | Skip TLS verification. Only for self-signed certificates. |
```bash
pulumi config set dokploy:host https://dokploy.example.com
pulumi config set --secret dokploy:apiKey "$DOKPLOY_API_KEY"
```
## Resources and data sources
| Group | Resources |
| ------------ | ------------------------------------------------------------------------- |
| Structure | `Project`, `Environment` |
| Services | `Application`, `Compose` |
| Databases | `Postgres`, `MySql`, `MariaDb`, `Mongo`, `Redis` |
| Networking | `Domain`, `Mount`, `Port`, `Redirect`, `Security` |
| Account | `Registry`, `SshKey`, `Certificate`, `Destination` |
Data sources: `getProject`, `getProjects`, `getEnvironment`, `getApplication`,
`getServers`.
## Differences from the Terraform provider
Everything is a mechanical translation of the Terraform provider, with three
Pulumi conventions applied on top:
- **Attribute names are camelCase.** `environment_id``environmentId`,
`default_environment_id``defaultEnvironmentId`, and so on.
- **`name` is auto-generated when you omit it.** Pulumi appends a random
suffix to the logical resource name, the same way the AWS provider does. Pass
`name` explicitly whenever the Dokploy-side name matters to you.
- **The `web-service` Terraform module has no direct equivalent.** Write it as
a [ComponentResource](https://www.pulumi.com/docs/concepts/resources/components/)
instead — see [`examples/typescript/webService.ts`](examples/typescript/webService.ts),
which is a port of that module.
The [known API quirks](https://github.com/maxvojtkov/terraform-provider-dokploy#known-api-quirks)
documented upstream apply here unchanged, because it is the same code doing the
work.
## Examples
- [`examples/typescript`](examples/typescript) — a full environment: project,
staging environment, Postgres, Redis, a GitHub-built web service behind a
domain, a basic-auth-protected internal tool, and a Compose stack.
- [`examples/python`](examples/python) — a small project, database and app.
## Development
Requirements: Go 1.25+, Node 20+, Python 3.9+, .NET 8+, and `pulumi`.
```bash
make tfgen # regenerate schema.json and bridge-metadata.json
make provider # build the plugin binary into bin/
make build_sdks # regenerate all four SDKs
make install # install the plugin into the local Pulumi plugin cache
make lint test
```
`provider/resources.go` is the whole mapping layer: Terraform type names to
Pulumi tokens, and Terraform provider configuration to Pulumi configuration.
Adding an upstream resource means adding one line there and re-running
`make tfgen build_sdks`.
### The upstream dependency
`provider/go.mod` currently carries:
```
replace github.com/maxvojtkov/terraform-provider-dokploy => ../../dokploy-teraform
```
so the two repositories can be developed side by side. CI reproduces that
layout by checking the upstream provider out as a sibling directory. Once
`terraform-provider-dokploy` is tagged on GitHub, drop the `replace` and pin a
real version instead:
```bash
cd provider && go mod edit -dropreplace github.com/maxvojtkov/terraform-provider-dokploy \
&& go get github.com/maxvojtkov/terraform-provider-dokploy@v0.1.0
```
The upstream provider exposes itself through its `shim` package
(`shim.NewProvider(version)`), because `internal/provider` is not importable
from outside that module.
## Releasing
Tag the repository and the `release` workflow does the rest:
```bash
git tag v0.1.0 && git push origin v0.1.0
```
It publishes plugin binaries to a GitHub release via GoReleaser, pushes the
npm / PyPI / NuGet packages, and commits and tags the Go SDK as `sdk/v0.1.0`.
The workflow needs three repository secrets: `NPM_TOKEN`, `PYPI_API_TOKEN` and
`NUGET_PUBLISH_KEY`.
## License
[MPL-2.0](LICENSE).

View File

@@ -0,0 +1,7 @@
name: dokploy-python
runtime:
name: python
options:
toolchain: pip
virtualenv: venv
description: A small Dokploy stack built with Pulumi and Python

View File

@@ -0,0 +1,59 @@
"""A small Dokploy stack: a project, a Postgres instance and a public app.
export DOKPLOY_HOST=https://dokploy.example.com
export DOKPLOY_API_KEY=...
pulumi up
"""
import pulumi
import pulumi_dokploy as dokploy
import pulumi_random as random
shop = dokploy.Project(
"shop",
name="shop",
description="Storefront and its backing services",
)
db_password = random.RandomPassword("postgres", length=32, special=False)
db = dokploy.Postgres(
"db",
name="shop-db",
environment_id=shop.default_environment_id,
docker_image="postgres:16-alpine",
database_name="shop",
database_user="shop",
database_password=db_password.result,
memory_limit="1g",
)
# Dokploy resolves service names on the shared Docker network, so the database
# is reachable by its generated app_name.
database_url = pulumi.Output.all(db.app_name, db_password.result).apply(
lambda args: f"DATABASE_URL=postgresql://shop:{args[1]}@{args[0]}:5432/shop"
)
api = dokploy.Application(
"api",
name="api",
environment_id=shop.default_environment_id,
source_type="docker",
docker_image="ghcr.io/acme/api:1.4.0",
env=database_url,
replicas=2,
memory_limit="512m",
)
dokploy.Domain(
"api",
application_id=api.id,
domain_type="application",
host="api.example.com",
port=3000,
https=True,
certificate_type="letsencrypt",
)
pulumi.export("project_id", shop.id)
pulumi.export("api_id", api.id)

View File

@@ -0,0 +1,3 @@
pulumi>=3.0.0,<4.0.0
pulumi-random>=4.0.0,<5.0.0
pulumi_dokploy>=0.1.0,<1.0.0

View File

@@ -0,0 +1,9 @@
name: dokploy-complete
runtime: nodejs
description: A complete Dokploy environment built with Pulumi
config:
dokploy-complete:githubProviderId:
description: ID of the GitHub provider configured in Dokploy
dokploy-complete:adminPassword:
description: Basic-auth password for the staging admin tool
secret: true

View File

@@ -0,0 +1,148 @@
// A complete Dokploy environment: a project, a staging environment, a public
// web service with a database and a cache behind it, and a Compose stack.
//
// export DOKPLOY_HOST=https://dokploy.example.com
// export DOKPLOY_API_KEY=...
// pulumi up
import * as pulumi from "@pulumi/pulumi";
import * as random from "@pulumi/random";
import * as dokploy from "@maxvojtkov/pulumi-dokploy";
import { WebService } from "./webService";
const config = new pulumi.Config();
const githubProviderId = config.require("githubProviderId");
const adminPassword = config.requireSecret("adminPassword");
// ---------------------------------------------------------------- structure
const shop = new dokploy.Project("shop", {
name: "shop",
description: "Storefront and its backing services",
// Shared by every service in the project.
env: "TZ=Europe/Bucharest",
});
// Dokploy creates a default "production" environment with the project; add a
// second one for staging.
const staging = new dokploy.Environment("staging", {
name: "staging",
description: "Pre-production",
projectId: shop.id,
env: "LOG_LEVEL=debug",
});
// ------------------------------------------------------------------ secrets
const postgresPassword = new random.RandomPassword("postgres", { length: 32, special: false });
const redisPassword = new random.RandomPassword("redis", { length: 32, special: false });
// --------------------------------------------------------------- datastores
const db = new dokploy.Postgres("db", {
name: "shop-db",
environmentId: shop.defaultEnvironmentId,
dockerImage: "postgres:16-alpine",
databaseName: "shop",
databaseUser: "shop",
databasePassword: postgresPassword.result,
memoryLimit: "1g",
cpuLimit: "1",
memoryReservation: "256m",
});
const cache = new dokploy.Redis("cache", {
name: "shop-cache",
environmentId: shop.defaultEnvironmentId,
dockerImage: "redis:7-alpine",
databasePassword: redisPassword.result,
memoryLimit: "256m",
});
// ----------------------------------------------------------- the web service
// Dokploy resolves service names on the shared Docker network, so the database
// is reachable by its generated appName.
const storefrontEnv = pulumi
.all([db.appName, postgresPassword.result, cache.appName, redisPassword.result])
.apply(([dbHost, dbPass, cacheHost, cachePass]) => [
`DATABASE_URL=postgresql://shop:${dbPass}@${dbHost}:5432/shop`,
`REDIS_URL=redis://:${cachePass}@${cacheHost}:6379`,
"NODE_ENV=production",
].join("\n"));
const storefront = new WebService("storefront", {
environmentId: shop.defaultEnvironmentId,
description: "Public storefront",
github: {
githubId: githubProviderId,
owner: "acme",
repository: "storefront",
branch: "main",
},
env: storefrontEnv,
replicas: 2,
memoryLimit: "1g",
cpuLimit: "1",
domains: [{ host: "shop.example.com", port: 3000 }],
});
new dokploy.Redirect("storefront-www", {
applicationId: storefront.application.id,
regex: String.raw`^https://www\.shop\.example\.com/(.*)`,
replacement: "https://shop.example.com/${1}",
permanent: true,
});
new dokploy.Mount("storefront-uploads", {
serviceId: storefront.application.id,
serviceType: "application",
type: "volume",
mountPath: "/app/uploads",
volumeName: "storefront-uploads",
});
// ------------------------------- an internal tool behind basic auth (staging)
new WebService("admin", {
environmentId: staging.id,
dockerImage: "traefik/whoami:latest",
domains: [{ host: "admin.staging.example.com", port: 80 }],
basicAuth: { username: "ops", password: adminPassword },
});
// -------------------------------------------------------------- compose stack
const observability = new dokploy.Compose("observability", {
name: "observability",
environmentId: shop.defaultEnvironmentId,
composeType: "docker-compose",
sourceType: "raw",
// Preserve volumes if this stack is ever destroyed.
deleteVolumes: false,
composeFile: `services:
uptime:
image: louislam/uptime-kuma:1
volumes:
- uptime-data:/app/data
restart: unless-stopped
volumes:
uptime-data:
`,
});
new dokploy.Domain("observability", {
composeId: observability.id,
domainType: "compose",
serviceName: "uptime",
host: "status.example.com",
port: 3001,
https: true,
certificateType: "letsencrypt",
});
export const projectId = shop.id;
export const stagingEnvironmentId = staging.id;
export const storefrontUrl = "https://shop.example.com";

View File

@@ -0,0 +1,12 @@
{
"name": "dokploy-complete",
"devDependencies": {
"@types/node": "^18.19.130",
"typescript": "^5.9.3"
},
"dependencies": {
"@maxvojtkov/pulumi-dokploy": "file:../../sdk/nodejs",
"@pulumi/pulumi": "^3.256.0",
"@pulumi/random": "^4.21.1"
}
}

View File

@@ -0,0 +1,16 @@
{
"compilerOptions": {
"strict": true,
"outDir": "bin",
"target": "es2020",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"forceConsistentCasingInFileNames": true
},
"files": ["index.ts", "webService.ts"]
}

View File

@@ -0,0 +1,93 @@
import * as pulumi from "@pulumi/pulumi";
import * as dokploy from "@maxvojtkov/pulumi-dokploy";
export interface DomainSpec {
host: string;
port: number;
https?: boolean;
path?: string;
}
export interface WebServiceArgs {
environmentId: pulumi.Input<string>;
description?: pulumi.Input<string>;
/** Either a prebuilt image or a GitHub repository, not both. */
dockerImage?: pulumi.Input<string>;
github?: {
githubId: pulumi.Input<string>;
owner: pulumi.Input<string>;
repository: pulumi.Input<string>;
branch: pulumi.Input<string>;
};
env?: pulumi.Input<string>;
replicas?: pulumi.Input<number>;
memoryLimit?: pulumi.Input<string>;
cpuLimit?: pulumi.Input<string>;
domains?: DomainSpec[];
/** username/password pair to put the whole service behind basic auth. */
basicAuth?: { username: pulumi.Input<string>; password: pulumi.Input<string> };
}
/**
* WebService bundles an application with its domains and access control — the
* Pulumi equivalent of the `web-service` Terraform module.
*/
export class WebService extends pulumi.ComponentResource {
public readonly application: dokploy.Application;
public readonly domains: dokploy.Domain[];
constructor(name: string, args: WebServiceArgs, opts?: pulumi.ComponentResourceOptions) {
super("dokploy:index:WebService", name, {}, opts);
const child = { parent: this };
this.application = new dokploy.Application(name, {
name,
environmentId: args.environmentId,
description: args.description,
env: args.env,
replicas: args.replicas,
memoryLimit: args.memoryLimit,
cpuLimit: args.cpuLimit,
...(args.github
? {
sourceType: "github",
buildType: "nixpacks",
autoDeploy: true,
githubId: args.github.githubId,
owner: args.github.owner,
repository: args.github.repository,
branch: args.github.branch,
}
: {
sourceType: "docker",
dockerImage: args.dockerImage,
}),
}, child);
this.domains = (args.domains ?? []).map((d, i) => new dokploy.Domain(`${name}-domain-${i}`, {
applicationId: this.application.id,
domainType: "application",
host: d.host,
port: d.port,
path: d.path,
https: d.https ?? true,
certificateType: (d.https ?? true) ? "letsencrypt" : "none",
}, child));
if (args.basicAuth) {
new dokploy.Security(`${name}-auth`, {
applicationId: this.application.id,
username: args.basicAuth.username,
password: args.basicAuth.password,
}, child);
}
this.registerOutputs({
application: this.application,
domains: this.domains,
});
}
}

View File

@@ -0,0 +1,3 @@
name: dokploy
description: A Pulumi resource provider for dokploy.
language: schema

View File

@@ -0,0 +1,162 @@
{
"auto-aliasing": {
"resources": {
"dokploy_application": {
"current": "dokploy:index/application:Application",
"fields": {
"args": {
"maxItemsOne": false
},
"network_ids": {
"maxItemsOne": false
},
"preview_labels": {
"maxItemsOne": false
},
"watch_paths": {
"maxItemsOne": false
}
}
},
"dokploy_certificate": {
"current": "dokploy:index/certificate:Certificate"
},
"dokploy_compose": {
"current": "dokploy:index/compose:Compose",
"fields": {
"watch_paths": {
"maxItemsOne": false
}
}
},
"dokploy_destination": {
"current": "dokploy:index/destination:Destination",
"fields": {
"additional_flags": {
"maxItemsOne": false
}
}
},
"dokploy_domain": {
"current": "dokploy:index/domain:Domain",
"fields": {
"middlewares": {
"maxItemsOne": false
}
}
},
"dokploy_environment": {
"current": "dokploy:index/environment:Environment"
},
"dokploy_mariadb": {
"current": "dokploy:index/mariaDb:MariaDb",
"fields": {
"args": {
"maxItemsOne": false
},
"network_ids": {
"maxItemsOne": false
}
}
},
"dokploy_mongo": {
"current": "dokploy:index/mongo:Mongo",
"fields": {
"args": {
"maxItemsOne": false
},
"network_ids": {
"maxItemsOne": false
}
}
},
"dokploy_mount": {
"current": "dokploy:index/mount:Mount"
},
"dokploy_mysql": {
"current": "dokploy:index/mySql:MySql",
"fields": {
"args": {
"maxItemsOne": false
},
"network_ids": {
"maxItemsOne": false
}
}
},
"dokploy_port": {
"current": "dokploy:index/port:Port"
},
"dokploy_postgres": {
"current": "dokploy:index/postgres:Postgres",
"fields": {
"args": {
"maxItemsOne": false
},
"network_ids": {
"maxItemsOne": false
}
}
},
"dokploy_project": {
"current": "dokploy:index/project:Project"
},
"dokploy_redirect": {
"current": "dokploy:index/redirect:Redirect"
},
"dokploy_redis": {
"current": "dokploy:index/redis:Redis",
"fields": {
"args": {
"maxItemsOne": false
},
"network_ids": {
"maxItemsOne": false
}
}
},
"dokploy_registry": {
"current": "dokploy:index/registry:Registry"
},
"dokploy_security": {
"current": "dokploy:index/security:Security"
},
"dokploy_ssh_key": {
"current": "dokploy:index/sshKey:SshKey"
}
},
"datasources": {
"dokploy_application": {
"current": "dokploy:index/getApplication:getApplication"
},
"dokploy_environment": {
"current": "dokploy:index/getEnvironment:getEnvironment"
},
"dokploy_project": {
"current": "dokploy:index/getProject:getProject",
"fields": {
"environments": {
"maxItemsOne": false
}
}
},
"dokploy_projects": {
"current": "dokploy:index/getProjects:getProjects",
"fields": {
"projects": {
"maxItemsOne": false
}
}
},
"dokploy_servers": {
"current": "dokploy:index/getServers:getServers",
"fields": {
"servers": {
"maxItemsOne": false
}
}
}
}
},
"auto-settings": {}
}

View File

@@ -0,0 +1,23 @@
// pulumi-resource-dokploy is the Pulumi provider plugin for Dokploy. It serves
// the bridged Terraform provider together with the schema baked in at build
// time by `make tfgen`.
package main
import (
"context"
_ "embed"
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge"
dokploy "github.com/maxvojtkov/pulumi-dokploy/provider"
"github.com/maxvojtkov/pulumi-dokploy/provider/pkg/version"
)
//go:embed schema.json
var pulumiSchema []byte
func main() {
tfbridge.Main(context.Background(), "dokploy",
dokploy.Provider(version.Version),
tfbridge.ProviderMetadata{PackageSchema: pulumiSchema})
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
// pulumi-tfgen-dokploy generates the Pulumi package schema and language SDKs
// from the bridged Dokploy Terraform provider.
package main
import (
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfgen"
dokploy "github.com/maxvojtkov/pulumi-dokploy/provider"
"github.com/maxvojtkov/pulumi-dokploy/provider/pkg/version"
)
func main() {
tfgen.Main("dokploy", dokploy.Provider(version.Version))
}

241
provider/go.mod Normal file
View File

@@ -0,0 +1,241 @@
module github.com/maxvojtkov/pulumi-dokploy/provider
go 1.25.11
require (
github.com/maxvojtkov/terraform-provider-dokploy v0.0.0
github.com/pulumi/pulumi-terraform-bridge/v3 v3.136.0
)
require (
cel.dev/expr v0.25.2 // indirect
cloud.google.com/go v0.123.0 // indirect
cloud.google.com/go/auth v0.20.0 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
cloud.google.com/go/compute/metadata v0.9.0 // indirect
cloud.google.com/go/iam v1.11.0 // indirect
cloud.google.com/go/monitoring v1.29.0 // indirect
cloud.google.com/go/storage v1.62.2 // indirect
github.com/BurntSushi/toml v1.6.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.33.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.56.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.56.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/ProtonMail/go-crypto v1.4.1 // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-cidr v1.1.0 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
github.com/armon/go-radix v1.0.0 // indirect
github.com/aws/aws-sdk-go-v2 v1.41.11 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.12 // indirect
github.com/aws/aws-sdk-go-v2/config v1.32.21 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.20 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.26 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.27 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.27 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.27 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.10 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.19 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.26 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.26 // indirect
github.com/aws/aws-sdk-go-v2/service/s3 v1.103.0 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.1.2 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.31.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.3 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.43.0 // indirect
github.com/aws/smithy-go v1.27.0 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charmbracelet/bubbles v1.0.0 // indirect
github.com/charmbracelet/bubbletea v1.3.10 // indirect
github.com/charmbracelet/colorprofile v0.4.3 // indirect
github.com/charmbracelet/lipgloss v1.1.0 // indirect
github.com/charmbracelet/x/ansi v0.11.7 // indirect
github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
github.com/charmbracelet/x/term v0.2.2 // indirect
github.com/cheggaaa/pb v1.0.29 // indirect
github.com/clipperhouse/displaywidth v0.11.0 // indirect
github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
github.com/cloudflare/circl v1.6.3 // indirect
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
github.com/djherbis/times v1.6.0 // indirect
github.com/edsrzf/mmap-go v1.1.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/envoyproxy/go-control-plane/envoy v1.37.0 // indirect
github.com/envoyproxy/protoc-gen-validate v1.3.3 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-git/gcfg/v2 v2.0.2 // indirect
github.com/go-git/go-billy/v6 v6.0.0-alpha.1 // indirect
github.com/go-git/go-git/v6 v6.0.0-alpha.4 // indirect
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
github.com/go-logr/logr v1.4.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.2.5 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/s2a-go v0.1.9 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.16 // indirect
github.com/googleapis/gax-go/v2 v2.22.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-cty v1.5.0 // indirect
github.com/hashicorp/go-getter v1.8.6 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-plugin v1.8.0 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.9.0 // indirect
github.com/hashicorp/hcl v1.0.1-vault-7 // indirect
github.com/hashicorp/hcl/v2 v2.24.0 // indirect
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-plugin-framework v1.19.0 // indirect
github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 // indirect
github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 // indirect
github.com/hashicorp/terraform-plugin-go v0.31.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.10.0 // indirect
github.com/hashicorp/terraform-plugin-sdk/v2 v2.40.1 // indirect
github.com/hashicorp/terraform-registry-address v0.4.0 // indirect
github.com/hashicorp/terraform-svchost v0.2.1 // indirect
github.com/hashicorp/yamux v0.1.2 // indirect
github.com/huandu/xstrings v1.3.3 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
github.com/imdario/mergo v0.3.15 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kevinburke/ssh_config v1.6.0 // indirect
github.com/klauspost/compress v1.18.7 // indirect
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
github.com/lucasb-eyer/go-colorful v1.4.1 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.24 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.27 // indirect
github.com/mitchellh/cli v1.1.5 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-ps v1.0.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/hashstructure v1.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/termenv v0.16.0 // indirect
github.com/natefinch/atomic v1.0.1 // indirect
github.com/oklog/run v1.2.0 // indirect
github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect
github.com/olekukonko/errors v1.1.0 // indirect
github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect
github.com/olekukonko/tablewriter v1.1.3 // indirect
github.com/opentofu/registry-address/v2 v2.0.0-20250611143131-d0a99bd8acdd // indirect
github.com/opentofu/svchost v0.0.0-20250610175836-86c9e5e3d8c8 // indirect
github.com/opentracing/basictracer-go v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pgavlin/fx v0.1.6 // indirect
github.com/pgavlin/fx/v2 v2.0.12 // indirect
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect
github.com/pjbgf/sha1cd v0.6.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/term v1.1.0 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/posener/complete v1.2.3 // indirect
github.com/pulumi-labs/pulumi-hcl v0.3.1 // indirect
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
github.com/pulumi/inflector v0.2.1 // indirect
github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet/v3 v3.110.0 // indirect
github.com/pulumi/pulumi-java v1.34.0 // indirect
github.com/pulumi/pulumi-yaml v1.38.1 // indirect
github.com/pulumi/pulumi/pkg/v3 v3.256.0 // indirect
github.com/pulumi/pulumi/sdk/v3 v3.256.0 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/rogpeppe/go-internal v1.14.1 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect
github.com/segmentio/asm v1.1.3 // indirect
github.com/segmentio/encoding v0.3.6 // indirect
github.com/sergi/go-diff v1.4.0 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/cobra v1.10.2 // indirect
github.com/spf13/pflag v1.0.10 // indirect
github.com/spiffe/go-spiffe/v2 v2.7.0 // indirect
github.com/teekennedy/goldmark-markdown v0.3.0 // indirect
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/ulikunitz/xz v0.5.15 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/yuin/goldmark v1.7.17 // indirect
github.com/zclconf/go-cty v1.18.1 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/collector/featuregate v1.64.0 // indirect
go.opentelemetry.io/collector/pdata v1.64.0 // indirect
go.opentelemetry.io/contrib/bridges/otelslog v0.20.0 // indirect
go.opentelemetry.io/contrib/detectors/gcp v1.44.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.69.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect
go.opentelemetry.io/otel v1.45.0 // indirect
go.opentelemetry.io/otel/bridge/opentracing v1.33.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.21.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0 // indirect
go.opentelemetry.io/otel/log v0.21.0 // indirect
go.opentelemetry.io/otel/metric v1.45.0 // indirect
go.opentelemetry.io/otel/sdk v1.45.0 // indirect
go.opentelemetry.io/otel/sdk/log v0.21.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.45.0 // indirect
go.opentelemetry.io/otel/trace v1.45.0 // indirect
go.opentelemetry.io/proto/otlp v1.11.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.54.0 // indirect
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect
golang.org/x/mod v0.37.0 // indirect
golang.org/x/net v0.57.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.22.0 // indirect
golang.org/x/sys v0.47.0 // indirect
golang.org/x/term v0.45.0 // indirect
golang.org/x/text v0.40.0 // indirect
golang.org/x/time v0.15.0 // indirect
golang.org/x/tools v0.47.0 // indirect
google.golang.org/api v0.283.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20260526163538-3dc84a4a5aaa // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d // indirect
google.golang.org/grpc v1.83.0 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/frand v1.5.1 // indirect
)
// The Terraform provider is developed alongside this repo. Replace with a
// tagged version once terraform-provider-dokploy is published.
replace github.com/maxvojtkov/terraform-provider-dokploy => ../../dokploy-teraform

765
provider/go.sum Normal file
View File

@@ -0,0 +1,765 @@
cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs=
cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=
cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=
cloud.google.com/go/auth v0.20.0 h1:kXTssoVb4azsVDoUiF8KvxAqrsQcQtB53DcSgta74CA=
cloud.google.com/go/auth v0.20.0/go.mod h1:942/yi/itH1SsmpyrbnTMDgGfdy2BUqIKyd0cyYLc5Q=
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.11.0 h1:KieQ9Pb+LLPak1O3Rv3GgCxhnmkYf7Xyh0P5HfF1jFM=
cloud.google.com/go/iam v1.11.0/go.mod h1:KP+nKGugNJW4LcLx1uEZcq1ok5sQHFaQehQNl4QDgV4=
cloud.google.com/go/kms v1.31.0 h1:LS8N92OxFDgOLg5NCo3OmbvjtQAIVT5gUHVLKIDHaFE=
cloud.google.com/go/kms v1.31.0/go.mod h1:YIyXZym11R5uovJJt4oN5eUL3oPmirF3yKeIh6QAf4U=
cloud.google.com/go/logging v1.18.0 h1:KhzZq+1cSkPH9YUaKLLhLtQxIHitVayBmk0sGfoM9+k=
cloud.google.com/go/logging v1.18.0/go.mod h1:ZGKnpBaURITh+g/uom2VhbiFoFWvejcrHPDhxFtU/gI=
cloud.google.com/go/longrunning v1.0.0 h1:lwzWEYD8+NkYV7dhexOz6kmlvajZA70+bW/xMhRVVdY=
cloud.google.com/go/longrunning v1.0.0/go.mod h1:8nqFBPOO1U/XkhWl0I19AMZEphrHi73VNABIpKYaTwM=
cloud.google.com/go/monitoring v1.29.0 h1:AHhDsFaSax1/4k+qlIDX/SDGe6hggnfXJ9dkgD9qBPY=
cloud.google.com/go/monitoring v1.29.0/go.mod h1:72NOVjJXHY/HBfoLT0+qlCZBT059+9VXLeAnL2PeeVM=
cloud.google.com/go/storage v1.62.2 h1:WgR4U9n7bIzXkkVnwPKKE8bkaKUNsHG+0MAAlh9DGU4=
cloud.google.com/go/storage v1.62.2/go.mod h1:cpYz/kRVZ+UQAF1uHeea10/9ewcRbxGoGNKsS9daSXA=
cloud.google.com/go/trace v1.16.0 h1:GmQovzFc5F0CNfl0VLgL64aoTtu7xsM0YajW2GlG9+E=
cloud.google.com/go/trace v1.16.0/go.mod h1:r+bdAn16dKLSV1G2D5v3e58IlQlizfxWrUfjx7kM7X0=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 h1:jHb/wfvRikGdxMXYV3QG/SzUOPYN9KEUUuC0Yd0/vC0=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1/go.mod h1:pzBXCYn05zvYIrwLgtK8Ap8QcjRg+0i76tMQdWN6wOk=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0/go.mod h1:7dCRMLwisfRH3dBupKeNCioWYUZ4SS09Z14H+7i8ZoY=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.5.0 h1:MaKvxE6D0KkjOg6Wd9M00iqP5PR0kUxCfiezes4JweM=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.5.0/go.mod h1:i2h9fsTFKZorh8RdV2IcSUf/Qj98GlTkrTvUbX/s8as=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 h1:nCYfgcSyHZXJI8J0IWE5MsCGlb2xp9fJiXyxWgmOFg4=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0/go.mod h1:ucUjca2JtSZboY8IoUqyQyuuXvwbMBVwFOm0vdQPNhA=
github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2 h1:RHK7bS+HQMslb1sZpAokUt+zTVmue0hKSs2C791hhzU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.7.2/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.33.0 h1:l7+6kwRMJNwdCvYdDl7Eax+wzEYHSnNY7zrrfbhDdTA=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.33.0/go.mod h1:pJTkW8hEUIIi3Pf65lPZOnn4Y81yCllX6IWk2jNXdkM=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.56.0 h1:O2sXMyJh8b7devAGdE+163xtRurt0RVpB6DIzX5vGfg=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.56.0/go.mod h1:hEpiGU18xf70qb3jbTcIggWAiEfX/cOIVc2OTe4OegA=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.56.0 h1:ZIT85vKP7LBS84XJ0WdJ3dPOX3iz4j3c0+lpajGQMyo=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.56.0/go.mod h1:rqP9UEhOXv9WhQ7Gjz+G5y/pf8+BJZW5/Ts0AhE0PwE=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.56.0 h1:0YP0+/ixwu+Uqeu/FGiBZNQ19huiUxxiPXIc9WsLKuQ=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.56.0/go.mod h1:6ZZMQhZKDvUvkJw2rc+oDP90tMMzuU/J+5HG1ZmPOmE=
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM=
github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo=
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=
github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/aws/aws-sdk-go-v2 v1.41.11 h1:9PRf7jyTMEUM6fuNRAJa2mO/skJfrF50rENJwf2LXqw=
github.com/aws/aws-sdk-go-v2 v1.41.11/go.mod h1:iiUX27gOXRuYaoeUVXhUpPwjJHzISfPAjjcuhUbLSVs=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.12 h1:oRtsqWgxbpeXrOlxOoQStx2M9WNbIkPq4C4Xn1or6bc=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.12/go.mod h1:Zg0Oe9qT+9wcezlm1a64wGJp2qZdRElVxo/seJf7jYU=
github.com/aws/aws-sdk-go-v2/config v1.32.21 h1:1i1v5jWn6iNPl7zkH4VwIXQOb+OMqMRFNjdHQeZbFVo=
github.com/aws/aws-sdk-go-v2/config v1.32.21/go.mod h1:7NXDJjk0e4QOMv3Y3ppwALx3ifdSQHzCACFtRX5J1hI=
github.com/aws/aws-sdk-go-v2/credentials v1.19.20 h1:nIGz0+cQKwijxSsWNpggvPxjxFMtrAHNj16RYzGbu2Q=
github.com/aws/aws-sdk-go-v2/credentials v1.19.20/go.mod h1:/UQHYia3DSeilGdchXJDEVzJws15XuZSdnTlwbTBg0Q=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.26 h1:a1VPHz7eG7mVNHWHXUcCyC8rQDBEr4k+o4HJYbSoYZ0=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.26/go.mod h1:9G8LPblMwaodeQdS+IfDBgPqABDctJLpyZ/M6jflE6s=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.27 h1:8sPbKi1/KRHwl5oR3qN9mUXestCeHuaRutxylnr/eVY=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.27/go.mod h1:QV9IVIopJ1dpQUno0f9VYDUwOEjj8u0iEJ4JiZVre3Y=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.27 h1:9d8AoASQY9UwrOSmiJ7uSM0MGUPFhnenwSvpaFfat2c=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.27/go.mod h1:x0rldpsnUQaQIs4Rh+Vwm9Z/0vI6BxadGtsgJfZFb8s=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.27 h1:i49S7g2smFWmlconi97Nn8dxb7jSQ0TeOFD20NX3M+o=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.27/go.mod h1:qiLes3uVQAK+cpb837HUEhypYKGBz2ZCDcDl5BYQtpM=
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.4 h1:4GBRq2ZWJkOy6S4HRNuJJpaZ5KXPNIDe/QJysoyXglI=
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.74.4/go.mod h1:Op4lD9kBH1InUC+DxIALi0ALAASdpY71vRdtevYFVrs=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.10 h1:d5/908OJ4bXg8lyjeMPvXetEKqoDoLi5Owy1zNue3yg=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.10/go.mod h1:a57l7Hwh+FWI+we50g5NPJHYUKeJKfXbc4w8SyXu8Ig=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.19 h1:q/Kqqr7Jz4IKSHbFhsCwm5Q4WU7NUTY9tc4nHuBg7pg=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.19/go.mod h1:kTMPExiQ8IW43fOffpm0npgLopHXzTxZ/1CnB2c8c0E=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.26 h1:oIRaBVJ2CxT7T61l3JkBCW/rnyh2TFZIRL71MvJTKRI=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.26/go.mod h1:1gCTZPMlqAUSFoFbkl35hKtTpE96WFl7ORvDXmSLpRc=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.26 h1:eiwOPA7MW2LZzSfULHOFWdekrv59pEpDckN37IiK1EM=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.26/go.mod h1:qM4B4ioTSHmkcKKhyoQMc3fcgl+d4mgqdJGzBJApYy0=
github.com/aws/aws-sdk-go-v2/service/kms v1.53.1 h1:ZG4esUs5NrDr6lwKDZLE+746tq7nxS8PacNfHA9mOjk=
github.com/aws/aws-sdk-go-v2/service/kms v1.53.1/go.mod h1:f8U49SXXH38WX8B1oFXG8igfV+MZ5mgM9b/trTlBf2E=
github.com/aws/aws-sdk-go-v2/service/s3 v1.103.0 h1:BmOawMUDBUiFAMgk8zTp3w5iei2Vh5j4mwIHTXOuGTc=
github.com/aws/aws-sdk-go-v2/service/s3 v1.103.0/go.mod h1:pivHPRqURZdlzSlGmULol6xBEoy7hHmWW/pIfAkc8Tw=
github.com/aws/aws-sdk-go-v2/service/signin v1.1.2 h1:qwU4CNor4G2gRW3Na24FWOCZSEvr967IAV3D+MXxdE0=
github.com/aws/aws-sdk-go-v2/service/signin v1.1.2/go.mod h1:vwIj2P3URYf7ZtOQkO2iVbAaR8qFhqMv05w3aPPA5XA=
github.com/aws/aws-sdk-go-v2/service/sso v1.31.0 h1:cMDUWhi7vlmGFj6rldHofjnAQhLLBWwRvNRbtEoyZo4=
github.com/aws/aws-sdk-go-v2/service/sso v1.31.0/go.mod h1:VfGCm6HLUGwcouY6zjQJd81PoFsb8sfSmKd5QCg9XXc=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.3 h1:/pKy3mNES+ppFHf3g/XmI95+f3vdeXnkWYObByoYGAg=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.3/go.mod h1:0z2rhlVAjsYeBzV8fdT4jR23Nq+fYhoJNSJN+4SBlqM=
github.com/aws/aws-sdk-go-v2/service/sts v1.43.0 h1:HN43uYvF8D2NtaPTeE4L3HMvXgd+RtqEqrea4uUztkM=
github.com/aws/aws-sdk-go-v2/service/sts v1.43.0/go.mod h1:qzhDlfw1BRYyoNofevemNzrlRpUXa0BJamWx7klrR8w=
github.com/aws/smithy-go v1.27.0 h1:ZoFioDKJxkSIW2otF9T0aPtNlUwhdVCcuZh/rzH9Hus=
github.com/aws/smithy-go v1.27.0/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/bazelbuild/buildtools v0.0.0-20260211083412-859bfffeef82 h1:PmoVmwzAnGb0iCjulb7Mgsaqw2Wj36LQJ8VyYaFe/ak=
github.com/bazelbuild/buildtools v0.0.0-20260211083412-859bfffeef82/go.mod h1:PLNUetjLa77TCCziPsz0EI8a6CUxgC+1jgmWv0H25tg=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw=
github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/bubbles v1.0.0 h1:12J8/ak/uCZEMQ6KU7pcfwceyjLlWsDLAxB5fXonfvc=
github.com/charmbracelet/bubbles v1.0.0/go.mod h1:9d/Zd5GdnauMI5ivUIVisuEm3ave1XwXtD1ckyV6r3E=
github.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw=
github.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4=
github.com/charmbracelet/colorprofile v0.4.3 h1:QPa1IWkYI+AOB+fE+mg/5/4HRMZcaXex9t5KX76i20Q=
github.com/charmbracelet/colorprofile v0.4.3/go.mod h1:/zT4BhpD5aGFpqQQqw7a+VtHCzu+zrQtt1zhMt9mR4Q=
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
github.com/charmbracelet/x/ansi v0.11.7 h1:kzv1kJvjg2S3r9KHo8hDdHFQLEqn4RBCb39dAYC84jI=
github.com/charmbracelet/x/ansi v0.11.7/go.mod h1:9qGpnAVYz+8ACONkZBUWPtL7lulP9No6p1epAihUZwQ=
github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI=
github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q=
github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo=
github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30=
github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=
github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0=
github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=
github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8=
github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJzQ7y/sA=
github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c=
github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0=
github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=
github.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=
github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
github.com/git-pkgs/manifests v0.4.1 h1:CWml+TrRXVzrfNJ2pTNKLqyi+9y/BFiQP/BX3pL4pPQ=
github.com/git-pkgs/manifests v0.4.1/go.mod h1:7SPFwU9diUG1Az682/p4ZupHJkfpbWKwRvNPwCcOeVs=
github.com/git-pkgs/packageurl-go v0.3.1 h1:WM3RBABQZLaRBxgKyYughc3cVBE8KyQxbSC6Jt5ak7M=
github.com/git-pkgs/packageurl-go v0.3.1/go.mod h1:rcIxiG37BlQLB6FZfgdj9Fm7yjhRQd3l+5o7J0QPAk4=
github.com/git-pkgs/purl v0.1.10 h1:NMjeF10nzFn3tdQlz6rbmHB+i+YkyrFQxho3e33ePTQ=
github.com/git-pkgs/purl v0.1.10/go.mod h1:C5Vp/kyZ/wGckCLexx4wPVfUxEiToRkdsOPh5Z7ig/I=
github.com/git-pkgs/vers v0.2.4 h1:Zr3jR/Xf1i/6cvBaJKPxhCwjzqz7uvYHE0Fhid/GPBk=
github.com/git-pkgs/vers v0.2.4/go.mod h1:biTbSQK1qdbrsxDEKnqe3Jzclxz8vW6uDcwKjfUGcOo=
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-git/gcfg/v2 v2.0.2 h1:MY5SIIfTGGEMhdA7d7JePuVVxtKL7Hp+ApGDJAJ7dpo=
github.com/go-git/gcfg/v2 v2.0.2/go.mod h1:/lv2NsxvhepuMrldsFilrgct6pxzpGdSRC13ydTLSLs=
github.com/go-git/go-billy/v6 v6.0.0-alpha.1 h1:xVjAR4oUvrKy7/Xuw/lLlV3gkxR3KO2H8W+MamuVVsQ=
github.com/go-git/go-billy/v6 v6.0.0-alpha.1/go.mod h1:eaCUpHbedW7//EwcYmUDfJe2N6sJC9O12AT0OTqJR1E=
github.com/go-git/go-git-fixtures/v6 v6.0.0-alpha.1 h1:gmqi2jvsreu0s8JMLylYDFq4sbjHwwlhktMw0DUg3mA=
github.com/go-git/go-git-fixtures/v6 v6.0.0-alpha.1/go.mod h1:ECf1MqJlBdYpKggBrOXjo/0EnvRZx6D++I86UYjPgAQ=
github.com/go-git/go-git/v6 v6.0.0-alpha.4 h1:aDTc2UGanmaE7FkGLSlBEB9nohMnQ+RKXcfq/D+esDQ=
github.com/go-git/go-git/v6 v6.0.0-alpha.4/go.mod h1:4ODa/G7hPWrh4Y+7lmt59Ij3zW38IEfvRoAZxLYYBhc=
github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8=
github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=
github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=
github.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=
github.com/googleapis/enterprise-certificate-proxy v0.3.16 h1:F/VPrx0YPBdksZJQdCAp0WUsqnNmZpUZszzfYt0M5Dw=
github.com/googleapis/enterprise-certificate-proxy v0.3.16/go.mod h1:9Yb0eAkH/Xqhvv3zbeKf/+wMJqCeocWc6KIhDvEAuYE=
github.com/googleapis/gax-go/v2 v2.22.0 h1:PjIWBpgGIVKGoCXuiCoP64altEJCj3/Ei+kSU5vlZD4=
github.com/googleapis/gax-go/v2 v2.22.0/go.mod h1:irWBbALSr0Sk3qlqb9SyJ1h68WjgeFuiOzI4Rqw5+aY=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72 h1:vTCWu1wbdYo7PEZFem/rlr01+Un+wwVmI7wiegFdRLk=
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72/go.mod h1:Vn+BBgKQHVQYdVQ4NZDICE1Brb+JfaONyDHr3q07oQc=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-cty v1.5.0 h1:EkQ/v+dDNUqnuVpmS5fPqyY71NXVgT5gf32+57xY8g0=
github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM=
github.com/hashicorp/go-getter v1.8.6 h1:9sQboWULaydVphxc4S64oAI4YqpuCk7nPmvbk131ebY=
github.com/hashicorp/go-getter v1.8.6/go.mod h1:nVH12eOV2P58dIiL3rsU6Fh3wLeJEKBOJzhMmzlSWoo=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-plugin v1.8.0 h1:ie8S6RRY8RvB2usYZv+AAZ/wBvx2AU5p5QeP5j/FORs=
github.com/hashicorp/go-plugin v1.8.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8=
github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=
github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=
github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM=
github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
github.com/hashicorp/go-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw=
github.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA=
github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/hc-install v0.9.4 h1:KKWOpUG0EqIV63Qk2GGFrZ0s275NVs5lKf9N5vjBNoc=
github.com/hashicorp/hc-install v0.9.4/go.mod h1:4LRYeEN2bMIFfIv57ldMWt9awfuZhvpbRt0vWmv51WU=
github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I=
github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE=
github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM=
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 h1:T1Q6ag9tCwun16AW+XK3tAql24P4uTGUMIn1/92WsQQ=
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE=
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/terraform-exec v0.25.1 h1:PRutYRGM8pixV3B8812NYoBK5O+yuf3qcB/70KFKGiU=
github.com/hashicorp/terraform-exec v0.25.1/go.mod h1:+izOYrs9sKMQK4OYvGDnrSSJHY/pm4e4eXFqSL2Q5mA=
github.com/hashicorp/terraform-json v0.27.2 h1:BwGuzM6iUPqf9JYM/Z4AF1OJ5VVJEEzoKST/tRDBJKU=
github.com/hashicorp/terraform-json v0.27.2/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE=
github.com/hashicorp/terraform-plugin-framework v1.19.0 h1:q0bwyhxAOR3vfdgbk9iplv3MlTv/dhBHTXjQOtQDoBA=
github.com/hashicorp/terraform-plugin-framework v1.19.0/go.mod h1:YRXOBu0jvs7xp4AThBbX4mAzYaMJ1JgtFH//oGKxwLc=
github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 h1:SJXL5FfJJm17554Kpt9jFXngdM6fXbnUnZ6iT2IeiYA=
github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0/go.mod h1:p0phD0IYhsu9bR4+6OetVvvH59I6LwjXGnTVEr8ox6E=
github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 h1:OQnlOt98ua//rCw+QhBbSqfW3QbwtVrcdWeQN5gI3Hw=
github.com/hashicorp/terraform-plugin-framework-validators v0.18.0/go.mod h1:lZvZvagw5hsJwuY7mAY6KUz45/U6fiDR0CzQAwWD0CA=
github.com/hashicorp/terraform-plugin-go v0.31.0 h1:0Fz2r9DQ+kNNl6bx8HRxFd1TfMKUvnrOtvJPmp3Z0q8=
github.com/hashicorp/terraform-plugin-go v0.31.0/go.mod h1:A88bDhd/cW7FnwqxQRz3slT+QY6yzbHKc6AOTtmdeS8=
github.com/hashicorp/terraform-plugin-log v0.10.0 h1:eu2kW6/QBVdN4P3Ju2WiB2W3ObjkAsyfBsL3Wh1fj3g=
github.com/hashicorp/terraform-plugin-log v0.10.0/go.mod h1:/9RR5Cv2aAbrqcTSdNmY1NRHP4E3ekrXRGjqORpXyB0=
github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0=
github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.40.1 h1:2yPUd7esMOpuTaG3y1iEla1iw+tla+3ZEkkBnmOAre4=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.40.1/go.mod h1:sq8qsxh+PwdvTQFcd17kfCoBgQo46ADNMvCpKE7t/gY=
github.com/hashicorp/terraform-plugin-testing v1.16.0 h1:GB97nGnJ1hESpDrCjqZig38RodSF0gdRzxlDupLXP38=
github.com/hashicorp/terraform-plugin-testing v1.16.0/go.mod h1:eQPYAy9xFMV7xtIFX8Y+wJGtUB++HBl329zCF6PBMZk=
github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk=
github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE=
github.com/hashicorp/terraform-svchost v0.2.1 h1:ubvrTFw3Q7CsoEaX7V06PtCTKG3wu7GyyobAoN4eF3Q=
github.com/hashicorp/terraform-svchost v0.2.1/go.mod h1:zDMheBLvNzu7Q6o9TBvPqiZToJcSuCLXjAXxBslSky4=
github.com/hashicorp/vault/api v1.22.0 h1:+HYFquE35/B74fHoIeXlZIP2YADVboaPjaSicHEZiH0=
github.com/hashicorp/vault/api v1.22.0/go.mod h1:IUZA2cDvr4Ok3+NtK2Oq/r+lJeXkeCrHRmqdyWfpmGM=
github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
github.com/hexops/autogold v1.3.0 h1:IEtGNPxBeBu8RMn8eKWh/Ll9dVNgSnJ7bp/qHgMQ14o=
github.com/hexops/autogold v1.3.0/go.mod h1:d4hwi2rid66Sag+BVuHgwakW/EmaFr8vdTSbWDbrDRI=
github.com/hexops/autogold/v2 v2.3.1 h1:GcDwp9TkPkDG/wVodudePKPG8HbvEA8o8Z9hySIuAC4=
github.com/hexops/autogold/v2 v2.3.1/go.mod h1:1vQ1sj0yXQNn8VOlQeefQPXTLr9Qy9cf8pMDanZ4Gmo=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/hexops/valast v1.5.0 h1:FBTuvVi0wjTngtXJRZXMbkN/Dn6DgsUsBwch2DUJU8Y=
github.com/hexops/valast v1.5.0/go.mod h1:Jcy1pNH7LNraVaAZDLyv21hHg2WBv9Nf9FL6fGxU7o4=
github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4=
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kevinburke/ssh_config v1.6.0 h1:J1FBfmuVosPHf5GRdltRLhPJtJpTlMdKTBjRgTaQBFY=
github.com/kevinburke/ssh_config v1.6.0/go.mod h1:q2RIzfka+BXARoNexmF9gkxEX7DmvbW9P4hIVx2Kg4M=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.7 h1:aUyZsS4kH3QTKurYhAOwAHxllVPnOthb3vPfnF1Ehjw=
github.com/klauspost/compress v1.18.7/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/lucasb-eyer/go-colorful v1.4.1 h1:1EO+WB73+EH8EVbzlrG3KLAfEypQWVHIBqlTf+2hNss=
github.com/lucasb-eyer/go-colorful v1.4.1/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.24 h1:tGZZoVgT/KiqK1c8ocVLeDS8BSWMRd47J3Lbz7vsReI=
github.com/mattn/go-isatty v0.0.24/go.mod h1:nMCL3Zebbrt45jsMDgnfIwz6ydEQApk5oEI3HqDio6A=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.27 h1:Feg/Oou5zI/wnpgDF6omIU0OokC9GxLC/WRknhVlIR0=
github.com/mattn/go-runewidth v0.0.27/go.mod h1:3qAiGCV4Koz/yuveO58qUefmUTRm8r0IGEXZ9jeHp/8=
github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng=
github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y=
github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A=
github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM=
github.com/nightlyone/lockfile v1.0.0 h1:RHep2cFKK4PonZJDdEl4GmkabuhbsRMgk/k3uAmxBiA=
github.com/nightlyone/lockfile v1.0.0/go.mod h1:rywoIealpdNse2r832aiD9jRk8ErCatROs6LzC841CI=
github.com/oklog/run v1.2.0 h1:O8x3yXwah4A73hJdlrwo/2X6J62gE5qTMusH0dvz60E=
github.com/oklog/run v1.2.0/go.mod h1:mgDbKRSwPhJfesJ4PntqFUbKQRZ50NgmZTSPlFA0YFk=
github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc=
github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0=
github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM=
github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 h1:jrYnow5+hy3WRDCBypUFvVKNSPPCdqgSXIE9eJDD8LM=
github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew=
github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA=
github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM=
github.com/opentofu/registry-address/v2 v2.0.0-20250611143131-d0a99bd8acdd h1:YAAnzmyOoMvm5SuGXL4hhlfBgqz92XDfORGPV3kmQFc=
github.com/opentofu/registry-address/v2 v2.0.0-20250611143131-d0a99bd8acdd/go.mod h1:7M92SvuJm1WBriIpa4j0XmruU9pxkgPXmRdc6FfAvAk=
github.com/opentofu/svchost v0.0.0-20250610175836-86c9e5e3d8c8 h1:J3pmsVB+nGdfNp5HWdEAC96asYgc7S6J724ICrYDCTk=
github.com/opentofu/svchost v0.0.0-20250610175836-86c9e5e3d8c8/go.mod h1:0kKTcD9hUrbAz41GWp8USa/+OuI8QKirU3qdCWNa3jI=
github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0=
github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M=
github.com/pgavlin/fx/v2 v2.0.12 h1:SjjaJ68Dt8Z4zHwOpY/RPijd7lShs6xYupJbF9ra00M=
github.com/pgavlin/fx/v2 v2.0.12/go.mod h1:M/nF/ooAOy+NUBooYYXl2REARzJ/giPJxfMs8fINfKc=
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo=
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE=
github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU=
github.com/pjbgf/sha1cd v0.6.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/pulumi-labs/pulumi-hcl v0.3.1 h1:Fp8Nc/owglgUqVPodZ4ZFxUuyydiYUXqtLMhmuIOX8U=
github.com/pulumi-labs/pulumi-hcl v0.3.1/go.mod h1:DQS4ZHIFxV4mzVd0By5WohxbonVRKWhlAhXIkMAeQK0=
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
github.com/pulumi/inflector v0.2.1 h1:bqyiish3tq//vLeLiEstSFE5K7RNjy/ce47ed4QATu8=
github.com/pulumi/inflector v0.2.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY=
github.com/pulumi/providertest v0.7.0 h1:nXydemrnkJfil6sd8AtvO81gJOTzYc1wFfgtco4zWDc=
github.com/pulumi/providertest v0.7.0/go.mod h1:R7nigJF1sE3yUtNQSozNSfsUl/gK4xIDW0Mxmacl6IY=
github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet/v3 v3.110.0 h1:3ZVrcJAP3ho1YSYT2n/UqlKBEjGY4ePfmjknjHXAXi0=
github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet/v3 v3.110.0/go.mod h1:sZ26/AWTq2jYFcc26sTFK+1mKiGsOETeFltYqpBN7E4=
github.com/pulumi/pulumi-java v1.34.0 h1:UiwcJfvb8dFu90Ey50Q+gCRQGiczfaX4n9e63VkEwBU=
github.com/pulumi/pulumi-java v1.34.0/go.mod h1:/tqIv+dbepDGuaGtlEOFb83Fgko4uE783VeGN7BVeg8=
github.com/pulumi/pulumi-terraform-bridge/v3 v3.136.0 h1:MB+m/Rg1NKCAcxICoDR0nAE7SzjE7W7NnBBSOZouwc4=
github.com/pulumi/pulumi-terraform-bridge/v3 v3.136.0/go.mod h1:XOQPUACb9ZTlly/7t7w4r2VnanhjnhlgZJOvMxfeTU0=
github.com/pulumi/pulumi-yaml v1.38.1 h1:FquTa8vjvKXreiBHDmuUD9jaZc5y0WXYvRYey+Wrzd4=
github.com/pulumi/pulumi-yaml v1.38.1/go.mod h1:Vh0fhfZGckj1Bqwdcr3buXjAP+VsseEuPjRl+SsOMdo=
github.com/pulumi/pulumi/pkg/v3 v3.256.0 h1:uXTo11w2S5scowuuv6Z5yMzxz9NmpYnogNBCeCUziWc=
github.com/pulumi/pulumi/pkg/v3 v3.256.0/go.mod h1:FdxtC8Mia2ZjO80xPOTNKusgF8Ae16GQe2LqhXv8pNw=
github.com/pulumi/pulumi/sdk/v3 v3.256.0 h1:OrkIu7Iw3HUcMtoEy2uzpD21C32B5EYBLBgBoh/uQPM=
github.com/pulumi/pulumi/sdk/v3 v3.256.0/go.mod h1:pyX/FL1Ta3mn4UPfYh2LKG+q/90i2+Jnl0OX4cS+b9U=
github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI=
github.com/pulumi/terraform-diff-reader v0.0.2/go.mod h1:sZ9FUzGO+yM41hsQHs/yIcj/Y993qMdBxBU5mpDmAfQ=
github.com/rhysd/go-fakeio v1.0.0 h1:+TjiKCOs32dONY7DaoVz/VPOdvRkPfBkEyUDIpM8FQY=
github.com/rhysd/go-fakeio v1.0.0/go.mod h1:joYxF906trVwp2JLrE4jlN7A0z6wrz8O6o1UjarbFzE=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc=
github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg=
github.com/segmentio/encoding v0.3.6 h1:E6lVLyDPseWEulBmCmAKPanDd3jiyGDo5gMcugCRwZQ=
github.com/segmentio/encoding v0.3.6/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM=
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spiffe/go-spiffe/v2 v2.7.0 h1:uXe1MflJoHw58wAUvxVlcM7WpKtijWG7I1UidcGh6g4=
github.com/spiffe/go-spiffe/v2 v2.7.0/go.mod h1:47Q0Q9/AqGha8QLHp+kxpH4Wca7X7EnOtlIJy3mxZ3U=
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/teekennedy/goldmark-markdown v0.3.0 h1:ik9/biVGCwGWFg8dQ3KVm2pQ/wiiG0whYiUcz9xH0W8=
github.com/teekennedy/goldmark-markdown v0.3.0/go.mod h1:kMhDz8La77A9UHvJGsxejd0QUflN9sS+QXCqnhmxmNo=
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.7.17 h1:p36OVWwRb246iHxA/U4p8OPEpOTESm4n+g+8t0EE5uA=
github.com/yuin/goldmark v1.7.17/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
github.com/zclconf/go-cty v1.18.1 h1:yEGE8M4iIZlyKQURZNb2SnEyZlZHUcBCnx6KF81KuwM=
github.com/zclconf/go-cty v1.18.1/go.mod h1:qpnV6EDNgC1sns/AleL1fvatHw72j+S+nS+MJ+T2CSg=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM=
github.com/zclconf/go-cty-yaml v1.2.0 h1:GDyL4+e/Qe/S0B7YaecMLbVvAR/Mp21CXMOSiCTOi1M=
github.com/zclconf/go-cty-yaml v1.2.0/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/collector/featuregate v1.64.0 h1:lWEUtzSSPxR4n9PdQ/BQrDUaL5d49gCk2vpITBjMYVk=
go.opentelemetry.io/collector/featuregate v1.64.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU=
go.opentelemetry.io/collector/internal/testutil v0.158.0 h1:ypt51JFMdHKoB6nODafWcUq9MiexCelDJ2zxXNu1xWo=
go.opentelemetry.io/collector/internal/testutil v0.158.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE=
go.opentelemetry.io/collector/pdata v1.64.0 h1:P3HDQLm/ksHWBbaWqtlXhAvC/4lTL5pqIG8TRScNDXI=
go.opentelemetry.io/collector/pdata v1.64.0/go.mod h1:aftmWhlLcl6WCUmquMr34Y2ufd+HtpQWu/zLQra2fGs=
go.opentelemetry.io/contrib/bridges/otelslog v0.20.0 h1:oEl2Pw/i4OQwhAuda2pAHFAcOMivA+Xa+iTccBfab/g=
go.opentelemetry.io/contrib/bridges/otelslog v0.20.0/go.mod h1:yMSQaiiq5dpfrSJCYLBcqFeJkFFI67seT4ngvx6jfVo=
go.opentelemetry.io/contrib/detectors/gcp v1.44.0 h1:NmLfL734pJhM0JKaYd2Y28+nY9dPRWYAAbxhRCrKXPw=
go.opentelemetry.io/contrib/detectors/gcp v1.44.0/go.mod h1:tNAsgd8avTGke1+MndXlU5Cru4PQ9Ai/cCNWQv/ZJ/s=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.69.0 h1:2yEATaop1/a1I4psnSLgWVPLWwCzkqWakgJy7xTDVy0=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.69.0/go.mod h1:D7J12YRapIekYyPWgGPlA/23pRmpSEZC5xJC/TTLI9U=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI=
go.opentelemetry.io/otel v1.45.0 h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU=
go.opentelemetry.io/otel v1.45.0/go.mod h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ=
go.opentelemetry.io/otel/bridge/opentracing v1.33.0 h1:eH88qvKdY7ns7Xu6WlJBQNOzZ3MVvBR6tEl2euaYS9w=
go.opentelemetry.io/otel/bridge/opentracing v1.33.0/go.mod h1:FNai/nhRSn/kHyv+V1zaf/30BU8hO/DXo0MvV0PaUS8=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.21.0 h1:WseeVYf5dJZTsyPiyW5L14k5qsSibqXAMTSiFEDiWr0=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.21.0/go.mod h1:SiLZnQS6Qk2eCpvr2CH/XMAOa64TWGXxEZJZCpD2Lmc=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0 h1:QRefszxJmfPdjXUUm3j6iDzY03mTPXMjqErFqQ67vUg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0/go.mod h1:Tiz03lTBVBrm7eWZBOidzEaYaJa8tjwGUGv6d8mlTyk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0 h1:fG5MCxGz8+2VtrN/WgqSpJFctVz24gpxj8CxkKmc8Ww=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0/go.mod h1:BmAYTn+3ysbRe+IU2msxmf5Rx3g6DHvex+tWI3LdhYI=
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0 h1:TC+BewnDpeiAmcscXbGMfxkO+mwYUwE/VySwvw88PfA=
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0/go.mod h1:J/ZyF4vfPwsSr9xJSPyQ4LqtcTPULFR64KwTikGLe+A=
go.opentelemetry.io/otel/log v0.21.0 h1:SLsVDGmtyBrdw8/a2Z0bOIxou/+bN4z56GebH7T0LvA=
go.opentelemetry.io/otel/log v0.21.0/go.mod h1:iReetQrZL9Wyg84cCkOoCmqDHS5RCFfyxC7J+r8fn8g=
go.opentelemetry.io/otel/metric v1.45.0 h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M=
go.opentelemetry.io/otel/metric v1.45.0/go.mod h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s=
go.opentelemetry.io/otel/metric/x v0.67.0 h1:PcicCNZFkZ4bXfSooXdo3WN7RBOVOtjVdo1wD358Uns=
go.opentelemetry.io/otel/metric/x v0.67.0/go.mod h1:FBjCWZe6wgcqxcMtjdGiClDKXb2YxxXii0CXftE4QtI=
go.opentelemetry.io/otel/sdk v1.45.0 h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw=
go.opentelemetry.io/otel/sdk v1.45.0/go.mod h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA=
go.opentelemetry.io/otel/sdk/log v0.21.0 h1:QsE7XSR0ktQdKmRKGnR+f1ObGF32WG+7MER/P9KgmYc=
go.opentelemetry.io/otel/sdk/log v0.21.0/go.mod h1:m9mApjCoD2/1QuKCAptjv+BrG9WKOvQLVdNx+iBldTo=
go.opentelemetry.io/otel/sdk/log/logtest v0.21.0 h1:X+JBBgKlswCGYsmgL0CnoUUtlE//VB345c84jYAYkdQ=
go.opentelemetry.io/otel/sdk/log/logtest v0.21.0/go.mod h1:HD1575K8e6sIFBBDd5tZB3t9DlMytWXq9FuR+Y4rfjE=
go.opentelemetry.io/otel/sdk/metric v1.45.0 h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o=
go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA=
go.opentelemetry.io/otel/trace v1.45.0 h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag=
go.opentelemetry.io/otel/trace v1.45.0/go.mod h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc=
go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk=
go.opentelemetry.io/proto/otlp v1.11.0/go.mod h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E=
go.opentelemetry.io/proto/slim/otlp v1.11.0 h1:zB37f+f99+y6UIZR4h7UpwbXd5kFNyip35U7GaJ/Jik=
go.opentelemetry.io/proto/slim/otlp v1.11.0/go.mod h1:mI3DeND+VXZuA4keqFPKDJ3BklwveYm1JqBcEWKDEOM=
go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.4.0 h1:mt+DWtks0biKnz0jXMpDbxWN0CHJi6OJDKe4GcREkcs=
go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.4.0/go.mod h1:7UXaX/7uT+kumUHd3LIWyjMlklEp0mPlrE9xmtbG6/8=
go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.4.0 h1:rLHkdB6eHDiRSIoz0cvNuTJsVJBxaL6IyS1e9BSaXLY=
go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.4.0/go.mod h1:BrX0dmOGsMuWNXXbFafTD7Gb6F3yK+2czVQ6+c24Cnk=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
gocloud.dev v0.46.1-0.20260629181806-a12ddce30739 h1:F571njcRLc2TIur9Ym3fHnOVaD7A7vsOliysXoq7+fQ=
gocloud.dev v0.46.1-0.20260629181806-a12ddce30739/go.mod h1:8d4USd9IwYeHSoVmpdo/zOIhKK5Wf0v3/5lnCOee/8w=
gocloud.dev/secrets/hashivault v0.46.0 h1:gQlpb/1wEwVoOavi/RGeQs5WlnzYddcDW81b0kywI0w=
gocloud.dev/secrets/hashivault v0.46.0/go.mod h1:I9RZ3S1+v/o++SRTJzSJ904LUGaBx7cpKVrzobm2SIA=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw=
golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk=
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ=
golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE=
golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU=
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q=
golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/api v0.283.0 h1:0lkp8u0MPwJVHqRL+nJlMAoZVVzbmiXmFHXMOTmSPik=
google.golang.org/api v0.283.0/go.mod h1:6Wssta4c5n9qHq5CBhmlai5h/PUa1djdDAIhYEHyvcM=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/genproto v0.0.0-20260526163538-3dc84a4a5aaa h1:mfj8IS4EA4VAR9a6QDVxTQkLY64iBybb5QI1B4pXrpE=
google.golang.org/genproto v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:fuT7yonGw1Iq2oa+YC0fyqPPQJkgo/54gPNC6VitOkI=
google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d h1:FarXi840EJWSHYTN3ERkADbPWjl307+FGrA22KAVjjc=
google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d/go.mod h1:K/+WGbmBY7aNW1HDw1fJnKYo10i0DkAX6pows00dLig=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d h1:IL4hdHzcUv2l/gcg98/Rj3FbtE6axwqslOW8SW0C+S0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.83.0 h1:JeNZEKJFbQxArAMl+hiytHauacDNqJUllNfmIMmpqnQ=
google.golang.org/grpc v1.83.0/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
lukechampine.com/frand v1.5.1 h1:fg0eRtdmGFIxhP5zQJzM1lFDbD6CUfu/f+7WgAZd5/w=
lukechampine.com/frand v1.5.1/go.mod h1:4VstaWc2plN4Mjr10chUD46RAVGWhpkZ5Nja8+Azp0Q=
mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4=
mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s=
pgregory.net/rapid v1.3.0 h1:vBvO0VSqti75J1jjYqpgPNBLKMd1+gxa9fYo7vk/Exc=
pgregory.net/rapid v1.3.0/go.mod h1:dPlE4OBBxgXPqkP79flB6sJL1dx5azpI7HQ9MY9Z7uk=

View File

@@ -0,0 +1,4 @@
package version
// Version is initialized by the Go linker to contain the semver of this build.
var Version string

165
provider/resources.go Normal file
View File

@@ -0,0 +1,165 @@
// Package dokploy bridges the Dokploy Terraform provider into a Pulumi
// provider. The Terraform provider itself lives in
// github.com/maxvojtkov/terraform-provider-dokploy; everything in this file is
// mapping — Terraform type names to Pulumi tokens, and Terraform provider
// configuration to Pulumi configuration.
package dokploy
import (
_ "embed"
pfbridge "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge"
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge"
tfshim "github.com/maxvojtkov/terraform-provider-dokploy/shim"
)
// bridgeMetadata carries auto-aliasing state between tfgen runs so that token
// renames stay backwards compatible. tfgen rewrites it; the checked-in `{}`
// placeholder keeps the package compiling before the first generation.
//
//go:embed cmd/pulumi-resource-dokploy/bridge-metadata.json
var bridgeMetadata []byte
// mainPkg is the single module every resource and data source lands in, giving
// tokens of the form `dokploy:index:Project`.
const mainPkg = "index"
func res(name string) *tfbridge.ResourceInfo {
return &tfbridge.ResourceInfo{Tok: tfbridge.MakeResource("dokploy", mainPkg, name)}
}
func ds(name string) *tfbridge.DataSourceInfo {
return &tfbridge.DataSourceInfo{Tok: tfbridge.MakeDataSource("dokploy", mainPkg, name)}
}
// Provider returns the bridged Pulumi provider definition for Dokploy.
func Provider(version string) tfbridge.ProviderInfo {
if version == "" {
version = "0.0.0-dev"
}
prov := tfbridge.ProviderInfo{
P: pfbridge.ShimProvider(tfshim.NewProvider(version)),
Name: "dokploy",
DisplayName: "Dokploy",
Publisher: "maxvojtkov",
Description: "A Pulumi package for creating and managing Dokploy resources",
Keywords: []string{
"pulumi", "dokploy", "paas", "docker", "deployment",
"category/cloud", "category/infrastructure",
},
License: "MPL-2.0",
Homepage: "https://github.com/maxvojtkov/pulumi-dokploy",
Repository: "https://github.com/maxvojtkov/pulumi-dokploy",
GitHubOrg: "maxvojtkov",
Version: version,
// This is not a Pulumi-published provider, so the plugin binary is
// resolved from GitHub releases rather than the Pulumi CDN.
PluginDownloadURL: "github://api.github.com/maxvojtkov/pulumi-dokploy",
TFProviderVersion: version,
MetadataInfo: tfbridge.NewProviderMetadata(bridgeMetadata),
// The upstream provider is plugin-framework based, so opt in to the
// bridge's accurate preview and raw state handling.
EnableAccurateBridgePreview: true,
EnableAccuratePFBridgePreview: true,
EnableRawStateDelta: true,
Config: map[string]*tfbridge.SchemaInfo{
"host": {
Default: &tfbridge.DefaultInfo{EnvVars: []string{"DOKPLOY_HOST"}},
},
"api_key": {
Secret: tfbridge.True(),
Default: &tfbridge.DefaultInfo{EnvVars: []string{"DOKPLOY_API_KEY"}},
},
"timeout_seconds": {
Default: &tfbridge.DefaultInfo{EnvVars: []string{"DOKPLOY_TIMEOUT_SECONDS"}},
},
},
Resources: map[string]*tfbridge.ResourceInfo{
// Core hierarchy.
"dokploy_project": res("Project"),
"dokploy_environment": res("Environment"),
"dokploy_application": res("Application"),
"dokploy_compose": res("Compose"),
// Databases.
"dokploy_postgres": res("Postgres"),
"dokploy_mysql": res("MySql"),
"dokploy_mariadb": res("MariaDb"),
"dokploy_mongo": res("Mongo"),
"dokploy_redis": res("Redis"),
// Networking and service attachments.
"dokploy_domain": res("Domain"),
"dokploy_mount": res("Mount"),
"dokploy_port": res("Port"),
"dokploy_redirect": res("Redirect"),
"dokploy_security": res("Security"),
// Account-level settings.
"dokploy_registry": res("Registry"),
"dokploy_ssh_key": res("SshKey"),
"dokploy_certificate": res("Certificate"),
"dokploy_destination": res("Destination"),
},
DataSources: map[string]*tfbridge.DataSourceInfo{
"dokploy_project": ds("getProject"),
"dokploy_projects": ds("getProjects"),
"dokploy_environment": ds("getEnvironment"),
"dokploy_application": ds("getApplication"),
"dokploy_servers": ds("getServers"),
},
JavaScript: &tfbridge.JavaScriptInfo{
PackageName: "@maxvojtkov/pulumi-dokploy",
Dependencies: map[string]string{"@pulumi/pulumi": "^3.0.0"},
DevDependencies: map[string]string{"@types/node": "^18", "typescript": "^4.6.0"},
RespectSchemaVersion: true,
},
Python: pythonInfo(),
Golang: &tfbridge.GolangInfo{
ImportBasePath: "github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy",
GenerateResourceContainerTypes: true,
RespectSchemaVersion: true,
},
CSharp: &tfbridge.CSharpInfo{
RootNamespace: "Maxvojtkov",
PackageReferences: map[string]string{"Pulumi": "3.*"},
RespectSchemaVersion: true,
},
}
// Every Dokploy resource carries a user-visible `name`; let Pulumi
// auto-generate one when the program does not supply it.
prov.SetAutonaming(255, "-")
// Keeps tokens stable if a future release renames or re-modules anything.
if err := prov.ApplyAutoAliases(); err != nil {
panic(err)
}
return prov
}
// pythonInfo exists because PyProject is an anonymous struct field and cannot
// be set inside a composite literal.
func pythonInfo() *tfbridge.PythonInfo {
info := &tfbridge.PythonInfo{
PackageName: "pulumi_dokploy",
Requires: map[string]string{"pulumi": ">=3.0.0,<4.0.0"},
RespectSchemaVersion: true,
}
info.PyProject.Enabled = true
return info
}

1
sdk/dotnet/.gitattributes generated vendored Normal file
View File

@@ -0,0 +1 @@
* linguist-generated

2
sdk/dotnet/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,2 @@
bin
obj

1906
sdk/dotnet/Application.cs generated Normal file

File diff suppressed because it is too large Load Diff

202
sdk/dotnet/Certificate.cs generated Normal file
View File

@@ -0,0 +1,202 @@
// *** 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
{
[DokployResourceType("dokploy:index/certificate:Certificate")]
public partial class Certificate : global::Pulumi.CustomResource
{
/// <summary>
/// Whether Dokploy should renew this certificate automatically.
/// </summary>
[Output("autoRenew")]
public Output<bool> AutoRenew { get; private set; } = null!;
/// <summary>
/// PEM-encoded certificate chain.
/// </summary>
[Output("certificateData")]
public Output<string> CertificateData { get; private set; } = null!;
/// <summary>
/// Path where Dokploy writes the certificate on disk.
/// </summary>
[Output("certificatePath")]
public Output<string> CertificatePath { get; private set; } = null!;
/// <summary>
/// Display name of the certificate.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// PEM-encoded private key.
/// </summary>
[Output("privateKey")]
public Output<string> PrivateKey { get; private set; } = null!;
/// <summary>
/// Server this certificate is installed on.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Create a Certificate resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Certificate(string name, CertificateArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/certificate:Certificate", name, args ?? new CertificateArgs(), MakeResourceOptions(options, ""))
{
}
private Certificate(string name, Input<string> id, CertificateState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/certificate:Certificate", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"privateKey",
},
};
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;
}
/// <summary>
/// Get an existing Certificate resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Certificate Get(string name, Input<string> id, CertificateState? state = null, CustomResourceOptions? options = null)
{
return new Certificate(name, id, state, options);
}
}
public sealed class CertificateArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Whether Dokploy should renew this certificate automatically.
/// </summary>
[Input("autoRenew")]
public Input<bool>? AutoRenew { get; set; }
/// <summary>
/// PEM-encoded certificate chain.
/// </summary>
[Input("certificateData", required: true)]
public Input<string> CertificateData { get; set; } = null!;
/// <summary>
/// Display name of the certificate.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("privateKey", required: true)]
private Input<string>? _privateKey;
/// <summary>
/// PEM-encoded private key.
/// </summary>
public Input<string>? PrivateKey
{
get => _privateKey;
set
{
var emptySecret = Output.CreateSecret(0);
_privateKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Server this certificate is installed on.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
public CertificateArgs()
{
}
public static new CertificateArgs Empty => new CertificateArgs();
}
public sealed class CertificateState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Whether Dokploy should renew this certificate automatically.
/// </summary>
[Input("autoRenew")]
public Input<bool>? AutoRenew { get; set; }
/// <summary>
/// PEM-encoded certificate chain.
/// </summary>
[Input("certificateData")]
public Input<string>? CertificateData { get; set; }
/// <summary>
/// Path where Dokploy writes the certificate on disk.
/// </summary>
[Input("certificatePath")]
public Input<string>? CertificatePath { get; set; }
/// <summary>
/// Display name of the certificate.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("privateKey")]
private Input<string>? _privateKey;
/// <summary>
/// PEM-encoded private key.
/// </summary>
public Input<string>? PrivateKey
{
get => _privateKey;
set
{
var emptySecret = Output.CreateSecret(0);
_privateKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Server this certificate is installed on.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
public CertificateState()
{
}
public static new CertificateState Empty => new CertificateState();
}
}

868
sdk/dotnet/Compose.cs generated Normal file
View File

@@ -0,0 +1,868 @@
// *** 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
{
[DokployResourceType("dokploy:index/compose:Compose")]
public partial class Compose : global::Pulumi.CustomResource
{
/// <summary>
/// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Deploy automatically when the configured trigger fires.
/// </summary>
[Output("autoDeploy")]
public Output<bool> AutoDeploy { get; private set; } = null!;
/// <summary>
/// Bitbucket branch to deploy.
/// </summary>
[Output("bitbucketBranch")]
public Output<string?> BitbucketBranch { get; private set; } = null!;
/// <summary>
/// ID of the configured Bitbucket provider connection.
/// </summary>
[Output("bitbucketId")]
public Output<string?> BitbucketId { get; private set; } = null!;
/// <summary>
/// Bitbucket repository owner.
/// </summary>
[Output("bitbucketOwner")]
public Output<string?> BitbucketOwner { get; private set; } = null!;
/// <summary>
/// Bitbucket repository name.
/// </summary>
[Output("bitbucketRepository")]
public Output<string?> BitbucketRepository { get; private set; } = null!;
/// <summary>
/// Bitbucket repository slug.
/// </summary>
[Output("bitbucketRepositorySlug")]
public Output<string?> BitbucketRepositorySlug { get; private set; } = null!;
/// <summary>
/// GitHub branch to deploy.
/// </summary>
[Output("branch")]
public Output<string?> Branch { get; private set; } = null!;
/// <summary>
/// Custom `docker compose` command to run.
/// </summary>
[Output("command")]
public Output<string> Command { get; private set; } = null!;
/// <summary>
/// Inline Compose file contents. Used when `SourceType` is `Raw`.
/// </summary>
[Output("composeFile")]
public Output<string> ComposeFile { get; private set; } = null!;
/// <summary>
/// Path to the Compose file within the repository.
/// </summary>
[Output("composePath")]
public Output<string> ComposePath { get; private set; } = null!;
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Output("composeStatus")]
public Output<string> ComposeStatus { get; private set; } = null!;
/// <summary>
/// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `Stack`.
/// </summary>
[Output("composeType")]
public Output<string> ComposeType { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the stack was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Branch to deploy for a custom Git remote.
/// </summary>
[Output("customGitBranch")]
public Output<string?> CustomGitBranch { get; private set; } = null!;
/// <summary>
/// SSH key used to clone a private custom Git remote.
/// </summary>
[Output("customGitSshKeyId")]
public Output<string?> CustomGitSshKeyId { get; private set; } = null!;
/// <summary>
/// Git remote URL, when `SourceType` is `Git`.
/// </summary>
[Output("customGitUrl")]
public Output<string?> CustomGitUrl { get; private set; } = null!;
/// <summary>
/// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `False`, which preserves the data.
/// </summary>
[Output("deleteVolumes")]
public Output<bool?> DeleteVolumes { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Clone Git submodules when checking out the repository.
/// </summary>
[Output("enableSubmodules")]
public Output<bool> EnableSubmodules { get; private set; } = null!;
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Output("env")]
public Output<string?> Env { get; private set; } = null!;
/// <summary>
/// Environment this stack belongs to.
/// </summary>
[Output("environmentId")]
public Output<string> EnvironmentId { get; private set; } = null!;
/// <summary>
/// Gitea branch to deploy.
/// </summary>
[Output("giteaBranch")]
public Output<string?> GiteaBranch { get; private set; } = null!;
/// <summary>
/// ID of the configured Gitea provider connection.
/// </summary>
[Output("giteaId")]
public Output<string?> GiteaId { get; private set; } = null!;
/// <summary>
/// Gitea repository owner.
/// </summary>
[Output("giteaOwner")]
public Output<string?> GiteaOwner { get; private set; } = null!;
/// <summary>
/// Gitea repository name.
/// </summary>
[Output("giteaRepository")]
public Output<string?> GiteaRepository { get; private set; } = null!;
/// <summary>
/// ID of the configured GitHub provider connection.
/// </summary>
[Output("githubId")]
public Output<string?> GithubId { get; private set; } = null!;
/// <summary>
/// GitLab branch to deploy.
/// </summary>
[Output("gitlabBranch")]
public Output<string?> GitlabBranch { get; private set; } = null!;
/// <summary>
/// ID of the configured GitLab provider connection.
/// </summary>
[Output("gitlabId")]
public Output<string?> GitlabId { get; private set; } = null!;
/// <summary>
/// GitLab repository owner.
/// </summary>
[Output("gitlabOwner")]
public Output<string?> GitlabOwner { get; private set; } = null!;
/// <summary>
/// Full GitLab namespace path.
/// </summary>
[Output("gitlabPathNamespace")]
public Output<string?> GitlabPathNamespace { get; private set; } = null!;
/// <summary>
/// Numeric GitLab project ID.
/// </summary>
[Output("gitlabProjectId")]
public Output<int?> GitlabProjectId { get; private set; } = null!;
/// <summary>
/// GitLab repository name.
/// </summary>
[Output("gitlabRepository")]
public Output<string?> GitlabRepository { get; private set; } = null!;
/// <summary>
/// Run the stack on its own isolated Docker network.
/// </summary>
[Output("isolatedDeployment")]
public Output<bool> IsolatedDeployment { get; private set; } = null!;
/// <summary>
/// Prefix volume names for isolated deployments. Retained for backwards compatibility.
/// </summary>
[Output("isolatedDeploymentsVolume")]
public Output<bool> IsolatedDeploymentsVolume { get; private set; } = null!;
/// <summary>
/// Display name of the stack.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// GitHub repository owner.
/// </summary>
[Output("owner")]
public Output<string?> Owner { get; private set; } = null!;
/// <summary>
/// Append a random suffix to service and volume names.
/// </summary>
[Output("randomize")]
public Output<bool> Randomize { get; private set; } = null!;
/// <summary>
/// GitHub repository name.
/// </summary>
[Output("repository")]
public Output<string?> Repository { get; private set; } = null!;
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Where the Compose file comes from. Valid values: `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Raw`.
/// </summary>
[Output("sourceType")]
public Output<string> SourceType { get; private set; } = null!;
/// <summary>
/// Suffix appended to generated resource names.
/// </summary>
[Output("suffix")]
public Output<string> Suffix { get; private set; } = null!;
/// <summary>
/// What triggers an automatic deployment. Valid values: `Push`, `Tag`.
/// </summary>
[Output("triggerType")]
public Output<string> TriggerType { get; private set; } = null!;
/// <summary>
/// Glob patterns that limit which changed paths trigger an automatic deployment.
/// </summary>
[Output("watchPaths")]
public Output<ImmutableArray<string>> WatchPaths { get; private set; } = null!;
/// <summary>
/// Create a Compose resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Compose(string name, ComposeArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/compose:Compose", name, args ?? new ComposeArgs(), MakeResourceOptions(options, ""))
{
}
private Compose(string name, Input<string> id, ComposeState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/compose:Compose", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Compose resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Compose Get(string name, Input<string> id, ComposeState? state = null, CustomResourceOptions? options = null)
{
return new Compose(name, id, state, options);
}
}
public sealed class ComposeArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Deploy automatically when the configured trigger fires.
/// </summary>
[Input("autoDeploy")]
public Input<bool>? AutoDeploy { get; set; }
/// <summary>
/// Bitbucket branch to deploy.
/// </summary>
[Input("bitbucketBranch")]
public Input<string>? BitbucketBranch { get; set; }
/// <summary>
/// ID of the configured Bitbucket provider connection.
/// </summary>
[Input("bitbucketId")]
public Input<string>? BitbucketId { get; set; }
/// <summary>
/// Bitbucket repository owner.
/// </summary>
[Input("bitbucketOwner")]
public Input<string>? BitbucketOwner { get; set; }
/// <summary>
/// Bitbucket repository name.
/// </summary>
[Input("bitbucketRepository")]
public Input<string>? BitbucketRepository { get; set; }
/// <summary>
/// Bitbucket repository slug.
/// </summary>
[Input("bitbucketRepositorySlug")]
public Input<string>? BitbucketRepositorySlug { get; set; }
/// <summary>
/// GitHub branch to deploy.
/// </summary>
[Input("branch")]
public Input<string>? Branch { get; set; }
/// <summary>
/// Custom `docker compose` command to run.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Inline Compose file contents. Used when `SourceType` is `Raw`.
/// </summary>
[Input("composeFile")]
public Input<string>? ComposeFile { get; set; }
/// <summary>
/// Path to the Compose file within the repository.
/// </summary>
[Input("composePath")]
public Input<string>? ComposePath { get; set; }
/// <summary>
/// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `Stack`.
/// </summary>
[Input("composeType")]
public Input<string>? ComposeType { get; set; }
/// <summary>
/// Branch to deploy for a custom Git remote.
/// </summary>
[Input("customGitBranch")]
public Input<string>? CustomGitBranch { get; set; }
/// <summary>
/// SSH key used to clone a private custom Git remote.
/// </summary>
[Input("customGitSshKeyId")]
public Input<string>? CustomGitSshKeyId { get; set; }
/// <summary>
/// Git remote URL, when `SourceType` is `Git`.
/// </summary>
[Input("customGitUrl")]
public Input<string>? CustomGitUrl { get; set; }
/// <summary>
/// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `False`, which preserves the data.
/// </summary>
[Input("deleteVolumes")]
public Input<bool>? DeleteVolumes { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Clone Git submodules when checking out the repository.
/// </summary>
[Input("enableSubmodules")]
public Input<bool>? EnableSubmodules { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this stack belongs to.
/// </summary>
[Input("environmentId", required: true)]
public Input<string> EnvironmentId { get; set; } = null!;
/// <summary>
/// Gitea branch to deploy.
/// </summary>
[Input("giteaBranch")]
public Input<string>? GiteaBranch { get; set; }
/// <summary>
/// ID of the configured Gitea provider connection.
/// </summary>
[Input("giteaId")]
public Input<string>? GiteaId { get; set; }
/// <summary>
/// Gitea repository owner.
/// </summary>
[Input("giteaOwner")]
public Input<string>? GiteaOwner { get; set; }
/// <summary>
/// Gitea repository name.
/// </summary>
[Input("giteaRepository")]
public Input<string>? GiteaRepository { get; set; }
/// <summary>
/// ID of the configured GitHub provider connection.
/// </summary>
[Input("githubId")]
public Input<string>? GithubId { get; set; }
/// <summary>
/// GitLab branch to deploy.
/// </summary>
[Input("gitlabBranch")]
public Input<string>? GitlabBranch { get; set; }
/// <summary>
/// ID of the configured GitLab provider connection.
/// </summary>
[Input("gitlabId")]
public Input<string>? GitlabId { get; set; }
/// <summary>
/// GitLab repository owner.
/// </summary>
[Input("gitlabOwner")]
public Input<string>? GitlabOwner { get; set; }
/// <summary>
/// Full GitLab namespace path.
/// </summary>
[Input("gitlabPathNamespace")]
public Input<string>? GitlabPathNamespace { get; set; }
/// <summary>
/// Numeric GitLab project ID.
/// </summary>
[Input("gitlabProjectId")]
public Input<int>? GitlabProjectId { get; set; }
/// <summary>
/// GitLab repository name.
/// </summary>
[Input("gitlabRepository")]
public Input<string>? GitlabRepository { get; set; }
/// <summary>
/// Run the stack on its own isolated Docker network.
/// </summary>
[Input("isolatedDeployment")]
public Input<bool>? IsolatedDeployment { get; set; }
/// <summary>
/// Prefix volume names for isolated deployments. Retained for backwards compatibility.
/// </summary>
[Input("isolatedDeploymentsVolume")]
public Input<bool>? IsolatedDeploymentsVolume { get; set; }
/// <summary>
/// Display name of the stack.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// GitHub repository owner.
/// </summary>
[Input("owner")]
public Input<string>? Owner { get; set; }
/// <summary>
/// Append a random suffix to service and volume names.
/// </summary>
[Input("randomize")]
public Input<bool>? Randomize { get; set; }
/// <summary>
/// GitHub repository name.
/// </summary>
[Input("repository")]
public Input<string>? Repository { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Where the Compose file comes from. Valid values: `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Raw`.
/// </summary>
[Input("sourceType")]
public Input<string>? SourceType { get; set; }
/// <summary>
/// Suffix appended to generated resource names.
/// </summary>
[Input("suffix")]
public Input<string>? Suffix { get; set; }
/// <summary>
/// What triggers an automatic deployment. Valid values: `Push`, `Tag`.
/// </summary>
[Input("triggerType")]
public Input<string>? TriggerType { get; set; }
[Input("watchPaths")]
private InputList<string>? _watchPaths;
/// <summary>
/// Glob patterns that limit which changed paths trigger an automatic deployment.
/// </summary>
public InputList<string> WatchPaths
{
get => _watchPaths ?? (_watchPaths = new InputList<string>());
set => _watchPaths = value;
}
public ComposeArgs()
{
}
public static new ComposeArgs Empty => new ComposeArgs();
}
public sealed class ComposeState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Deploy automatically when the configured trigger fires.
/// </summary>
[Input("autoDeploy")]
public Input<bool>? AutoDeploy { get; set; }
/// <summary>
/// Bitbucket branch to deploy.
/// </summary>
[Input("bitbucketBranch")]
public Input<string>? BitbucketBranch { get; set; }
/// <summary>
/// ID of the configured Bitbucket provider connection.
/// </summary>
[Input("bitbucketId")]
public Input<string>? BitbucketId { get; set; }
/// <summary>
/// Bitbucket repository owner.
/// </summary>
[Input("bitbucketOwner")]
public Input<string>? BitbucketOwner { get; set; }
/// <summary>
/// Bitbucket repository name.
/// </summary>
[Input("bitbucketRepository")]
public Input<string>? BitbucketRepository { get; set; }
/// <summary>
/// Bitbucket repository slug.
/// </summary>
[Input("bitbucketRepositorySlug")]
public Input<string>? BitbucketRepositorySlug { get; set; }
/// <summary>
/// GitHub branch to deploy.
/// </summary>
[Input("branch")]
public Input<string>? Branch { get; set; }
/// <summary>
/// Custom `docker compose` command to run.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Inline Compose file contents. Used when `SourceType` is `Raw`.
/// </summary>
[Input("composeFile")]
public Input<string>? ComposeFile { get; set; }
/// <summary>
/// Path to the Compose file within the repository.
/// </summary>
[Input("composePath")]
public Input<string>? ComposePath { get; set; }
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Input("composeStatus")]
public Input<string>? ComposeStatus { get; set; }
/// <summary>
/// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `Stack`.
/// </summary>
[Input("composeType")]
public Input<string>? ComposeType { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the stack was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Branch to deploy for a custom Git remote.
/// </summary>
[Input("customGitBranch")]
public Input<string>? CustomGitBranch { get; set; }
/// <summary>
/// SSH key used to clone a private custom Git remote.
/// </summary>
[Input("customGitSshKeyId")]
public Input<string>? CustomGitSshKeyId { get; set; }
/// <summary>
/// Git remote URL, when `SourceType` is `Git`.
/// </summary>
[Input("customGitUrl")]
public Input<string>? CustomGitUrl { get; set; }
/// <summary>
/// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `False`, which preserves the data.
/// </summary>
[Input("deleteVolumes")]
public Input<bool>? DeleteVolumes { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Clone Git submodules when checking out the repository.
/// </summary>
[Input("enableSubmodules")]
public Input<bool>? EnableSubmodules { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this stack belongs to.
/// </summary>
[Input("environmentId")]
public Input<string>? EnvironmentId { get; set; }
/// <summary>
/// Gitea branch to deploy.
/// </summary>
[Input("giteaBranch")]
public Input<string>? GiteaBranch { get; set; }
/// <summary>
/// ID of the configured Gitea provider connection.
/// </summary>
[Input("giteaId")]
public Input<string>? GiteaId { get; set; }
/// <summary>
/// Gitea repository owner.
/// </summary>
[Input("giteaOwner")]
public Input<string>? GiteaOwner { get; set; }
/// <summary>
/// Gitea repository name.
/// </summary>
[Input("giteaRepository")]
public Input<string>? GiteaRepository { get; set; }
/// <summary>
/// ID of the configured GitHub provider connection.
/// </summary>
[Input("githubId")]
public Input<string>? GithubId { get; set; }
/// <summary>
/// GitLab branch to deploy.
/// </summary>
[Input("gitlabBranch")]
public Input<string>? GitlabBranch { get; set; }
/// <summary>
/// ID of the configured GitLab provider connection.
/// </summary>
[Input("gitlabId")]
public Input<string>? GitlabId { get; set; }
/// <summary>
/// GitLab repository owner.
/// </summary>
[Input("gitlabOwner")]
public Input<string>? GitlabOwner { get; set; }
/// <summary>
/// Full GitLab namespace path.
/// </summary>
[Input("gitlabPathNamespace")]
public Input<string>? GitlabPathNamespace { get; set; }
/// <summary>
/// Numeric GitLab project ID.
/// </summary>
[Input("gitlabProjectId")]
public Input<int>? GitlabProjectId { get; set; }
/// <summary>
/// GitLab repository name.
/// </summary>
[Input("gitlabRepository")]
public Input<string>? GitlabRepository { get; set; }
/// <summary>
/// Run the stack on its own isolated Docker network.
/// </summary>
[Input("isolatedDeployment")]
public Input<bool>? IsolatedDeployment { get; set; }
/// <summary>
/// Prefix volume names for isolated deployments. Retained for backwards compatibility.
/// </summary>
[Input("isolatedDeploymentsVolume")]
public Input<bool>? IsolatedDeploymentsVolume { get; set; }
/// <summary>
/// Display name of the stack.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// GitHub repository owner.
/// </summary>
[Input("owner")]
public Input<string>? Owner { get; set; }
/// <summary>
/// Append a random suffix to service and volume names.
/// </summary>
[Input("randomize")]
public Input<bool>? Randomize { get; set; }
/// <summary>
/// GitHub repository name.
/// </summary>
[Input("repository")]
public Input<string>? Repository { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Where the Compose file comes from. Valid values: `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Raw`.
/// </summary>
[Input("sourceType")]
public Input<string>? SourceType { get; set; }
/// <summary>
/// Suffix appended to generated resource names.
/// </summary>
[Input("suffix")]
public Input<string>? Suffix { get; set; }
/// <summary>
/// What triggers an automatic deployment. Valid values: `Push`, `Tag`.
/// </summary>
[Input("triggerType")]
public Input<string>? TriggerType { get; set; }
[Input("watchPaths")]
private InputList<string>? _watchPaths;
/// <summary>
/// Glob patterns that limit which changed paths trigger an automatic deployment.
/// </summary>
public InputList<string> WatchPaths
{
get => _watchPaths ?? (_watchPaths = new InputList<string>());
set => _watchPaths = value;
}
public ComposeState()
{
}
public static new ComposeState Empty => new ComposeState();
}
}

76
sdk/dotnet/Config/Config.cs generated Normal file
View File

@@ -0,0 +1,76 @@
// *** 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.Immutable;
namespace Maxvojtkov.Dokploy
{
public static class Config
{
[global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification =
"Double underscore prefix used to avoid conflicts with variable names.")]
private sealed class __Value<T>
{
private readonly Func<T> _getter;
private T _value = default!;
private bool _set;
public __Value(Func<T> getter)
{
_getter = getter;
}
public T Get() => _set ? _value : _getter();
public void Set(T value)
{
_value = value;
_set = true;
}
}
private static readonly global::Pulumi.Config __config = new global::Pulumi.Config("dokploy");
private static readonly __Value<string?> _apiKey = new __Value<string?>(() => __config.Get("apiKey") ?? Utilities.GetEnv("DOKPLOY_API_KEY"));
/// <summary>
/// API token generated in Dokploy under *Settings &gt; Profile &gt; API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
/// </summary>
public static string? ApiKey
{
get => _apiKey.Get();
set => _apiKey.Set(value);
}
private static readonly __Value<string?> _host = new __Value<string?>(() => __config.Get("host") ?? Utilities.GetEnv("DOKPLOY_HOST"));
/// <summary>
/// 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.
/// </summary>
public static string? Host
{
get => _host.Get();
set => _host.Set(value);
}
private static readonly __Value<bool?> _insecureSkipVerify = new __Value<bool?>(() => __config.GetBoolean("insecureSkipVerify"));
/// <summary>
/// Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `False`.
/// </summary>
public static bool? InsecureSkipVerify
{
get => _insecureSkipVerify.Get();
set => _insecureSkipVerify.Set(value);
}
private static readonly __Value<int?> _timeoutSeconds = new __Value<int?>(() => __config.GetInt32("timeoutSeconds") ?? Utilities.GetEnvInt32("DOKPLOY_TIMEOUT_SECONDS"));
/// <summary>
/// Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
/// </summary>
public static int? TimeoutSeconds
{
get => _timeoutSeconds.Get();
set => _timeoutSeconds.Set(value);
}
}
}

1
sdk/dotnet/Config/README.md generated Normal file
View File

@@ -0,0 +1 @@
A Pulumi package for creating and managing Dokploy resources

286
sdk/dotnet/Destination.cs generated Normal file
View File

@@ -0,0 +1,286 @@
// *** 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
{
[DokployResourceType("dokploy:index/destination:Destination")]
public partial class Destination : global::Pulumi.CustomResource
{
/// <summary>
/// S3 access key ID.
/// </summary>
[Output("accessKey")]
public Output<string> AccessKey { get; private set; } = null!;
/// <summary>
/// Extra flags passed to the underlying `Rclone` invocation.
/// </summary>
[Output("additionalFlags")]
public Output<ImmutableArray<string>> AdditionalFlags { get; private set; } = null!;
/// <summary>
/// Bucket name.
/// </summary>
[Output("bucket")]
public Output<string> Bucket { get; private set; } = null!;
/// <summary>
/// Timestamp of when the destination was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// S3 endpoint URL.
/// </summary>
[Output("endpoint")]
public Output<string> Endpoint { get; private set; } = null!;
/// <summary>
/// Display name of the destination.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// Provider label, for example `S3` or `Cloudflare`. Named `ProviderName` because `Provider` is reserved by Terraform.
/// </summary>
[Output("providerName")]
public Output<string?> ProviderName { get; private set; } = null!;
/// <summary>
/// Bucket region, for example `us-east-1`.
/// </summary>
[Output("region")]
public Output<string> Region { get; private set; } = null!;
/// <summary>
/// S3 secret access key.
/// </summary>
[Output("secretAccessKey")]
public Output<string> SecretAccessKey { get; private set; } = null!;
/// <summary>
/// Server this destination is scoped to.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Create a Destination resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Destination(string name, DestinationArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/destination:Destination", name, args ?? new DestinationArgs(), MakeResourceOptions(options, ""))
{
}
private Destination(string name, Input<string> id, DestinationState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/destination:Destination", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"secretAccessKey",
},
};
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;
}
/// <summary>
/// Get an existing Destination resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Destination Get(string name, Input<string> id, DestinationState? state = null, CustomResourceOptions? options = null)
{
return new Destination(name, id, state, options);
}
}
public sealed class DestinationArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// S3 access key ID.
/// </summary>
[Input("accessKey", required: true)]
public Input<string> AccessKey { get; set; } = null!;
[Input("additionalFlags")]
private InputList<string>? _additionalFlags;
/// <summary>
/// Extra flags passed to the underlying `Rclone` invocation.
/// </summary>
public InputList<string> AdditionalFlags
{
get => _additionalFlags ?? (_additionalFlags = new InputList<string>());
set => _additionalFlags = value;
}
/// <summary>
/// Bucket name.
/// </summary>
[Input("bucket", required: true)]
public Input<string> Bucket { get; set; } = null!;
/// <summary>
/// S3 endpoint URL.
/// </summary>
[Input("endpoint", required: true)]
public Input<string> Endpoint { get; set; } = null!;
/// <summary>
/// Display name of the destination.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// Provider label, for example `S3` or `Cloudflare`. Named `ProviderName` because `Provider` is reserved by Terraform.
/// </summary>
[Input("providerName")]
public Input<string>? ProviderName { get; set; }
/// <summary>
/// Bucket region, for example `us-east-1`.
/// </summary>
[Input("region", required: true)]
public Input<string> Region { get; set; } = null!;
[Input("secretAccessKey", required: true)]
private Input<string>? _secretAccessKey;
/// <summary>
/// S3 secret access key.
/// </summary>
public Input<string>? SecretAccessKey
{
get => _secretAccessKey;
set
{
var emptySecret = Output.CreateSecret(0);
_secretAccessKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Server this destination is scoped to.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
public DestinationArgs()
{
}
public static new DestinationArgs Empty => new DestinationArgs();
}
public sealed class DestinationState : global::Pulumi.ResourceArgs
{
/// <summary>
/// S3 access key ID.
/// </summary>
[Input("accessKey")]
public Input<string>? AccessKey { get; set; }
[Input("additionalFlags")]
private InputList<string>? _additionalFlags;
/// <summary>
/// Extra flags passed to the underlying `Rclone` invocation.
/// </summary>
public InputList<string> AdditionalFlags
{
get => _additionalFlags ?? (_additionalFlags = new InputList<string>());
set => _additionalFlags = value;
}
/// <summary>
/// Bucket name.
/// </summary>
[Input("bucket")]
public Input<string>? Bucket { get; set; }
/// <summary>
/// Timestamp of when the destination was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// S3 endpoint URL.
/// </summary>
[Input("endpoint")]
public Input<string>? Endpoint { get; set; }
/// <summary>
/// Display name of the destination.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// Provider label, for example `S3` or `Cloudflare`. Named `ProviderName` because `Provider` is reserved by Terraform.
/// </summary>
[Input("providerName")]
public Input<string>? ProviderName { get; set; }
/// <summary>
/// Bucket region, for example `us-east-1`.
/// </summary>
[Input("region")]
public Input<string>? Region { get; set; }
[Input("secretAccessKey")]
private Input<string>? _secretAccessKey;
/// <summary>
/// S3 secret access key.
/// </summary>
public Input<string>? SecretAccessKey
{
get => _secretAccessKey;
set
{
var emptySecret = Output.CreateSecret(0);
_secretAccessKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Server this destination is scoped to.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
public DestinationState()
{
}
public static new DestinationState Empty => new DestinationState();
}
}

388
sdk/dotnet/Domain.cs generated Normal file
View File

@@ -0,0 +1,388 @@
// *** 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
{
[DokployResourceType("dokploy:index/domain:Domain")]
public partial class Domain : global::Pulumi.CustomResource
{
/// <summary>
/// Application this domain routes to.
/// </summary>
[Output("applicationId")]
public Output<string?> ApplicationId { get; private set; } = null!;
/// <summary>
/// How TLS certificates are obtained. Use `Letsencrypt` for automatic certificates. Valid values: `Letsencrypt`, `None`, `Custom`.
/// </summary>
[Output("certificateType")]
public Output<string> CertificateType { get; private set; } = null!;
/// <summary>
/// Compose stack this domain routes to.
/// </summary>
[Output("composeId")]
public Output<string?> ComposeId { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the domain was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Traefik certificate resolver name, when `CertificateType` is `Custom`.
/// </summary>
[Output("customCertResolver")]
public Output<string?> CustomCertResolver { get; private set; } = null!;
/// <summary>
/// Traefik entrypoint to bind, when not using the defaults.
/// </summary>
[Output("customEntrypoint")]
public Output<string?> CustomEntrypoint { get; private set; } = null!;
/// <summary>
/// What kind of target this domain points at. Valid values: `Compose`, `Application`, `Preview`.
/// </summary>
[Output("domainType")]
public Output<string> DomainType { get; private set; } = null!;
/// <summary>
/// Protect this domain with Dokploy's forward auth.
/// </summary>
[Output("forwardAuthEnabled")]
public Output<bool> ForwardAuthEnabled { get; private set; } = null!;
/// <summary>
/// Fully-qualified hostname, for example `api.example.com`.
/// </summary>
[Output("host")]
public Output<string> Host { get; private set; } = null!;
/// <summary>
/// Serve the domain over HTTPS and redirect HTTP traffic to it.
/// </summary>
[Output("https")]
public Output<bool> Https { get; private set; } = null!;
/// <summary>
/// Path the request is rewritten to before it reaches the container, defaults to `/`.
/// </summary>
[Output("internalPath")]
public Output<string> InternalPath { get; private set; } = null!;
/// <summary>
/// Names of Traefik middlewares to apply.
/// </summary>
[Output("middlewares")]
public Output<ImmutableArray<string>> Middlewares { get; private set; } = null!;
/// <summary>
/// Path prefix this domain routes, defaults to `/`.
/// </summary>
[Output("path")]
public Output<string> Path { get; private set; } = null!;
/// <summary>
/// Container port that receives the traffic, defaults to `3000`.
/// </summary>
[Output("port")]
public Output<int> Port { get; private set; } = null!;
/// <summary>
/// Preview deployment this domain routes to.
/// </summary>
[Output("previewDeploymentId")]
public Output<string?> PreviewDeploymentId { get; private set; } = null!;
/// <summary>
/// Name of the service inside a Compose stack that receives the traffic. Required when `ComposeId` is set.
/// </summary>
[Output("serviceName")]
public Output<string?> ServiceName { get; private set; } = null!;
/// <summary>
/// Strip `Path` from the request before forwarding it.
/// </summary>
[Output("stripPath")]
public Output<bool> StripPath { get; private set; } = null!;
/// <summary>
/// Create a Domain resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Domain(string name, DomainArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/domain:Domain", name, args ?? new DomainArgs(), MakeResourceOptions(options, ""))
{
}
private Domain(string name, Input<string> id, DomainState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/domain:Domain", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Domain resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Domain Get(string name, Input<string> id, DomainState? state = null, CustomResourceOptions? options = null)
{
return new Domain(name, id, state, options);
}
}
public sealed class DomainArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application this domain routes to.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// How TLS certificates are obtained. Use `Letsencrypt` for automatic certificates. Valid values: `Letsencrypt`, `None`, `Custom`.
/// </summary>
[Input("certificateType")]
public Input<string>? CertificateType { get; set; }
/// <summary>
/// Compose stack this domain routes to.
/// </summary>
[Input("composeId")]
public Input<string>? ComposeId { get; set; }
/// <summary>
/// Traefik certificate resolver name, when `CertificateType` is `Custom`.
/// </summary>
[Input("customCertResolver")]
public Input<string>? CustomCertResolver { get; set; }
/// <summary>
/// Traefik entrypoint to bind, when not using the defaults.
/// </summary>
[Input("customEntrypoint")]
public Input<string>? CustomEntrypoint { get; set; }
/// <summary>
/// What kind of target this domain points at. Valid values: `Compose`, `Application`, `Preview`.
/// </summary>
[Input("domainType")]
public Input<string>? DomainType { get; set; }
/// <summary>
/// Protect this domain with Dokploy's forward auth.
/// </summary>
[Input("forwardAuthEnabled")]
public Input<bool>? ForwardAuthEnabled { get; set; }
/// <summary>
/// Fully-qualified hostname, for example `api.example.com`.
/// </summary>
[Input("host", required: true)]
public Input<string> Host { get; set; } = null!;
/// <summary>
/// Serve the domain over HTTPS and redirect HTTP traffic to it.
/// </summary>
[Input("https")]
public Input<bool>? Https { get; set; }
/// <summary>
/// Path the request is rewritten to before it reaches the container, defaults to `/`.
/// </summary>
[Input("internalPath")]
public Input<string>? InternalPath { get; set; }
[Input("middlewares")]
private InputList<string>? _middlewares;
/// <summary>
/// Names of Traefik middlewares to apply.
/// </summary>
public InputList<string> Middlewares
{
get => _middlewares ?? (_middlewares = new InputList<string>());
set => _middlewares = value;
}
/// <summary>
/// Path prefix this domain routes, defaults to `/`.
/// </summary>
[Input("path")]
public Input<string>? Path { get; set; }
/// <summary>
/// Container port that receives the traffic, defaults to `3000`.
/// </summary>
[Input("port")]
public Input<int>? Port { get; set; }
/// <summary>
/// Preview deployment this domain routes to.
/// </summary>
[Input("previewDeploymentId")]
public Input<string>? PreviewDeploymentId { get; set; }
/// <summary>
/// Name of the service inside a Compose stack that receives the traffic. Required when `ComposeId` is set.
/// </summary>
[Input("serviceName")]
public Input<string>? ServiceName { get; set; }
/// <summary>
/// Strip `Path` from the request before forwarding it.
/// </summary>
[Input("stripPath")]
public Input<bool>? StripPath { get; set; }
public DomainArgs()
{
}
public static new DomainArgs Empty => new DomainArgs();
}
public sealed class DomainState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application this domain routes to.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// How TLS certificates are obtained. Use `Letsencrypt` for automatic certificates. Valid values: `Letsencrypt`, `None`, `Custom`.
/// </summary>
[Input("certificateType")]
public Input<string>? CertificateType { get; set; }
/// <summary>
/// Compose stack this domain routes to.
/// </summary>
[Input("composeId")]
public Input<string>? ComposeId { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the domain was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Traefik certificate resolver name, when `CertificateType` is `Custom`.
/// </summary>
[Input("customCertResolver")]
public Input<string>? CustomCertResolver { get; set; }
/// <summary>
/// Traefik entrypoint to bind, when not using the defaults.
/// </summary>
[Input("customEntrypoint")]
public Input<string>? CustomEntrypoint { get; set; }
/// <summary>
/// What kind of target this domain points at. Valid values: `Compose`, `Application`, `Preview`.
/// </summary>
[Input("domainType")]
public Input<string>? DomainType { get; set; }
/// <summary>
/// Protect this domain with Dokploy's forward auth.
/// </summary>
[Input("forwardAuthEnabled")]
public Input<bool>? ForwardAuthEnabled { get; set; }
/// <summary>
/// Fully-qualified hostname, for example `api.example.com`.
/// </summary>
[Input("host")]
public Input<string>? Host { get; set; }
/// <summary>
/// Serve the domain over HTTPS and redirect HTTP traffic to it.
/// </summary>
[Input("https")]
public Input<bool>? Https { get; set; }
/// <summary>
/// Path the request is rewritten to before it reaches the container, defaults to `/`.
/// </summary>
[Input("internalPath")]
public Input<string>? InternalPath { get; set; }
[Input("middlewares")]
private InputList<string>? _middlewares;
/// <summary>
/// Names of Traefik middlewares to apply.
/// </summary>
public InputList<string> Middlewares
{
get => _middlewares ?? (_middlewares = new InputList<string>());
set => _middlewares = value;
}
/// <summary>
/// Path prefix this domain routes, defaults to `/`.
/// </summary>
[Input("path")]
public Input<string>? Path { get; set; }
/// <summary>
/// Container port that receives the traffic, defaults to `3000`.
/// </summary>
[Input("port")]
public Input<int>? Port { get; set; }
/// <summary>
/// Preview deployment this domain routes to.
/// </summary>
[Input("previewDeploymentId")]
public Input<string>? PreviewDeploymentId { get; set; }
/// <summary>
/// Name of the service inside a Compose stack that receives the traffic. Required when `ComposeId` is set.
/// </summary>
[Input("serviceName")]
public Input<string>? ServiceName { get; set; }
/// <summary>
/// Strip `Path` from the request before forwarding it.
/// </summary>
[Input("stripPath")]
public Input<bool>? StripPath { get; set; }
public DomainState()
{
}
public static new DomainState Empty => new DomainState();
}
}

172
sdk/dotnet/Environment.cs generated Normal file
View File

@@ -0,0 +1,172 @@
// *** 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
{
[DokployResourceType("dokploy:index/environment:Environment")]
public partial class Environment : global::Pulumi.CustomResource
{
/// <summary>
/// RFC 3339 timestamp of when the environment was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
/// </summary>
[Output("env")]
public Output<string> Env { get; private set; } = null!;
/// <summary>
/// Whether this is the project's default environment.
/// </summary>
[Output("isDefault")]
public Output<bool> IsDefault { get; private set; } = null!;
/// <summary>
/// Environment name, for example `Staging`.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// Project this environment belongs to.
/// </summary>
[Output("projectId")]
public Output<string> ProjectId { get; private set; } = null!;
/// <summary>
/// Create a Environment resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Environment(string name, EnvironmentArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/environment:Environment", name, args ?? new EnvironmentArgs(), MakeResourceOptions(options, ""))
{
}
private Environment(string name, Input<string> id, EnvironmentState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/environment:Environment", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Environment resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Environment Get(string name, Input<string> id, EnvironmentState? state = null, CustomResourceOptions? options = null)
{
return new Environment(name, id, state, options);
}
}
public sealed class EnvironmentArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment name, for example `Staging`.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// Project this environment belongs to.
/// </summary>
[Input("projectId", required: true)]
public Input<string> ProjectId { get; set; } = null!;
public EnvironmentArgs()
{
}
public static new EnvironmentArgs Empty => new EnvironmentArgs();
}
public sealed class EnvironmentState : global::Pulumi.ResourceArgs
{
/// <summary>
/// RFC 3339 timestamp of when the environment was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Whether this is the project's default environment.
/// </summary>
[Input("isDefault")]
public Input<bool>? IsDefault { get; set; }
/// <summary>
/// Environment name, for example `Staging`.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// Project this environment belongs to.
/// </summary>
[Input("projectId")]
public Input<string>? ProjectId { get; set; }
public EnvironmentState()
{
}
public static new EnvironmentState Empty => new EnvironmentState();
}
}

93
sdk/dotnet/GetApplication.cs generated Normal file
View File

@@ -0,0 +1,93 @@
// *** 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
{
public static class GetApplication
{
public static Task<GetApplicationResult> InvokeAsync(GetApplicationArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync<GetApplicationResult>("dokploy:index/getApplication:getApplication", args ?? new GetApplicationArgs(), options.WithDefaults());
public static Output<GetApplicationResult> Invoke(GetApplicationInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke<GetApplicationResult>("dokploy:index/getApplication:getApplication", args ?? new GetApplicationInvokeArgs(), options.WithDefaults());
public static Output<GetApplicationResult> Invoke(GetApplicationInvokeArgs args, InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke<GetApplicationResult>("dokploy:index/getApplication:getApplication", args ?? new GetApplicationInvokeArgs(), options.WithDefaults());
}
public sealed class GetApplicationArgs : global::Pulumi.InvokeArgs
{
[Input("id", required: true)]
public string Id { get; set; } = null!;
public GetApplicationArgs()
{
}
public static new GetApplicationArgs Empty => new GetApplicationArgs();
}
public sealed class GetApplicationInvokeArgs : global::Pulumi.InvokeArgs
{
[Input("id", required: true)]
public Input<string> Id { get; set; } = null!;
public GetApplicationInvokeArgs()
{
}
public static new GetApplicationInvokeArgs Empty => new GetApplicationInvokeArgs();
}
[OutputType]
public sealed class GetApplicationResult
{
public readonly string AppName;
public readonly string ApplicationStatus;
public readonly string BuildType;
public readonly string CreatedAt;
public readonly string Description;
public readonly string EnvironmentId;
public readonly string Id;
public readonly string Name;
public readonly string SourceType;
[OutputConstructor]
private GetApplicationResult(
string appName,
string applicationStatus,
string buildType,
string createdAt,
string description,
string environmentId,
string id,
string name,
string sourceType)
{
AppName = appName;
ApplicationStatus = applicationStatus;
BuildType = buildType;
CreatedAt = createdAt;
Description = description;
EnvironmentId = environmentId;
Id = id;
Name = name;
SourceType = sourceType;
}
}
}

85
sdk/dotnet/GetEnvironment.cs generated Normal file
View File

@@ -0,0 +1,85 @@
// *** 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
{
public static class GetEnvironment
{
public static Task<GetEnvironmentResult> InvokeAsync(GetEnvironmentArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync<GetEnvironmentResult>("dokploy:index/getEnvironment:getEnvironment", args ?? new GetEnvironmentArgs(), options.WithDefaults());
public static Output<GetEnvironmentResult> Invoke(GetEnvironmentInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke<GetEnvironmentResult>("dokploy:index/getEnvironment:getEnvironment", args ?? new GetEnvironmentInvokeArgs(), options.WithDefaults());
public static Output<GetEnvironmentResult> Invoke(GetEnvironmentInvokeArgs args, InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke<GetEnvironmentResult>("dokploy:index/getEnvironment:getEnvironment", args ?? new GetEnvironmentInvokeArgs(), options.WithDefaults());
}
public sealed class GetEnvironmentArgs : global::Pulumi.InvokeArgs
{
[Input("id", required: true)]
public string Id { get; set; } = null!;
public GetEnvironmentArgs()
{
}
public static new GetEnvironmentArgs Empty => new GetEnvironmentArgs();
}
public sealed class GetEnvironmentInvokeArgs : global::Pulumi.InvokeArgs
{
[Input("id", required: true)]
public Input<string> Id { get; set; } = null!;
public GetEnvironmentInvokeArgs()
{
}
public static new GetEnvironmentInvokeArgs Empty => new GetEnvironmentInvokeArgs();
}
[OutputType]
public sealed class GetEnvironmentResult
{
public readonly string CreatedAt;
public readonly string Description;
public readonly string Env;
public readonly string Id;
public readonly bool IsDefault;
public readonly string Name;
public readonly string ProjectId;
[OutputConstructor]
private GetEnvironmentResult(
string createdAt,
string description,
string env,
string id,
bool isDefault,
string name,
string projectId)
{
CreatedAt = createdAt;
Description = description;
Env = env;
Id = id;
IsDefault = isDefault;
Name = name;
ProjectId = projectId;
}
}
}

89
sdk/dotnet/GetProject.cs generated Normal file
View File

@@ -0,0 +1,89 @@
// *** 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
{
public static class GetProject
{
public static Task<GetProjectResult> InvokeAsync(GetProjectArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync<GetProjectResult>("dokploy:index/getProject:getProject", args ?? new GetProjectArgs(), options.WithDefaults());
public static Output<GetProjectResult> Invoke(GetProjectInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke<GetProjectResult>("dokploy:index/getProject:getProject", args ?? new GetProjectInvokeArgs(), options.WithDefaults());
public static Output<GetProjectResult> Invoke(GetProjectInvokeArgs args, InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke<GetProjectResult>("dokploy:index/getProject:getProject", args ?? new GetProjectInvokeArgs(), options.WithDefaults());
}
public sealed class GetProjectArgs : global::Pulumi.InvokeArgs
{
[Input("id", required: true)]
public string Id { get; set; } = null!;
public GetProjectArgs()
{
}
public static new GetProjectArgs Empty => new GetProjectArgs();
}
public sealed class GetProjectInvokeArgs : global::Pulumi.InvokeArgs
{
[Input("id", required: true)]
public Input<string> Id { get; set; } = null!;
public GetProjectInvokeArgs()
{
}
public static new GetProjectInvokeArgs Empty => new GetProjectInvokeArgs();
}
[OutputType]
public sealed class GetProjectResult
{
public readonly string CreatedAt;
public readonly string DefaultEnvironmentId;
public readonly string Description;
public readonly string Env;
public readonly ImmutableArray<Outputs.GetProjectEnvironmentResult> Environments;
public readonly string Id;
public readonly string Name;
public readonly string OrganizationId;
[OutputConstructor]
private GetProjectResult(
string createdAt,
string defaultEnvironmentId,
string description,
string env,
ImmutableArray<Outputs.GetProjectEnvironmentResult> environments,
string id,
string name,
string organizationId)
{
CreatedAt = createdAt;
DefaultEnvironmentId = defaultEnvironmentId;
Description = description;
Env = env;
Environments = environments;
Id = id;
Name = name;
OrganizationId = organizationId;
}
}
}

37
sdk/dotnet/GetProjects.cs generated Normal file
View File

@@ -0,0 +1,37 @@
// *** 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
{
public static class GetProjects
{
public static Task<GetProjectsResult> InvokeAsync(InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync<GetProjectsResult>("dokploy:index/getProjects:getProjects", InvokeArgs.Empty, options.WithDefaults());
public static Output<GetProjectsResult> Invoke(InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke<GetProjectsResult>("dokploy:index/getProjects:getProjects", InvokeArgs.Empty, options.WithDefaults());
public static Output<GetProjectsResult> Invoke(InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke<GetProjectsResult>("dokploy:index/getProjects:getProjects", InvokeArgs.Empty, options.WithDefaults());
}
[OutputType]
public sealed class GetProjectsResult
{
public readonly ImmutableArray<Outputs.GetProjectsProjectResult> Projects;
[OutputConstructor]
private GetProjectsResult(ImmutableArray<Outputs.GetProjectsProjectResult> projects)
{
Projects = projects;
}
}
}

37
sdk/dotnet/GetServers.cs generated Normal file
View File

@@ -0,0 +1,37 @@
// *** 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
{
public static class GetServers
{
public static Task<GetServersResult> InvokeAsync(InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync<GetServersResult>("dokploy:index/getServers:getServers", InvokeArgs.Empty, options.WithDefaults());
public static Output<GetServersResult> Invoke(InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke<GetServersResult>("dokploy:index/getServers:getServers", InvokeArgs.Empty, options.WithDefaults());
public static Output<GetServersResult> Invoke(InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke<GetServersResult>("dokploy:index/getServers:getServers", InvokeArgs.Empty, options.WithDefaults());
}
[OutputType]
public sealed class GetServersResult
{
public readonly ImmutableArray<Outputs.GetServersServerResult> Servers;
[OutputConstructor]
private GetServersResult(ImmutableArray<Outputs.GetServersServerResult> servers)
{
Servers = servers;
}
}
}

356
sdk/dotnet/LICENSE generated Normal file
View File

@@ -0,0 +1,356 @@
Copyright (c) 2026 Max Vojtkov
Mozilla Public License, version 2.0
1. Definitions
1.1. “Contributor”
means each individual or legal entity that creates, contributes to the
creation of, or owns Covered Software.
1.2. “Contributor Version”
means the combination of the Contributions of others (if any) used by a
Contributor and that particular Contributors Contribution.
1.3. “Contribution”
means Covered Software of a particular Contributor.
1.4. “Covered Software”
means Source Code Form to which the initial Contributor has attached the
notice in Exhibit A, the Executable Form of such Source Code Form, and
Modifications of such Source Code Form, in each case including portions
thereof.
1.5. “Incompatible With Secondary Licenses”
means
a. that the initial Contributor has attached the notice described in
Exhibit B to the Covered Software; or
b. that the Covered Software was made available under the terms of version
1.1 or earlier of the License, but not also under the terms of a
Secondary License.
1.6. “Executable Form”
means any form of the work other than Source Code Form.
1.7. “Larger Work”
means a work that combines Covered Software with other material, in a separate
file or files, that is not Covered Software.
1.8. “License”
means this document.
1.9. “Licensable”
means having the right to grant, to the maximum extent possible, whether at the
time of the initial grant or subsequently, any and all of the rights conveyed by
this License.
1.10. “Modifications”
means any of the following:
a. any file in Source Code Form that results from an addition to, deletion
from, or modification of the contents of Covered Software; or
b. any new file in Source Code Form that contains any Covered Software.
1.11. “Patent Claims” of a Contributor
means any patent claim(s), including without limitation, method, process,
and apparatus claims, in any patent Licensable by such Contributor that
would be infringed, but for the grant of the License, by the making,
using, selling, offering for sale, having made, import, or transfer of
either its Contributions or its Contributor Version.
1.12. “Secondary License”
means either the GNU General Public License, Version 2.0, the GNU Lesser
General Public License, Version 2.1, the GNU Affero General Public
License, Version 3.0, or any later versions of those licenses.
1.13. “Source Code Form”
means the form of the work preferred for making modifications.
1.14. “You” (or “Your”)
means an individual or a legal entity exercising rights under this
License. For legal entities, “You” includes any entity that controls, is
controlled by, or is under common control with You. For purposes of this
definition, “control” means (a) the power, direct or indirect, to cause
the direction or management of such entity, whether by contract or
otherwise, or (b) ownership of more than fifty percent (50%) of the
outstanding shares or beneficial ownership of such entity.
2. License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
a. under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or as
part of a Larger Work; and
b. under Patent Claims of such Contributor to make, use, sell, offer for
sale, have made, import, and otherwise transfer either its Contributions
or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution become
effective for each Contribution on the date the Contributor first distributes
such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under this
License. No additional rights or licenses will be implied from the distribution
or licensing of Covered Software under this License. Notwithstanding Section
2.1(b) above, no patent license is granted by a Contributor:
a. for any code that a Contributor has removed from Covered Software; or
b. for infringements caused by: (i) Your and any other third partys
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
c. under Patent Claims infringed by Covered Software in the absence of its
Contributions.
This License does not grant any rights in the trademarks, service marks, or
logos of any Contributor (except as may be necessary to comply with the
notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this License
(see Section 10.2) or under the terms of a Secondary License (if permitted
under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its Contributions
are its original creation(s) or it has sufficient rights to grant the
rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under applicable
copyright doctrines of fair use, fair dealing, or other equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
Section 2.1.
3. Responsibilities
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under the
terms of this License. You must inform recipients that the Source Code Form
of the Covered Software is governed by the terms of this License, and how
they can obtain a copy of this License. You may not attempt to alter or
restrict the recipients rights in the Source Code Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
a. such Covered Software must also be made available in Source Code Form,
as described in Section 3.1, and You must inform recipients of the
Executable Form how they can obtain a copy of such Source Code Form by
reasonable means in a timely manner, at a charge no more than the cost
of distribution to the recipient; and
b. You may distribute such Executable Form under the terms of this License,
or sublicense it under different terms, provided that the license for
the Executable Form does not attempt to limit or alter the recipients
rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for the
Covered Software. If the Larger Work is a combination of Covered Software
with a work governed by one or more Secondary Licenses, and the Covered
Software is not Incompatible With Secondary Licenses, this License permits
You to additionally distribute such Covered Software under the terms of
such Secondary License(s), so that the recipient of the Larger Work may, at
their option, further distribute the Covered Software under the terms of
either this License or such Secondary License(s).
3.4. Notices
You may not remove or alter the substance of any license notices (including
copyright notices, patent notices, disclaimers of warranty, or limitations
of liability) contained within the Source Code Form of the Covered
Software, except that You may alter any license notices to the extent
required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on behalf
of any Contributor. You must make it absolutely clear that any such
warranty, support, indemnity, or liability obligation is offered by You
alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
If it is impossible for You to comply with any of the terms of this License
with respect to some or all of the Covered Software due to statute, judicial
order, or regulation then You must: (a) comply with the terms of this License
to the maximum extent possible; and (b) describe the limitations and the code
they affect. Such description must be placed in a text file included with all
distributions of the Covered Software under this License. Except to the
extent prohibited by statute or regulation, such description must be
sufficiently detailed for a recipient of ordinary skill to be able to
understand it.
5. Termination
5.1. The rights granted under this License will terminate automatically if You
fail to comply with any of its terms. However, if You become compliant,
then the rights granted under this License from a particular Contributor
are reinstated (a) provisionally, unless and until such Contributor
explicitly and finally terminates Your grants, and (b) on an ongoing basis,
if such Contributor fails to notify You of the non-compliance by some
reasonable means prior to 60 days after You have come back into compliance.
Moreover, Your grants from a particular Contributor are reinstated on an
ongoing basis if such Contributor notifies You of the non-compliance by
some reasonable means, this is the first time You have received notice of
non-compliance with this License from such Contributor, and You become
compliant prior to 30 days after Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions, counter-claims,
and cross-claims) alleging that a Contributor Version directly or
indirectly infringes any patent, then the rights granted to You by any and
all Contributors for the Covered Software under Section 2.1 of this License
shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
license agreements (excluding distributors and resellers) which have been
validly granted by You or Your distributors under this License prior to
termination shall survive termination.
6. Disclaimer of Warranty
Covered Software is provided under this License on an “as is” basis, without
warranty of any kind, either expressed, implied, or statutory, including,
without limitation, warranties that the Covered Software is free of defects,
merchantable, fit for a particular purpose or non-infringing. The entire
risk as to the quality and performance of the Covered Software is with You.
Should any Covered Software prove defective in any respect, You (not any
Contributor) assume the cost of any necessary servicing, repair, or
correction. This disclaimer of warranty constitutes an essential part of this
License. No use of any Covered Software is authorized under this License
except under this disclaimer.
7. Limitation of Liability
Under no circumstances and under no legal theory, whether tort (including
negligence), contract, or otherwise, shall any Contributor, or anyone who
distributes Covered Software as permitted above, be liable to You for any
direct, indirect, special, incidental, or consequential damages of any
character including, without limitation, damages for lost profits, loss of
goodwill, work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses, even if such party shall have been
informed of the possibility of such damages. This limitation of liability
shall not apply to liability for death or personal injury resulting from such
partys negligence to the extent applicable law prohibits such limitation.
Some jurisdictions do not allow the exclusion or limitation of incidental or
consequential damages, so this exclusion and limitation may not apply to You.
8. Litigation
Any litigation relating to this License may be brought only in the courts of
a jurisdiction where the defendant maintains its principal place of business
and such litigation shall be governed by laws of that jurisdiction, without
reference to its conflict-of-law provisions. Nothing in this Section shall
prevent a partys ability to bring cross-claims or counter-claims.
9. Miscellaneous
This License represents the complete agreement concerning the subject matter
hereof. If any provision of this License is held to be unenforceable, such
provision shall be reformed only to the extent necessary to make it
enforceable. Any law or regulation which provides that the language of a
contract shall be construed against the drafter shall not be used to construe
this License against a Contributor.
10. Versions of the License
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version of
the License under which You originally received the Covered Software, or
under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a modified
version of this License if you rename the license and remove any
references to the name of the license steward (except to note that such
modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
This Source Code Form is subject to the
terms of the Mozilla Public License, v.
2.0. If a copy of the MPL was not
distributed with this file, You can
obtain one at
http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file, then
You may include the notice in a location (such as a LICENSE file in a relevant
directory) where a recipient would be likely to look for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - “Incompatible With Secondary Licenses” Notice
This Source Code Form is “Incompatible
With Secondary Licenses”, as defined by
the Mozilla Public License, v. 2.0.

745
sdk/dotnet/MariaDb.cs generated Normal file
View File

@@ -0,0 +1,745 @@
// *** 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
{
[DokployResourceType("dokploy:index/mariaDb:MariaDb")]
public partial class MariaDb : global::Pulumi.CustomResource
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Output("applicationStatus")]
public Output<string> ApplicationStatus { get; private set; } = null!;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
[Output("args")]
public Output<ImmutableArray<string>> Args { get; private set; } = null!;
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Output("command")]
public Output<string?> Command { get; private set; } = null!;
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Output("cpuLimit")]
public Output<string?> CpuLimit { get; private set; } = null!;
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Output("cpuReservation")]
public Output<string?> CpuReservation { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Name of the database to create.
/// </summary>
[Output("databaseName")]
public Output<string> DatabaseName { get; private set; } = null!;
/// <summary>
/// Password for the database user.
/// </summary>
[Output("databasePassword")]
public Output<string> DatabasePassword { get; private set; } = null!;
/// <summary>
/// Password for the MariaDB `Root` user.
/// </summary>
[Output("databaseRootPassword")]
public Output<string> DatabaseRootPassword { get; private set; } = null!;
/// <summary>
/// Database user to create.
/// </summary>
[Output("databaseUser")]
public Output<string> DatabaseUser { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Output("detachDokployNetwork")]
public Output<bool> DetachDokployNetwork { get; private set; } = null!;
/// <summary>
/// MariaDB image to run, for example `mariadb:11`.
/// </summary>
[Output("dockerImage")]
public Output<string> DockerImage { get; private set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Output("endpointSpecSwarm")]
public Output<string?> EndpointSpecSwarm { get; private set; } = null!;
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Output("env")]
public Output<string?> Env { get; private set; } = null!;
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Output("environmentId")]
public Output<string> EnvironmentId { get; private set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Output("externalPort")]
public Output<int?> ExternalPort { get; private set; } = null!;
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Output("healthCheckSwarm")]
public Output<string?> HealthCheckSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Output("labelsSwarm")]
public Output<string?> LabelsSwarm { get; private set; } = null!;
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Output("memoryLimit")]
public Output<string?> MemoryLimit { get; private set; } = null!;
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Output("memoryReservation")]
public Output<string?> MemoryReservation { get; private set; } = null!;
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Output("modeSwarm")]
public Output<string?> ModeSwarm { get; private set; } = null!;
/// <summary>
/// Display name of the database.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
[Output("networkIds")]
public Output<ImmutableArray<string>> NetworkIds { get; private set; } = null!;
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Output("networkSwarm")]
public Output<string?> NetworkSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Output("placementSwarm")]
public Output<string?> PlacementSwarm { get; private set; } = null!;
/// <summary>
/// Number of replicas to run.
/// </summary>
[Output("replicas")]
public Output<int> Replicas { get; private set; } = null!;
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Output("restartPolicySwarm")]
public Output<string?> RestartPolicySwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Output("rollbackConfigSwarm")]
public Output<string?> RollbackConfigSwarm { get; private set; } = null!;
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Output("stopGracePeriodSwarm")]
public Output<int?> StopGracePeriodSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Output("ulimitsSwarm")]
public Output<string?> UlimitsSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Output("updateConfigSwarm")]
public Output<string?> UpdateConfigSwarm { get; private set; } = null!;
/// <summary>
/// Create a MariaDb resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public MariaDb(string name, MariaDbArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/mariaDb:MariaDb", name, args ?? new MariaDbArgs(), MakeResourceOptions(options, ""))
{
}
private MariaDb(string name, Input<string> id, MariaDbState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/mariaDb:MariaDb", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"databasePassword",
"databaseRootPassword",
},
};
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;
}
/// <summary>
/// Get an existing MariaDb resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static MariaDb Get(string name, Input<string> id, MariaDbState? state = null, CustomResourceOptions? options = null)
{
return new MariaDb(name, id, state, options);
}
}
public sealed class MariaDbArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// Name of the database to create.
/// </summary>
[Input("databaseName", required: true)]
public Input<string> DatabaseName { get; set; } = null!;
[Input("databasePassword", required: true)]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the database user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
[Input("databaseRootPassword", required: true)]
private Input<string>? _databaseRootPassword;
/// <summary>
/// Password for the MariaDB `Root` user.
/// </summary>
public Input<string>? DatabaseRootPassword
{
get => _databaseRootPassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databaseRootPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Database user to create.
/// </summary>
[Input("databaseUser", required: true)]
public Input<string> DatabaseUser { get; set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// MariaDB image to run, for example `mariadb:11`.
/// </summary>
[Input("dockerImage", required: true)]
public Input<string> DockerImage { get; set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId", required: true)]
public Input<string> EnvironmentId { get; set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public MariaDbArgs()
{
}
public static new MariaDbArgs Empty => new MariaDbArgs();
}
public sealed class MariaDbState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Input("applicationStatus")]
public Input<string>? ApplicationStatus { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Name of the database to create.
/// </summary>
[Input("databaseName")]
public Input<string>? DatabaseName { get; set; }
[Input("databasePassword")]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the database user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
[Input("databaseRootPassword")]
private Input<string>? _databaseRootPassword;
/// <summary>
/// Password for the MariaDB `Root` user.
/// </summary>
public Input<string>? DatabaseRootPassword
{
get => _databaseRootPassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databaseRootPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Database user to create.
/// </summary>
[Input("databaseUser")]
public Input<string>? DatabaseUser { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// MariaDB image to run, for example `mariadb:11`.
/// </summary>
[Input("dockerImage")]
public Input<string>? DockerImage { get; set; }
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId")]
public Input<string>? EnvironmentId { get; set; }
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public MariaDbState()
{
}
public static new MariaDbState Empty => new MariaDbState();
}
}

61
sdk/dotnet/Maxvojtkov.Dokploy.csproj generated Normal file
View File

@@ -0,0 +1,61 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>maxvojtkov</Authors>
<Company>maxvojtkov</Company>
<Description>A Pulumi package for creating and managing Dokploy resources</Description>
<PackageLicenseExpression>MPL-2.0</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/maxvojtkov/pulumi-dokploy</PackageProjectUrl>
<RepositoryUrl>https://github.com/maxvojtkov/pulumi-dokploy</RepositoryUrl>
<PackageIcon>logo.png</PackageIcon>
<Version>0.1.0</Version>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<PropertyGroup>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="version.txt" />
<None Include="version.txt" Pack="True" PackagePath="content" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="pulumi-plugin.json" />
<None Include="pulumi-plugin.json" Pack="True" PackagePath="content" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Pulumi" Version="3.*" />
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<None Include="logo.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>
</Project>

706
sdk/dotnet/Mongo.cs generated Normal file
View File

@@ -0,0 +1,706 @@
// *** 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
{
[DokployResourceType("dokploy:index/mongo:Mongo")]
public partial class Mongo : global::Pulumi.CustomResource
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Output("applicationStatus")]
public Output<string> ApplicationStatus { get; private set; } = null!;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
[Output("args")]
public Output<ImmutableArray<string>> Args { get; private set; } = null!;
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Output("command")]
public Output<string?> Command { get; private set; } = null!;
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Output("cpuLimit")]
public Output<string?> CpuLimit { get; private set; } = null!;
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Output("cpuReservation")]
public Output<string?> CpuReservation { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Password for the root user.
/// </summary>
[Output("databasePassword")]
public Output<string> DatabasePassword { get; private set; } = null!;
/// <summary>
/// Root username to create.
/// </summary>
[Output("databaseUser")]
public Output<string> DatabaseUser { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Output("detachDokployNetwork")]
public Output<bool> DetachDokployNetwork { get; private set; } = null!;
/// <summary>
/// MongoDB image to run. Defaults to `mongo:8`.
/// </summary>
[Output("dockerImage")]
public Output<string> DockerImage { get; private set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Output("endpointSpecSwarm")]
public Output<string?> EndpointSpecSwarm { get; private set; } = null!;
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Output("env")]
public Output<string?> Env { get; private set; } = null!;
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Output("environmentId")]
public Output<string> EnvironmentId { get; private set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Output("externalPort")]
public Output<int?> ExternalPort { get; private set; } = null!;
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Output("healthCheckSwarm")]
public Output<string?> HealthCheckSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Output("labelsSwarm")]
public Output<string?> LabelsSwarm { get; private set; } = null!;
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Output("memoryLimit")]
public Output<string?> MemoryLimit { get; private set; } = null!;
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Output("memoryReservation")]
public Output<string?> MemoryReservation { get; private set; } = null!;
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Output("modeSwarm")]
public Output<string?> ModeSwarm { get; private set; } = null!;
/// <summary>
/// Display name of the database.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
[Output("networkIds")]
public Output<ImmutableArray<string>> NetworkIds { get; private set; } = null!;
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Output("networkSwarm")]
public Output<string?> NetworkSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Output("placementSwarm")]
public Output<string?> PlacementSwarm { get; private set; } = null!;
/// <summary>
/// Start the instance as a single-node replica set.
/// </summary>
[Output("replicaSets")]
public Output<bool> ReplicaSets { get; private set; } = null!;
/// <summary>
/// Number of replicas to run.
/// </summary>
[Output("replicas")]
public Output<int> Replicas { get; private set; } = null!;
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Output("restartPolicySwarm")]
public Output<string?> RestartPolicySwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Output("rollbackConfigSwarm")]
public Output<string?> RollbackConfigSwarm { get; private set; } = null!;
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Output("stopGracePeriodSwarm")]
public Output<int?> StopGracePeriodSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Output("ulimitsSwarm")]
public Output<string?> UlimitsSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Output("updateConfigSwarm")]
public Output<string?> UpdateConfigSwarm { get; private set; } = null!;
/// <summary>
/// Create a Mongo resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Mongo(string name, MongoArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/mongo:Mongo", name, args ?? new MongoArgs(), MakeResourceOptions(options, ""))
{
}
private Mongo(string name, Input<string> id, MongoState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/mongo:Mongo", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
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;
}
/// <summary>
/// Get an existing Mongo resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Mongo Get(string name, Input<string> id, MongoState? state = null, CustomResourceOptions? options = null)
{
return new Mongo(name, id, state, options);
}
}
public sealed class MongoArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
[Input("databasePassword", required: true)]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the root user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Root username to create.
/// </summary>
[Input("databaseUser", required: true)]
public Input<string> DatabaseUser { get; set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// MongoDB image to run. Defaults to `mongo:8`.
/// </summary>
[Input("dockerImage")]
public Input<string>? DockerImage { get; set; }
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId", required: true)]
public Input<string> EnvironmentId { get; set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Start the instance as a single-node replica set.
/// </summary>
[Input("replicaSets")]
public Input<bool>? ReplicaSets { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public MongoArgs()
{
}
public static new MongoArgs Empty => new MongoArgs();
}
public sealed class MongoState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Input("applicationStatus")]
public Input<string>? ApplicationStatus { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
[Input("databasePassword")]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the root user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Root username to create.
/// </summary>
[Input("databaseUser")]
public Input<string>? DatabaseUser { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// MongoDB image to run. Defaults to `mongo:8`.
/// </summary>
[Input("dockerImage")]
public Input<string>? DockerImage { get; set; }
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId")]
public Input<string>? EnvironmentId { get; set; }
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Start the instance as a single-node replica set.
/// </summary>
[Input("replicaSets")]
public Input<bool>? ReplicaSets { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public MongoState()
{
}
public static new MongoState Empty => new MongoState();
}
}

220
sdk/dotnet/Mount.cs generated Normal file
View File

@@ -0,0 +1,220 @@
// *** 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
{
[DokployResourceType("dokploy:index/mount:Mount")]
public partial class Mount : global::Pulumi.CustomResource
{
/// <summary>
/// Contents of the generated file, when `Type` is `File`.
/// </summary>
[Output("content")]
public Output<string?> Content { get; private set; } = null!;
/// <summary>
/// Path of the generated file, when `Type` is `File`.
/// </summary>
[Output("filePath")]
public Output<string?> FilePath { get; private set; } = null!;
/// <summary>
/// Path on the host, when `Type` is `Bind`.
/// </summary>
[Output("hostPath")]
public Output<string?> HostPath { get; private set; } = null!;
/// <summary>
/// Path inside the container where the mount appears.
/// </summary>
[Output("mountPath")]
public Output<string> MountPath { get; private set; } = null!;
/// <summary>
/// ID of the service this mount attaches to. Must match `ServiceType` — an application ID, a compose ID, a postgres ID, and so on.
/// </summary>
[Output("serviceId")]
public Output<string> ServiceId { get; private set; } = null!;
/// <summary>
/// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`.
/// </summary>
[Output("serviceType")]
public Output<string> ServiceType { get; private set; } = null!;
/// <summary>
/// The kind of mount to create. Valid values: `Bind`, `Volume`, `File`.
/// </summary>
[Output("type")]
public Output<string> Type { get; private set; } = null!;
/// <summary>
/// Name of the Docker volume, when `Type` is `Volume`.
/// </summary>
[Output("volumeName")]
public Output<string?> VolumeName { get; private set; } = null!;
/// <summary>
/// Create a Mount resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Mount(string name, MountArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/mount:Mount", name, args ?? new MountArgs(), MakeResourceOptions(options, ""))
{
}
private Mount(string name, Input<string> id, MountState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/mount:Mount", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Mount resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Mount Get(string name, Input<string> id, MountState? state = null, CustomResourceOptions? options = null)
{
return new Mount(name, id, state, options);
}
}
public sealed class MountArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Contents of the generated file, when `Type` is `File`.
/// </summary>
[Input("content")]
public Input<string>? Content { get; set; }
/// <summary>
/// Path of the generated file, when `Type` is `File`.
/// </summary>
[Input("filePath")]
public Input<string>? FilePath { get; set; }
/// <summary>
/// Path on the host, when `Type` is `Bind`.
/// </summary>
[Input("hostPath")]
public Input<string>? HostPath { get; set; }
/// <summary>
/// Path inside the container where the mount appears.
/// </summary>
[Input("mountPath", required: true)]
public Input<string> MountPath { get; set; } = null!;
/// <summary>
/// ID of the service this mount attaches to. Must match `ServiceType` — an application ID, a compose ID, a postgres ID, and so on.
/// </summary>
[Input("serviceId", required: true)]
public Input<string> ServiceId { get; set; } = null!;
/// <summary>
/// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`.
/// </summary>
[Input("serviceType", required: true)]
public Input<string> ServiceType { get; set; } = null!;
/// <summary>
/// The kind of mount to create. Valid values: `Bind`, `Volume`, `File`.
/// </summary>
[Input("type", required: true)]
public Input<string> Type { get; set; } = null!;
/// <summary>
/// Name of the Docker volume, when `Type` is `Volume`.
/// </summary>
[Input("volumeName")]
public Input<string>? VolumeName { get; set; }
public MountArgs()
{
}
public static new MountArgs Empty => new MountArgs();
}
public sealed class MountState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Contents of the generated file, when `Type` is `File`.
/// </summary>
[Input("content")]
public Input<string>? Content { get; set; }
/// <summary>
/// Path of the generated file, when `Type` is `File`.
/// </summary>
[Input("filePath")]
public Input<string>? FilePath { get; set; }
/// <summary>
/// Path on the host, when `Type` is `Bind`.
/// </summary>
[Input("hostPath")]
public Input<string>? HostPath { get; set; }
/// <summary>
/// Path inside the container where the mount appears.
/// </summary>
[Input("mountPath")]
public Input<string>? MountPath { get; set; }
/// <summary>
/// ID of the service this mount attaches to. Must match `ServiceType` — an application ID, a compose ID, a postgres ID, and so on.
/// </summary>
[Input("serviceId")]
public Input<string>? ServiceId { get; set; }
/// <summary>
/// The kind of service this mount attaches to. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`.
/// </summary>
[Input("serviceType")]
public Input<string>? ServiceType { get; set; }
/// <summary>
/// The kind of mount to create. Valid values: `Bind`, `Volume`, `File`.
/// </summary>
[Input("type")]
public Input<string>? Type { get; set; }
/// <summary>
/// Name of the Docker volume, when `Type` is `Volume`.
/// </summary>
[Input("volumeName")]
public Input<string>? VolumeName { get; set; }
public MountState()
{
}
public static new MountState Empty => new MountState();
}
}

745
sdk/dotnet/MySql.cs generated Normal file
View File

@@ -0,0 +1,745 @@
// *** 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
{
[DokployResourceType("dokploy:index/mySql:MySql")]
public partial class MySql : global::Pulumi.CustomResource
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Output("applicationStatus")]
public Output<string> ApplicationStatus { get; private set; } = null!;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
[Output("args")]
public Output<ImmutableArray<string>> Args { get; private set; } = null!;
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Output("command")]
public Output<string?> Command { get; private set; } = null!;
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Output("cpuLimit")]
public Output<string?> CpuLimit { get; private set; } = null!;
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Output("cpuReservation")]
public Output<string?> CpuReservation { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Name of the database to create.
/// </summary>
[Output("databaseName")]
public Output<string> DatabaseName { get; private set; } = null!;
/// <summary>
/// Password for the database user.
/// </summary>
[Output("databasePassword")]
public Output<string> DatabasePassword { get; private set; } = null!;
/// <summary>
/// Password for the MySQL `Root` user.
/// </summary>
[Output("databaseRootPassword")]
public Output<string> DatabaseRootPassword { get; private set; } = null!;
/// <summary>
/// Database user to create.
/// </summary>
[Output("databaseUser")]
public Output<string> DatabaseUser { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Output("detachDokployNetwork")]
public Output<bool> DetachDokployNetwork { get; private set; } = null!;
/// <summary>
/// MySQL image to run, for example `mysql:8`.
/// </summary>
[Output("dockerImage")]
public Output<string> DockerImage { get; private set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Output("endpointSpecSwarm")]
public Output<string?> EndpointSpecSwarm { get; private set; } = null!;
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Output("env")]
public Output<string?> Env { get; private set; } = null!;
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Output("environmentId")]
public Output<string> EnvironmentId { get; private set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Output("externalPort")]
public Output<int?> ExternalPort { get; private set; } = null!;
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Output("healthCheckSwarm")]
public Output<string?> HealthCheckSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Output("labelsSwarm")]
public Output<string?> LabelsSwarm { get; private set; } = null!;
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Output("memoryLimit")]
public Output<string?> MemoryLimit { get; private set; } = null!;
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Output("memoryReservation")]
public Output<string?> MemoryReservation { get; private set; } = null!;
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Output("modeSwarm")]
public Output<string?> ModeSwarm { get; private set; } = null!;
/// <summary>
/// Display name of the database.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
[Output("networkIds")]
public Output<ImmutableArray<string>> NetworkIds { get; private set; } = null!;
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Output("networkSwarm")]
public Output<string?> NetworkSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Output("placementSwarm")]
public Output<string?> PlacementSwarm { get; private set; } = null!;
/// <summary>
/// Number of replicas to run.
/// </summary>
[Output("replicas")]
public Output<int> Replicas { get; private set; } = null!;
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Output("restartPolicySwarm")]
public Output<string?> RestartPolicySwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Output("rollbackConfigSwarm")]
public Output<string?> RollbackConfigSwarm { get; private set; } = null!;
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Output("stopGracePeriodSwarm")]
public Output<int?> StopGracePeriodSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Output("ulimitsSwarm")]
public Output<string?> UlimitsSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Output("updateConfigSwarm")]
public Output<string?> UpdateConfigSwarm { get; private set; } = null!;
/// <summary>
/// Create a MySql resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public MySql(string name, MySqlArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/mySql:MySql", name, args ?? new MySqlArgs(), MakeResourceOptions(options, ""))
{
}
private MySql(string name, Input<string> id, MySqlState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/mySql:MySql", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"databasePassword",
"databaseRootPassword",
},
};
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;
}
/// <summary>
/// Get an existing MySql resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static MySql Get(string name, Input<string> id, MySqlState? state = null, CustomResourceOptions? options = null)
{
return new MySql(name, id, state, options);
}
}
public sealed class MySqlArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// Name of the database to create.
/// </summary>
[Input("databaseName", required: true)]
public Input<string> DatabaseName { get; set; } = null!;
[Input("databasePassword", required: true)]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the database user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
[Input("databaseRootPassword", required: true)]
private Input<string>? _databaseRootPassword;
/// <summary>
/// Password for the MySQL `Root` user.
/// </summary>
public Input<string>? DatabaseRootPassword
{
get => _databaseRootPassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databaseRootPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Database user to create.
/// </summary>
[Input("databaseUser", required: true)]
public Input<string> DatabaseUser { get; set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// MySQL image to run, for example `mysql:8`.
/// </summary>
[Input("dockerImage", required: true)]
public Input<string> DockerImage { get; set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId", required: true)]
public Input<string> EnvironmentId { get; set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public MySqlArgs()
{
}
public static new MySqlArgs Empty => new MySqlArgs();
}
public sealed class MySqlState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Input("applicationStatus")]
public Input<string>? ApplicationStatus { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Name of the database to create.
/// </summary>
[Input("databaseName")]
public Input<string>? DatabaseName { get; set; }
[Input("databasePassword")]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the database user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
[Input("databaseRootPassword")]
private Input<string>? _databaseRootPassword;
/// <summary>
/// Password for the MySQL `Root` user.
/// </summary>
public Input<string>? DatabaseRootPassword
{
get => _databaseRootPassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databaseRootPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Database user to create.
/// </summary>
[Input("databaseUser")]
public Input<string>? DatabaseUser { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// MySQL image to run, for example `mysql:8`.
/// </summary>
[Input("dockerImage")]
public Input<string>? DockerImage { get; set; }
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId")]
public Input<string>? EnvironmentId { get; set; }
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public MySqlState()
{
}
public static new MySqlState Empty => new MySqlState();
}
}

View File

@@ -0,0 +1,34 @@
// *** 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.Outputs
{
[OutputType]
public sealed class GetProjectEnvironmentResult
{
public readonly string Id;
public readonly bool IsDefault;
public readonly string Name;
[OutputConstructor]
private GetProjectEnvironmentResult(
string id,
bool isDefault,
string name)
{
Id = id;
IsDefault = isDefault;
Name = name;
}
}
}

View File

@@ -0,0 +1,38 @@
// *** 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.Outputs
{
[OutputType]
public sealed class GetProjectsProjectResult
{
public readonly string DefaultEnvironmentId;
public readonly string Description;
public readonly string Id;
public readonly string Name;
[OutputConstructor]
private GetProjectsProjectResult(
string defaultEnvironmentId,
string description,
string id,
string name)
{
DefaultEnvironmentId = defaultEnvironmentId;
Description = description;
Id = id;
Name = name;
}
}
}

View File

@@ -0,0 +1,38 @@
// *** 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.Outputs
{
[OutputType]
public sealed class GetServersServerResult
{
public readonly string Id;
public readonly string IpAddress;
public readonly string Name;
public readonly string ServerStatus;
[OutputConstructor]
private GetServersServerResult(
string id,
string ipAddress,
string name,
string serverStatus)
{
Id = id;
IpAddress = ipAddress;
Name = name;
ServerStatus = serverStatus;
}
}
}

166
sdk/dotnet/Port.cs generated Normal file
View File

@@ -0,0 +1,166 @@
// *** 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
{
[DokployResourceType("dokploy:index/port:Port")]
public partial class Port : global::Pulumi.CustomResource
{
/// <summary>
/// Application this port belongs to.
/// </summary>
[Output("applicationId")]
public Output<string> ApplicationId { get; private set; } = null!;
/// <summary>
/// Transport protocol. Valid values: `Tcp`, `Udp`.
/// </summary>
[Output("protocol")]
public Output<string> Protocol { get; private set; } = null!;
/// <summary>
/// Docker Swarm publish mode. `Host` binds directly to the node; `Ingress` uses the swarm routing mesh. Valid values: `Ingress`, `Host`.
/// </summary>
[Output("publishMode")]
public Output<string> PublishMode { get; private set; } = null!;
/// <summary>
/// Port exposed on the host.
/// </summary>
[Output("publishedPort")]
public Output<int> PublishedPort { get; private set; } = null!;
/// <summary>
/// Port the container listens on.
/// </summary>
[Output("targetPort")]
public Output<int> TargetPort { get; private set; } = null!;
/// <summary>
/// Create a Port resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Port(string name, PortArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/port:Port", name, args ?? new PortArgs(), MakeResourceOptions(options, ""))
{
}
private Port(string name, Input<string> id, PortState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/port:Port", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Port resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Port Get(string name, Input<string> id, PortState? state = null, CustomResourceOptions? options = null)
{
return new Port(name, id, state, options);
}
}
public sealed class PortArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application this port belongs to.
/// </summary>
[Input("applicationId", required: true)]
public Input<string> ApplicationId { get; set; } = null!;
/// <summary>
/// Transport protocol. Valid values: `Tcp`, `Udp`.
/// </summary>
[Input("protocol", required: true)]
public Input<string> Protocol { get; set; } = null!;
/// <summary>
/// Docker Swarm publish mode. `Host` binds directly to the node; `Ingress` uses the swarm routing mesh. Valid values: `Ingress`, `Host`.
/// </summary>
[Input("publishMode")]
public Input<string>? PublishMode { get; set; }
/// <summary>
/// Port exposed on the host.
/// </summary>
[Input("publishedPort", required: true)]
public Input<int> PublishedPort { get; set; } = null!;
/// <summary>
/// Port the container listens on.
/// </summary>
[Input("targetPort", required: true)]
public Input<int> TargetPort { get; set; } = null!;
public PortArgs()
{
}
public static new PortArgs Empty => new PortArgs();
}
public sealed class PortState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application this port belongs to.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// Transport protocol. Valid values: `Tcp`, `Udp`.
/// </summary>
[Input("protocol")]
public Input<string>? Protocol { get; set; }
/// <summary>
/// Docker Swarm publish mode. `Host` binds directly to the node; `Ingress` uses the swarm routing mesh. Valid values: `Ingress`, `Host`.
/// </summary>
[Input("publishMode")]
public Input<string>? PublishMode { get; set; }
/// <summary>
/// Port exposed on the host.
/// </summary>
[Input("publishedPort")]
public Input<int>? PublishedPort { get; set; }
/// <summary>
/// Port the container listens on.
/// </summary>
[Input("targetPort")]
public Input<int>? TargetPort { get; set; }
public PortState()
{
}
public static new PortState Empty => new PortState();
}
}

706
sdk/dotnet/Postgres.cs generated Normal file
View File

@@ -0,0 +1,706 @@
// *** 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
{
[DokployResourceType("dokploy:index/postgres:Postgres")]
public partial class Postgres : global::Pulumi.CustomResource
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Output("applicationStatus")]
public Output<string> ApplicationStatus { get; private set; } = null!;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
[Output("args")]
public Output<ImmutableArray<string>> Args { get; private set; } = null!;
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Output("command")]
public Output<string?> Command { get; private set; } = null!;
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Output("cpuLimit")]
public Output<string?> CpuLimit { get; private set; } = null!;
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Output("cpuReservation")]
public Output<string?> CpuReservation { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Name of the database to create.
/// </summary>
[Output("databaseName")]
public Output<string> DatabaseName { get; private set; } = null!;
/// <summary>
/// Password for the database user.
/// </summary>
[Output("databasePassword")]
public Output<string> DatabasePassword { get; private set; } = null!;
/// <summary>
/// Database user to create.
/// </summary>
[Output("databaseUser")]
public Output<string> DatabaseUser { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Output("detachDokployNetwork")]
public Output<bool> DetachDokployNetwork { get; private set; } = null!;
/// <summary>
/// PostgreSQL image to run, for example `postgres:16`.
/// </summary>
[Output("dockerImage")]
public Output<string> DockerImage { get; private set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Output("endpointSpecSwarm")]
public Output<string?> EndpointSpecSwarm { get; private set; } = null!;
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Output("env")]
public Output<string?> Env { get; private set; } = null!;
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Output("environmentId")]
public Output<string> EnvironmentId { get; private set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Output("externalPort")]
public Output<int?> ExternalPort { get; private set; } = null!;
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Output("healthCheckSwarm")]
public Output<string?> HealthCheckSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Output("labelsSwarm")]
public Output<string?> LabelsSwarm { get; private set; } = null!;
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Output("memoryLimit")]
public Output<string?> MemoryLimit { get; private set; } = null!;
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Output("memoryReservation")]
public Output<string?> MemoryReservation { get; private set; } = null!;
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Output("modeSwarm")]
public Output<string?> ModeSwarm { get; private set; } = null!;
/// <summary>
/// Display name of the database.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
[Output("networkIds")]
public Output<ImmutableArray<string>> NetworkIds { get; private set; } = null!;
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Output("networkSwarm")]
public Output<string?> NetworkSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Output("placementSwarm")]
public Output<string?> PlacementSwarm { get; private set; } = null!;
/// <summary>
/// Number of replicas to run.
/// </summary>
[Output("replicas")]
public Output<int> Replicas { get; private set; } = null!;
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Output("restartPolicySwarm")]
public Output<string?> RestartPolicySwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Output("rollbackConfigSwarm")]
public Output<string?> RollbackConfigSwarm { get; private set; } = null!;
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Output("stopGracePeriodSwarm")]
public Output<int?> StopGracePeriodSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Output("ulimitsSwarm")]
public Output<string?> UlimitsSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Output("updateConfigSwarm")]
public Output<string?> UpdateConfigSwarm { get; private set; } = null!;
/// <summary>
/// Create a Postgres resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Postgres(string name, PostgresArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/postgres:Postgres", name, args ?? new PostgresArgs(), MakeResourceOptions(options, ""))
{
}
private Postgres(string name, Input<string> id, PostgresState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/postgres:Postgres", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
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;
}
/// <summary>
/// Get an existing Postgres resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Postgres Get(string name, Input<string> id, PostgresState? state = null, CustomResourceOptions? options = null)
{
return new Postgres(name, id, state, options);
}
}
public sealed class PostgresArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// Name of the database to create.
/// </summary>
[Input("databaseName", required: true)]
public Input<string> DatabaseName { get; set; } = null!;
[Input("databasePassword", required: true)]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the database user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Database user to create.
/// </summary>
[Input("databaseUser", required: true)]
public Input<string> DatabaseUser { get; set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// PostgreSQL image to run, for example `postgres:16`.
/// </summary>
[Input("dockerImage", required: true)]
public Input<string> DockerImage { get; set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId", required: true)]
public Input<string> EnvironmentId { get; set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public PostgresArgs()
{
}
public static new PostgresArgs Empty => new PostgresArgs();
}
public sealed class PostgresState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Input("applicationStatus")]
public Input<string>? ApplicationStatus { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Name of the database to create.
/// </summary>
[Input("databaseName")]
public Input<string>? DatabaseName { get; set; }
[Input("databasePassword")]
private Input<string>? _databasePassword;
/// <summary>
/// Password for the database user.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Database user to create.
/// </summary>
[Input("databaseUser")]
public Input<string>? DatabaseUser { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// PostgreSQL image to run, for example `postgres:16`.
/// </summary>
[Input("dockerImage")]
public Input<string>? DockerImage { get; set; }
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId")]
public Input<string>? EnvironmentId { get; set; }
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public PostgresState()
{
}
public static new PostgresState Empty => new PostgresState();
}
}

166
sdk/dotnet/Project.cs generated Normal file
View File

@@ -0,0 +1,166 @@
// *** 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
{
[DokployResourceType("dokploy:index/project:Project")]
public partial class Project : global::Pulumi.CustomResource
{
/// <summary>
/// RFC 3339 timestamp of when the project was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// ID of the `Production` environment that Dokploy creates automatically with the project.
/// </summary>
[Output("defaultEnvironmentId")]
public Output<string> DefaultEnvironmentId { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
/// </summary>
[Output("env")]
public Output<string> Env { get; private set; } = null!;
/// <summary>
/// Display name of the project.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// Organization that owns the project.
/// </summary>
[Output("organizationId")]
public Output<string> OrganizationId { get; private set; } = null!;
/// <summary>
/// Create a Project resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Project(string name, ProjectArgs? args = null, CustomResourceOptions? options = null)
: base("dokploy:index/project:Project", name, args ?? new ProjectArgs(), MakeResourceOptions(options, ""))
{
}
private Project(string name, Input<string> id, ProjectState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/project:Project", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Project resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Project Get(string name, Input<string> id, ProjectState? state = null, CustomResourceOptions? options = null)
{
return new Project(name, id, state, options);
}
}
public sealed class ProjectArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Display name of the project.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
public ProjectArgs()
{
}
public static new ProjectArgs Empty => new ProjectArgs();
}
public sealed class ProjectState : global::Pulumi.ResourceArgs
{
/// <summary>
/// RFC 3339 timestamp of when the project was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// ID of the `Production` environment that Dokploy creates automatically with the project.
/// </summary>
[Input("defaultEnvironmentId")]
public Input<string>? DefaultEnvironmentId { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Display name of the project.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// Organization that owns the project.
/// </summary>
[Input("organizationId")]
public Input<string>? OrganizationId { get; set; }
public ProjectState()
{
}
public static new ProjectState Empty => new ProjectState();
}
}

130
sdk/dotnet/Provider.cs generated Normal file
View File

@@ -0,0 +1,130 @@
// *** 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
{
/// <summary>
/// The provider type for the dokploy package. By default, resources use package-wide configuration
/// settings, however an explicit `Provider` instance may be created and passed during resource
/// construction to achieve fine-grained programmatic control over provider settings. See the
/// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.
/// </summary>
[DokployResourceType("pulumi:providers:dokploy")]
public partial class Provider : global::Pulumi.ProviderResource
{
/// <summary>
/// API token generated in Dokploy under *Settings &gt; Profile &gt; API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
/// </summary>
[Output("apiKey")]
public Output<string?> ApiKey { get; private set; } = null!;
/// <summary>
/// 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.
/// </summary>
[Output("host")]
public Output<string?> Host { get; private set; } = null!;
/// <summary>
/// Create a Provider resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Provider(string name, ProviderArgs? args = null, CustomResourceOptions? options = null)
: base("dokploy", name, args ?? new ProviderArgs(), MakeResourceOptions(options, ""))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"apiKey",
},
};
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;
}
/// <summary>
/// This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.
/// </summary>
public global::Pulumi.Output<ProviderTerraformConfigResult> TerraformConfig()
=> global::Pulumi.Deployment.Instance.Call<ProviderTerraformConfigResult>("pulumi:providers:dokploy/terraformConfig", CallArgs.Empty, this);
}
public sealed class ProviderArgs : global::Pulumi.ResourceArgs
{
[Input("apiKey")]
private Input<string>? _apiKey;
/// <summary>
/// API token generated in Dokploy under *Settings &gt; Profile &gt; API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
/// </summary>
public Input<string>? ApiKey
{
get => _apiKey;
set
{
var emptySecret = Output.CreateSecret(0);
_apiKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// 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.
/// </summary>
[Input("host")]
public Input<string>? Host { get; set; }
/// <summary>
/// Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `False`.
/// </summary>
[Input("insecureSkipVerify", json: true)]
public Input<bool>? InsecureSkipVerify { get; set; }
/// <summary>
/// Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
/// </summary>
[Input("timeoutSeconds", json: true)]
public Input<int>? TimeoutSeconds { get; set; }
public ProviderArgs()
{
ApiKey = Utilities.GetEnv("DOKPLOY_API_KEY");
Host = Utilities.GetEnv("DOKPLOY_HOST");
TimeoutSeconds = Utilities.GetEnvInt32("DOKPLOY_TIMEOUT_SECONDS");
}
public static new ProviderArgs Empty => new ProviderArgs();
}
/// <summary>
/// The results of the <see cref="Provider.TerraformConfig"/> method.
/// </summary>
[OutputType]
public sealed class ProviderTerraformConfigResult
{
public readonly ImmutableDictionary<string, object> Result;
[OutputConstructor]
private ProviderTerraformConfigResult(ImmutableDictionary<string, object> result)
{
Result = result;
}
}
}

3
sdk/dotnet/Pulumi.yaml generated Normal file
View File

@@ -0,0 +1,3 @@
name: dokploy
description: A Pulumi resource provider for dokploy.
language: dotnet

206
sdk/dotnet/README.md generated Normal file
View File

@@ -0,0 +1,206 @@
# pulumi-dokploy
A Pulumi provider for [Dokploy](https://dokploy.com): projects, environments,
applications, Compose stacks, managed databases, domains, mounts, ports,
redirects, basic auth, registries, SSH keys, certificates and backup
destinations.
This is a *bridged* provider. All of the behaviour lives in
[`terraform-provider-dokploy`](https://github.com/maxvojtkov/terraform-provider-dokploy);
[`pulumi-terraform-bridge`](https://github.com/pulumi/pulumi-terraform-bridge)
turns it into a Pulumi package with typed SDKs for TypeScript, Python, Go and
.NET. The two providers stay in lockstep — a resource added upstream shows up
here after a `make tfgen`.
```ts
import * as dokploy from "@maxvojtkov/pulumi-dokploy";
const shop = new dokploy.Project("shop", { name: "shop" });
const db = new dokploy.Postgres("db", {
name: "shop-db",
environmentId: shop.defaultEnvironmentId,
dockerImage: "postgres:16-alpine",
databaseName: "shop",
databaseUser: "shop",
databasePassword: dbPassword,
});
const api = new dokploy.Application("api", {
name: "api",
environmentId: shop.defaultEnvironmentId,
sourceType: "docker",
dockerImage: "ghcr.io/acme/api:1.4.0",
env: pulumi.interpolate`DATABASE_URL=postgresql://shop:${dbPassword}@${db.appName}:5432/shop`,
});
new dokploy.Domain("api", {
applicationId: api.id,
domainType: "application",
host: "api.example.com",
port: 3000,
https: true,
certificateType: "letsencrypt",
});
```
## Contents
- [Installing](#installing)
- [Configuration](#configuration)
- [Resources and data sources](#resources-and-data-sources)
- [Differences from the Terraform provider](#differences-from-the-terraform-provider)
- [Examples](#examples)
- [Development](#development)
- [Releasing](#releasing)
## Installing
The SDKs are published per language; the plugin binary is resolved
automatically from this repository's GitHub releases.
```bash
# TypeScript / JavaScript
npm install @maxvojtkov/pulumi-dokploy
# Python
pip install pulumi_dokploy
# Go
go get github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy
# .NET
dotnet add package Maxvojtkov.Dokploy
```
Before the first release, build and install it locally instead:
```bash
make install VERSION=0.1.0
```
That drops `pulumi-resource-dokploy` into the local plugin cache, so
`pulumi up` finds it without a network fetch.
### Do I need the static SDK?
Not necessarily. Pulumi can consume the Terraform provider directly, with no
build step and no published SDK:
```bash
pulumi package add terraform-provider maxvojtkov/dokploy
```
That generates a local SDK on the spot and is the fastest way to try things.
Use this repository when you want a *versioned, published* package — stable
tokens across releases, real package-manager installs, and SDKs your teammates
can depend on without a codegen step.
## Configuration
| Setting | Environment variable | Required | Description |
| ---------------------- | ------------------------- | -------- | --------------------------------------------------------------------------- |
| `dokploy:host` | `DOKPLOY_HOST` | yes | Base URL of the instance, e.g. `https://dokploy.example.com`. Trailing `/api` optional. |
| `dokploy:apiKey` | `DOKPLOY_API_KEY` | yes | Token from *Settings → Profile → API/CLI*. Always treated as a secret. |
| `dokploy:timeoutSeconds` | `DOKPLOY_TIMEOUT_SECONDS` | no | Per-request timeout. Defaults to `60`. |
| `dokploy:insecureSkipVerify` | — | no | Skip TLS verification. Only for self-signed certificates. |
```bash
pulumi config set dokploy:host https://dokploy.example.com
pulumi config set --secret dokploy:apiKey "$DOKPLOY_API_KEY"
```
## Resources and data sources
| Group | Resources |
| ------------ | ------------------------------------------------------------------------- |
| Structure | `Project`, `Environment` |
| Services | `Application`, `Compose` |
| Databases | `Postgres`, `MySql`, `MariaDb`, `Mongo`, `Redis` |
| Networking | `Domain`, `Mount`, `Port`, `Redirect`, `Security` |
| Account | `Registry`, `SshKey`, `Certificate`, `Destination` |
Data sources: `getProject`, `getProjects`, `getEnvironment`, `getApplication`,
`getServers`.
## Differences from the Terraform provider
Everything is a mechanical translation of the Terraform provider, with three
Pulumi conventions applied on top:
- **Attribute names are camelCase.** `environment_id``environmentId`,
`default_environment_id``defaultEnvironmentId`, and so on.
- **`name` is auto-generated when you omit it.** Pulumi appends a random
suffix to the logical resource name, the same way the AWS provider does. Pass
`name` explicitly whenever the Dokploy-side name matters to you.
- **The `web-service` Terraform module has no direct equivalent.** Write it as
a [ComponentResource](https://www.pulumi.com/docs/concepts/resources/components/)
instead — see [`examples/typescript/webService.ts`](examples/typescript/webService.ts),
which is a port of that module.
The [known API quirks](https://github.com/maxvojtkov/terraform-provider-dokploy#known-api-quirks)
documented upstream apply here unchanged, because it is the same code doing the
work.
## Examples
- [`examples/typescript`](examples/typescript) — a full environment: project,
staging environment, Postgres, Redis, a GitHub-built web service behind a
domain, a basic-auth-protected internal tool, and a Compose stack.
- [`examples/python`](examples/python) — a small project, database and app.
## Development
Requirements: Go 1.25+, Node 20+, Python 3.9+, .NET 8+, and `pulumi`.
```bash
make tfgen # regenerate schema.json and bridge-metadata.json
make provider # build the plugin binary into bin/
make build_sdks # regenerate all four SDKs
make install # install the plugin into the local Pulumi plugin cache
make lint test
```
`provider/resources.go` is the whole mapping layer: Terraform type names to
Pulumi tokens, and Terraform provider configuration to Pulumi configuration.
Adding an upstream resource means adding one line there and re-running
`make tfgen build_sdks`.
### The upstream dependency
`provider/go.mod` currently carries:
```
replace github.com/maxvojtkov/terraform-provider-dokploy => ../../dokploy-teraform
```
so the two repositories can be developed side by side. CI reproduces that
layout by checking the upstream provider out as a sibling directory. Once
`terraform-provider-dokploy` is tagged on GitHub, drop the `replace` and pin a
real version instead:
```bash
cd provider && go mod edit -dropreplace github.com/maxvojtkov/terraform-provider-dokploy \
&& go get github.com/maxvojtkov/terraform-provider-dokploy@v0.1.0
```
The upstream provider exposes itself through its `shim` package
(`shim.NewProvider(version)`), because `internal/provider` is not importable
from outside that module.
## Releasing
Tag the repository and the `release` workflow does the rest:
```bash
git tag v0.1.0 && git push origin v0.1.0
```
It publishes plugin binaries to a GitHub release via GoReleaser, pushes the
npm / PyPI / NuGet packages, and commits and tags the Go SDK as `sdk/v0.1.0`.
The workflow needs three repository secrets: `NPM_TOKEN`, `PYPI_API_TOKEN` and
`NUGET_PUBLISH_KEY`.
## License
[MPL-2.0](LICENSE).

160
sdk/dotnet/Redirect.cs generated Normal file
View File

@@ -0,0 +1,160 @@
// *** 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
{
[DokployResourceType("dokploy:index/redirect:Redirect")]
public partial class Redirect : global::Pulumi.CustomResource
{
/// <summary>
/// Application this redirect belongs to.
/// </summary>
[Output("applicationId")]
public Output<string> ApplicationId { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the redirect was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Issue a permanent (301) redirect instead of a temporary (302) one.
/// </summary>
[Output("permanent")]
public Output<bool> Permanent { get; private set; } = null!;
/// <summary>
/// Regular expression matched against the incoming URL.
/// </summary>
[Output("regex")]
public Output<string> Regex { get; private set; } = null!;
/// <summary>
/// Replacement URL, which may reference capture groups such as `${1}`.
/// </summary>
[Output("replacement")]
public Output<string> Replacement { get; private set; } = null!;
/// <summary>
/// Create a Redirect resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Redirect(string name, RedirectArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/redirect:Redirect", name, args ?? new RedirectArgs(), MakeResourceOptions(options, ""))
{
}
private Redirect(string name, Input<string> id, RedirectState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/redirect:Redirect", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
};
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;
}
/// <summary>
/// Get an existing Redirect resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Redirect Get(string name, Input<string> id, RedirectState? state = null, CustomResourceOptions? options = null)
{
return new Redirect(name, id, state, options);
}
}
public sealed class RedirectArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application this redirect belongs to.
/// </summary>
[Input("applicationId", required: true)]
public Input<string> ApplicationId { get; set; } = null!;
/// <summary>
/// Issue a permanent (301) redirect instead of a temporary (302) one.
/// </summary>
[Input("permanent")]
public Input<bool>? Permanent { get; set; }
/// <summary>
/// Regular expression matched against the incoming URL.
/// </summary>
[Input("regex", required: true)]
public Input<string> Regex { get; set; } = null!;
/// <summary>
/// Replacement URL, which may reference capture groups such as `${1}`.
/// </summary>
[Input("replacement", required: true)]
public Input<string> Replacement { get; set; } = null!;
public RedirectArgs()
{
}
public static new RedirectArgs Empty => new RedirectArgs();
}
public sealed class RedirectState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application this redirect belongs to.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the redirect was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Issue a permanent (301) redirect instead of a temporary (302) one.
/// </summary>
[Input("permanent")]
public Input<bool>? Permanent { get; set; }
/// <summary>
/// Regular expression matched against the incoming URL.
/// </summary>
[Input("regex")]
public Input<string>? Regex { get; set; }
/// <summary>
/// Replacement URL, which may reference capture groups such as `${1}`.
/// </summary>
[Input("replacement")]
public Input<string>? Replacement { get; set; }
public RedirectState()
{
}
public static new RedirectState Empty => new RedirectState();
}
}

670
sdk/dotnet/Redis.cs generated Normal file
View File

@@ -0,0 +1,670 @@
// *** 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
{
[DokployResourceType("dokploy:index/redis:Redis")]
public partial class Redis : global::Pulumi.CustomResource
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Output("applicationStatus")]
public Output<string> ApplicationStatus { get; private set; } = null!;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
[Output("args")]
public Output<ImmutableArray<string>> Args { get; private set; } = null!;
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Output("command")]
public Output<string?> Command { get; private set; } = null!;
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Output("cpuLimit")]
public Output<string?> CpuLimit { get; private set; } = null!;
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Output("cpuReservation")]
public Output<string?> CpuReservation { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Password used to authenticate to Redis.
/// </summary>
[Output("databasePassword")]
public Output<string> DatabasePassword { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Output("detachDokployNetwork")]
public Output<bool> DetachDokployNetwork { get; private set; } = null!;
/// <summary>
/// Redis image to run, for example `redis:7`.
/// </summary>
[Output("dockerImage")]
public Output<string> DockerImage { get; private set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Output("endpointSpecSwarm")]
public Output<string?> EndpointSpecSwarm { get; private set; } = null!;
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Output("env")]
public Output<string?> Env { get; private set; } = null!;
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Output("environmentId")]
public Output<string> EnvironmentId { get; private set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Output("externalPort")]
public Output<int?> ExternalPort { get; private set; } = null!;
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Output("healthCheckSwarm")]
public Output<string?> HealthCheckSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Output("labelsSwarm")]
public Output<string?> LabelsSwarm { get; private set; } = null!;
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Output("memoryLimit")]
public Output<string?> MemoryLimit { get; private set; } = null!;
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Output("memoryReservation")]
public Output<string?> MemoryReservation { get; private set; } = null!;
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Output("modeSwarm")]
public Output<string?> ModeSwarm { get; private set; } = null!;
/// <summary>
/// Display name of the database.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
[Output("networkIds")]
public Output<ImmutableArray<string>> NetworkIds { get; private set; } = null!;
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Output("networkSwarm")]
public Output<string?> NetworkSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Output("placementSwarm")]
public Output<string?> PlacementSwarm { get; private set; } = null!;
/// <summary>
/// Number of replicas to run.
/// </summary>
[Output("replicas")]
public Output<int> Replicas { get; private set; } = null!;
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Output("restartPolicySwarm")]
public Output<string?> RestartPolicySwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Output("rollbackConfigSwarm")]
public Output<string?> RollbackConfigSwarm { get; private set; } = null!;
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Output("stopGracePeriodSwarm")]
public Output<int?> StopGracePeriodSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Output("ulimitsSwarm")]
public Output<string?> UlimitsSwarm { get; private set; } = null!;
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Output("updateConfigSwarm")]
public Output<string?> UpdateConfigSwarm { get; private set; } = null!;
/// <summary>
/// Create a Redis resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Redis(string name, RedisArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/redis:Redis", name, args ?? new RedisArgs(), MakeResourceOptions(options, ""))
{
}
private Redis(string name, Input<string> id, RedisState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/redis:Redis", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
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;
}
/// <summary>
/// Get an existing Redis resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Redis Get(string name, Input<string> id, RedisState? state = null, CustomResourceOptions? options = null)
{
return new Redis(name, id, state, options);
}
}
public sealed class RedisArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
[Input("databasePassword", required: true)]
private Input<string>? _databasePassword;
/// <summary>
/// Password used to authenticate to Redis.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// Redis image to run, for example `redis:7`.
/// </summary>
[Input("dockerImage", required: true)]
public Input<string> DockerImage { get; set; } = null!;
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId", required: true)]
public Input<string> EnvironmentId { get; set; } = null!;
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public RedisArgs()
{
}
public static new RedisArgs Empty => new RedisArgs();
}
public sealed class RedisState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
/// </summary>
[Input("applicationStatus")]
public Input<string>? ApplicationStatus { get; set; }
[Input("args")]
private InputList<string>? _args;
/// <summary>
/// Arguments appended to the container command.
/// </summary>
public InputList<string> Args
{
get => _args ?? (_args = new InputList<string>());
set => _args = value;
}
/// <summary>
/// Override the container entrypoint command.
/// </summary>
[Input("command")]
public Input<string>? Command { get; set; }
/// <summary>
/// Hard CPU limit, for example `1`.
/// </summary>
[Input("cpuLimit")]
public Input<string>? CpuLimit { get; set; }
/// <summary>
/// Soft CPU reservation, for example `0.5`.
/// </summary>
[Input("cpuReservation")]
public Input<string>? CpuReservation { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the database was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
[Input("databasePassword")]
private Input<string>? _databasePassword;
/// <summary>
/// Password used to authenticate to Redis.
/// </summary>
public Input<string>? DatabasePassword
{
get => _databasePassword;
set
{
var emptySecret = Output.CreateSecret(0);
_databasePassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Detach the service from the shared `dokploy-network`.
/// </summary>
[Input("detachDokployNetwork")]
public Input<bool>? DetachDokployNetwork { get; set; }
/// <summary>
/// Redis image to run, for example `redis:7`.
/// </summary>
[Input("dockerImage")]
public Input<string>? DockerImage { get; set; }
/// <summary>
/// Docker Swarm endpoint specification, as a JSON object.
/// </summary>
[Input("endpointSpecSwarm")]
public Input<string>? EndpointSpecSwarm { get; set; }
/// <summary>
/// Environment variables in `KEY=value` format, one per line.
/// </summary>
[Input("env")]
public Input<string>? Env { get; set; }
/// <summary>
/// Environment this database belongs to.
/// </summary>
[Input("environmentId")]
public Input<string>? EnvironmentId { get; set; }
/// <summary>
/// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
/// </summary>
[Input("externalPort")]
public Input<int>? ExternalPort { get; set; }
/// <summary>
/// Docker Swarm health check configuration, as a JSON object.
/// </summary>
[Input("healthCheckSwarm")]
public Input<string>? HealthCheckSwarm { get; set; }
/// <summary>
/// Docker Swarm service labels, as a JSON object.
/// </summary>
[Input("labelsSwarm")]
public Input<string>? LabelsSwarm { get; set; }
/// <summary>
/// Hard memory limit, for example `512m`.
/// </summary>
[Input("memoryLimit")]
public Input<string>? MemoryLimit { get; set; }
/// <summary>
/// Soft memory reservation, for example `256m`.
/// </summary>
[Input("memoryReservation")]
public Input<string>? MemoryReservation { get; set; }
/// <summary>
/// Docker Swarm service mode, as a JSON object.
/// </summary>
[Input("modeSwarm")]
public Input<string>? ModeSwarm { get; set; }
/// <summary>
/// Display name of the database.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("networkIds")]
private InputList<string>? _networkIds;
/// <summary>
/// IDs of additional Docker networks to attach.
/// </summary>
public InputList<string> NetworkIds
{
get => _networkIds ?? (_networkIds = new InputList<string>());
set => _networkIds = value;
}
/// <summary>
/// Docker Swarm network attachments, as a JSON array.
/// </summary>
[Input("networkSwarm")]
public Input<string>? NetworkSwarm { get; set; }
/// <summary>
/// Docker Swarm placement constraints, as a JSON object.
/// </summary>
[Input("placementSwarm")]
public Input<string>? PlacementSwarm { get; set; }
/// <summary>
/// Number of replicas to run.
/// </summary>
[Input("replicas")]
public Input<int>? Replicas { get; set; }
/// <summary>
/// Docker Swarm restart policy, as a JSON object.
/// </summary>
[Input("restartPolicySwarm")]
public Input<string>? RestartPolicySwarm { get; set; }
/// <summary>
/// Docker Swarm rollback configuration, as a JSON object.
/// </summary>
[Input("rollbackConfigSwarm")]
public Input<string>? RollbackConfigSwarm { get; set; }
/// <summary>
/// Remote server to deploy on. Omit to use the Dokploy host itself.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Grace period in nanoseconds before a container is killed.
/// </summary>
[Input("stopGracePeriodSwarm")]
public Input<int>? StopGracePeriodSwarm { get; set; }
/// <summary>
/// Docker Swarm ulimits, as a JSON object.
/// </summary>
[Input("ulimitsSwarm")]
public Input<string>? UlimitsSwarm { get; set; }
/// <summary>
/// Docker Swarm rolling update configuration, as a JSON object.
/// </summary>
[Input("updateConfigSwarm")]
public Input<string>? UpdateConfigSwarm { get; set; }
public RedisState()
{
}
public static new RedisState Empty => new RedisState();
}
}

238
sdk/dotnet/Registry.cs generated Normal file
View File

@@ -0,0 +1,238 @@
// *** 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
{
[DokployResourceType("dokploy:index/registry:Registry")]
public partial class Registry : global::Pulumi.CustomResource
{
/// <summary>
/// RFC 3339 timestamp of when the registry was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Prefix prepended to pushed image names, for example an organization or namespace.
/// </summary>
[Output("imagePrefix")]
public Output<string?> ImagePrefix { get; private set; } = null!;
/// <summary>
/// Password or access token used to authenticate.
/// </summary>
[Output("password")]
public Output<string> Password { get; private set; } = null!;
/// <summary>
/// Display name of the registry.
/// </summary>
[Output("registryName")]
public Output<string> RegistryName { get; private set; } = null!;
/// <summary>
/// Registry kind. Dokploy currently accepts only `Cloud`. Valid values: `Cloud`. Defaults to `Cloud`.
/// </summary>
[Output("registryType")]
public Output<string> RegistryType { get; private set; } = null!;
/// <summary>
/// Registry hostname, for example `ghcr.io`.
/// </summary>
[Output("registryUrl")]
public Output<string> RegistryUrl { get; private set; } = null!;
/// <summary>
/// Server this registry is scoped to.
/// </summary>
[Output("serverId")]
public Output<string?> ServerId { get; private set; } = null!;
/// <summary>
/// Username used to authenticate to the registry.
/// </summary>
[Output("username")]
public Output<string> Username { get; private set; } = null!;
/// <summary>
/// Create a Registry resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Registry(string name, RegistryArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/registry:Registry", name, args ?? new RegistryArgs(), MakeResourceOptions(options, ""))
{
}
private Registry(string name, Input<string> id, RegistryState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/registry:Registry", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"password",
},
};
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;
}
/// <summary>
/// Get an existing Registry resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Registry Get(string name, Input<string> id, RegistryState? state = null, CustomResourceOptions? options = null)
{
return new Registry(name, id, state, options);
}
}
public sealed class RegistryArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Prefix prepended to pushed image names, for example an organization or namespace.
/// </summary>
[Input("imagePrefix")]
public Input<string>? ImagePrefix { get; set; }
[Input("password", required: true)]
private Input<string>? _password;
/// <summary>
/// Password or access token used to authenticate.
/// </summary>
public Input<string>? Password
{
get => _password;
set
{
var emptySecret = Output.CreateSecret(0);
_password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Display name of the registry.
/// </summary>
[Input("registryName", required: true)]
public Input<string> RegistryName { get; set; } = null!;
/// <summary>
/// Registry kind. Dokploy currently accepts only `Cloud`. Valid values: `Cloud`. Defaults to `Cloud`.
/// </summary>
[Input("registryType")]
public Input<string>? RegistryType { get; set; }
/// <summary>
/// Registry hostname, for example `ghcr.io`.
/// </summary>
[Input("registryUrl", required: true)]
public Input<string> RegistryUrl { get; set; } = null!;
/// <summary>
/// Server this registry is scoped to.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Username used to authenticate to the registry.
/// </summary>
[Input("username", required: true)]
public Input<string> Username { get; set; } = null!;
public RegistryArgs()
{
}
public static new RegistryArgs Empty => new RegistryArgs();
}
public sealed class RegistryState : global::Pulumi.ResourceArgs
{
/// <summary>
/// RFC 3339 timestamp of when the registry was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Prefix prepended to pushed image names, for example an organization or namespace.
/// </summary>
[Input("imagePrefix")]
public Input<string>? ImagePrefix { get; set; }
[Input("password")]
private Input<string>? _password;
/// <summary>
/// Password or access token used to authenticate.
/// </summary>
public Input<string>? Password
{
get => _password;
set
{
var emptySecret = Output.CreateSecret(0);
_password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Display name of the registry.
/// </summary>
[Input("registryName")]
public Input<string>? RegistryName { get; set; }
/// <summary>
/// Registry kind. Dokploy currently accepts only `Cloud`. Valid values: `Cloud`. Defaults to `Cloud`.
/// </summary>
[Input("registryType")]
public Input<string>? RegistryType { get; set; }
/// <summary>
/// Registry hostname, for example `ghcr.io`.
/// </summary>
[Input("registryUrl")]
public Input<string>? RegistryUrl { get; set; }
/// <summary>
/// Server this registry is scoped to.
/// </summary>
[Input("serverId")]
public Input<string>? ServerId { get; set; }
/// <summary>
/// Username used to authenticate to the registry.
/// </summary>
[Input("username")]
public Input<string>? Username { get; set; }
public RegistryState()
{
}
public static new RegistryState Empty => new RegistryState();
}
}

166
sdk/dotnet/Security.cs generated Normal file
View File

@@ -0,0 +1,166 @@
// *** 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
{
[DokployResourceType("dokploy:index/security:Security")]
public partial class Security : global::Pulumi.CustomResource
{
/// <summary>
/// Application these credentials protect.
/// </summary>
[Output("applicationId")]
public Output<string> ApplicationId { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the credentials were created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Basic auth password.
/// </summary>
[Output("password")]
public Output<string> Password { get; private set; } = null!;
/// <summary>
/// Basic auth username.
/// </summary>
[Output("username")]
public Output<string> Username { get; private set; } = null!;
/// <summary>
/// Create a Security resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public Security(string name, SecurityArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/security:Security", name, args ?? new SecurityArgs(), MakeResourceOptions(options, ""))
{
}
private Security(string name, Input<string> id, SecurityState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/security:Security", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"password",
},
};
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;
}
/// <summary>
/// Get an existing Security resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static Security Get(string name, Input<string> id, SecurityState? state = null, CustomResourceOptions? options = null)
{
return new Security(name, id, state, options);
}
}
public sealed class SecurityArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application these credentials protect.
/// </summary>
[Input("applicationId", required: true)]
public Input<string> ApplicationId { get; set; } = null!;
[Input("password", required: true)]
private Input<string>? _password;
/// <summary>
/// Basic auth password.
/// </summary>
public Input<string>? Password
{
get => _password;
set
{
var emptySecret = Output.CreateSecret(0);
_password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Basic auth username.
/// </summary>
[Input("username", required: true)]
public Input<string> Username { get; set; } = null!;
public SecurityArgs()
{
}
public static new SecurityArgs Empty => new SecurityArgs();
}
public sealed class SecurityState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Application these credentials protect.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the credentials were created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
[Input("password")]
private Input<string>? _password;
/// <summary>
/// Basic auth password.
/// </summary>
public Input<string>? Password
{
get => _password;
set
{
var emptySecret = Output.CreateSecret(0);
_password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// Basic auth username.
/// </summary>
[Input("username")]
public Input<string>? Username { get; set; }
public SecurityState()
{
}
public static new SecurityState Empty => new SecurityState();
}
}

196
sdk/dotnet/SshKey.cs generated Normal file
View File

@@ -0,0 +1,196 @@
// *** 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
{
[DokployResourceType("dokploy:index/sshKey:SshKey")]
public partial class SshKey : global::Pulumi.CustomResource
{
/// <summary>
/// RFC 3339 timestamp of when the key was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Free-form description.
/// </summary>
[Output("description")]
public Output<string?> Description { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the key was last used, if ever.
/// </summary>
[Output("lastUsedAt")]
public Output<string> LastUsedAt { get; private set; } = null!;
/// <summary>
/// Display name of the key pair.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// PEM-encoded private key.
/// </summary>
[Output("privateKey")]
public Output<string> PrivateKey { get; private set; } = null!;
/// <summary>
/// OpenSSH-formatted public key.
/// </summary>
[Output("publicKey")]
public Output<string> PublicKey { get; private set; } = null!;
/// <summary>
/// Create a SshKey resource with the given unique name, arguments, and options.
/// </summary>
///
/// <param name="name">The unique name of the resource</param>
/// <param name="args">The arguments used to populate this resource's properties</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public SshKey(string name, SshKeyArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/sshKey:SshKey", name, args ?? new SshKeyArgs(), MakeResourceOptions(options, ""))
{
}
private SshKey(string name, Input<string> id, SshKeyState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/sshKey:SshKey", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "github://api.github.com/maxvojtkov/pulumi-dokploy",
AdditionalSecretOutputs =
{
"privateKey",
},
};
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;
}
/// <summary>
/// Get an existing SshKey resource's state with the given name, ID, and optional extra
/// properties used to qualify the lookup.
/// </summary>
///
/// <param name="name">The unique name of the resulting resource.</param>
/// <param name="id">The unique provider ID of the resource to lookup.</param>
/// <param name="state">Any extra arguments used during the lookup.</param>
/// <param name="options">A bag of options that control this resource's behavior</param>
public static SshKey Get(string name, Input<string> id, SshKeyState? state = null, CustomResourceOptions? options = null)
{
return new SshKey(name, id, state, options);
}
}
public sealed class SshKeyArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// Display name of the key pair.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("privateKey", required: true)]
private Input<string>? _privateKey;
/// <summary>
/// PEM-encoded private key.
/// </summary>
public Input<string>? PrivateKey
{
get => _privateKey;
set
{
var emptySecret = Output.CreateSecret(0);
_privateKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// OpenSSH-formatted public key.
/// </summary>
[Input("publicKey", required: true)]
public Input<string> PublicKey { get; set; } = null!;
public SshKeyArgs()
{
}
public static new SshKeyArgs Empty => new SshKeyArgs();
}
public sealed class SshKeyState : global::Pulumi.ResourceArgs
{
/// <summary>
/// RFC 3339 timestamp of when the key was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Free-form description.
/// </summary>
[Input("description")]
public Input<string>? Description { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the key was last used, if ever.
/// </summary>
[Input("lastUsedAt")]
public Input<string>? LastUsedAt { get; set; }
/// <summary>
/// Display name of the key pair.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
[Input("privateKey")]
private Input<string>? _privateKey;
/// <summary>
/// PEM-encoded private key.
/// </summary>
public Input<string>? PrivateKey
{
get => _privateKey;
set
{
var emptySecret = Output.CreateSecret(0);
_privateKey = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
}
}
/// <summary>
/// OpenSSH-formatted public key.
/// </summary>
[Input("publicKey")]
public Input<string>? PublicKey { get; set; }
public SshKeyState()
{
}
public static new SshKeyState Empty => new SshKeyState();
}
}

92
sdk/dotnet/Utilities.cs generated Normal file
View File

@@ -0,0 +1,92 @@
// *** WARNING: this file was generated by pulumi-language-dotnet. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
namespace Maxvojtkov.Dokploy
{
static class Utilities
{
public static string? GetEnv(params string[] names)
{
foreach (var n in names)
{
var value = global::System.Environment.GetEnvironmentVariable(n);
if (value != null)
{
return value;
}
}
return null;
}
static string[] trueValues = { "1", "t", "T", "true", "TRUE", "True" };
static string[] falseValues = { "0", "f", "F", "false", "FALSE", "False" };
public static bool? GetEnvBoolean(params string[] names)
{
var s = GetEnv(names);
if (s != null)
{
if (global::System.Array.IndexOf(trueValues, s) != -1)
{
return true;
}
if (global::System.Array.IndexOf(falseValues, s) != -1)
{
return false;
}
}
return null;
}
public static int? GetEnvInt32(params string[] names) => int.TryParse(GetEnv(names), out int v) ? (int?)v : null;
public static double? GetEnvDouble(params string[] names) => double.TryParse(GetEnv(names), out double v) ? (double?)v : null;
[global::System.Obsolete("Please use WithDefaults instead")]
public static global::Pulumi.InvokeOptions WithVersion(this global::Pulumi.InvokeOptions? options)
{
var dst = options ?? new global::Pulumi.InvokeOptions{};
dst.Version = options?.Version ?? Version;
return dst;
}
public static global::Pulumi.InvokeOptions WithDefaults(this global::Pulumi.InvokeOptions? src)
{
var dst = src ?? new global::Pulumi.InvokeOptions{};
dst.Version = src?.Version ?? Version;
dst.PluginDownloadURL = src?.PluginDownloadURL ?? "github://api.github.com/maxvojtkov/pulumi-dokploy";
return dst;
}
public static global::Pulumi.InvokeOutputOptions WithDefaults(this global::Pulumi.InvokeOutputOptions? src)
{
var dst = src ?? new global::Pulumi.InvokeOutputOptions{};
dst.Version = src?.Version ?? Version;
dst.PluginDownloadURL = src?.PluginDownloadURL ?? "github://api.github.com/maxvojtkov/pulumi-dokploy";
return dst;
}
private readonly static string version;
public static string Version => version;
static Utilities()
{
var assembly = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(Utilities)).Assembly;
using var stream = assembly.GetManifestResourceStream("Maxvojtkov.Dokploy.version.txt");
using var reader = new global::System.IO.StreamReader(stream ?? throw new global::System.NotSupportedException("Missing embedded version.txt file"));
version = reader.ReadToEnd().Trim();
var parts = version.Split("\n");
if (parts.Length == 2)
{
// The first part is the provider name.
version = parts[1].Trim();
}
}
}
internal sealed class DokployResourceTypeAttribute : global::Pulumi.ResourceTypeAttribute
{
public DokployResourceTypeAttribute(string type) : base(type, Utilities.Version)
{
}
}
}

BIN
sdk/dotnet/logo.png generated Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

6
sdk/dotnet/pulumi-plugin.json generated Normal file
View File

@@ -0,0 +1,6 @@
{
"resource": true,
"name": "dokploy",
"version": "0.1.0",
"server": "github://api.github.com/maxvojtkov/pulumi-dokploy"
}

1
sdk/dotnet/version.txt generated Normal file
View File

@@ -0,0 +1 @@
0.1.0

115
sdk/go.mod Normal file
View File

@@ -0,0 +1,115 @@
module github.com/maxvojtkov/pulumi-dokploy/sdk
go 1.25.11
require (
github.com/blang/semver v3.5.1+incompatible
github.com/pulumi/pulumi/sdk/v3 v3.256.0
)
require (
github.com/BurntSushi/toml v1.6.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/ProtonMail/go-crypto v1.4.1 // indirect
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charmbracelet/bubbles v1.0.0 // indirect
github.com/charmbracelet/bubbletea v1.3.10 // indirect
github.com/charmbracelet/colorprofile v0.4.2 // indirect
github.com/charmbracelet/lipgloss v1.1.0 // indirect
github.com/charmbracelet/x/ansi v0.11.6 // indirect
github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
github.com/charmbracelet/x/term v0.2.2 // indirect
github.com/cheggaaa/pb v1.0.29 // indirect
github.com/clipperhouse/displaywidth v0.11.0 // indirect
github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
github.com/cloudflare/circl v1.6.3 // indirect
github.com/djherbis/times v1.5.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
github.com/go-git/gcfg/v2 v2.0.2 // indirect
github.com/go-git/go-billy/v6 v6.0.0-alpha.1 // indirect
github.com/go-git/go-git/v6 v6.0.0-alpha.4 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.2.5 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-version v1.8.0 // indirect
github.com/hashicorp/hcl/v2 v2.22.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kevinburke/ssh_config v1.6.0 // indirect
github.com/klauspost/compress v1.18.7 // indirect
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.20 // indirect
github.com/mitchellh/go-ps v1.0.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/termenv v0.16.0 // indirect
github.com/opentracing/basictracer-go v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pgavlin/fx v0.1.6 // indirect
github.com/pgavlin/fx/v2 v2.0.12 // indirect
github.com/pjbgf/sha1cd v0.6.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/term v1.1.0 // indirect
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/rogpeppe/go-internal v1.14.1 // indirect
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
github.com/sergi/go-diff v1.4.0 // indirect
github.com/spf13/cast v1.4.1 // indirect
github.com/spf13/cobra v1.10.2 // indirect
github.com/spf13/pflag v1.0.10 // indirect
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/zclconf/go-cty v1.13.2 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/collector/featuregate v1.53.0 // indirect
go.opentelemetry.io/collector/pdata v1.53.0 // indirect
go.opentelemetry.io/contrib/bridges/otelslog v0.18.0 // indirect
go.opentelemetry.io/otel v1.44.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.19.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect
go.opentelemetry.io/otel/log v0.19.0 // indirect
go.opentelemetry.io/otel/metric v1.44.0 // indirect
go.opentelemetry.io/otel/sdk v1.43.0 // indirect
go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect
go.opentelemetry.io/otel/trace v1.44.0 // indirect
go.opentelemetry.io/proto/otlp v1.10.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.53.0 // indirect
golang.org/x/mod v0.37.0 // indirect
golang.org/x/net v0.56.0 // indirect
golang.org/x/sync v0.21.0 // indirect
golang.org/x/sys v0.46.0 // indirect
golang.org/x/term v0.44.0 // indirect
golang.org/x/text v0.39.0 // indirect
golang.org/x/tools v0.47.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect
google.golang.org/grpc v1.82.1 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/frand v1.4.2 // indirect
)

335
sdk/go.sum Normal file
View File

@@ -0,0 +1,335 @@
github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67IQOfM=
github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/bubbles v1.0.0 h1:12J8/ak/uCZEMQ6KU7pcfwceyjLlWsDLAxB5fXonfvc=
github.com/charmbracelet/bubbles v1.0.0/go.mod h1:9d/Zd5GdnauMI5ivUIVisuEm3ave1XwXtD1ckyV6r3E=
github.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw=
github.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4=
github.com/charmbracelet/colorprofile v0.4.2 h1:BdSNuMjRbotnxHSfxy+PCSa4xAmz7szw70ktAtWRYrY=
github.com/charmbracelet/colorprofile v0.4.2/go.mod h1:0rTi81QpwDElInthtrQ6Ni7cG0sDtwAd4C4le060fT8=
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
github.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8=
github.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ=
github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI=
github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q=
github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo=
github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30=
github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=
github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0=
github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=
github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8=
github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-git/gcfg/v2 v2.0.2 h1:MY5SIIfTGGEMhdA7d7JePuVVxtKL7Hp+ApGDJAJ7dpo=
github.com/go-git/gcfg/v2 v2.0.2/go.mod h1:/lv2NsxvhepuMrldsFilrgct6pxzpGdSRC13ydTLSLs=
github.com/go-git/go-billy/v6 v6.0.0-alpha.1 h1:xVjAR4oUvrKy7/Xuw/lLlV3gkxR3KO2H8W+MamuVVsQ=
github.com/go-git/go-billy/v6 v6.0.0-alpha.1/go.mod h1:eaCUpHbedW7//EwcYmUDfJe2N6sJC9O12AT0OTqJR1E=
github.com/go-git/go-git-fixtures/v6 v6.0.0-alpha.1 h1:gmqi2jvsreu0s8JMLylYDFq4sbjHwwlhktMw0DUg3mA=
github.com/go-git/go-git-fixtures/v6 v6.0.0-alpha.1/go.mod h1:ECf1MqJlBdYpKggBrOXjo/0EnvRZx6D++I86UYjPgAQ=
github.com/go-git/go-git/v6 v6.0.0-alpha.4 h1:aDTc2UGanmaE7FkGLSlBEB9nohMnQ+RKXcfq/D+esDQ=
github.com/go-git/go-git/v6 v6.0.0-alpha.4/go.mod h1:4ODa/G7hPWrh4Y+7lmt59Ij3zW38IEfvRoAZxLYYBhc=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=
github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4=
github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M=
github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kevinburke/ssh_config v1.6.0 h1:J1FBfmuVosPHf5GRdltRLhPJtJpTlMdKTBjRgTaQBFY=
github.com/kevinburke/ssh_config v1.6.0/go.mod h1:q2RIzfka+BXARoNexmF9gkxEX7DmvbW9P4hIVx2Kg4M=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.7 h1:aUyZsS4kH3QTKurYhAOwAHxllVPnOthb3vPfnF1Ehjw=
github.com/klauspost/compress v1.18.7/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=
github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.20 h1:WcT52H91ZUAwy8+HUkdM3THM6gXqXuLJi9O3rjcQQaQ=
github.com/mattn/go-runewidth v0.0.20/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0=
github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M=
github.com/pgavlin/fx/v2 v2.0.12 h1:SjjaJ68Dt8Z4zHwOpY/RPijd7lShs6xYupJbF9ra00M=
github.com/pgavlin/fx/v2 v2.0.12/go.mod h1:M/nF/ooAOy+NUBooYYXl2REARzJ/giPJxfMs8fINfKc=
github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU=
github.com/pjbgf/sha1cd v0.6.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
github.com/pulumi/pulumi/sdk/v3 v3.256.0 h1:OrkIu7Iw3HUcMtoEy2uzpD21C32B5EYBLBgBoh/uQPM=
github.com/pulumi/pulumi/sdk/v3 v3.256.0/go.mod h1:pyX/FL1Ta3mn4UPfYh2LKG+q/90i2+Jnl0OX4cS+b9U=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE=
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0=
github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/collector/featuregate v1.53.0 h1:cgjXdtl7jezWxq6V0eohe/JqjY4PBotZGb5+bTR2OJw=
go.opentelemetry.io/collector/featuregate v1.53.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g=
go.opentelemetry.io/collector/internal/testutil v0.147.0 h1:DFlRxBRp23/sZnpTITK25yqe0d56yNvK+63IaWc6OsU=
go.opentelemetry.io/collector/internal/testutil v0.147.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE=
go.opentelemetry.io/collector/pdata v1.53.0 h1:DlYDbRwammEZaxDZHINx5v0n8SEOVNniPbi6FRTlVkA=
go.opentelemetry.io/collector/pdata v1.53.0/go.mod h1:LRSYGNjKXaUrZEwZv3Yl+8/zV2HmRGKXW62zB2bysms=
go.opentelemetry.io/contrib/bridges/otelslog v0.18.0 h1:hhPGP3zvvy1xWT9RTy970wlniSxFttBIsAK1gvMguJM=
go.opentelemetry.io/contrib/bridges/otelslog v0.18.0/go.mod h1:twJF7inoMza6kxMcF8JOdL3mPmtOZu7GEr34CUNE6Dg=
go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.19.0 h1:Dn8rkudDzY6KV9dr/D/bTUuWgqDf9xe0rr4G2elrn0Y=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.19.0/go.mod h1:gMk9F0xDgyN9M/3Ed5Y1wKcx/9mlU91NXY2SNq7RQuU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0 h1:ao6Oe+wSebTlQ1OEht7jlYTzQKE+pnx/iNywFvTbuuI=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.41.0/go.mod h1:u3T6vz0gh/NVzgDgiwkgLxpsSF6PaPmo2il0apGJbls=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0=
go.opentelemetry.io/otel/log v0.19.0 h1:KUZs/GOsw79TBBMfDWsXS+KZ4g2Ckzksd1ymzsIEbo4=
go.opentelemetry.io/otel/log v0.19.0/go.mod h1:5DQYeGmxVIr4n0/BcJvF4upsraHjg6vudJJpnkL6Ipk=
go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
go.opentelemetry.io/otel/sdk/log v0.19.0 h1:scYVLqT22D2gqXItnWiocLUKGH9yvkkeql5dBDiXyko=
go.opentelemetry.io/otel/sdk/log v0.19.0/go.mod h1:vFBowwXGLlW9AvpuF7bMgnNI95LiW10szrOdvzBHlAg=
go.opentelemetry.io/otel/sdk/log/logtest v0.19.0 h1:BEbF7ZBB6qQloV/Ub1+3NQoOUnVtcGkU3XX4Ws3GQfk=
go.opentelemetry.io/otel/sdk/log/logtest v0.19.0/go.mod h1:Lua81/3yM0wOmoHTokLj9y9ADeA02v1naRrVrkAZuKk=
go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE=
go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI=
go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8=
go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA=
go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk=
go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ=
golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc=
golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.39.0 h1:UbZz4pLOvn600D6Oh6GGEI6VAmndrEBLv8/6BEXzyus=
golang.org/x/text v0.39.0/go.mod h1:3UwRclnC2g0TU9x8PZiyfOajCd1zaUNHF9cvqcQZ+ZM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q=
golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec=
google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE=
google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw=
lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s=
pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk=
pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=

1
sdk/go/.gitattributes generated vendored Normal file
View File

@@ -0,0 +1 @@
* linguist-generated

3
sdk/go/Pulumi.yaml generated Normal file
View File

@@ -0,0 +1,3 @@
name: dokploy
description: A Pulumi resource provider for dokploy.
language: go

1650
sdk/go/dokploy/application.go generated Normal file

File diff suppressed because it is too large Load Diff

299
sdk/go/dokploy/certificate.go generated Normal file
View File

@@ -0,0 +1,299 @@
// 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"
)
type Certificate struct {
pulumi.CustomResourceState
// Whether Dokploy should renew this certificate automatically.
AutoRenew pulumi.BoolOutput `pulumi:"autoRenew"`
// PEM-encoded certificate chain.
CertificateData pulumi.StringOutput `pulumi:"certificateData"`
// Path where Dokploy writes the certificate on disk.
CertificatePath pulumi.StringOutput `pulumi:"certificatePath"`
// Display name of the certificate.
Name pulumi.StringOutput `pulumi:"name"`
// PEM-encoded private key.
PrivateKey pulumi.StringOutput `pulumi:"privateKey"`
// Server this certificate is installed on.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
}
// NewCertificate registers a new resource with the given unique name, arguments, and options.
func NewCertificate(ctx *pulumi.Context,
name string, args *CertificateArgs, opts ...pulumi.ResourceOption) (*Certificate, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.CertificateData == nil {
return nil, errors.New("invalid value for required argument 'CertificateData'")
}
if args.PrivateKey == nil {
return nil, errors.New("invalid value for required argument 'PrivateKey'")
}
if args.PrivateKey != nil {
args.PrivateKey = pulumi.ToSecret(args.PrivateKey).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"privateKey",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource Certificate
err := ctx.RegisterResource("dokploy:index/certificate:Certificate", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetCertificate gets an existing Certificate 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 GetCertificate(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *CertificateState, opts ...pulumi.ResourceOption) (*Certificate, error) {
var resource Certificate
err := ctx.ReadResource("dokploy:index/certificate:Certificate", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Certificate resources.
type certificateState struct {
// Whether Dokploy should renew this certificate automatically.
AutoRenew *bool `pulumi:"autoRenew"`
// PEM-encoded certificate chain.
CertificateData *string `pulumi:"certificateData"`
// Path where Dokploy writes the certificate on disk.
CertificatePath *string `pulumi:"certificatePath"`
// Display name of the certificate.
Name *string `pulumi:"name"`
// PEM-encoded private key.
PrivateKey *string `pulumi:"privateKey"`
// Server this certificate is installed on.
ServerId *string `pulumi:"serverId"`
}
type CertificateState struct {
// Whether Dokploy should renew this certificate automatically.
AutoRenew pulumi.BoolPtrInput
// PEM-encoded certificate chain.
CertificateData pulumi.StringPtrInput
// Path where Dokploy writes the certificate on disk.
CertificatePath pulumi.StringPtrInput
// Display name of the certificate.
Name pulumi.StringPtrInput
// PEM-encoded private key.
PrivateKey pulumi.StringPtrInput
// Server this certificate is installed on.
ServerId pulumi.StringPtrInput
}
func (CertificateState) ElementType() reflect.Type {
return reflect.TypeOf((*certificateState)(nil)).Elem()
}
type certificateArgs struct {
// Whether Dokploy should renew this certificate automatically.
AutoRenew *bool `pulumi:"autoRenew"`
// PEM-encoded certificate chain.
CertificateData string `pulumi:"certificateData"`
// Display name of the certificate.
Name *string `pulumi:"name"`
// PEM-encoded private key.
PrivateKey string `pulumi:"privateKey"`
// Server this certificate is installed on.
ServerId *string `pulumi:"serverId"`
}
// The set of arguments for constructing a Certificate resource.
type CertificateArgs struct {
// Whether Dokploy should renew this certificate automatically.
AutoRenew pulumi.BoolPtrInput
// PEM-encoded certificate chain.
CertificateData pulumi.StringInput
// Display name of the certificate.
Name pulumi.StringPtrInput
// PEM-encoded private key.
PrivateKey pulumi.StringInput
// Server this certificate is installed on.
ServerId pulumi.StringPtrInput
}
func (CertificateArgs) ElementType() reflect.Type {
return reflect.TypeOf((*certificateArgs)(nil)).Elem()
}
type CertificateInput interface {
pulumi.Input
ToCertificateOutput() CertificateOutput
ToCertificateOutputWithContext(ctx context.Context) CertificateOutput
}
func (*Certificate) ElementType() reflect.Type {
return reflect.TypeOf((**Certificate)(nil)).Elem()
}
func (i *Certificate) ToCertificateOutput() CertificateOutput {
return i.ToCertificateOutputWithContext(context.Background())
}
func (i *Certificate) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput {
return pulumi.ToOutputWithContext(ctx, i).(CertificateOutput)
}
// CertificateArrayInput is an input type that accepts CertificateArray and CertificateArrayOutput values.
// You can construct a concrete instance of `CertificateArrayInput` via:
//
// CertificateArray{ CertificateArgs{...} }
type CertificateArrayInput interface {
pulumi.Input
ToCertificateArrayOutput() CertificateArrayOutput
ToCertificateArrayOutputWithContext(context.Context) CertificateArrayOutput
}
type CertificateArray []CertificateInput
func (CertificateArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Certificate)(nil)).Elem()
}
func (i CertificateArray) ToCertificateArrayOutput() CertificateArrayOutput {
return i.ToCertificateArrayOutputWithContext(context.Background())
}
func (i CertificateArray) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(CertificateArrayOutput)
}
// CertificateMapInput is an input type that accepts CertificateMap and CertificateMapOutput values.
// You can construct a concrete instance of `CertificateMapInput` via:
//
// CertificateMap{ "key": CertificateArgs{...} }
type CertificateMapInput interface {
pulumi.Input
ToCertificateMapOutput() CertificateMapOutput
ToCertificateMapOutputWithContext(context.Context) CertificateMapOutput
}
type CertificateMap map[string]CertificateInput
func (CertificateMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem()
}
func (i CertificateMap) ToCertificateMapOutput() CertificateMapOutput {
return i.ToCertificateMapOutputWithContext(context.Background())
}
func (i CertificateMap) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(CertificateMapOutput)
}
type CertificateOutput struct{ *pulumi.OutputState }
func (CertificateOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Certificate)(nil)).Elem()
}
func (o CertificateOutput) ToCertificateOutput() CertificateOutput {
return o
}
func (o CertificateOutput) ToCertificateOutputWithContext(ctx context.Context) CertificateOutput {
return o
}
// Whether Dokploy should renew this certificate automatically.
func (o CertificateOutput) AutoRenew() pulumi.BoolOutput {
return o.ApplyT(func(v *Certificate) pulumi.BoolOutput { return v.AutoRenew }).(pulumi.BoolOutput)
}
// PEM-encoded certificate chain.
func (o CertificateOutput) CertificateData() pulumi.StringOutput {
return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.CertificateData }).(pulumi.StringOutput)
}
// Path where Dokploy writes the certificate on disk.
func (o CertificateOutput) CertificatePath() pulumi.StringOutput {
return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.CertificatePath }).(pulumi.StringOutput)
}
// Display name of the certificate.
func (o CertificateOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// PEM-encoded private key.
func (o CertificateOutput) PrivateKey() pulumi.StringOutput {
return o.ApplyT(func(v *Certificate) pulumi.StringOutput { return v.PrivateKey }).(pulumi.StringOutput)
}
// Server this certificate is installed on.
func (o CertificateOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
type CertificateArrayOutput struct{ *pulumi.OutputState }
func (CertificateArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Certificate)(nil)).Elem()
}
func (o CertificateArrayOutput) ToCertificateArrayOutput() CertificateArrayOutput {
return o
}
func (o CertificateArrayOutput) ToCertificateArrayOutputWithContext(ctx context.Context) CertificateArrayOutput {
return o
}
func (o CertificateArrayOutput) Index(i pulumi.IntInput) CertificateOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Certificate {
return vs[0].([]*Certificate)[vs[1].(int)]
}).(CertificateOutput)
}
type CertificateMapOutput struct{ *pulumi.OutputState }
func (CertificateMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Certificate)(nil)).Elem()
}
func (o CertificateMapOutput) ToCertificateMapOutput() CertificateMapOutput {
return o
}
func (o CertificateMapOutput) ToCertificateMapOutputWithContext(ctx context.Context) CertificateMapOutput {
return o
}
func (o CertificateMapOutput) MapIndex(k pulumi.StringInput) CertificateOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Certificate {
return vs[0].(map[string]*Certificate)[vs[1].(string)]
}).(CertificateOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*CertificateInput)(nil)).Elem(), &Certificate{})
pulumi.RegisterInputType(reflect.TypeOf((*CertificateArrayInput)(nil)).Elem(), CertificateArray{})
pulumi.RegisterInputType(reflect.TypeOf((*CertificateMapInput)(nil)).Elem(), CertificateMap{})
pulumi.RegisterOutputType(CertificateOutput{})
pulumi.RegisterOutputType(CertificateArrayOutput{})
pulumi.RegisterOutputType(CertificateMapOutput{})
}

855
sdk/go/dokploy/compose.go generated Normal file
View File

@@ -0,0 +1,855 @@
// 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"
)
type Compose struct {
pulumi.CustomResourceState
// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
AppName pulumi.StringOutput `pulumi:"appName"`
// Deploy automatically when the configured trigger fires.
AutoDeploy pulumi.BoolOutput `pulumi:"autoDeploy"`
// Bitbucket branch to deploy.
BitbucketBranch pulumi.StringPtrOutput `pulumi:"bitbucketBranch"`
// ID of the configured Bitbucket provider connection.
BitbucketId pulumi.StringPtrOutput `pulumi:"bitbucketId"`
// Bitbucket repository owner.
BitbucketOwner pulumi.StringPtrOutput `pulumi:"bitbucketOwner"`
// Bitbucket repository name.
BitbucketRepository pulumi.StringPtrOutput `pulumi:"bitbucketRepository"`
// Bitbucket repository slug.
BitbucketRepositorySlug pulumi.StringPtrOutput `pulumi:"bitbucketRepositorySlug"`
// GitHub branch to deploy.
Branch pulumi.StringPtrOutput `pulumi:"branch"`
// Custom `docker compose` command to run.
Command pulumi.StringOutput `pulumi:"command"`
// Inline Compose file contents. Used when `sourceType` is `raw`.
ComposeFile pulumi.StringOutput `pulumi:"composeFile"`
// Path to the Compose file within the repository.
ComposePath pulumi.StringOutput `pulumi:"composePath"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
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"`
// RFC 3339 timestamp of when the stack was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Branch to deploy for a custom Git remote.
CustomGitBranch pulumi.StringPtrOutput `pulumi:"customGitBranch"`
// SSH key used to clone a private custom Git remote.
CustomGitSshKeyId pulumi.StringPtrOutput `pulumi:"customGitSshKeyId"`
// Git remote URL, when `sourceType` is `git`.
CustomGitUrl pulumi.StringPtrOutput `pulumi:"customGitUrl"`
// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
DeleteVolumes pulumi.BoolPtrOutput `pulumi:"deleteVolumes"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// Clone Git submodules when checking out the repository.
EnableSubmodules pulumi.BoolOutput `pulumi:"enableSubmodules"`
// Environment variables in `KEY=value` format, one per line.
Env pulumi.StringPtrOutput `pulumi:"env"`
// Environment this stack belongs to.
EnvironmentId pulumi.StringOutput `pulumi:"environmentId"`
// Gitea branch to deploy.
GiteaBranch pulumi.StringPtrOutput `pulumi:"giteaBranch"`
// ID of the configured Gitea provider connection.
GiteaId pulumi.StringPtrOutput `pulumi:"giteaId"`
// Gitea repository owner.
GiteaOwner pulumi.StringPtrOutput `pulumi:"giteaOwner"`
// Gitea repository name.
GiteaRepository pulumi.StringPtrOutput `pulumi:"giteaRepository"`
// ID of the configured GitHub provider connection.
GithubId pulumi.StringPtrOutput `pulumi:"githubId"`
// GitLab branch to deploy.
GitlabBranch pulumi.StringPtrOutput `pulumi:"gitlabBranch"`
// ID of the configured GitLab provider connection.
GitlabId pulumi.StringPtrOutput `pulumi:"gitlabId"`
// GitLab repository owner.
GitlabOwner pulumi.StringPtrOutput `pulumi:"gitlabOwner"`
// Full GitLab namespace path.
GitlabPathNamespace pulumi.StringPtrOutput `pulumi:"gitlabPathNamespace"`
// Numeric GitLab project ID.
GitlabProjectId pulumi.IntPtrOutput `pulumi:"gitlabProjectId"`
// GitLab repository name.
GitlabRepository pulumi.StringPtrOutput `pulumi:"gitlabRepository"`
// Run the stack on its own isolated Docker network.
IsolatedDeployment pulumi.BoolOutput `pulumi:"isolatedDeployment"`
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
IsolatedDeploymentsVolume pulumi.BoolOutput `pulumi:"isolatedDeploymentsVolume"`
// Display name of the stack.
Name pulumi.StringOutput `pulumi:"name"`
// GitHub repository owner.
Owner pulumi.StringPtrOutput `pulumi:"owner"`
// Append a random suffix to service and volume names.
Randomize pulumi.BoolOutput `pulumi:"randomize"`
// GitHub repository name.
Repository pulumi.StringPtrOutput `pulumi:"repository"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
// 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.
Suffix pulumi.StringOutput `pulumi:"suffix"`
// What triggers an automatic deployment. Valid values: `push`, `tag`.
TriggerType pulumi.StringOutput `pulumi:"triggerType"`
// Glob patterns that limit which changed paths trigger an automatic deployment.
WatchPaths pulumi.StringArrayOutput `pulumi:"watchPaths"`
}
// NewCompose registers a new resource with the given unique name, arguments, and options.
func NewCompose(ctx *pulumi.Context,
name string, args *ComposeArgs, opts ...pulumi.ResourceOption) (*Compose, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.EnvironmentId == nil {
return nil, errors.New("invalid value for required argument 'EnvironmentId'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Compose
err := ctx.RegisterResource("dokploy:index/compose:Compose", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetCompose gets an existing Compose 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 GetCompose(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *ComposeState, opts ...pulumi.ResourceOption) (*Compose, error) {
var resource Compose
err := ctx.ReadResource("dokploy:index/compose:Compose", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Compose resources.
type composeState struct {
// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
AppName *string `pulumi:"appName"`
// Deploy automatically when the configured trigger fires.
AutoDeploy *bool `pulumi:"autoDeploy"`
// Bitbucket branch to deploy.
BitbucketBranch *string `pulumi:"bitbucketBranch"`
// ID of the configured Bitbucket provider connection.
BitbucketId *string `pulumi:"bitbucketId"`
// Bitbucket repository owner.
BitbucketOwner *string `pulumi:"bitbucketOwner"`
// Bitbucket repository name.
BitbucketRepository *string `pulumi:"bitbucketRepository"`
// Bitbucket repository slug.
BitbucketRepositorySlug *string `pulumi:"bitbucketRepositorySlug"`
// GitHub branch to deploy.
Branch *string `pulumi:"branch"`
// Custom `docker compose` command to run.
Command *string `pulumi:"command"`
// Inline Compose file contents. Used when `sourceType` is `raw`.
ComposeFile *string `pulumi:"composeFile"`
// Path to the Compose file within the repository.
ComposePath *string `pulumi:"composePath"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ComposeStatus *string `pulumi:"composeStatus"`
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType *string `pulumi:"composeType"`
// RFC 3339 timestamp of when the stack was created.
CreatedAt *string `pulumi:"createdAt"`
// Branch to deploy for a custom Git remote.
CustomGitBranch *string `pulumi:"customGitBranch"`
// SSH key used to clone a private custom Git remote.
CustomGitSshKeyId *string `pulumi:"customGitSshKeyId"`
// Git remote URL, when `sourceType` is `git`.
CustomGitUrl *string `pulumi:"customGitUrl"`
// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
DeleteVolumes *bool `pulumi:"deleteVolumes"`
// Free-form description.
Description *string `pulumi:"description"`
// Clone Git submodules when checking out the repository.
EnableSubmodules *bool `pulumi:"enableSubmodules"`
// Environment variables in `KEY=value` format, one per line.
Env *string `pulumi:"env"`
// Environment this stack belongs to.
EnvironmentId *string `pulumi:"environmentId"`
// Gitea branch to deploy.
GiteaBranch *string `pulumi:"giteaBranch"`
// ID of the configured Gitea provider connection.
GiteaId *string `pulumi:"giteaId"`
// Gitea repository owner.
GiteaOwner *string `pulumi:"giteaOwner"`
// Gitea repository name.
GiteaRepository *string `pulumi:"giteaRepository"`
// ID of the configured GitHub provider connection.
GithubId *string `pulumi:"githubId"`
// GitLab branch to deploy.
GitlabBranch *string `pulumi:"gitlabBranch"`
// ID of the configured GitLab provider connection.
GitlabId *string `pulumi:"gitlabId"`
// GitLab repository owner.
GitlabOwner *string `pulumi:"gitlabOwner"`
// Full GitLab namespace path.
GitlabPathNamespace *string `pulumi:"gitlabPathNamespace"`
// Numeric GitLab project ID.
GitlabProjectId *int `pulumi:"gitlabProjectId"`
// GitLab repository name.
GitlabRepository *string `pulumi:"gitlabRepository"`
// Run the stack on its own isolated Docker network.
IsolatedDeployment *bool `pulumi:"isolatedDeployment"`
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
IsolatedDeploymentsVolume *bool `pulumi:"isolatedDeploymentsVolume"`
// Display name of the stack.
Name *string `pulumi:"name"`
// GitHub repository owner.
Owner *string `pulumi:"owner"`
// Append a random suffix to service and volume names.
Randomize *bool `pulumi:"randomize"`
// GitHub repository name.
Repository *string `pulumi:"repository"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType *string `pulumi:"sourceType"`
// Suffix appended to generated resource names.
Suffix *string `pulumi:"suffix"`
// What triggers an automatic deployment. Valid values: `push`, `tag`.
TriggerType *string `pulumi:"triggerType"`
// Glob patterns that limit which changed paths trigger an automatic deployment.
WatchPaths []string `pulumi:"watchPaths"`
}
type ComposeState struct {
// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
AppName pulumi.StringPtrInput
// Deploy automatically when the configured trigger fires.
AutoDeploy pulumi.BoolPtrInput
// Bitbucket branch to deploy.
BitbucketBranch pulumi.StringPtrInput
// ID of the configured Bitbucket provider connection.
BitbucketId pulumi.StringPtrInput
// Bitbucket repository owner.
BitbucketOwner pulumi.StringPtrInput
// Bitbucket repository name.
BitbucketRepository pulumi.StringPtrInput
// Bitbucket repository slug.
BitbucketRepositorySlug pulumi.StringPtrInput
// GitHub branch to deploy.
Branch pulumi.StringPtrInput
// Custom `docker compose` command to run.
Command pulumi.StringPtrInput
// Inline Compose file contents. Used when `sourceType` is `raw`.
ComposeFile pulumi.StringPtrInput
// Path to the Compose file within the repository.
ComposePath pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ComposeStatus pulumi.StringPtrInput
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType pulumi.StringPtrInput
// RFC 3339 timestamp of when the stack was created.
CreatedAt pulumi.StringPtrInput
// Branch to deploy for a custom Git remote.
CustomGitBranch pulumi.StringPtrInput
// SSH key used to clone a private custom Git remote.
CustomGitSshKeyId pulumi.StringPtrInput
// Git remote URL, when `sourceType` is `git`.
CustomGitUrl pulumi.StringPtrInput
// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
DeleteVolumes pulumi.BoolPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Clone Git submodules when checking out the repository.
EnableSubmodules pulumi.BoolPtrInput
// Environment variables in `KEY=value` format, one per line.
Env pulumi.StringPtrInput
// Environment this stack belongs to.
EnvironmentId pulumi.StringPtrInput
// Gitea branch to deploy.
GiteaBranch pulumi.StringPtrInput
// ID of the configured Gitea provider connection.
GiteaId pulumi.StringPtrInput
// Gitea repository owner.
GiteaOwner pulumi.StringPtrInput
// Gitea repository name.
GiteaRepository pulumi.StringPtrInput
// ID of the configured GitHub provider connection.
GithubId pulumi.StringPtrInput
// GitLab branch to deploy.
GitlabBranch pulumi.StringPtrInput
// ID of the configured GitLab provider connection.
GitlabId pulumi.StringPtrInput
// GitLab repository owner.
GitlabOwner pulumi.StringPtrInput
// Full GitLab namespace path.
GitlabPathNamespace pulumi.StringPtrInput
// Numeric GitLab project ID.
GitlabProjectId pulumi.IntPtrInput
// GitLab repository name.
GitlabRepository pulumi.StringPtrInput
// Run the stack on its own isolated Docker network.
IsolatedDeployment pulumi.BoolPtrInput
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
IsolatedDeploymentsVolume pulumi.BoolPtrInput
// Display name of the stack.
Name pulumi.StringPtrInput
// GitHub repository owner.
Owner pulumi.StringPtrInput
// Append a random suffix to service and volume names.
Randomize pulumi.BoolPtrInput
// GitHub repository name.
Repository pulumi.StringPtrInput
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId 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.
Suffix pulumi.StringPtrInput
// What triggers an automatic deployment. Valid values: `push`, `tag`.
TriggerType pulumi.StringPtrInput
// Glob patterns that limit which changed paths trigger an automatic deployment.
WatchPaths pulumi.StringArrayInput
}
func (ComposeState) ElementType() reflect.Type {
return reflect.TypeOf((*composeState)(nil)).Elem()
}
type composeArgs struct {
// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
AppName *string `pulumi:"appName"`
// Deploy automatically when the configured trigger fires.
AutoDeploy *bool `pulumi:"autoDeploy"`
// Bitbucket branch to deploy.
BitbucketBranch *string `pulumi:"bitbucketBranch"`
// ID of the configured Bitbucket provider connection.
BitbucketId *string `pulumi:"bitbucketId"`
// Bitbucket repository owner.
BitbucketOwner *string `pulumi:"bitbucketOwner"`
// Bitbucket repository name.
BitbucketRepository *string `pulumi:"bitbucketRepository"`
// Bitbucket repository slug.
BitbucketRepositorySlug *string `pulumi:"bitbucketRepositorySlug"`
// GitHub branch to deploy.
Branch *string `pulumi:"branch"`
// Custom `docker compose` command to run.
Command *string `pulumi:"command"`
// Inline Compose file contents. Used when `sourceType` is `raw`.
ComposeFile *string `pulumi:"composeFile"`
// Path to the Compose file within the repository.
ComposePath *string `pulumi:"composePath"`
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType *string `pulumi:"composeType"`
// Branch to deploy for a custom Git remote.
CustomGitBranch *string `pulumi:"customGitBranch"`
// SSH key used to clone a private custom Git remote.
CustomGitSshKeyId *string `pulumi:"customGitSshKeyId"`
// Git remote URL, when `sourceType` is `git`.
CustomGitUrl *string `pulumi:"customGitUrl"`
// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
DeleteVolumes *bool `pulumi:"deleteVolumes"`
// Free-form description.
Description *string `pulumi:"description"`
// Clone Git submodules when checking out the repository.
EnableSubmodules *bool `pulumi:"enableSubmodules"`
// Environment variables in `KEY=value` format, one per line.
Env *string `pulumi:"env"`
// Environment this stack belongs to.
EnvironmentId string `pulumi:"environmentId"`
// Gitea branch to deploy.
GiteaBranch *string `pulumi:"giteaBranch"`
// ID of the configured Gitea provider connection.
GiteaId *string `pulumi:"giteaId"`
// Gitea repository owner.
GiteaOwner *string `pulumi:"giteaOwner"`
// Gitea repository name.
GiteaRepository *string `pulumi:"giteaRepository"`
// ID of the configured GitHub provider connection.
GithubId *string `pulumi:"githubId"`
// GitLab branch to deploy.
GitlabBranch *string `pulumi:"gitlabBranch"`
// ID of the configured GitLab provider connection.
GitlabId *string `pulumi:"gitlabId"`
// GitLab repository owner.
GitlabOwner *string `pulumi:"gitlabOwner"`
// Full GitLab namespace path.
GitlabPathNamespace *string `pulumi:"gitlabPathNamespace"`
// Numeric GitLab project ID.
GitlabProjectId *int `pulumi:"gitlabProjectId"`
// GitLab repository name.
GitlabRepository *string `pulumi:"gitlabRepository"`
// Run the stack on its own isolated Docker network.
IsolatedDeployment *bool `pulumi:"isolatedDeployment"`
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
IsolatedDeploymentsVolume *bool `pulumi:"isolatedDeploymentsVolume"`
// Display name of the stack.
Name *string `pulumi:"name"`
// GitHub repository owner.
Owner *string `pulumi:"owner"`
// Append a random suffix to service and volume names.
Randomize *bool `pulumi:"randomize"`
// GitHub repository name.
Repository *string `pulumi:"repository"`
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId *string `pulumi:"serverId"`
// Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
SourceType *string `pulumi:"sourceType"`
// Suffix appended to generated resource names.
Suffix *string `pulumi:"suffix"`
// What triggers an automatic deployment. Valid values: `push`, `tag`.
TriggerType *string `pulumi:"triggerType"`
// Glob patterns that limit which changed paths trigger an automatic deployment.
WatchPaths []string `pulumi:"watchPaths"`
}
// The set of arguments for constructing a Compose resource.
type ComposeArgs struct {
// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
AppName pulumi.StringPtrInput
// Deploy automatically when the configured trigger fires.
AutoDeploy pulumi.BoolPtrInput
// Bitbucket branch to deploy.
BitbucketBranch pulumi.StringPtrInput
// ID of the configured Bitbucket provider connection.
BitbucketId pulumi.StringPtrInput
// Bitbucket repository owner.
BitbucketOwner pulumi.StringPtrInput
// Bitbucket repository name.
BitbucketRepository pulumi.StringPtrInput
// Bitbucket repository slug.
BitbucketRepositorySlug pulumi.StringPtrInput
// GitHub branch to deploy.
Branch pulumi.StringPtrInput
// Custom `docker compose` command to run.
Command pulumi.StringPtrInput
// Inline Compose file contents. Used when `sourceType` is `raw`.
ComposeFile pulumi.StringPtrInput
// Path to the Compose file within the repository.
ComposePath pulumi.StringPtrInput
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
ComposeType pulumi.StringPtrInput
// Branch to deploy for a custom Git remote.
CustomGitBranch pulumi.StringPtrInput
// SSH key used to clone a private custom Git remote.
CustomGitSshKeyId pulumi.StringPtrInput
// Git remote URL, when `sourceType` is `git`.
CustomGitUrl pulumi.StringPtrInput
// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
DeleteVolumes pulumi.BoolPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Clone Git submodules when checking out the repository.
EnableSubmodules pulumi.BoolPtrInput
// Environment variables in `KEY=value` format, one per line.
Env pulumi.StringPtrInput
// Environment this stack belongs to.
EnvironmentId pulumi.StringInput
// Gitea branch to deploy.
GiteaBranch pulumi.StringPtrInput
// ID of the configured Gitea provider connection.
GiteaId pulumi.StringPtrInput
// Gitea repository owner.
GiteaOwner pulumi.StringPtrInput
// Gitea repository name.
GiteaRepository pulumi.StringPtrInput
// ID of the configured GitHub provider connection.
GithubId pulumi.StringPtrInput
// GitLab branch to deploy.
GitlabBranch pulumi.StringPtrInput
// ID of the configured GitLab provider connection.
GitlabId pulumi.StringPtrInput
// GitLab repository owner.
GitlabOwner pulumi.StringPtrInput
// Full GitLab namespace path.
GitlabPathNamespace pulumi.StringPtrInput
// Numeric GitLab project ID.
GitlabProjectId pulumi.IntPtrInput
// GitLab repository name.
GitlabRepository pulumi.StringPtrInput
// Run the stack on its own isolated Docker network.
IsolatedDeployment pulumi.BoolPtrInput
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
IsolatedDeploymentsVolume pulumi.BoolPtrInput
// Display name of the stack.
Name pulumi.StringPtrInput
// GitHub repository owner.
Owner pulumi.StringPtrInput
// Append a random suffix to service and volume names.
Randomize pulumi.BoolPtrInput
// GitHub repository name.
Repository pulumi.StringPtrInput
// Remote server to deploy on. Omit to use the Dokploy host itself.
ServerId 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.
Suffix pulumi.StringPtrInput
// What triggers an automatic deployment. Valid values: `push`, `tag`.
TriggerType pulumi.StringPtrInput
// Glob patterns that limit which changed paths trigger an automatic deployment.
WatchPaths pulumi.StringArrayInput
}
func (ComposeArgs) ElementType() reflect.Type {
return reflect.TypeOf((*composeArgs)(nil)).Elem()
}
type ComposeInput interface {
pulumi.Input
ToComposeOutput() ComposeOutput
ToComposeOutputWithContext(ctx context.Context) ComposeOutput
}
func (*Compose) ElementType() reflect.Type {
return reflect.TypeOf((**Compose)(nil)).Elem()
}
func (i *Compose) ToComposeOutput() ComposeOutput {
return i.ToComposeOutputWithContext(context.Background())
}
func (i *Compose) ToComposeOutputWithContext(ctx context.Context) ComposeOutput {
return pulumi.ToOutputWithContext(ctx, i).(ComposeOutput)
}
// ComposeArrayInput is an input type that accepts ComposeArray and ComposeArrayOutput values.
// You can construct a concrete instance of `ComposeArrayInput` via:
//
// ComposeArray{ ComposeArgs{...} }
type ComposeArrayInput interface {
pulumi.Input
ToComposeArrayOutput() ComposeArrayOutput
ToComposeArrayOutputWithContext(context.Context) ComposeArrayOutput
}
type ComposeArray []ComposeInput
func (ComposeArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Compose)(nil)).Elem()
}
func (i ComposeArray) ToComposeArrayOutput() ComposeArrayOutput {
return i.ToComposeArrayOutputWithContext(context.Background())
}
func (i ComposeArray) ToComposeArrayOutputWithContext(ctx context.Context) ComposeArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(ComposeArrayOutput)
}
// ComposeMapInput is an input type that accepts ComposeMap and ComposeMapOutput values.
// You can construct a concrete instance of `ComposeMapInput` via:
//
// ComposeMap{ "key": ComposeArgs{...} }
type ComposeMapInput interface {
pulumi.Input
ToComposeMapOutput() ComposeMapOutput
ToComposeMapOutputWithContext(context.Context) ComposeMapOutput
}
type ComposeMap map[string]ComposeInput
func (ComposeMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Compose)(nil)).Elem()
}
func (i ComposeMap) ToComposeMapOutput() ComposeMapOutput {
return i.ToComposeMapOutputWithContext(context.Background())
}
func (i ComposeMap) ToComposeMapOutputWithContext(ctx context.Context) ComposeMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(ComposeMapOutput)
}
type ComposeOutput struct{ *pulumi.OutputState }
func (ComposeOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Compose)(nil)).Elem()
}
func (o ComposeOutput) ToComposeOutput() ComposeOutput {
return o
}
func (o ComposeOutput) ToComposeOutputWithContext(ctx context.Context) ComposeOutput {
return o
}
// Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
func (o ComposeOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Deploy automatically when the configured trigger fires.
func (o ComposeOutput) AutoDeploy() pulumi.BoolOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.AutoDeploy }).(pulumi.BoolOutput)
}
// Bitbucket branch to deploy.
func (o ComposeOutput) BitbucketBranch() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.BitbucketBranch }).(pulumi.StringPtrOutput)
}
// ID of the configured Bitbucket provider connection.
func (o ComposeOutput) BitbucketId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.BitbucketId }).(pulumi.StringPtrOutput)
}
// Bitbucket repository owner.
func (o ComposeOutput) BitbucketOwner() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.BitbucketOwner }).(pulumi.StringPtrOutput)
}
// Bitbucket repository name.
func (o ComposeOutput) BitbucketRepository() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.BitbucketRepository }).(pulumi.StringPtrOutput)
}
// Bitbucket repository slug.
func (o ComposeOutput) BitbucketRepositorySlug() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.BitbucketRepositorySlug }).(pulumi.StringPtrOutput)
}
// GitHub branch to deploy.
func (o ComposeOutput) Branch() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Branch }).(pulumi.StringPtrOutput)
}
// Custom `docker compose` command to run.
func (o ComposeOutput) Command() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.Command }).(pulumi.StringOutput)
}
// Inline Compose file contents. Used when `sourceType` is `raw`.
func (o ComposeOutput) ComposeFile() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.ComposeFile }).(pulumi.StringOutput)
}
// Path to the Compose file within the repository.
func (o ComposeOutput) ComposePath() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.ComposePath }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o ComposeOutput) ComposeStatus() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.ComposeStatus }).(pulumi.StringOutput)
}
// Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
func (o ComposeOutput) ComposeType() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.ComposeType }).(pulumi.StringOutput)
}
// 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)
}
// Branch to deploy for a custom Git remote.
func (o ComposeOutput) CustomGitBranch() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.CustomGitBranch }).(pulumi.StringPtrOutput)
}
// SSH key used to clone a private custom Git remote.
func (o ComposeOutput) CustomGitSshKeyId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.CustomGitSshKeyId }).(pulumi.StringPtrOutput)
}
// Git remote URL, when `sourceType` is `git`.
func (o ComposeOutput) CustomGitUrl() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.CustomGitUrl }).(pulumi.StringPtrOutput)
}
// Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
func (o ComposeOutput) DeleteVolumes() pulumi.BoolPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolPtrOutput { return v.DeleteVolumes }).(pulumi.BoolPtrOutput)
}
// Free-form description.
func (o ComposeOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Clone Git submodules when checking out the repository.
func (o ComposeOutput) EnableSubmodules() pulumi.BoolOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.EnableSubmodules }).(pulumi.BoolOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o ComposeOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this stack belongs to.
func (o ComposeOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Gitea branch to deploy.
func (o ComposeOutput) GiteaBranch() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GiteaBranch }).(pulumi.StringPtrOutput)
}
// ID of the configured Gitea provider connection.
func (o ComposeOutput) GiteaId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GiteaId }).(pulumi.StringPtrOutput)
}
// Gitea repository owner.
func (o ComposeOutput) GiteaOwner() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GiteaOwner }).(pulumi.StringPtrOutput)
}
// Gitea repository name.
func (o ComposeOutput) GiteaRepository() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GiteaRepository }).(pulumi.StringPtrOutput)
}
// ID of the configured GitHub provider connection.
func (o ComposeOutput) GithubId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GithubId }).(pulumi.StringPtrOutput)
}
// GitLab branch to deploy.
func (o ComposeOutput) GitlabBranch() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabBranch }).(pulumi.StringPtrOutput)
}
// ID of the configured GitLab provider connection.
func (o ComposeOutput) GitlabId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabId }).(pulumi.StringPtrOutput)
}
// GitLab repository owner.
func (o ComposeOutput) GitlabOwner() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabOwner }).(pulumi.StringPtrOutput)
}
// Full GitLab namespace path.
func (o ComposeOutput) GitlabPathNamespace() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabPathNamespace }).(pulumi.StringPtrOutput)
}
// Numeric GitLab project ID.
func (o ComposeOutput) GitlabProjectId() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.IntPtrOutput { return v.GitlabProjectId }).(pulumi.IntPtrOutput)
}
// GitLab repository name.
func (o ComposeOutput) GitlabRepository() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.GitlabRepository }).(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)
}
// Prefix volume names for isolated deployments. Retained for backwards compatibility.
func (o ComposeOutput) IsolatedDeploymentsVolume() pulumi.BoolOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.IsolatedDeploymentsVolume }).(pulumi.BoolOutput)
}
// Display name of the stack.
func (o ComposeOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// GitHub repository owner.
func (o ComposeOutput) Owner() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Owner }).(pulumi.StringPtrOutput)
}
// Append a random suffix to service and volume names.
func (o ComposeOutput) Randomize() pulumi.BoolOutput {
return o.ApplyT(func(v *Compose) pulumi.BoolOutput { return v.Randomize }).(pulumi.BoolOutput)
}
// GitHub repository name.
func (o ComposeOutput) Repository() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.Repository }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o ComposeOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Compose) pulumi.StringPtrOutput { return v.ServerId }).(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)
}
// Suffix appended to generated resource names.
func (o ComposeOutput) Suffix() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.Suffix }).(pulumi.StringOutput)
}
// What triggers an automatic deployment. Valid values: `push`, `tag`.
func (o ComposeOutput) TriggerType() pulumi.StringOutput {
return o.ApplyT(func(v *Compose) pulumi.StringOutput { return v.TriggerType }).(pulumi.StringOutput)
}
// Glob patterns that limit which changed paths trigger an automatic deployment.
func (o ComposeOutput) WatchPaths() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Compose) pulumi.StringArrayOutput { return v.WatchPaths }).(pulumi.StringArrayOutput)
}
type ComposeArrayOutput struct{ *pulumi.OutputState }
func (ComposeArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Compose)(nil)).Elem()
}
func (o ComposeArrayOutput) ToComposeArrayOutput() ComposeArrayOutput {
return o
}
func (o ComposeArrayOutput) ToComposeArrayOutputWithContext(ctx context.Context) ComposeArrayOutput {
return o
}
func (o ComposeArrayOutput) Index(i pulumi.IntInput) ComposeOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Compose {
return vs[0].([]*Compose)[vs[1].(int)]
}).(ComposeOutput)
}
type ComposeMapOutput struct{ *pulumi.OutputState }
func (ComposeMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Compose)(nil)).Elem()
}
func (o ComposeMapOutput) ToComposeMapOutput() ComposeMapOutput {
return o
}
func (o ComposeMapOutput) ToComposeMapOutputWithContext(ctx context.Context) ComposeMapOutput {
return o
}
func (o ComposeMapOutput) MapIndex(k pulumi.StringInput) ComposeOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Compose {
return vs[0].(map[string]*Compose)[vs[1].(string)]
}).(ComposeOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ComposeInput)(nil)).Elem(), &Compose{})
pulumi.RegisterInputType(reflect.TypeOf((*ComposeArrayInput)(nil)).Elem(), ComposeArray{})
pulumi.RegisterInputType(reflect.TypeOf((*ComposeMapInput)(nil)).Elem(), ComposeMap{})
pulumi.RegisterOutputType(ComposeOutput{})
pulumi.RegisterOutputType(ComposeArrayOutput{})
pulumi.RegisterOutputType(ComposeMapOutput{})
}

56
sdk/go/dokploy/config/config.go generated Normal file
View File

@@ -0,0 +1,56 @@
// 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 config
import (
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
var _ = internal.GetEnvOrDefault
// API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
func GetApiKey(ctx *pulumi.Context) string {
v, err := config.Try(ctx, "dokploy:apiKey")
if err == nil {
return v
}
var value string
if d := internal.GetEnvOrDefault(nil, nil, "DOKPLOY_API_KEY"); d != nil {
value = d.(string)
}
return value
}
// 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.
func GetHost(ctx *pulumi.Context) string {
v, err := config.Try(ctx, "dokploy:host")
if err == nil {
return v
}
var value string
if d := internal.GetEnvOrDefault(nil, nil, "DOKPLOY_HOST"); d != nil {
value = d.(string)
}
return value
}
// Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`.
func GetInsecureSkipVerify(ctx *pulumi.Context) bool {
return config.GetBool(ctx, "dokploy:insecureSkipVerify")
}
// Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
func GetTimeoutSeconds(ctx *pulumi.Context) int {
v, err := config.TryInt(ctx, "dokploy:timeoutSeconds")
if err == nil {
return v
}
var value int
if d := internal.GetEnvOrDefault(nil, internal.ParseEnvInt, "DOKPLOY_TIMEOUT_SECONDS"); d != nil {
value = d.(int)
}
return value
}

368
sdk/go/dokploy/destination.go generated Normal file
View File

@@ -0,0 +1,368 @@
// 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"
)
type Destination struct {
pulumi.CustomResourceState
// S3 access key ID.
AccessKey pulumi.StringOutput `pulumi:"accessKey"`
// Extra flags passed to the underlying `rclone` invocation.
AdditionalFlags pulumi.StringArrayOutput `pulumi:"additionalFlags"`
// Bucket name.
Bucket pulumi.StringOutput `pulumi:"bucket"`
// Timestamp of when the destination was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// S3 endpoint URL.
Endpoint pulumi.StringOutput `pulumi:"endpoint"`
// Display name of the destination.
Name pulumi.StringOutput `pulumi:"name"`
// Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
ProviderName pulumi.StringPtrOutput `pulumi:"providerName"`
// Bucket region, for example `us-east-1`.
Region pulumi.StringOutput `pulumi:"region"`
// S3 secret access key.
SecretAccessKey pulumi.StringOutput `pulumi:"secretAccessKey"`
// Server this destination is scoped to.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
}
// NewDestination registers a new resource with the given unique name, arguments, and options.
func NewDestination(ctx *pulumi.Context,
name string, args *DestinationArgs, opts ...pulumi.ResourceOption) (*Destination, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.AccessKey == nil {
return nil, errors.New("invalid value for required argument 'AccessKey'")
}
if args.Bucket == nil {
return nil, errors.New("invalid value for required argument 'Bucket'")
}
if args.Endpoint == nil {
return nil, errors.New("invalid value for required argument 'Endpoint'")
}
if args.Region == nil {
return nil, errors.New("invalid value for required argument 'Region'")
}
if args.SecretAccessKey == nil {
return nil, errors.New("invalid value for required argument 'SecretAccessKey'")
}
if args.SecretAccessKey != nil {
args.SecretAccessKey = pulumi.ToSecret(args.SecretAccessKey).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"secretAccessKey",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource Destination
err := ctx.RegisterResource("dokploy:index/destination:Destination", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetDestination gets an existing Destination 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 GetDestination(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *DestinationState, opts ...pulumi.ResourceOption) (*Destination, error) {
var resource Destination
err := ctx.ReadResource("dokploy:index/destination:Destination", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Destination resources.
type destinationState struct {
// S3 access key ID.
AccessKey *string `pulumi:"accessKey"`
// Extra flags passed to the underlying `rclone` invocation.
AdditionalFlags []string `pulumi:"additionalFlags"`
// Bucket name.
Bucket *string `pulumi:"bucket"`
// Timestamp of when the destination was created.
CreatedAt *string `pulumi:"createdAt"`
// S3 endpoint URL.
Endpoint *string `pulumi:"endpoint"`
// Display name of the destination.
Name *string `pulumi:"name"`
// Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
ProviderName *string `pulumi:"providerName"`
// Bucket region, for example `us-east-1`.
Region *string `pulumi:"region"`
// S3 secret access key.
SecretAccessKey *string `pulumi:"secretAccessKey"`
// Server this destination is scoped to.
ServerId *string `pulumi:"serverId"`
}
type DestinationState struct {
// S3 access key ID.
AccessKey pulumi.StringPtrInput
// Extra flags passed to the underlying `rclone` invocation.
AdditionalFlags pulumi.StringArrayInput
// Bucket name.
Bucket pulumi.StringPtrInput
// Timestamp of when the destination was created.
CreatedAt pulumi.StringPtrInput
// S3 endpoint URL.
Endpoint pulumi.StringPtrInput
// Display name of the destination.
Name pulumi.StringPtrInput
// Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
ProviderName pulumi.StringPtrInput
// Bucket region, for example `us-east-1`.
Region pulumi.StringPtrInput
// S3 secret access key.
SecretAccessKey pulumi.StringPtrInput
// Server this destination is scoped to.
ServerId pulumi.StringPtrInput
}
func (DestinationState) ElementType() reflect.Type {
return reflect.TypeOf((*destinationState)(nil)).Elem()
}
type destinationArgs struct {
// S3 access key ID.
AccessKey string `pulumi:"accessKey"`
// Extra flags passed to the underlying `rclone` invocation.
AdditionalFlags []string `pulumi:"additionalFlags"`
// Bucket name.
Bucket string `pulumi:"bucket"`
// S3 endpoint URL.
Endpoint string `pulumi:"endpoint"`
// Display name of the destination.
Name *string `pulumi:"name"`
// Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
ProviderName *string `pulumi:"providerName"`
// Bucket region, for example `us-east-1`.
Region string `pulumi:"region"`
// S3 secret access key.
SecretAccessKey string `pulumi:"secretAccessKey"`
// Server this destination is scoped to.
ServerId *string `pulumi:"serverId"`
}
// The set of arguments for constructing a Destination resource.
type DestinationArgs struct {
// S3 access key ID.
AccessKey pulumi.StringInput
// Extra flags passed to the underlying `rclone` invocation.
AdditionalFlags pulumi.StringArrayInput
// Bucket name.
Bucket pulumi.StringInput
// S3 endpoint URL.
Endpoint pulumi.StringInput
// Display name of the destination.
Name pulumi.StringPtrInput
// Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
ProviderName pulumi.StringPtrInput
// Bucket region, for example `us-east-1`.
Region pulumi.StringInput
// S3 secret access key.
SecretAccessKey pulumi.StringInput
// Server this destination is scoped to.
ServerId pulumi.StringPtrInput
}
func (DestinationArgs) ElementType() reflect.Type {
return reflect.TypeOf((*destinationArgs)(nil)).Elem()
}
type DestinationInput interface {
pulumi.Input
ToDestinationOutput() DestinationOutput
ToDestinationOutputWithContext(ctx context.Context) DestinationOutput
}
func (*Destination) ElementType() reflect.Type {
return reflect.TypeOf((**Destination)(nil)).Elem()
}
func (i *Destination) ToDestinationOutput() DestinationOutput {
return i.ToDestinationOutputWithContext(context.Background())
}
func (i *Destination) ToDestinationOutputWithContext(ctx context.Context) DestinationOutput {
return pulumi.ToOutputWithContext(ctx, i).(DestinationOutput)
}
// DestinationArrayInput is an input type that accepts DestinationArray and DestinationArrayOutput values.
// You can construct a concrete instance of `DestinationArrayInput` via:
//
// DestinationArray{ DestinationArgs{...} }
type DestinationArrayInput interface {
pulumi.Input
ToDestinationArrayOutput() DestinationArrayOutput
ToDestinationArrayOutputWithContext(context.Context) DestinationArrayOutput
}
type DestinationArray []DestinationInput
func (DestinationArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Destination)(nil)).Elem()
}
func (i DestinationArray) ToDestinationArrayOutput() DestinationArrayOutput {
return i.ToDestinationArrayOutputWithContext(context.Background())
}
func (i DestinationArray) ToDestinationArrayOutputWithContext(ctx context.Context) DestinationArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(DestinationArrayOutput)
}
// DestinationMapInput is an input type that accepts DestinationMap and DestinationMapOutput values.
// You can construct a concrete instance of `DestinationMapInput` via:
//
// DestinationMap{ "key": DestinationArgs{...} }
type DestinationMapInput interface {
pulumi.Input
ToDestinationMapOutput() DestinationMapOutput
ToDestinationMapOutputWithContext(context.Context) DestinationMapOutput
}
type DestinationMap map[string]DestinationInput
func (DestinationMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Destination)(nil)).Elem()
}
func (i DestinationMap) ToDestinationMapOutput() DestinationMapOutput {
return i.ToDestinationMapOutputWithContext(context.Background())
}
func (i DestinationMap) ToDestinationMapOutputWithContext(ctx context.Context) DestinationMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(DestinationMapOutput)
}
type DestinationOutput struct{ *pulumi.OutputState }
func (DestinationOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Destination)(nil)).Elem()
}
func (o DestinationOutput) ToDestinationOutput() DestinationOutput {
return o
}
func (o DestinationOutput) ToDestinationOutputWithContext(ctx context.Context) DestinationOutput {
return o
}
// S3 access key ID.
func (o DestinationOutput) AccessKey() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.AccessKey }).(pulumi.StringOutput)
}
// Extra flags passed to the underlying `rclone` invocation.
func (o DestinationOutput) AdditionalFlags() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Destination) pulumi.StringArrayOutput { return v.AdditionalFlags }).(pulumi.StringArrayOutput)
}
// Bucket name.
func (o DestinationOutput) Bucket() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput)
}
// Timestamp of when the destination was created.
func (o DestinationOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// S3 endpoint URL.
func (o DestinationOutput) Endpoint() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.Endpoint }).(pulumi.StringOutput)
}
// Display name of the destination.
func (o DestinationOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
func (o DestinationOutput) ProviderName() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Destination) pulumi.StringPtrOutput { return v.ProviderName }).(pulumi.StringPtrOutput)
}
// Bucket region, for example `us-east-1`.
func (o DestinationOutput) Region() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.Region }).(pulumi.StringOutput)
}
// S3 secret access key.
func (o DestinationOutput) SecretAccessKey() pulumi.StringOutput {
return o.ApplyT(func(v *Destination) pulumi.StringOutput { return v.SecretAccessKey }).(pulumi.StringOutput)
}
// Server this destination is scoped to.
func (o DestinationOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Destination) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
type DestinationArrayOutput struct{ *pulumi.OutputState }
func (DestinationArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Destination)(nil)).Elem()
}
func (o DestinationArrayOutput) ToDestinationArrayOutput() DestinationArrayOutput {
return o
}
func (o DestinationArrayOutput) ToDestinationArrayOutputWithContext(ctx context.Context) DestinationArrayOutput {
return o
}
func (o DestinationArrayOutput) Index(i pulumi.IntInput) DestinationOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Destination {
return vs[0].([]*Destination)[vs[1].(int)]
}).(DestinationOutput)
}
type DestinationMapOutput struct{ *pulumi.OutputState }
func (DestinationMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Destination)(nil)).Elem()
}
func (o DestinationMapOutput) ToDestinationMapOutput() DestinationMapOutput {
return o
}
func (o DestinationMapOutput) ToDestinationMapOutputWithContext(ctx context.Context) DestinationMapOutput {
return o
}
func (o DestinationMapOutput) MapIndex(k pulumi.StringInput) DestinationOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Destination {
return vs[0].(map[string]*Destination)[vs[1].(string)]
}).(DestinationOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*DestinationInput)(nil)).Elem(), &Destination{})
pulumi.RegisterInputType(reflect.TypeOf((*DestinationArrayInput)(nil)).Elem(), DestinationArray{})
pulumi.RegisterInputType(reflect.TypeOf((*DestinationMapInput)(nil)).Elem(), DestinationMap{})
pulumi.RegisterOutputType(DestinationOutput{})
pulumi.RegisterOutputType(DestinationArrayOutput{})
pulumi.RegisterOutputType(DestinationMapOutput{})
}

2
sdk/go/dokploy/doc.go generated Normal file
View File

@@ -0,0 +1,2 @@
// A Pulumi package for creating and managing Dokploy resources
package dokploy

454
sdk/go/dokploy/domain.go generated Normal file
View File

@@ -0,0 +1,454 @@
// 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"
)
type Domain struct {
pulumi.CustomResourceState
// Application this domain routes to.
ApplicationId pulumi.StringPtrOutput `pulumi:"applicationId"`
// How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
CertificateType pulumi.StringOutput `pulumi:"certificateType"`
// Compose stack this domain routes to.
ComposeId pulumi.StringPtrOutput `pulumi:"composeId"`
// RFC 3339 timestamp of when the domain was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Traefik certificate resolver name, when `certificateType` is `custom`.
CustomCertResolver pulumi.StringPtrOutput `pulumi:"customCertResolver"`
// Traefik entrypoint to bind, when not using the defaults.
CustomEntrypoint pulumi.StringPtrOutput `pulumi:"customEntrypoint"`
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType pulumi.StringOutput `pulumi:"domainType"`
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled pulumi.BoolOutput `pulumi:"forwardAuthEnabled"`
// Fully-qualified hostname, for example `api.example.com`.
Host pulumi.StringOutput `pulumi:"host"`
// Serve the domain over HTTPS and redirect HTTP traffic to it.
Https pulumi.BoolOutput `pulumi:"https"`
// Path the request is rewritten to before it reaches the container, defaults to `/`.
InternalPath pulumi.StringOutput `pulumi:"internalPath"`
// Names of Traefik middlewares to apply.
Middlewares pulumi.StringArrayOutput `pulumi:"middlewares"`
// Path prefix this domain routes, defaults to `/`.
Path pulumi.StringOutput `pulumi:"path"`
// Container port that receives the traffic, defaults to `3000`.
Port pulumi.IntOutput `pulumi:"port"`
// Preview deployment this domain routes to.
PreviewDeploymentId pulumi.StringPtrOutput `pulumi:"previewDeploymentId"`
// Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
ServiceName pulumi.StringPtrOutput `pulumi:"serviceName"`
// Strip `path` from the request before forwarding it.
StripPath pulumi.BoolOutput `pulumi:"stripPath"`
}
// NewDomain registers a new resource with the given unique name, arguments, and options.
func NewDomain(ctx *pulumi.Context,
name string, args *DomainArgs, opts ...pulumi.ResourceOption) (*Domain, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.Host == nil {
return nil, errors.New("invalid value for required argument 'Host'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Domain
err := ctx.RegisterResource("dokploy:index/domain:Domain", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetDomain gets an existing Domain 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 GetDomain(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *DomainState, opts ...pulumi.ResourceOption) (*Domain, error) {
var resource Domain
err := ctx.ReadResource("dokploy:index/domain:Domain", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Domain resources.
type domainState struct {
// Application this domain routes to.
ApplicationId *string `pulumi:"applicationId"`
// How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
CertificateType *string `pulumi:"certificateType"`
// Compose stack this domain routes to.
ComposeId *string `pulumi:"composeId"`
// RFC 3339 timestamp of when the domain was created.
CreatedAt *string `pulumi:"createdAt"`
// Traefik certificate resolver name, when `certificateType` is `custom`.
CustomCertResolver *string `pulumi:"customCertResolver"`
// Traefik entrypoint to bind, when not using the defaults.
CustomEntrypoint *string `pulumi:"customEntrypoint"`
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType *string `pulumi:"domainType"`
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled *bool `pulumi:"forwardAuthEnabled"`
// Fully-qualified hostname, for example `api.example.com`.
Host *string `pulumi:"host"`
// Serve the domain over HTTPS and redirect HTTP traffic to it.
Https *bool `pulumi:"https"`
// Path the request is rewritten to before it reaches the container, defaults to `/`.
InternalPath *string `pulumi:"internalPath"`
// Names of Traefik middlewares to apply.
Middlewares []string `pulumi:"middlewares"`
// Path prefix this domain routes, defaults to `/`.
Path *string `pulumi:"path"`
// Container port that receives the traffic, defaults to `3000`.
Port *int `pulumi:"port"`
// Preview deployment this domain routes to.
PreviewDeploymentId *string `pulumi:"previewDeploymentId"`
// Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
ServiceName *string `pulumi:"serviceName"`
// Strip `path` from the request before forwarding it.
StripPath *bool `pulumi:"stripPath"`
}
type DomainState struct {
// Application this domain routes to.
ApplicationId pulumi.StringPtrInput
// How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
CertificateType pulumi.StringPtrInput
// Compose stack this domain routes to.
ComposeId pulumi.StringPtrInput
// RFC 3339 timestamp of when the domain was created.
CreatedAt pulumi.StringPtrInput
// Traefik certificate resolver name, when `certificateType` is `custom`.
CustomCertResolver pulumi.StringPtrInput
// Traefik entrypoint to bind, when not using the defaults.
CustomEntrypoint pulumi.StringPtrInput
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType pulumi.StringPtrInput
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled pulumi.BoolPtrInput
// Fully-qualified hostname, for example `api.example.com`.
Host pulumi.StringPtrInput
// Serve the domain over HTTPS and redirect HTTP traffic to it.
Https pulumi.BoolPtrInput
// Path the request is rewritten to before it reaches the container, defaults to `/`.
InternalPath pulumi.StringPtrInput
// Names of Traefik middlewares to apply.
Middlewares pulumi.StringArrayInput
// Path prefix this domain routes, defaults to `/`.
Path pulumi.StringPtrInput
// Container port that receives the traffic, defaults to `3000`.
Port pulumi.IntPtrInput
// Preview deployment this domain routes to.
PreviewDeploymentId pulumi.StringPtrInput
// Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
ServiceName pulumi.StringPtrInput
// Strip `path` from the request before forwarding it.
StripPath pulumi.BoolPtrInput
}
func (DomainState) ElementType() reflect.Type {
return reflect.TypeOf((*domainState)(nil)).Elem()
}
type domainArgs struct {
// Application this domain routes to.
ApplicationId *string `pulumi:"applicationId"`
// How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
CertificateType *string `pulumi:"certificateType"`
// Compose stack this domain routes to.
ComposeId *string `pulumi:"composeId"`
// Traefik certificate resolver name, when `certificateType` is `custom`.
CustomCertResolver *string `pulumi:"customCertResolver"`
// Traefik entrypoint to bind, when not using the defaults.
CustomEntrypoint *string `pulumi:"customEntrypoint"`
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType *string `pulumi:"domainType"`
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled *bool `pulumi:"forwardAuthEnabled"`
// Fully-qualified hostname, for example `api.example.com`.
Host string `pulumi:"host"`
// Serve the domain over HTTPS and redirect HTTP traffic to it.
Https *bool `pulumi:"https"`
// Path the request is rewritten to before it reaches the container, defaults to `/`.
InternalPath *string `pulumi:"internalPath"`
// Names of Traefik middlewares to apply.
Middlewares []string `pulumi:"middlewares"`
// Path prefix this domain routes, defaults to `/`.
Path *string `pulumi:"path"`
// Container port that receives the traffic, defaults to `3000`.
Port *int `pulumi:"port"`
// Preview deployment this domain routes to.
PreviewDeploymentId *string `pulumi:"previewDeploymentId"`
// Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
ServiceName *string `pulumi:"serviceName"`
// Strip `path` from the request before forwarding it.
StripPath *bool `pulumi:"stripPath"`
}
// The set of arguments for constructing a Domain resource.
type DomainArgs struct {
// Application this domain routes to.
ApplicationId pulumi.StringPtrInput
// How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
CertificateType pulumi.StringPtrInput
// Compose stack this domain routes to.
ComposeId pulumi.StringPtrInput
// Traefik certificate resolver name, when `certificateType` is `custom`.
CustomCertResolver pulumi.StringPtrInput
// Traefik entrypoint to bind, when not using the defaults.
CustomEntrypoint pulumi.StringPtrInput
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
DomainType pulumi.StringPtrInput
// Protect this domain with Dokploy's forward auth.
ForwardAuthEnabled pulumi.BoolPtrInput
// Fully-qualified hostname, for example `api.example.com`.
Host pulumi.StringInput
// Serve the domain over HTTPS and redirect HTTP traffic to it.
Https pulumi.BoolPtrInput
// Path the request is rewritten to before it reaches the container, defaults to `/`.
InternalPath pulumi.StringPtrInput
// Names of Traefik middlewares to apply.
Middlewares pulumi.StringArrayInput
// Path prefix this domain routes, defaults to `/`.
Path pulumi.StringPtrInput
// Container port that receives the traffic, defaults to `3000`.
Port pulumi.IntPtrInput
// Preview deployment this domain routes to.
PreviewDeploymentId pulumi.StringPtrInput
// Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
ServiceName pulumi.StringPtrInput
// Strip `path` from the request before forwarding it.
StripPath pulumi.BoolPtrInput
}
func (DomainArgs) ElementType() reflect.Type {
return reflect.TypeOf((*domainArgs)(nil)).Elem()
}
type DomainInput interface {
pulumi.Input
ToDomainOutput() DomainOutput
ToDomainOutputWithContext(ctx context.Context) DomainOutput
}
func (*Domain) ElementType() reflect.Type {
return reflect.TypeOf((**Domain)(nil)).Elem()
}
func (i *Domain) ToDomainOutput() DomainOutput {
return i.ToDomainOutputWithContext(context.Background())
}
func (i *Domain) ToDomainOutputWithContext(ctx context.Context) DomainOutput {
return pulumi.ToOutputWithContext(ctx, i).(DomainOutput)
}
// DomainArrayInput is an input type that accepts DomainArray and DomainArrayOutput values.
// You can construct a concrete instance of `DomainArrayInput` via:
//
// DomainArray{ DomainArgs{...} }
type DomainArrayInput interface {
pulumi.Input
ToDomainArrayOutput() DomainArrayOutput
ToDomainArrayOutputWithContext(context.Context) DomainArrayOutput
}
type DomainArray []DomainInput
func (DomainArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Domain)(nil)).Elem()
}
func (i DomainArray) ToDomainArrayOutput() DomainArrayOutput {
return i.ToDomainArrayOutputWithContext(context.Background())
}
func (i DomainArray) ToDomainArrayOutputWithContext(ctx context.Context) DomainArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(DomainArrayOutput)
}
// DomainMapInput is an input type that accepts DomainMap and DomainMapOutput values.
// You can construct a concrete instance of `DomainMapInput` via:
//
// DomainMap{ "key": DomainArgs{...} }
type DomainMapInput interface {
pulumi.Input
ToDomainMapOutput() DomainMapOutput
ToDomainMapOutputWithContext(context.Context) DomainMapOutput
}
type DomainMap map[string]DomainInput
func (DomainMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Domain)(nil)).Elem()
}
func (i DomainMap) ToDomainMapOutput() DomainMapOutput {
return i.ToDomainMapOutputWithContext(context.Background())
}
func (i DomainMap) ToDomainMapOutputWithContext(ctx context.Context) DomainMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(DomainMapOutput)
}
type DomainOutput struct{ *pulumi.OutputState }
func (DomainOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Domain)(nil)).Elem()
}
func (o DomainOutput) ToDomainOutput() DomainOutput {
return o
}
func (o DomainOutput) ToDomainOutputWithContext(ctx context.Context) DomainOutput {
return o
}
// Application this domain routes to.
func (o DomainOutput) ApplicationId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.ApplicationId }).(pulumi.StringPtrOutput)
}
// How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
func (o DomainOutput) CertificateType() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.CertificateType }).(pulumi.StringOutput)
}
// Compose stack this domain routes to.
func (o DomainOutput) ComposeId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.ComposeId }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the domain was created.
func (o DomainOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Traefik certificate resolver name, when `certificateType` is `custom`.
func (o DomainOutput) CustomCertResolver() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.CustomCertResolver }).(pulumi.StringPtrOutput)
}
// Traefik entrypoint to bind, when not using the defaults.
func (o DomainOutput) CustomEntrypoint() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.CustomEntrypoint }).(pulumi.StringPtrOutput)
}
// What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
func (o DomainOutput) DomainType() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.DomainType }).(pulumi.StringOutput)
}
// 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)
}
// Fully-qualified hostname, for example `api.example.com`.
func (o DomainOutput) Host() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.Host }).(pulumi.StringOutput)
}
// Serve the domain over HTTPS and redirect HTTP traffic to it.
func (o DomainOutput) Https() pulumi.BoolOutput {
return o.ApplyT(func(v *Domain) pulumi.BoolOutput { return v.Https }).(pulumi.BoolOutput)
}
// Path the request is rewritten to before it reaches the container, defaults to `/`.
func (o DomainOutput) InternalPath() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.InternalPath }).(pulumi.StringOutput)
}
// Names of Traefik middlewares to apply.
func (o DomainOutput) Middlewares() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Domain) pulumi.StringArrayOutput { return v.Middlewares }).(pulumi.StringArrayOutput)
}
// Path prefix this domain routes, defaults to `/`.
func (o DomainOutput) Path() pulumi.StringOutput {
return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.Path }).(pulumi.StringOutput)
}
// Container port that receives the traffic, defaults to `3000`.
func (o DomainOutput) Port() pulumi.IntOutput {
return o.ApplyT(func(v *Domain) pulumi.IntOutput { return v.Port }).(pulumi.IntOutput)
}
// Preview deployment this domain routes to.
func (o DomainOutput) PreviewDeploymentId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.PreviewDeploymentId }).(pulumi.StringPtrOutput)
}
// Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
func (o DomainOutput) ServiceName() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.ServiceName }).(pulumi.StringPtrOutput)
}
// Strip `path` from the request before forwarding it.
func (o DomainOutput) StripPath() pulumi.BoolOutput {
return o.ApplyT(func(v *Domain) pulumi.BoolOutput { return v.StripPath }).(pulumi.BoolOutput)
}
type DomainArrayOutput struct{ *pulumi.OutputState }
func (DomainArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Domain)(nil)).Elem()
}
func (o DomainArrayOutput) ToDomainArrayOutput() DomainArrayOutput {
return o
}
func (o DomainArrayOutput) ToDomainArrayOutputWithContext(ctx context.Context) DomainArrayOutput {
return o
}
func (o DomainArrayOutput) Index(i pulumi.IntInput) DomainOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Domain {
return vs[0].([]*Domain)[vs[1].(int)]
}).(DomainOutput)
}
type DomainMapOutput struct{ *pulumi.OutputState }
func (DomainMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Domain)(nil)).Elem()
}
func (o DomainMapOutput) ToDomainMapOutput() DomainMapOutput {
return o
}
func (o DomainMapOutput) ToDomainMapOutputWithContext(ctx context.Context) DomainMapOutput {
return o
}
func (o DomainMapOutput) MapIndex(k pulumi.StringInput) DomainOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Domain {
return vs[0].(map[string]*Domain)[vs[1].(string)]
}).(DomainOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*DomainInput)(nil)).Elem(), &Domain{})
pulumi.RegisterInputType(reflect.TypeOf((*DomainArrayInput)(nil)).Elem(), DomainArray{})
pulumi.RegisterInputType(reflect.TypeOf((*DomainMapInput)(nil)).Elem(), DomainMap{})
pulumi.RegisterOutputType(DomainOutput{})
pulumi.RegisterOutputType(DomainArrayOutput{})
pulumi.RegisterOutputType(DomainMapOutput{})
}

285
sdk/go/dokploy/environment.go generated Normal file
View File

@@ -0,0 +1,285 @@
// 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"
)
type Environment struct {
pulumi.CustomResourceState
// RFC 3339 timestamp of when the environment was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
Env pulumi.StringOutput `pulumi:"env"`
// Whether this is the project's default environment.
IsDefault pulumi.BoolOutput `pulumi:"isDefault"`
// Environment name, for example `staging`.
Name pulumi.StringOutput `pulumi:"name"`
// Project this environment belongs to.
ProjectId pulumi.StringOutput `pulumi:"projectId"`
}
// NewEnvironment registers a new resource with the given unique name, arguments, and options.
func NewEnvironment(ctx *pulumi.Context,
name string, args *EnvironmentArgs, opts ...pulumi.ResourceOption) (*Environment, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.ProjectId == nil {
return nil, errors.New("invalid value for required argument 'ProjectId'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Environment
err := ctx.RegisterResource("dokploy:index/environment:Environment", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetEnvironment gets an existing Environment 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 GetEnvironment(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *EnvironmentState, opts ...pulumi.ResourceOption) (*Environment, error) {
var resource Environment
err := ctx.ReadResource("dokploy:index/environment:Environment", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Environment resources.
type environmentState struct {
// RFC 3339 timestamp of when the environment was created.
CreatedAt *string `pulumi:"createdAt"`
// Free-form description.
Description *string `pulumi:"description"`
// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
Env *string `pulumi:"env"`
// Whether this is the project's default environment.
IsDefault *bool `pulumi:"isDefault"`
// Environment name, for example `staging`.
Name *string `pulumi:"name"`
// Project this environment belongs to.
ProjectId *string `pulumi:"projectId"`
}
type EnvironmentState struct {
// RFC 3339 timestamp of when the environment was created.
CreatedAt pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
Env pulumi.StringPtrInput
// Whether this is the project's default environment.
IsDefault pulumi.BoolPtrInput
// Environment name, for example `staging`.
Name pulumi.StringPtrInput
// Project this environment belongs to.
ProjectId pulumi.StringPtrInput
}
func (EnvironmentState) ElementType() reflect.Type {
return reflect.TypeOf((*environmentState)(nil)).Elem()
}
type environmentArgs struct {
// Free-form description.
Description *string `pulumi:"description"`
// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
Env *string `pulumi:"env"`
// Environment name, for example `staging`.
Name *string `pulumi:"name"`
// Project this environment belongs to.
ProjectId string `pulumi:"projectId"`
}
// The set of arguments for constructing a Environment resource.
type EnvironmentArgs struct {
// Free-form description.
Description pulumi.StringPtrInput
// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
Env pulumi.StringPtrInput
// Environment name, for example `staging`.
Name pulumi.StringPtrInput
// Project this environment belongs to.
ProjectId pulumi.StringInput
}
func (EnvironmentArgs) ElementType() reflect.Type {
return reflect.TypeOf((*environmentArgs)(nil)).Elem()
}
type EnvironmentInput interface {
pulumi.Input
ToEnvironmentOutput() EnvironmentOutput
ToEnvironmentOutputWithContext(ctx context.Context) EnvironmentOutput
}
func (*Environment) ElementType() reflect.Type {
return reflect.TypeOf((**Environment)(nil)).Elem()
}
func (i *Environment) ToEnvironmentOutput() EnvironmentOutput {
return i.ToEnvironmentOutputWithContext(context.Background())
}
func (i *Environment) ToEnvironmentOutputWithContext(ctx context.Context) EnvironmentOutput {
return pulumi.ToOutputWithContext(ctx, i).(EnvironmentOutput)
}
// EnvironmentArrayInput is an input type that accepts EnvironmentArray and EnvironmentArrayOutput values.
// You can construct a concrete instance of `EnvironmentArrayInput` via:
//
// EnvironmentArray{ EnvironmentArgs{...} }
type EnvironmentArrayInput interface {
pulumi.Input
ToEnvironmentArrayOutput() EnvironmentArrayOutput
ToEnvironmentArrayOutputWithContext(context.Context) EnvironmentArrayOutput
}
type EnvironmentArray []EnvironmentInput
func (EnvironmentArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Environment)(nil)).Elem()
}
func (i EnvironmentArray) ToEnvironmentArrayOutput() EnvironmentArrayOutput {
return i.ToEnvironmentArrayOutputWithContext(context.Background())
}
func (i EnvironmentArray) ToEnvironmentArrayOutputWithContext(ctx context.Context) EnvironmentArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(EnvironmentArrayOutput)
}
// EnvironmentMapInput is an input type that accepts EnvironmentMap and EnvironmentMapOutput values.
// You can construct a concrete instance of `EnvironmentMapInput` via:
//
// EnvironmentMap{ "key": EnvironmentArgs{...} }
type EnvironmentMapInput interface {
pulumi.Input
ToEnvironmentMapOutput() EnvironmentMapOutput
ToEnvironmentMapOutputWithContext(context.Context) EnvironmentMapOutput
}
type EnvironmentMap map[string]EnvironmentInput
func (EnvironmentMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Environment)(nil)).Elem()
}
func (i EnvironmentMap) ToEnvironmentMapOutput() EnvironmentMapOutput {
return i.ToEnvironmentMapOutputWithContext(context.Background())
}
func (i EnvironmentMap) ToEnvironmentMapOutputWithContext(ctx context.Context) EnvironmentMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(EnvironmentMapOutput)
}
type EnvironmentOutput struct{ *pulumi.OutputState }
func (EnvironmentOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Environment)(nil)).Elem()
}
func (o EnvironmentOutput) ToEnvironmentOutput() EnvironmentOutput {
return o
}
func (o EnvironmentOutput) ToEnvironmentOutputWithContext(ctx context.Context) EnvironmentOutput {
return o
}
// RFC 3339 timestamp of when the environment was created.
func (o EnvironmentOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Environment) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Free-form description.
func (o EnvironmentOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Environment) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
func (o EnvironmentOutput) Env() pulumi.StringOutput {
return o.ApplyT(func(v *Environment) pulumi.StringOutput { return v.Env }).(pulumi.StringOutput)
}
// Whether this is the project's default environment.
func (o EnvironmentOutput) IsDefault() pulumi.BoolOutput {
return o.ApplyT(func(v *Environment) pulumi.BoolOutput { return v.IsDefault }).(pulumi.BoolOutput)
}
// Environment name, for example `staging`.
func (o EnvironmentOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Environment) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Project this environment belongs to.
func (o EnvironmentOutput) ProjectId() pulumi.StringOutput {
return o.ApplyT(func(v *Environment) pulumi.StringOutput { return v.ProjectId }).(pulumi.StringOutput)
}
type EnvironmentArrayOutput struct{ *pulumi.OutputState }
func (EnvironmentArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Environment)(nil)).Elem()
}
func (o EnvironmentArrayOutput) ToEnvironmentArrayOutput() EnvironmentArrayOutput {
return o
}
func (o EnvironmentArrayOutput) ToEnvironmentArrayOutputWithContext(ctx context.Context) EnvironmentArrayOutput {
return o
}
func (o EnvironmentArrayOutput) Index(i pulumi.IntInput) EnvironmentOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Environment {
return vs[0].([]*Environment)[vs[1].(int)]
}).(EnvironmentOutput)
}
type EnvironmentMapOutput struct{ *pulumi.OutputState }
func (EnvironmentMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Environment)(nil)).Elem()
}
func (o EnvironmentMapOutput) ToEnvironmentMapOutput() EnvironmentMapOutput {
return o
}
func (o EnvironmentMapOutput) ToEnvironmentMapOutputWithContext(ctx context.Context) EnvironmentMapOutput {
return o
}
func (o EnvironmentMapOutput) MapIndex(k pulumi.StringInput) EnvironmentOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Environment {
return vs[0].(map[string]*Environment)[vs[1].(string)]
}).(EnvironmentOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentInput)(nil)).Elem(), &Environment{})
pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentArrayInput)(nil)).Elem(), EnvironmentArray{})
pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentMapInput)(nil)).Elem(), EnvironmentMap{})
pulumi.RegisterOutputType(EnvironmentOutput{})
pulumi.RegisterOutputType(EnvironmentArrayOutput{})
pulumi.RegisterOutputType(EnvironmentMapOutput{})
}

113
sdk/go/dokploy/getApplication.go generated Normal file
View File

@@ -0,0 +1,113 @@
// 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"
)
func LookupApplication(ctx *pulumi.Context, args *LookupApplicationArgs, opts ...pulumi.InvokeOption) (*LookupApplicationResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupApplicationResult
err := ctx.Invoke("dokploy:index/getApplication:getApplication", args, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of arguments for invoking getApplication.
type LookupApplicationArgs struct {
Id string `pulumi:"id"`
}
// A collection of values returned by getApplication.
type LookupApplicationResult struct {
AppName string `pulumi:"appName"`
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"`
}
func LookupApplicationOutput(ctx *pulumi.Context, args LookupApplicationOutputArgs, opts ...pulumi.InvokeOption) LookupApplicationResultOutput {
return pulumi.ToOutputWithContext(ctx.Context(), args).
ApplyT(func(v interface{}) (LookupApplicationResultOutput, error) {
args := v.(LookupApplicationArgs)
options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)}
return ctx.InvokeOutput("dokploy:index/getApplication:getApplication", args, LookupApplicationResultOutput{}, options).(LookupApplicationResultOutput), nil
}).(LookupApplicationResultOutput)
}
// A collection of arguments for invoking getApplication.
type LookupApplicationOutputArgs struct {
Id pulumi.StringInput `pulumi:"id"`
}
func (LookupApplicationOutputArgs) ElementType() reflect.Type {
return reflect.TypeOf((*LookupApplicationArgs)(nil)).Elem()
}
// A collection of values returned by getApplication.
type LookupApplicationResultOutput struct{ *pulumi.OutputState }
func (LookupApplicationResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*LookupApplicationResult)(nil)).Elem()
}
func (o LookupApplicationResultOutput) ToLookupApplicationResultOutput() LookupApplicationResultOutput {
return o
}
func (o LookupApplicationResultOutput) ToLookupApplicationResultOutputWithContext(ctx context.Context) LookupApplicationResultOutput {
return o
}
func (o LookupApplicationResultOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.AppName }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.ApplicationStatus }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) BuildType() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.BuildType }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.CreatedAt }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.Description }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.EnvironmentId }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.Id }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.Name }).(pulumi.StringOutput)
}
func (o LookupApplicationResultOutput) SourceType() pulumi.StringOutput {
return o.ApplyT(func(v LookupApplicationResult) string { return v.SourceType }).(pulumi.StringOutput)
}
func init() {
pulumi.RegisterOutputType(LookupApplicationResultOutput{})
}

103
sdk/go/dokploy/getEnvironment.go generated Normal file
View File

@@ -0,0 +1,103 @@
// 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"
)
func LookupEnvironment(ctx *pulumi.Context, args *LookupEnvironmentArgs, opts ...pulumi.InvokeOption) (*LookupEnvironmentResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupEnvironmentResult
err := ctx.Invoke("dokploy:index/getEnvironment:getEnvironment", args, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of arguments for invoking getEnvironment.
type LookupEnvironmentArgs struct {
Id string `pulumi:"id"`
}
// A collection of values returned by getEnvironment.
type LookupEnvironmentResult struct {
CreatedAt string `pulumi:"createdAt"`
Description string `pulumi:"description"`
Env string `pulumi:"env"`
Id string `pulumi:"id"`
IsDefault bool `pulumi:"isDefault"`
Name string `pulumi:"name"`
ProjectId string `pulumi:"projectId"`
}
func LookupEnvironmentOutput(ctx *pulumi.Context, args LookupEnvironmentOutputArgs, opts ...pulumi.InvokeOption) LookupEnvironmentResultOutput {
return pulumi.ToOutputWithContext(ctx.Context(), args).
ApplyT(func(v interface{}) (LookupEnvironmentResultOutput, error) {
args := v.(LookupEnvironmentArgs)
options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)}
return ctx.InvokeOutput("dokploy:index/getEnvironment:getEnvironment", args, LookupEnvironmentResultOutput{}, options).(LookupEnvironmentResultOutput), nil
}).(LookupEnvironmentResultOutput)
}
// A collection of arguments for invoking getEnvironment.
type LookupEnvironmentOutputArgs struct {
Id pulumi.StringInput `pulumi:"id"`
}
func (LookupEnvironmentOutputArgs) ElementType() reflect.Type {
return reflect.TypeOf((*LookupEnvironmentArgs)(nil)).Elem()
}
// A collection of values returned by getEnvironment.
type LookupEnvironmentResultOutput struct{ *pulumi.OutputState }
func (LookupEnvironmentResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*LookupEnvironmentResult)(nil)).Elem()
}
func (o LookupEnvironmentResultOutput) ToLookupEnvironmentResultOutput() LookupEnvironmentResultOutput {
return o
}
func (o LookupEnvironmentResultOutput) ToLookupEnvironmentResultOutputWithContext(ctx context.Context) LookupEnvironmentResultOutput {
return o
}
func (o LookupEnvironmentResultOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.CreatedAt }).(pulumi.StringOutput)
}
func (o LookupEnvironmentResultOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Description }).(pulumi.StringOutput)
}
func (o LookupEnvironmentResultOutput) Env() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Env }).(pulumi.StringOutput)
}
func (o LookupEnvironmentResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Id }).(pulumi.StringOutput)
}
func (o LookupEnvironmentResultOutput) IsDefault() pulumi.BoolOutput {
return o.ApplyT(func(v LookupEnvironmentResult) bool { return v.IsDefault }).(pulumi.BoolOutput)
}
func (o LookupEnvironmentResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.Name }).(pulumi.StringOutput)
}
func (o LookupEnvironmentResultOutput) ProjectId() pulumi.StringOutput {
return o.ApplyT(func(v LookupEnvironmentResult) string { return v.ProjectId }).(pulumi.StringOutput)
}
func init() {
pulumi.RegisterOutputType(LookupEnvironmentResultOutput{})
}

108
sdk/go/dokploy/getProject.go generated Normal file
View File

@@ -0,0 +1,108 @@
// 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"
)
func LookupProject(ctx *pulumi.Context, args *LookupProjectArgs, opts ...pulumi.InvokeOption) (*LookupProjectResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupProjectResult
err := ctx.Invoke("dokploy:index/getProject:getProject", args, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of arguments for invoking getProject.
type LookupProjectArgs struct {
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"`
}
func LookupProjectOutput(ctx *pulumi.Context, args LookupProjectOutputArgs, opts ...pulumi.InvokeOption) LookupProjectResultOutput {
return pulumi.ToOutputWithContext(ctx.Context(), args).
ApplyT(func(v interface{}) (LookupProjectResultOutput, error) {
args := v.(LookupProjectArgs)
options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)}
return ctx.InvokeOutput("dokploy:index/getProject:getProject", args, LookupProjectResultOutput{}, options).(LookupProjectResultOutput), nil
}).(LookupProjectResultOutput)
}
// A collection of arguments for invoking getProject.
type LookupProjectOutputArgs struct {
Id pulumi.StringInput `pulumi:"id"`
}
func (LookupProjectOutputArgs) ElementType() reflect.Type {
return reflect.TypeOf((*LookupProjectArgs)(nil)).Elem()
}
// A collection of values returned by getProject.
type LookupProjectResultOutput struct{ *pulumi.OutputState }
func (LookupProjectResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*LookupProjectResult)(nil)).Elem()
}
func (o LookupProjectResultOutput) ToLookupProjectResultOutput() LookupProjectResultOutput {
return o
}
func (o LookupProjectResultOutput) ToLookupProjectResultOutputWithContext(ctx context.Context) LookupProjectResultOutput {
return o
}
func (o LookupProjectResultOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.CreatedAt }).(pulumi.StringOutput)
}
func (o LookupProjectResultOutput) DefaultEnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.DefaultEnvironmentId }).(pulumi.StringOutput)
}
func (o LookupProjectResultOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Description }).(pulumi.StringOutput)
}
func (o LookupProjectResultOutput) Env() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Env }).(pulumi.StringOutput)
}
func (o LookupProjectResultOutput) Environments() GetProjectEnvironmentArrayOutput {
return o.ApplyT(func(v LookupProjectResult) []GetProjectEnvironment { return v.Environments }).(GetProjectEnvironmentArrayOutput)
}
func (o LookupProjectResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Id }).(pulumi.StringOutput)
}
func (o LookupProjectResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.Name }).(pulumi.StringOutput)
}
func (o LookupProjectResultOutput) OrganizationId() pulumi.StringOutput {
return o.ApplyT(func(v LookupProjectResult) string { return v.OrganizationId }).(pulumi.StringOutput)
}
func init() {
pulumi.RegisterOutputType(LookupProjectResultOutput{})
}

57
sdk/go/dokploy/getProjects.go generated Normal file
View File

@@ -0,0 +1,57 @@
// 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"
)
func GetProjects(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetProjectsResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv GetProjectsResult
err := ctx.Invoke("dokploy:index/getProjects:getProjects", nil, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of values returned by getProjects.
type GetProjectsResult struct {
Projects []GetProjectsProject `pulumi:"projects"`
}
func GetProjectsOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetProjectsResultOutput {
return pulumi.ToOutput(0).ApplyT(func(int) (GetProjectsResultOutput, error) {
options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)}
return ctx.InvokeOutput("dokploy:index/getProjects:getProjects", nil, GetProjectsResultOutput{}, options).(GetProjectsResultOutput), nil
}).(GetProjectsResultOutput)
}
// A collection of values returned by getProjects.
type GetProjectsResultOutput struct{ *pulumi.OutputState }
func (GetProjectsResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*GetProjectsResult)(nil)).Elem()
}
func (o GetProjectsResultOutput) ToGetProjectsResultOutput() GetProjectsResultOutput {
return o
}
func (o GetProjectsResultOutput) ToGetProjectsResultOutputWithContext(ctx context.Context) GetProjectsResultOutput {
return o
}
func (o GetProjectsResultOutput) Projects() GetProjectsProjectArrayOutput {
return o.ApplyT(func(v GetProjectsResult) []GetProjectsProject { return v.Projects }).(GetProjectsProjectArrayOutput)
}
func init() {
pulumi.RegisterOutputType(GetProjectsResultOutput{})
}

57
sdk/go/dokploy/getServers.go generated Normal file
View File

@@ -0,0 +1,57 @@
// 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"
)
func GetServers(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetServersResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv GetServersResult
err := ctx.Invoke("dokploy:index/getServers:getServers", nil, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of values returned by getServers.
type GetServersResult struct {
Servers []GetServersServer `pulumi:"servers"`
}
func GetServersOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetServersResultOutput {
return pulumi.ToOutput(0).ApplyT(func(int) (GetServersResultOutput, error) {
options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)}
return ctx.InvokeOutput("dokploy:index/getServers:getServers", nil, GetServersResultOutput{}, options).(GetServersResultOutput), nil
}).(GetServersResultOutput)
}
// A collection of values returned by getServers.
type GetServersResultOutput struct{ *pulumi.OutputState }
func (GetServersResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*GetServersResult)(nil)).Elem()
}
func (o GetServersResultOutput) ToGetServersResultOutput() GetServersResultOutput {
return o
}
func (o GetServersResultOutput) ToGetServersResultOutputWithContext(ctx context.Context) GetServersResultOutput {
return o
}
func (o GetServersResultOutput) Servers() GetServersServerArrayOutput {
return o.ApplyT(func(v GetServersResult) []GetServersServer { return v.Servers }).(GetServersServerArrayOutput)
}
func init() {
pulumi.RegisterOutputType(GetServersResultOutput{})
}

185
sdk/go/dokploy/init.go generated Normal file
View File

@@ -0,0 +1,185 @@
// 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 (
"fmt"
"github.com/blang/semver"
"github.com/maxvojtkov/pulumi-dokploy/sdk/go/dokploy/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
type module struct {
version semver.Version
}
func (m *module) Version() semver.Version {
return m.version
}
func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) {
switch typ {
case "dokploy:index/application:Application":
r = &Application{}
case "dokploy:index/certificate:Certificate":
r = &Certificate{}
case "dokploy:index/compose:Compose":
r = &Compose{}
case "dokploy:index/destination:Destination":
r = &Destination{}
case "dokploy:index/domain:Domain":
r = &Domain{}
case "dokploy:index/environment:Environment":
r = &Environment{}
case "dokploy:index/mariaDb:MariaDb":
r = &MariaDb{}
case "dokploy:index/mongo:Mongo":
r = &Mongo{}
case "dokploy:index/mount:Mount":
r = &Mount{}
case "dokploy:index/mySql:MySql":
r = &MySql{}
case "dokploy:index/port:Port":
r = &Port{}
case "dokploy:index/postgres:Postgres":
r = &Postgres{}
case "dokploy:index/project:Project":
r = &Project{}
case "dokploy:index/redirect:Redirect":
r = &Redirect{}
case "dokploy:index/redis:Redis":
r = &Redis{}
case "dokploy:index/registry:Registry":
r = &Registry{}
case "dokploy:index/security:Security":
r = &Security{}
case "dokploy:index/sshKey:SshKey":
r = &SshKey{}
default:
return nil, fmt.Errorf("unknown resource type: %s", typ)
}
err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
return
}
type pkg struct {
version semver.Version
}
func (p *pkg) Version() semver.Version {
return p.version
}
func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) {
if typ != "pulumi:providers:dokploy" {
return nil, fmt.Errorf("unknown provider type: %s", typ)
}
r := &Provider{}
err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
return r, err
}
func init() {
version, err := internal.PkgVersion()
if err != nil {
version = semver.Version{Major: 1}
}
pulumi.RegisterResourceModule(
"dokploy",
"index/application",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/certificate",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/compose",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/destination",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/domain",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/environment",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/mariaDb",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/mongo",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/mount",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/mySql",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/port",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/postgres",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/project",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/redirect",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/redis",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/registry",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/security",
&module{version},
)
pulumi.RegisterResourceModule(
"dokploy",
"index/sshKey",
&module{version},
)
pulumi.RegisterResourcePackage(
"dokploy",
&pkg{version},
)
}

184
sdk/go/dokploy/internal/pulumiUtilities.go generated Normal file
View File

@@ -0,0 +1,184 @@
// 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 internal
import (
"fmt"
"os"
"reflect"
"regexp"
"strconv"
"strings"
"github.com/blang/semver"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/internals"
)
type envParser func(v string) interface{}
func ParseEnvBool(v string) interface{} {
b, err := strconv.ParseBool(v)
if err != nil {
return nil
}
return b
}
func ParseEnvInt(v string) interface{} {
i, err := strconv.ParseInt(v, 0, 0)
if err != nil {
return nil
}
return int(i)
}
func ParseEnvFloat(v string) interface{} {
f, err := strconv.ParseFloat(v, 64)
if err != nil {
return nil
}
return f
}
func ParseEnvStringArray(v string) interface{} {
var result pulumi.StringArray
for _, item := range strings.Split(v, ";") {
result = append(result, pulumi.String(item))
}
return result
}
func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} {
for _, v := range vars {
if value, ok := os.LookupEnv(v); ok {
if parser != nil {
return parser(value)
}
return value
}
}
return def
}
// PkgVersion uses reflection to determine the version of the current package.
// If a version cannot be determined, v1 will be assumed. The second return
// value is always nil.
func PkgVersion() (semver.Version, error) {
// emptyVersion defaults to v0.0.0
if !SdkVersion.Equals(semver.Version{}) {
return SdkVersion, nil
}
type sentinal struct{}
pkgPath := reflect.TypeOf(sentinal{}).PkgPath()
re := regexp.MustCompile("^.*/pulumi-dokploy/sdk(/v\\d+)?")
if match := re.FindStringSubmatch(pkgPath); match != nil {
vStr := match[1]
if len(vStr) == 0 { // If the version capture group was empty, default to v1.
return semver.Version{Major: 1}, nil
}
return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil
}
return semver.Version{Major: 1}, nil
}
// isZero is a null safe check for if a value is it's types zero value.
func IsZero(v interface{}) bool {
if v == nil {
return true
}
return reflect.ValueOf(v).IsZero()
}
func CallPlain(
ctx *pulumi.Context,
tok string,
args pulumi.Input,
output pulumi.Output,
self pulumi.Resource,
property string,
resultPtr reflect.Value,
errorPtr *error,
opts ...pulumi.InvokeOption,
) {
res, err := callPlainInner(ctx, tok, args, output, self, opts...)
if err != nil {
*errorPtr = err
return
}
v := reflect.ValueOf(res)
// extract res.property field if asked to do so
if property != "" {
v = v.FieldByName("Res")
}
// return by setting the result pointer; this style of returns shortens the generated code without generics
resultPtr.Elem().Set(v)
}
func callPlainInner(
ctx *pulumi.Context,
tok string,
args pulumi.Input,
output pulumi.Output,
self pulumi.Resource,
opts ...pulumi.InvokeOption,
) (any, error) {
o, err := ctx.Call(tok, args, output, self, opts...)
if err != nil {
return nil, err
}
outputData, err := internals.UnsafeAwaitOutput(ctx.Context(), o)
if err != nil {
return nil, err
}
// Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency.
known := outputData.Known
value := outputData.Value
secret := outputData.Secret
problem := ""
if !known {
problem = "an unknown value"
} else if secret {
problem = "a secret value"
}
if problem != "" {
return nil, fmt.Errorf("Plain resource method %q incorrectly returned %s. "+
"This is an error in the provider, please report this to the provider developer.",
tok, problem)
}
return value, nil
}
// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource.
func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption {
defaults := []pulumi.ResourceOption{}
defaults = append(defaults, pulumi.PluginDownloadURL("github://api.github.com/maxvojtkov/pulumi-dokploy"))
version := semver.MustParse("0.1.0")
if !version.Equals(semver.Version{}) {
defaults = append(defaults, pulumi.Version(version.String()))
}
return append(defaults, opts...)
}
// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke.
func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption {
defaults := []pulumi.InvokeOption{}
defaults = append(defaults, pulumi.PluginDownloadURL("github://api.github.com/maxvojtkov/pulumi-dokploy"))
version := semver.MustParse("0.1.0")
if !version.Equals(semver.Version{}) {
defaults = append(defaults, pulumi.Version(version.String()))
}
return append(defaults, opts...)
}

11
sdk/go/dokploy/internal/pulumiVersion.go generated Normal file
View File

@@ -0,0 +1,11 @@
// 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 internal
import (
"github.com/blang/semver"
)
var SdkVersion semver.Version = semver.Version{}
var pluginDownloadURL string = ""

731
sdk/go/dokploy/mariaDb.go generated Normal file
View File

@@ -0,0 +1,731 @@
// 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"
)
type MariaDb struct {
pulumi.CustomResourceState
// Unique Docker service name. Generated by Dokploy when omitted. 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"`
// Arguments appended to the container command.
Args pulumi.StringArrayOutput `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName pulumi.StringOutput `pulumi:"databaseName"`
// Password for the database user.
DatabasePassword pulumi.StringOutput `pulumi:"databasePassword"`
// Password for the MariaDB `root` user.
DatabaseRootPassword pulumi.StringOutput `pulumi:"databaseRootPassword"`
// 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"`
// MariaDB image to run, for example `mariadb:11`.
DockerImage pulumi.StringOutput `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrOutput `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"`
}
// NewMariaDb registers a new resource with the given unique name, arguments, and options.
func NewMariaDb(ctx *pulumi.Context,
name string, args *MariaDbArgs, opts ...pulumi.ResourceOption) (*MariaDb, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.DatabaseName == nil {
return nil, errors.New("invalid value for required argument 'DatabaseName'")
}
if args.DatabasePassword == nil {
return nil, errors.New("invalid value for required argument 'DatabasePassword'")
}
if args.DatabaseRootPassword == nil {
return nil, errors.New("invalid value for required argument 'DatabaseRootPassword'")
}
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)
}
if args.DatabaseRootPassword != nil {
args.DatabaseRootPassword = pulumi.ToSecret(args.DatabaseRootPassword).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"databasePassword",
"databaseRootPassword",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource MariaDb
err := ctx.RegisterResource("dokploy:index/mariaDb:MariaDb", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetMariaDb gets an existing MariaDb 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 GetMariaDb(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *MariaDbState, opts ...pulumi.ResourceOption) (*MariaDb, error) {
var resource MariaDb
err := ctx.ReadResource("dokploy:index/mariaDb:MariaDb", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering MariaDb resources.
type mariaDbState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus *string `pulumi:"applicationStatus"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName *string `pulumi:"databaseName"`
// Password for the database user.
DatabasePassword *string `pulumi:"databasePassword"`
// Password for the MariaDB `root` user.
DatabaseRootPassword *string `pulumi:"databaseRootPassword"`
// 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"`
// MariaDB image to run, for example `mariadb:11`.
DockerImage *string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
type MariaDbState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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
// Name of the database to create.
DatabaseName pulumi.StringPtrInput
// Password for the database user.
DatabasePassword pulumi.StringPtrInput
// Password for the MariaDB `root` user.
DatabaseRootPassword 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
// MariaDB image to run, for example `mariadb:11`.
DockerImage pulumi.StringPtrInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (MariaDbState) ElementType() reflect.Type {
return reflect.TypeOf((*mariaDbState)(nil)).Elem()
}
type mariaDbArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName string `pulumi:"databaseName"`
// Password for the database user.
DatabasePassword string `pulumi:"databasePassword"`
// Password for the MariaDB `root` user.
DatabaseRootPassword string `pulumi:"databaseRootPassword"`
// 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"`
// MariaDB image to run, for example `mariadb:11`.
DockerImage string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
// The set of arguments for constructing a MariaDb resource.
type MariaDbArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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
// Name of the database to create.
DatabaseName pulumi.StringInput
// Password for the database user.
DatabasePassword pulumi.StringInput
// Password for the MariaDB `root` user.
DatabaseRootPassword 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
// MariaDB image to run, for example `mariadb:11`.
DockerImage pulumi.StringInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (MariaDbArgs) ElementType() reflect.Type {
return reflect.TypeOf((*mariaDbArgs)(nil)).Elem()
}
type MariaDbInput interface {
pulumi.Input
ToMariaDbOutput() MariaDbOutput
ToMariaDbOutputWithContext(ctx context.Context) MariaDbOutput
}
func (*MariaDb) ElementType() reflect.Type {
return reflect.TypeOf((**MariaDb)(nil)).Elem()
}
func (i *MariaDb) ToMariaDbOutput() MariaDbOutput {
return i.ToMariaDbOutputWithContext(context.Background())
}
func (i *MariaDb) ToMariaDbOutputWithContext(ctx context.Context) MariaDbOutput {
return pulumi.ToOutputWithContext(ctx, i).(MariaDbOutput)
}
// MariaDbArrayInput is an input type that accepts MariaDbArray and MariaDbArrayOutput values.
// You can construct a concrete instance of `MariaDbArrayInput` via:
//
// MariaDbArray{ MariaDbArgs{...} }
type MariaDbArrayInput interface {
pulumi.Input
ToMariaDbArrayOutput() MariaDbArrayOutput
ToMariaDbArrayOutputWithContext(context.Context) MariaDbArrayOutput
}
type MariaDbArray []MariaDbInput
func (MariaDbArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*MariaDb)(nil)).Elem()
}
func (i MariaDbArray) ToMariaDbArrayOutput() MariaDbArrayOutput {
return i.ToMariaDbArrayOutputWithContext(context.Background())
}
func (i MariaDbArray) ToMariaDbArrayOutputWithContext(ctx context.Context) MariaDbArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(MariaDbArrayOutput)
}
// MariaDbMapInput is an input type that accepts MariaDbMap and MariaDbMapOutput values.
// You can construct a concrete instance of `MariaDbMapInput` via:
//
// MariaDbMap{ "key": MariaDbArgs{...} }
type MariaDbMapInput interface {
pulumi.Input
ToMariaDbMapOutput() MariaDbMapOutput
ToMariaDbMapOutputWithContext(context.Context) MariaDbMapOutput
}
type MariaDbMap map[string]MariaDbInput
func (MariaDbMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*MariaDb)(nil)).Elem()
}
func (i MariaDbMap) ToMariaDbMapOutput() MariaDbMapOutput {
return i.ToMariaDbMapOutputWithContext(context.Background())
}
func (i MariaDbMap) ToMariaDbMapOutputWithContext(ctx context.Context) MariaDbMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(MariaDbMapOutput)
}
type MariaDbOutput struct{ *pulumi.OutputState }
func (MariaDbOutput) ElementType() reflect.Type {
return reflect.TypeOf((**MariaDb)(nil)).Elem()
}
func (o MariaDbOutput) ToMariaDbOutput() MariaDbOutput {
return o
}
func (o MariaDbOutput) ToMariaDbOutputWithContext(ctx context.Context) MariaDbOutput {
return o
}
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
func (o MariaDbOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o MariaDbOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Arguments appended to the container command.
func (o MariaDbOutput) Args() pulumi.StringArrayOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringArrayOutput { return v.Args }).(pulumi.StringArrayOutput)
}
// Override the container entrypoint command.
func (o MariaDbOutput) Command() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput)
}
// Hard CPU limit, for example `1`.
func (o MariaDbOutput) CpuLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput)
}
// Soft CPU reservation, for example `0.5`.
func (o MariaDbOutput) CpuReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the database was created.
func (o MariaDbOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Name of the database to create.
func (o MariaDbOutput) DatabaseName() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.DatabaseName }).(pulumi.StringOutput)
}
// Password for the database user.
func (o MariaDbOutput) DatabasePassword() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput)
}
// Password for the MariaDB `root` user.
func (o MariaDbOutput) DatabaseRootPassword() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.DatabaseRootPassword }).(pulumi.StringOutput)
}
// Database user to create.
func (o MariaDbOutput) DatabaseUser() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.DatabaseUser }).(pulumi.StringOutput)
}
// Free-form description.
func (o MariaDbOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Detach the service from the shared `dokploy-network`.
func (o MariaDbOutput) DetachDokployNetwork() pulumi.BoolOutput {
return o.ApplyT(func(v *MariaDb) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput)
}
// MariaDB image to run, for example `mariadb:11`.
func (o MariaDbOutput) DockerImage() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput)
}
// Docker Swarm endpoint specification, as a JSON object.
func (o MariaDbOutput) EndpointSpecSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o MariaDbOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this database belongs to.
func (o MariaDbOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
func (o MariaDbOutput) ExternalPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput)
}
// Docker Swarm health check configuration, as a JSON object.
func (o MariaDbOutput) HealthCheckSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm service labels, as a JSON object.
func (o MariaDbOutput) LabelsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput)
}
// Hard memory limit, for example `512m`.
func (o MariaDbOutput) MemoryLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput)
}
// Soft memory reservation, for example `256m`.
func (o MariaDbOutput) MemoryReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput)
}
// Docker Swarm service mode, as a JSON object.
func (o MariaDbOutput) ModeSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput)
}
// Display name of the database.
func (o MariaDbOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// IDs of additional Docker networks to attach.
func (o MariaDbOutput) NetworkIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput)
}
// Docker Swarm network attachments, as a JSON array.
func (o MariaDbOutput) NetworkSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm placement constraints, as a JSON object.
func (o MariaDbOutput) PlacementSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput)
}
// Number of replicas to run.
func (o MariaDbOutput) Replicas() pulumi.IntOutput {
return o.ApplyT(func(v *MariaDb) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput)
}
// Docker Swarm restart policy, as a JSON object.
func (o MariaDbOutput) RestartPolicySwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rollback configuration, as a JSON object.
func (o MariaDbOutput) RollbackConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o MariaDbOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Grace period in nanoseconds before a container is killed.
func (o MariaDbOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput)
}
// Docker Swarm ulimits, as a JSON object.
func (o MariaDbOutput) UlimitsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.UlimitsSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rolling update configuration, as a JSON object.
func (o MariaDbOutput) UpdateConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MariaDb) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput)
}
type MariaDbArrayOutput struct{ *pulumi.OutputState }
func (MariaDbArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*MariaDb)(nil)).Elem()
}
func (o MariaDbArrayOutput) ToMariaDbArrayOutput() MariaDbArrayOutput {
return o
}
func (o MariaDbArrayOutput) ToMariaDbArrayOutputWithContext(ctx context.Context) MariaDbArrayOutput {
return o
}
func (o MariaDbArrayOutput) Index(i pulumi.IntInput) MariaDbOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *MariaDb {
return vs[0].([]*MariaDb)[vs[1].(int)]
}).(MariaDbOutput)
}
type MariaDbMapOutput struct{ *pulumi.OutputState }
func (MariaDbMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*MariaDb)(nil)).Elem()
}
func (o MariaDbMapOutput) ToMariaDbMapOutput() MariaDbMapOutput {
return o
}
func (o MariaDbMapOutput) ToMariaDbMapOutputWithContext(ctx context.Context) MariaDbMapOutput {
return o
}
func (o MariaDbMapOutput) MapIndex(k pulumi.StringInput) MariaDbOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *MariaDb {
return vs[0].(map[string]*MariaDb)[vs[1].(string)]
}).(MariaDbOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*MariaDbInput)(nil)).Elem(), &MariaDb{})
pulumi.RegisterInputType(reflect.TypeOf((*MariaDbArrayInput)(nil)).Elem(), MariaDbArray{})
pulumi.RegisterInputType(reflect.TypeOf((*MariaDbMapInput)(nil)).Elem(), MariaDbMap{})
pulumi.RegisterOutputType(MariaDbOutput{})
pulumi.RegisterOutputType(MariaDbArrayOutput{})
pulumi.RegisterOutputType(MariaDbMapOutput{})
}

703
sdk/go/dokploy/mongo.go generated Normal file
View File

@@ -0,0 +1,703 @@
// 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"
)
type Mongo struct {
pulumi.CustomResourceState
// Unique Docker service name. Generated by Dokploy when omitted. 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"`
// Arguments appended to the container command.
Args pulumi.StringArrayOutput `pulumi:"args"`
// 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 root user.
DatabasePassword pulumi.StringOutput `pulumi:"databasePassword"`
// Root username 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"`
// MongoDB image to run. Defaults to `mongo:8`.
DockerImage pulumi.StringOutput `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Start the instance as a single-node replica set.
ReplicaSets pulumi.BoolOutput `pulumi:"replicaSets"`
// 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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrOutput `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"`
}
// NewMongo registers a new resource with the given unique name, arguments, and options.
func NewMongo(ctx *pulumi.Context,
name string, args *MongoArgs, opts ...pulumi.ResourceOption) (*Mongo, 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.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 Mongo
err := ctx.RegisterResource("dokploy:index/mongo:Mongo", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetMongo gets an existing Mongo 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 GetMongo(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *MongoState, opts ...pulumi.ResourceOption) (*Mongo, error) {
var resource Mongo
err := ctx.ReadResource("dokploy:index/mongo:Mongo", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Mongo resources.
type mongoState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus *string `pulumi:"applicationStatus"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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 root user.
DatabasePassword *string `pulumi:"databasePassword"`
// Root username 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"`
// MongoDB image to run. Defaults to `mongo:8`.
DockerImage *string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Start the instance as a single-node replica set.
ReplicaSets *bool `pulumi:"replicaSets"`
// 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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
type MongoState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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 root user.
DatabasePassword pulumi.StringPtrInput
// Root username to create.
DatabaseUser pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolPtrInput
// MongoDB image to run. Defaults to `mongo:8`.
DockerImage pulumi.StringPtrInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Start the instance as a single-node replica set.
ReplicaSets pulumi.BoolPtrInput
// 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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (MongoState) ElementType() reflect.Type {
return reflect.TypeOf((*mongoState)(nil)).Elem()
}
type mongoArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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 root user.
DatabasePassword string `pulumi:"databasePassword"`
// Root username 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"`
// MongoDB image to run. Defaults to `mongo:8`.
DockerImage *string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Start the instance as a single-node replica set.
ReplicaSets *bool `pulumi:"replicaSets"`
// 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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
// The set of arguments for constructing a Mongo resource.
type MongoArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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 root user.
DatabasePassword pulumi.StringInput
// Root username to create.
DatabaseUser pulumi.StringInput
// Free-form description.
Description pulumi.StringPtrInput
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolPtrInput
// MongoDB image to run. Defaults to `mongo:8`.
DockerImage pulumi.StringPtrInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Start the instance as a single-node replica set.
ReplicaSets pulumi.BoolPtrInput
// 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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (MongoArgs) ElementType() reflect.Type {
return reflect.TypeOf((*mongoArgs)(nil)).Elem()
}
type MongoInput interface {
pulumi.Input
ToMongoOutput() MongoOutput
ToMongoOutputWithContext(ctx context.Context) MongoOutput
}
func (*Mongo) ElementType() reflect.Type {
return reflect.TypeOf((**Mongo)(nil)).Elem()
}
func (i *Mongo) ToMongoOutput() MongoOutput {
return i.ToMongoOutputWithContext(context.Background())
}
func (i *Mongo) ToMongoOutputWithContext(ctx context.Context) MongoOutput {
return pulumi.ToOutputWithContext(ctx, i).(MongoOutput)
}
// MongoArrayInput is an input type that accepts MongoArray and MongoArrayOutput values.
// You can construct a concrete instance of `MongoArrayInput` via:
//
// MongoArray{ MongoArgs{...} }
type MongoArrayInput interface {
pulumi.Input
ToMongoArrayOutput() MongoArrayOutput
ToMongoArrayOutputWithContext(context.Context) MongoArrayOutput
}
type MongoArray []MongoInput
func (MongoArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Mongo)(nil)).Elem()
}
func (i MongoArray) ToMongoArrayOutput() MongoArrayOutput {
return i.ToMongoArrayOutputWithContext(context.Background())
}
func (i MongoArray) ToMongoArrayOutputWithContext(ctx context.Context) MongoArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(MongoArrayOutput)
}
// MongoMapInput is an input type that accepts MongoMap and MongoMapOutput values.
// You can construct a concrete instance of `MongoMapInput` via:
//
// MongoMap{ "key": MongoArgs{...} }
type MongoMapInput interface {
pulumi.Input
ToMongoMapOutput() MongoMapOutput
ToMongoMapOutputWithContext(context.Context) MongoMapOutput
}
type MongoMap map[string]MongoInput
func (MongoMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Mongo)(nil)).Elem()
}
func (i MongoMap) ToMongoMapOutput() MongoMapOutput {
return i.ToMongoMapOutputWithContext(context.Background())
}
func (i MongoMap) ToMongoMapOutputWithContext(ctx context.Context) MongoMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(MongoMapOutput)
}
type MongoOutput struct{ *pulumi.OutputState }
func (MongoOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Mongo)(nil)).Elem()
}
func (o MongoOutput) ToMongoOutput() MongoOutput {
return o
}
func (o MongoOutput) ToMongoOutputWithContext(ctx context.Context) MongoOutput {
return o
}
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
func (o MongoOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o MongoOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Arguments appended to the container command.
func (o MongoOutput) Args() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringArrayOutput { return v.Args }).(pulumi.StringArrayOutput)
}
// Override the container entrypoint command.
func (o MongoOutput) Command() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput)
}
// Hard CPU limit, for example `1`.
func (o MongoOutput) CpuLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput)
}
// Soft CPU reservation, for example `0.5`.
func (o MongoOutput) CpuReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the database was created.
func (o MongoOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Password for the root user.
func (o MongoOutput) DatabasePassword() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput)
}
// Root username to create.
func (o MongoOutput) DatabaseUser() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.DatabaseUser }).(pulumi.StringOutput)
}
// Free-form description.
func (o MongoOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Detach the service from the shared `dokploy-network`.
func (o MongoOutput) DetachDokployNetwork() pulumi.BoolOutput {
return o.ApplyT(func(v *Mongo) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput)
}
// MongoDB image to run. Defaults to `mongo:8`.
func (o MongoOutput) DockerImage() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput)
}
// Docker Swarm endpoint specification, as a JSON object.
func (o MongoOutput) EndpointSpecSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o MongoOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this database belongs to.
func (o MongoOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
func (o MongoOutput) ExternalPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput)
}
// Docker Swarm health check configuration, as a JSON object.
func (o MongoOutput) HealthCheckSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm service labels, as a JSON object.
func (o MongoOutput) LabelsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput)
}
// Hard memory limit, for example `512m`.
func (o MongoOutput) MemoryLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput)
}
// Soft memory reservation, for example `256m`.
func (o MongoOutput) MemoryReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput)
}
// Docker Swarm service mode, as a JSON object.
func (o MongoOutput) ModeSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput)
}
// Display name of the database.
func (o MongoOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// IDs of additional Docker networks to attach.
func (o MongoOutput) NetworkIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput)
}
// Docker Swarm network attachments, as a JSON array.
func (o MongoOutput) NetworkSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm placement constraints, as a JSON object.
func (o MongoOutput) PlacementSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput)
}
// Start the instance as a single-node replica set.
func (o MongoOutput) ReplicaSets() pulumi.BoolOutput {
return o.ApplyT(func(v *Mongo) pulumi.BoolOutput { return v.ReplicaSets }).(pulumi.BoolOutput)
}
// Number of replicas to run.
func (o MongoOutput) Replicas() pulumi.IntOutput {
return o.ApplyT(func(v *Mongo) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput)
}
// Docker Swarm restart policy, as a JSON object.
func (o MongoOutput) RestartPolicySwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rollback configuration, as a JSON object.
func (o MongoOutput) RollbackConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o MongoOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Grace period in nanoseconds before a container is killed.
func (o MongoOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput)
}
// Docker Swarm ulimits, as a JSON object.
func (o MongoOutput) UlimitsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.UlimitsSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rolling update configuration, as a JSON object.
func (o MongoOutput) UpdateConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mongo) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput)
}
type MongoArrayOutput struct{ *pulumi.OutputState }
func (MongoArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Mongo)(nil)).Elem()
}
func (o MongoArrayOutput) ToMongoArrayOutput() MongoArrayOutput {
return o
}
func (o MongoArrayOutput) ToMongoArrayOutputWithContext(ctx context.Context) MongoArrayOutput {
return o
}
func (o MongoArrayOutput) Index(i pulumi.IntInput) MongoOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Mongo {
return vs[0].([]*Mongo)[vs[1].(int)]
}).(MongoOutput)
}
type MongoMapOutput struct{ *pulumi.OutputState }
func (MongoMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Mongo)(nil)).Elem()
}
func (o MongoMapOutput) ToMongoMapOutput() MongoMapOutput {
return o
}
func (o MongoMapOutput) ToMongoMapOutputWithContext(ctx context.Context) MongoMapOutput {
return o
}
func (o MongoMapOutput) MapIndex(k pulumi.StringInput) MongoOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Mongo {
return vs[0].(map[string]*Mongo)[vs[1].(string)]
}).(MongoOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*MongoInput)(nil)).Elem(), &Mongo{})
pulumi.RegisterInputType(reflect.TypeOf((*MongoArrayInput)(nil)).Elem(), MongoArray{})
pulumi.RegisterInputType(reflect.TypeOf((*MongoMapInput)(nil)).Elem(), MongoMap{})
pulumi.RegisterOutputType(MongoOutput{})
pulumi.RegisterOutputType(MongoArrayOutput{})
pulumi.RegisterOutputType(MongoMapOutput{})
}

332
sdk/go/dokploy/mount.go generated Normal file
View File

@@ -0,0 +1,332 @@
// 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"
)
type Mount struct {
pulumi.CustomResourceState
// Contents of the generated file, when `type` is `file`.
Content pulumi.StringPtrOutput `pulumi:"content"`
// Path of the generated file, when `type` is `file`.
FilePath pulumi.StringPtrOutput `pulumi:"filePath"`
// Path on the host, when `type` is `bind`.
HostPath pulumi.StringPtrOutput `pulumi:"hostPath"`
// Path inside the container where the mount appears.
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`.
ServiceType pulumi.StringOutput `pulumi:"serviceType"`
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type pulumi.StringOutput `pulumi:"type"`
// Name of the Docker volume, when `type` is `volume`.
VolumeName pulumi.StringPtrOutput `pulumi:"volumeName"`
}
// NewMount registers a new resource with the given unique name, arguments, and options.
func NewMount(ctx *pulumi.Context,
name string, args *MountArgs, opts ...pulumi.ResourceOption) (*Mount, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.MountPath == nil {
return nil, errors.New("invalid value for required argument 'MountPath'")
}
if args.ServiceId == nil {
return nil, errors.New("invalid value for required argument 'ServiceId'")
}
if args.ServiceType == nil {
return nil, errors.New("invalid value for required argument 'ServiceType'")
}
if args.Type == nil {
return nil, errors.New("invalid value for required argument 'Type'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Mount
err := ctx.RegisterResource("dokploy:index/mount:Mount", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetMount gets an existing Mount 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 GetMount(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *MountState, opts ...pulumi.ResourceOption) (*Mount, error) {
var resource Mount
err := ctx.ReadResource("dokploy:index/mount:Mount", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Mount resources.
type mountState struct {
// Contents of the generated file, when `type` is `file`.
Content *string `pulumi:"content"`
// Path of the generated file, when `type` is `file`.
FilePath *string `pulumi:"filePath"`
// Path on the host, when `type` is `bind`.
HostPath *string `pulumi:"hostPath"`
// Path inside the container where the mount appears.
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`.
ServiceType *string `pulumi:"serviceType"`
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type *string `pulumi:"type"`
// Name of the Docker volume, when `type` is `volume`.
VolumeName *string `pulumi:"volumeName"`
}
type MountState struct {
// Contents of the generated file, when `type` is `file`.
Content pulumi.StringPtrInput
// Path of the generated file, when `type` is `file`.
FilePath pulumi.StringPtrInput
// Path on the host, when `type` is `bind`.
HostPath pulumi.StringPtrInput
// Path inside the container where the mount appears.
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`.
ServiceType pulumi.StringPtrInput
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type pulumi.StringPtrInput
// Name of the Docker volume, when `type` is `volume`.
VolumeName pulumi.StringPtrInput
}
func (MountState) ElementType() reflect.Type {
return reflect.TypeOf((*mountState)(nil)).Elem()
}
type mountArgs struct {
// Contents of the generated file, when `type` is `file`.
Content *string `pulumi:"content"`
// Path of the generated file, when `type` is `file`.
FilePath *string `pulumi:"filePath"`
// Path on the host, when `type` is `bind`.
HostPath *string `pulumi:"hostPath"`
// Path inside the container where the mount appears.
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`.
ServiceType string `pulumi:"serviceType"`
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type string `pulumi:"type"`
// Name of the Docker volume, when `type` is `volume`.
VolumeName *string `pulumi:"volumeName"`
}
// The set of arguments for constructing a Mount resource.
type MountArgs struct {
// Contents of the generated file, when `type` is `file`.
Content pulumi.StringPtrInput
// Path of the generated file, when `type` is `file`.
FilePath pulumi.StringPtrInput
// Path on the host, when `type` is `bind`.
HostPath pulumi.StringPtrInput
// Path inside the container where the mount appears.
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`.
ServiceType pulumi.StringInput
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
Type pulumi.StringInput
// Name of the Docker volume, when `type` is `volume`.
VolumeName pulumi.StringPtrInput
}
func (MountArgs) ElementType() reflect.Type {
return reflect.TypeOf((*mountArgs)(nil)).Elem()
}
type MountInput interface {
pulumi.Input
ToMountOutput() MountOutput
ToMountOutputWithContext(ctx context.Context) MountOutput
}
func (*Mount) ElementType() reflect.Type {
return reflect.TypeOf((**Mount)(nil)).Elem()
}
func (i *Mount) ToMountOutput() MountOutput {
return i.ToMountOutputWithContext(context.Background())
}
func (i *Mount) ToMountOutputWithContext(ctx context.Context) MountOutput {
return pulumi.ToOutputWithContext(ctx, i).(MountOutput)
}
// MountArrayInput is an input type that accepts MountArray and MountArrayOutput values.
// You can construct a concrete instance of `MountArrayInput` via:
//
// MountArray{ MountArgs{...} }
type MountArrayInput interface {
pulumi.Input
ToMountArrayOutput() MountArrayOutput
ToMountArrayOutputWithContext(context.Context) MountArrayOutput
}
type MountArray []MountInput
func (MountArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Mount)(nil)).Elem()
}
func (i MountArray) ToMountArrayOutput() MountArrayOutput {
return i.ToMountArrayOutputWithContext(context.Background())
}
func (i MountArray) ToMountArrayOutputWithContext(ctx context.Context) MountArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(MountArrayOutput)
}
// MountMapInput is an input type that accepts MountMap and MountMapOutput values.
// You can construct a concrete instance of `MountMapInput` via:
//
// MountMap{ "key": MountArgs{...} }
type MountMapInput interface {
pulumi.Input
ToMountMapOutput() MountMapOutput
ToMountMapOutputWithContext(context.Context) MountMapOutput
}
type MountMap map[string]MountInput
func (MountMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Mount)(nil)).Elem()
}
func (i MountMap) ToMountMapOutput() MountMapOutput {
return i.ToMountMapOutputWithContext(context.Background())
}
func (i MountMap) ToMountMapOutputWithContext(ctx context.Context) MountMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(MountMapOutput)
}
type MountOutput struct{ *pulumi.OutputState }
func (MountOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Mount)(nil)).Elem()
}
func (o MountOutput) ToMountOutput() MountOutput {
return o
}
func (o MountOutput) ToMountOutputWithContext(ctx context.Context) MountOutput {
return o
}
// Contents of the generated file, when `type` is `file`.
func (o MountOutput) Content() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mount) pulumi.StringPtrOutput { return v.Content }).(pulumi.StringPtrOutput)
}
// Path of the generated file, when `type` is `file`.
func (o MountOutput) FilePath() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mount) pulumi.StringPtrOutput { return v.FilePath }).(pulumi.StringPtrOutput)
}
// Path on the host, when `type` is `bind`.
func (o MountOutput) HostPath() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mount) pulumi.StringPtrOutput { return v.HostPath }).(pulumi.StringPtrOutput)
}
// Path inside the container where the mount appears.
func (o MountOutput) MountPath() pulumi.StringOutput {
return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.MountPath }).(pulumi.StringOutput)
}
// ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
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`.
func (o MountOutput) ServiceType() pulumi.StringOutput {
return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.ServiceType }).(pulumi.StringOutput)
}
// The kind of mount to create. Valid values: `bind`, `volume`, `file`.
func (o MountOutput) Type() pulumi.StringOutput {
return o.ApplyT(func(v *Mount) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
}
// Name of the Docker volume, when `type` is `volume`.
func (o MountOutput) VolumeName() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Mount) pulumi.StringPtrOutput { return v.VolumeName }).(pulumi.StringPtrOutput)
}
type MountArrayOutput struct{ *pulumi.OutputState }
func (MountArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Mount)(nil)).Elem()
}
func (o MountArrayOutput) ToMountArrayOutput() MountArrayOutput {
return o
}
func (o MountArrayOutput) ToMountArrayOutputWithContext(ctx context.Context) MountArrayOutput {
return o
}
func (o MountArrayOutput) Index(i pulumi.IntInput) MountOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Mount {
return vs[0].([]*Mount)[vs[1].(int)]
}).(MountOutput)
}
type MountMapOutput struct{ *pulumi.OutputState }
func (MountMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Mount)(nil)).Elem()
}
func (o MountMapOutput) ToMountMapOutput() MountMapOutput {
return o
}
func (o MountMapOutput) ToMountMapOutputWithContext(ctx context.Context) MountMapOutput {
return o
}
func (o MountMapOutput) MapIndex(k pulumi.StringInput) MountOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Mount {
return vs[0].(map[string]*Mount)[vs[1].(string)]
}).(MountOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*MountInput)(nil)).Elem(), &Mount{})
pulumi.RegisterInputType(reflect.TypeOf((*MountArrayInput)(nil)).Elem(), MountArray{})
pulumi.RegisterInputType(reflect.TypeOf((*MountMapInput)(nil)).Elem(), MountMap{})
pulumi.RegisterOutputType(MountOutput{})
pulumi.RegisterOutputType(MountArrayOutput{})
pulumi.RegisterOutputType(MountMapOutput{})
}

731
sdk/go/dokploy/mySql.go generated Normal file
View File

@@ -0,0 +1,731 @@
// 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"
)
type MySql struct {
pulumi.CustomResourceState
// Unique Docker service name. Generated by Dokploy when omitted. 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"`
// Arguments appended to the container command.
Args pulumi.StringArrayOutput `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName pulumi.StringOutput `pulumi:"databaseName"`
// Password for the database user.
DatabasePassword pulumi.StringOutput `pulumi:"databasePassword"`
// Password for the MySQL `root` user.
DatabaseRootPassword pulumi.StringOutput `pulumi:"databaseRootPassword"`
// 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"`
// MySQL image to run, for example `mysql:8`.
DockerImage pulumi.StringOutput `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrOutput `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"`
}
// NewMySql registers a new resource with the given unique name, arguments, and options.
func NewMySql(ctx *pulumi.Context,
name string, args *MySqlArgs, opts ...pulumi.ResourceOption) (*MySql, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.DatabaseName == nil {
return nil, errors.New("invalid value for required argument 'DatabaseName'")
}
if args.DatabasePassword == nil {
return nil, errors.New("invalid value for required argument 'DatabasePassword'")
}
if args.DatabaseRootPassword == nil {
return nil, errors.New("invalid value for required argument 'DatabaseRootPassword'")
}
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)
}
if args.DatabaseRootPassword != nil {
args.DatabaseRootPassword = pulumi.ToSecret(args.DatabaseRootPassword).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"databasePassword",
"databaseRootPassword",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource MySql
err := ctx.RegisterResource("dokploy:index/mySql:MySql", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetMySql gets an existing MySql 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 GetMySql(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *MySqlState, opts ...pulumi.ResourceOption) (*MySql, error) {
var resource MySql
err := ctx.ReadResource("dokploy:index/mySql:MySql", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering MySql resources.
type mySqlState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus *string `pulumi:"applicationStatus"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName *string `pulumi:"databaseName"`
// Password for the database user.
DatabasePassword *string `pulumi:"databasePassword"`
// Password for the MySQL `root` user.
DatabaseRootPassword *string `pulumi:"databaseRootPassword"`
// 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"`
// MySQL image to run, for example `mysql:8`.
DockerImage *string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
type MySqlState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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
// Name of the database to create.
DatabaseName pulumi.StringPtrInput
// Password for the database user.
DatabasePassword pulumi.StringPtrInput
// Password for the MySQL `root` user.
DatabaseRootPassword 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
// MySQL image to run, for example `mysql:8`.
DockerImage pulumi.StringPtrInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (MySqlState) ElementType() reflect.Type {
return reflect.TypeOf((*mySqlState)(nil)).Elem()
}
type mySqlArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName string `pulumi:"databaseName"`
// Password for the database user.
DatabasePassword string `pulumi:"databasePassword"`
// Password for the MySQL `root` user.
DatabaseRootPassword string `pulumi:"databaseRootPassword"`
// 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"`
// MySQL image to run, for example `mysql:8`.
DockerImage string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
// The set of arguments for constructing a MySql resource.
type MySqlArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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
// Name of the database to create.
DatabaseName pulumi.StringInput
// Password for the database user.
DatabasePassword pulumi.StringInput
// Password for the MySQL `root` user.
DatabaseRootPassword 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
// MySQL image to run, for example `mysql:8`.
DockerImage pulumi.StringInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (MySqlArgs) ElementType() reflect.Type {
return reflect.TypeOf((*mySqlArgs)(nil)).Elem()
}
type MySqlInput interface {
pulumi.Input
ToMySqlOutput() MySqlOutput
ToMySqlOutputWithContext(ctx context.Context) MySqlOutput
}
func (*MySql) ElementType() reflect.Type {
return reflect.TypeOf((**MySql)(nil)).Elem()
}
func (i *MySql) ToMySqlOutput() MySqlOutput {
return i.ToMySqlOutputWithContext(context.Background())
}
func (i *MySql) ToMySqlOutputWithContext(ctx context.Context) MySqlOutput {
return pulumi.ToOutputWithContext(ctx, i).(MySqlOutput)
}
// MySqlArrayInput is an input type that accepts MySqlArray and MySqlArrayOutput values.
// You can construct a concrete instance of `MySqlArrayInput` via:
//
// MySqlArray{ MySqlArgs{...} }
type MySqlArrayInput interface {
pulumi.Input
ToMySqlArrayOutput() MySqlArrayOutput
ToMySqlArrayOutputWithContext(context.Context) MySqlArrayOutput
}
type MySqlArray []MySqlInput
func (MySqlArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*MySql)(nil)).Elem()
}
func (i MySqlArray) ToMySqlArrayOutput() MySqlArrayOutput {
return i.ToMySqlArrayOutputWithContext(context.Background())
}
func (i MySqlArray) ToMySqlArrayOutputWithContext(ctx context.Context) MySqlArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(MySqlArrayOutput)
}
// MySqlMapInput is an input type that accepts MySqlMap and MySqlMapOutput values.
// You can construct a concrete instance of `MySqlMapInput` via:
//
// MySqlMap{ "key": MySqlArgs{...} }
type MySqlMapInput interface {
pulumi.Input
ToMySqlMapOutput() MySqlMapOutput
ToMySqlMapOutputWithContext(context.Context) MySqlMapOutput
}
type MySqlMap map[string]MySqlInput
func (MySqlMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*MySql)(nil)).Elem()
}
func (i MySqlMap) ToMySqlMapOutput() MySqlMapOutput {
return i.ToMySqlMapOutputWithContext(context.Background())
}
func (i MySqlMap) ToMySqlMapOutputWithContext(ctx context.Context) MySqlMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(MySqlMapOutput)
}
type MySqlOutput struct{ *pulumi.OutputState }
func (MySqlOutput) ElementType() reflect.Type {
return reflect.TypeOf((**MySql)(nil)).Elem()
}
func (o MySqlOutput) ToMySqlOutput() MySqlOutput {
return o
}
func (o MySqlOutput) ToMySqlOutputWithContext(ctx context.Context) MySqlOutput {
return o
}
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
func (o MySqlOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o MySqlOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Arguments appended to the container command.
func (o MySqlOutput) Args() pulumi.StringArrayOutput {
return o.ApplyT(func(v *MySql) pulumi.StringArrayOutput { return v.Args }).(pulumi.StringArrayOutput)
}
// Override the container entrypoint command.
func (o MySqlOutput) Command() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput)
}
// Hard CPU limit, for example `1`.
func (o MySqlOutput) CpuLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput)
}
// Soft CPU reservation, for example `0.5`.
func (o MySqlOutput) CpuReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the database was created.
func (o MySqlOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Name of the database to create.
func (o MySqlOutput) DatabaseName() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.DatabaseName }).(pulumi.StringOutput)
}
// Password for the database user.
func (o MySqlOutput) DatabasePassword() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput)
}
// Password for the MySQL `root` user.
func (o MySqlOutput) DatabaseRootPassword() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.DatabaseRootPassword }).(pulumi.StringOutput)
}
// Database user to create.
func (o MySqlOutput) DatabaseUser() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.DatabaseUser }).(pulumi.StringOutput)
}
// Free-form description.
func (o MySqlOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Detach the service from the shared `dokploy-network`.
func (o MySqlOutput) DetachDokployNetwork() pulumi.BoolOutput {
return o.ApplyT(func(v *MySql) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput)
}
// MySQL image to run, for example `mysql:8`.
func (o MySqlOutput) DockerImage() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput)
}
// Docker Swarm endpoint specification, as a JSON object.
func (o MySqlOutput) EndpointSpecSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o MySqlOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this database belongs to.
func (o MySqlOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
func (o MySqlOutput) ExternalPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput)
}
// Docker Swarm health check configuration, as a JSON object.
func (o MySqlOutput) HealthCheckSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm service labels, as a JSON object.
func (o MySqlOutput) LabelsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput)
}
// Hard memory limit, for example `512m`.
func (o MySqlOutput) MemoryLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput)
}
// Soft memory reservation, for example `256m`.
func (o MySqlOutput) MemoryReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput)
}
// Docker Swarm service mode, as a JSON object.
func (o MySqlOutput) ModeSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput)
}
// Display name of the database.
func (o MySqlOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *MySql) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// IDs of additional Docker networks to attach.
func (o MySqlOutput) NetworkIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v *MySql) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput)
}
// Docker Swarm network attachments, as a JSON array.
func (o MySqlOutput) NetworkSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm placement constraints, as a JSON object.
func (o MySqlOutput) PlacementSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput)
}
// Number of replicas to run.
func (o MySqlOutput) Replicas() pulumi.IntOutput {
return o.ApplyT(func(v *MySql) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput)
}
// Docker Swarm restart policy, as a JSON object.
func (o MySqlOutput) RestartPolicySwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rollback configuration, as a JSON object.
func (o MySqlOutput) RollbackConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o MySqlOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Grace period in nanoseconds before a container is killed.
func (o MySqlOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput)
}
// Docker Swarm ulimits, as a JSON object.
func (o MySqlOutput) UlimitsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.UlimitsSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rolling update configuration, as a JSON object.
func (o MySqlOutput) UpdateConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *MySql) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput)
}
type MySqlArrayOutput struct{ *pulumi.OutputState }
func (MySqlArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*MySql)(nil)).Elem()
}
func (o MySqlArrayOutput) ToMySqlArrayOutput() MySqlArrayOutput {
return o
}
func (o MySqlArrayOutput) ToMySqlArrayOutputWithContext(ctx context.Context) MySqlArrayOutput {
return o
}
func (o MySqlArrayOutput) Index(i pulumi.IntInput) MySqlOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *MySql {
return vs[0].([]*MySql)[vs[1].(int)]
}).(MySqlOutput)
}
type MySqlMapOutput struct{ *pulumi.OutputState }
func (MySqlMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*MySql)(nil)).Elem()
}
func (o MySqlMapOutput) ToMySqlMapOutput() MySqlMapOutput {
return o
}
func (o MySqlMapOutput) ToMySqlMapOutputWithContext(ctx context.Context) MySqlMapOutput {
return o
}
func (o MySqlMapOutput) MapIndex(k pulumi.StringInput) MySqlOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *MySql {
return vs[0].(map[string]*MySql)[vs[1].(string)]
}).(MySqlOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*MySqlInput)(nil)).Elem(), &MySql{})
pulumi.RegisterInputType(reflect.TypeOf((*MySqlArrayInput)(nil)).Elem(), MySqlArray{})
pulumi.RegisterInputType(reflect.TypeOf((*MySqlMapInput)(nil)).Elem(), MySqlMap{})
pulumi.RegisterOutputType(MySqlOutput{})
pulumi.RegisterOutputType(MySqlArrayOutput{})
pulumi.RegisterOutputType(MySqlMapOutput{})
}

287
sdk/go/dokploy/port.go generated Normal file
View File

@@ -0,0 +1,287 @@
// 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"
)
type Port struct {
pulumi.CustomResourceState
// Application this port belongs to.
ApplicationId pulumi.StringOutput `pulumi:"applicationId"`
// Transport protocol. Valid values: `tcp`, `udp`.
Protocol pulumi.StringOutput `pulumi:"protocol"`
// Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
PublishMode pulumi.StringOutput `pulumi:"publishMode"`
// Port exposed on the host.
PublishedPort pulumi.IntOutput `pulumi:"publishedPort"`
// Port the container listens on.
TargetPort pulumi.IntOutput `pulumi:"targetPort"`
}
// NewPort registers a new resource with the given unique name, arguments, and options.
func NewPort(ctx *pulumi.Context,
name string, args *PortArgs, opts ...pulumi.ResourceOption) (*Port, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.ApplicationId == nil {
return nil, errors.New("invalid value for required argument 'ApplicationId'")
}
if args.Protocol == nil {
return nil, errors.New("invalid value for required argument 'Protocol'")
}
if args.PublishedPort == nil {
return nil, errors.New("invalid value for required argument 'PublishedPort'")
}
if args.TargetPort == nil {
return nil, errors.New("invalid value for required argument 'TargetPort'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Port
err := ctx.RegisterResource("dokploy:index/port:Port", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetPort gets an existing Port 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 GetPort(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *PortState, opts ...pulumi.ResourceOption) (*Port, error) {
var resource Port
err := ctx.ReadResource("dokploy:index/port:Port", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Port resources.
type portState struct {
// Application this port belongs to.
ApplicationId *string `pulumi:"applicationId"`
// Transport protocol. Valid values: `tcp`, `udp`.
Protocol *string `pulumi:"protocol"`
// Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
PublishMode *string `pulumi:"publishMode"`
// Port exposed on the host.
PublishedPort *int `pulumi:"publishedPort"`
// Port the container listens on.
TargetPort *int `pulumi:"targetPort"`
}
type PortState struct {
// Application this port belongs to.
ApplicationId pulumi.StringPtrInput
// Transport protocol. Valid values: `tcp`, `udp`.
Protocol pulumi.StringPtrInput
// Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
PublishMode pulumi.StringPtrInput
// Port exposed on the host.
PublishedPort pulumi.IntPtrInput
// Port the container listens on.
TargetPort pulumi.IntPtrInput
}
func (PortState) ElementType() reflect.Type {
return reflect.TypeOf((*portState)(nil)).Elem()
}
type portArgs struct {
// Application this port belongs to.
ApplicationId string `pulumi:"applicationId"`
// Transport protocol. Valid values: `tcp`, `udp`.
Protocol string `pulumi:"protocol"`
// Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
PublishMode *string `pulumi:"publishMode"`
// Port exposed on the host.
PublishedPort int `pulumi:"publishedPort"`
// Port the container listens on.
TargetPort int `pulumi:"targetPort"`
}
// The set of arguments for constructing a Port resource.
type PortArgs struct {
// Application this port belongs to.
ApplicationId pulumi.StringInput
// Transport protocol. Valid values: `tcp`, `udp`.
Protocol pulumi.StringInput
// Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
PublishMode pulumi.StringPtrInput
// Port exposed on the host.
PublishedPort pulumi.IntInput
// Port the container listens on.
TargetPort pulumi.IntInput
}
func (PortArgs) ElementType() reflect.Type {
return reflect.TypeOf((*portArgs)(nil)).Elem()
}
type PortInput interface {
pulumi.Input
ToPortOutput() PortOutput
ToPortOutputWithContext(ctx context.Context) PortOutput
}
func (*Port) ElementType() reflect.Type {
return reflect.TypeOf((**Port)(nil)).Elem()
}
func (i *Port) ToPortOutput() PortOutput {
return i.ToPortOutputWithContext(context.Background())
}
func (i *Port) ToPortOutputWithContext(ctx context.Context) PortOutput {
return pulumi.ToOutputWithContext(ctx, i).(PortOutput)
}
// PortArrayInput is an input type that accepts PortArray and PortArrayOutput values.
// You can construct a concrete instance of `PortArrayInput` via:
//
// PortArray{ PortArgs{...} }
type PortArrayInput interface {
pulumi.Input
ToPortArrayOutput() PortArrayOutput
ToPortArrayOutputWithContext(context.Context) PortArrayOutput
}
type PortArray []PortInput
func (PortArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Port)(nil)).Elem()
}
func (i PortArray) ToPortArrayOutput() PortArrayOutput {
return i.ToPortArrayOutputWithContext(context.Background())
}
func (i PortArray) ToPortArrayOutputWithContext(ctx context.Context) PortArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(PortArrayOutput)
}
// PortMapInput is an input type that accepts PortMap and PortMapOutput values.
// You can construct a concrete instance of `PortMapInput` via:
//
// PortMap{ "key": PortArgs{...} }
type PortMapInput interface {
pulumi.Input
ToPortMapOutput() PortMapOutput
ToPortMapOutputWithContext(context.Context) PortMapOutput
}
type PortMap map[string]PortInput
func (PortMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Port)(nil)).Elem()
}
func (i PortMap) ToPortMapOutput() PortMapOutput {
return i.ToPortMapOutputWithContext(context.Background())
}
func (i PortMap) ToPortMapOutputWithContext(ctx context.Context) PortMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(PortMapOutput)
}
type PortOutput struct{ *pulumi.OutputState }
func (PortOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Port)(nil)).Elem()
}
func (o PortOutput) ToPortOutput() PortOutput {
return o
}
func (o PortOutput) ToPortOutputWithContext(ctx context.Context) PortOutput {
return o
}
// Application this port belongs to.
func (o PortOutput) ApplicationId() pulumi.StringOutput {
return o.ApplyT(func(v *Port) pulumi.StringOutput { return v.ApplicationId }).(pulumi.StringOutput)
}
// Transport protocol. Valid values: `tcp`, `udp`.
func (o PortOutput) Protocol() pulumi.StringOutput {
return o.ApplyT(func(v *Port) pulumi.StringOutput { return v.Protocol }).(pulumi.StringOutput)
}
// Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
func (o PortOutput) PublishMode() pulumi.StringOutput {
return o.ApplyT(func(v *Port) pulumi.StringOutput { return v.PublishMode }).(pulumi.StringOutput)
}
// Port exposed on the host.
func (o PortOutput) PublishedPort() pulumi.IntOutput {
return o.ApplyT(func(v *Port) pulumi.IntOutput { return v.PublishedPort }).(pulumi.IntOutput)
}
// Port the container listens on.
func (o PortOutput) TargetPort() pulumi.IntOutput {
return o.ApplyT(func(v *Port) pulumi.IntOutput { return v.TargetPort }).(pulumi.IntOutput)
}
type PortArrayOutput struct{ *pulumi.OutputState }
func (PortArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Port)(nil)).Elem()
}
func (o PortArrayOutput) ToPortArrayOutput() PortArrayOutput {
return o
}
func (o PortArrayOutput) ToPortArrayOutputWithContext(ctx context.Context) PortArrayOutput {
return o
}
func (o PortArrayOutput) Index(i pulumi.IntInput) PortOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Port {
return vs[0].([]*Port)[vs[1].(int)]
}).(PortOutput)
}
type PortMapOutput struct{ *pulumi.OutputState }
func (PortMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Port)(nil)).Elem()
}
func (o PortMapOutput) ToPortMapOutput() PortMapOutput {
return o
}
func (o PortMapOutput) ToPortMapOutputWithContext(ctx context.Context) PortMapOutput {
return o
}
func (o PortMapOutput) MapIndex(k pulumi.StringInput) PortOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Port {
return vs[0].(map[string]*Port)[vs[1].(string)]
}).(PortOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*PortInput)(nil)).Elem(), &Port{})
pulumi.RegisterInputType(reflect.TypeOf((*PortArrayInput)(nil)).Elem(), PortArray{})
pulumi.RegisterInputType(reflect.TypeOf((*PortMapInput)(nil)).Elem(), PortMap{})
pulumi.RegisterOutputType(PortOutput{})
pulumi.RegisterOutputType(PortArrayOutput{})
pulumi.RegisterOutputType(PortMapOutput{})
}

709
sdk/go/dokploy/postgres.go generated Normal file
View File

@@ -0,0 +1,709 @@
// 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"
)
type Postgres struct {
pulumi.CustomResourceState
// Unique Docker service name. Generated by Dokploy when omitted. 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"`
// Arguments appended to the container command.
Args pulumi.StringArrayOutput `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName pulumi.StringOutput `pulumi:"databaseName"`
// 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"`
// PostgreSQL image to run, for example `postgres:16`.
DockerImage pulumi.StringOutput `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrOutput `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"`
}
// NewPostgres registers a new resource with the given unique name, arguments, and options.
func NewPostgres(ctx *pulumi.Context,
name string, args *PostgresArgs, opts ...pulumi.ResourceOption) (*Postgres, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.DatabaseName == nil {
return nil, errors.New("invalid value for required argument 'DatabaseName'")
}
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 Postgres
err := ctx.RegisterResource("dokploy:index/postgres:Postgres", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetPostgres gets an existing Postgres 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 GetPostgres(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *PostgresState, opts ...pulumi.ResourceOption) (*Postgres, error) {
var resource Postgres
err := ctx.ReadResource("dokploy:index/postgres:Postgres", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Postgres resources.
type postgresState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus *string `pulumi:"applicationStatus"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName *string `pulumi:"databaseName"`
// 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"`
// PostgreSQL image to run, for example `postgres:16`.
DockerImage *string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
type PostgresState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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
// Name of the database to create.
DatabaseName 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
// PostgreSQL image to run, for example `postgres:16`.
DockerImage pulumi.StringPtrInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (PostgresState) ElementType() reflect.Type {
return reflect.TypeOf((*postgresState)(nil)).Elem()
}
type postgresArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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"`
// Name of the database to create.
DatabaseName string `pulumi:"databaseName"`
// 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"`
// PostgreSQL image to run, for example `postgres:16`.
DockerImage string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
// The set of arguments for constructing a Postgres resource.
type PostgresArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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
// Name of the database to create.
DatabaseName pulumi.StringInput
// 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
// PostgreSQL image to run, for example `postgres:16`.
DockerImage pulumi.StringInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (PostgresArgs) ElementType() reflect.Type {
return reflect.TypeOf((*postgresArgs)(nil)).Elem()
}
type PostgresInput interface {
pulumi.Input
ToPostgresOutput() PostgresOutput
ToPostgresOutputWithContext(ctx context.Context) PostgresOutput
}
func (*Postgres) ElementType() reflect.Type {
return reflect.TypeOf((**Postgres)(nil)).Elem()
}
func (i *Postgres) ToPostgresOutput() PostgresOutput {
return i.ToPostgresOutputWithContext(context.Background())
}
func (i *Postgres) ToPostgresOutputWithContext(ctx context.Context) PostgresOutput {
return pulumi.ToOutputWithContext(ctx, i).(PostgresOutput)
}
// PostgresArrayInput is an input type that accepts PostgresArray and PostgresArrayOutput values.
// You can construct a concrete instance of `PostgresArrayInput` via:
//
// PostgresArray{ PostgresArgs{...} }
type PostgresArrayInput interface {
pulumi.Input
ToPostgresArrayOutput() PostgresArrayOutput
ToPostgresArrayOutputWithContext(context.Context) PostgresArrayOutput
}
type PostgresArray []PostgresInput
func (PostgresArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Postgres)(nil)).Elem()
}
func (i PostgresArray) ToPostgresArrayOutput() PostgresArrayOutput {
return i.ToPostgresArrayOutputWithContext(context.Background())
}
func (i PostgresArray) ToPostgresArrayOutputWithContext(ctx context.Context) PostgresArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(PostgresArrayOutput)
}
// PostgresMapInput is an input type that accepts PostgresMap and PostgresMapOutput values.
// You can construct a concrete instance of `PostgresMapInput` via:
//
// PostgresMap{ "key": PostgresArgs{...} }
type PostgresMapInput interface {
pulumi.Input
ToPostgresMapOutput() PostgresMapOutput
ToPostgresMapOutputWithContext(context.Context) PostgresMapOutput
}
type PostgresMap map[string]PostgresInput
func (PostgresMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Postgres)(nil)).Elem()
}
func (i PostgresMap) ToPostgresMapOutput() PostgresMapOutput {
return i.ToPostgresMapOutputWithContext(context.Background())
}
func (i PostgresMap) ToPostgresMapOutputWithContext(ctx context.Context) PostgresMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(PostgresMapOutput)
}
type PostgresOutput struct{ *pulumi.OutputState }
func (PostgresOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Postgres)(nil)).Elem()
}
func (o PostgresOutput) ToPostgresOutput() PostgresOutput {
return o
}
func (o PostgresOutput) ToPostgresOutputWithContext(ctx context.Context) PostgresOutput {
return o
}
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
func (o PostgresOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o PostgresOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Arguments appended to the container command.
func (o PostgresOutput) Args() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringArrayOutput { return v.Args }).(pulumi.StringArrayOutput)
}
// Override the container entrypoint command.
func (o PostgresOutput) Command() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput)
}
// Hard CPU limit, for example `1`.
func (o PostgresOutput) CpuLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput)
}
// Soft CPU reservation, for example `0.5`.
func (o PostgresOutput) CpuReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the database was created.
func (o PostgresOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Name of the database to create.
func (o PostgresOutput) DatabaseName() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.DatabaseName }).(pulumi.StringOutput)
}
// Password for the database user.
func (o PostgresOutput) DatabasePassword() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput)
}
// Database user to create.
func (o PostgresOutput) DatabaseUser() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.DatabaseUser }).(pulumi.StringOutput)
}
// Free-form description.
func (o PostgresOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Detach the service from the shared `dokploy-network`.
func (o PostgresOutput) DetachDokployNetwork() pulumi.BoolOutput {
return o.ApplyT(func(v *Postgres) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput)
}
// PostgreSQL image to run, for example `postgres:16`.
func (o PostgresOutput) DockerImage() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput)
}
// Docker Swarm endpoint specification, as a JSON object.
func (o PostgresOutput) EndpointSpecSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o PostgresOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this database belongs to.
func (o PostgresOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
func (o PostgresOutput) ExternalPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput)
}
// Docker Swarm health check configuration, as a JSON object.
func (o PostgresOutput) HealthCheckSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm service labels, as a JSON object.
func (o PostgresOutput) LabelsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput)
}
// Hard memory limit, for example `512m`.
func (o PostgresOutput) MemoryLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput)
}
// Soft memory reservation, for example `256m`.
func (o PostgresOutput) MemoryReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput)
}
// Docker Swarm service mode, as a JSON object.
func (o PostgresOutput) ModeSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput)
}
// Display name of the database.
func (o PostgresOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// IDs of additional Docker networks to attach.
func (o PostgresOutput) NetworkIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput)
}
// Docker Swarm network attachments, as a JSON array.
func (o PostgresOutput) NetworkSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm placement constraints, as a JSON object.
func (o PostgresOutput) PlacementSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput)
}
// Number of replicas to run.
func (o PostgresOutput) Replicas() pulumi.IntOutput {
return o.ApplyT(func(v *Postgres) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput)
}
// Docker Swarm restart policy, as a JSON object.
func (o PostgresOutput) RestartPolicySwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rollback configuration, as a JSON object.
func (o PostgresOutput) RollbackConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o PostgresOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Grace period in nanoseconds before a container is killed.
func (o PostgresOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput)
}
// Docker Swarm ulimits, as a JSON object.
func (o PostgresOutput) UlimitsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.UlimitsSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rolling update configuration, as a JSON object.
func (o PostgresOutput) UpdateConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Postgres) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput)
}
type PostgresArrayOutput struct{ *pulumi.OutputState }
func (PostgresArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Postgres)(nil)).Elem()
}
func (o PostgresArrayOutput) ToPostgresArrayOutput() PostgresArrayOutput {
return o
}
func (o PostgresArrayOutput) ToPostgresArrayOutputWithContext(ctx context.Context) PostgresArrayOutput {
return o
}
func (o PostgresArrayOutput) Index(i pulumi.IntInput) PostgresOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Postgres {
return vs[0].([]*Postgres)[vs[1].(int)]
}).(PostgresOutput)
}
type PostgresMapOutput struct{ *pulumi.OutputState }
func (PostgresMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Postgres)(nil)).Elem()
}
func (o PostgresMapOutput) ToPostgresMapOutput() PostgresMapOutput {
return o
}
func (o PostgresMapOutput) ToPostgresMapOutputWithContext(ctx context.Context) PostgresMapOutput {
return o
}
func (o PostgresMapOutput) MapIndex(k pulumi.StringInput) PostgresOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Postgres {
return vs[0].(map[string]*Postgres)[vs[1].(string)]
}).(PostgresOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*PostgresInput)(nil)).Elem(), &Postgres{})
pulumi.RegisterInputType(reflect.TypeOf((*PostgresArrayInput)(nil)).Elem(), PostgresArray{})
pulumi.RegisterInputType(reflect.TypeOf((*PostgresMapInput)(nil)).Elem(), PostgresMap{})
pulumi.RegisterOutputType(PostgresOutput{})
pulumi.RegisterOutputType(PostgresArrayOutput{})
pulumi.RegisterOutputType(PostgresMapOutput{})
}

277
sdk/go/dokploy/project.go generated Normal file
View File

@@ -0,0 +1,277 @@
// 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"
)
type Project struct {
pulumi.CustomResourceState
// RFC 3339 timestamp of when the project was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// ID of the `production` environment that Dokploy creates automatically with the project.
DefaultEnvironmentId pulumi.StringOutput `pulumi:"defaultEnvironmentId"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
Env pulumi.StringOutput `pulumi:"env"`
// Display name of the project.
Name pulumi.StringOutput `pulumi:"name"`
// Organization that owns the project.
OrganizationId pulumi.StringOutput `pulumi:"organizationId"`
}
// NewProject registers a new resource with the given unique name, arguments, and options.
func NewProject(ctx *pulumi.Context,
name string, args *ProjectArgs, opts ...pulumi.ResourceOption) (*Project, error) {
if args == nil {
args = &ProjectArgs{}
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Project
err := ctx.RegisterResource("dokploy:index/project:Project", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetProject gets an existing Project 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 GetProject(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *ProjectState, opts ...pulumi.ResourceOption) (*Project, error) {
var resource Project
err := ctx.ReadResource("dokploy:index/project:Project", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Project resources.
type projectState struct {
// RFC 3339 timestamp of when the project was created.
CreatedAt *string `pulumi:"createdAt"`
// ID of the `production` environment that Dokploy creates automatically with the project.
DefaultEnvironmentId *string `pulumi:"defaultEnvironmentId"`
// Free-form description.
Description *string `pulumi:"description"`
// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
Env *string `pulumi:"env"`
// Display name of the project.
Name *string `pulumi:"name"`
// Organization that owns the project.
OrganizationId *string `pulumi:"organizationId"`
}
type ProjectState struct {
// RFC 3339 timestamp of when the project was created.
CreatedAt pulumi.StringPtrInput
// ID of the `production` environment that Dokploy creates automatically with the project.
DefaultEnvironmentId pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
Env pulumi.StringPtrInput
// Display name of the project.
Name pulumi.StringPtrInput
// Organization that owns the project.
OrganizationId pulumi.StringPtrInput
}
func (ProjectState) ElementType() reflect.Type {
return reflect.TypeOf((*projectState)(nil)).Elem()
}
type projectArgs struct {
// Free-form description.
Description *string `pulumi:"description"`
// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
Env *string `pulumi:"env"`
// Display name of the project.
Name *string `pulumi:"name"`
}
// The set of arguments for constructing a Project resource.
type ProjectArgs struct {
// Free-form description.
Description pulumi.StringPtrInput
// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
Env pulumi.StringPtrInput
// Display name of the project.
Name pulumi.StringPtrInput
}
func (ProjectArgs) ElementType() reflect.Type {
return reflect.TypeOf((*projectArgs)(nil)).Elem()
}
type ProjectInput interface {
pulumi.Input
ToProjectOutput() ProjectOutput
ToProjectOutputWithContext(ctx context.Context) ProjectOutput
}
func (*Project) ElementType() reflect.Type {
return reflect.TypeOf((**Project)(nil)).Elem()
}
func (i *Project) ToProjectOutput() ProjectOutput {
return i.ToProjectOutputWithContext(context.Background())
}
func (i *Project) ToProjectOutputWithContext(ctx context.Context) ProjectOutput {
return pulumi.ToOutputWithContext(ctx, i).(ProjectOutput)
}
// ProjectArrayInput is an input type that accepts ProjectArray and ProjectArrayOutput values.
// You can construct a concrete instance of `ProjectArrayInput` via:
//
// ProjectArray{ ProjectArgs{...} }
type ProjectArrayInput interface {
pulumi.Input
ToProjectArrayOutput() ProjectArrayOutput
ToProjectArrayOutputWithContext(context.Context) ProjectArrayOutput
}
type ProjectArray []ProjectInput
func (ProjectArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Project)(nil)).Elem()
}
func (i ProjectArray) ToProjectArrayOutput() ProjectArrayOutput {
return i.ToProjectArrayOutputWithContext(context.Background())
}
func (i ProjectArray) ToProjectArrayOutputWithContext(ctx context.Context) ProjectArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(ProjectArrayOutput)
}
// ProjectMapInput is an input type that accepts ProjectMap and ProjectMapOutput values.
// You can construct a concrete instance of `ProjectMapInput` via:
//
// ProjectMap{ "key": ProjectArgs{...} }
type ProjectMapInput interface {
pulumi.Input
ToProjectMapOutput() ProjectMapOutput
ToProjectMapOutputWithContext(context.Context) ProjectMapOutput
}
type ProjectMap map[string]ProjectInput
func (ProjectMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Project)(nil)).Elem()
}
func (i ProjectMap) ToProjectMapOutput() ProjectMapOutput {
return i.ToProjectMapOutputWithContext(context.Background())
}
func (i ProjectMap) ToProjectMapOutputWithContext(ctx context.Context) ProjectMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(ProjectMapOutput)
}
type ProjectOutput struct{ *pulumi.OutputState }
func (ProjectOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Project)(nil)).Elem()
}
func (o ProjectOutput) ToProjectOutput() ProjectOutput {
return o
}
func (o ProjectOutput) ToProjectOutputWithContext(ctx context.Context) ProjectOutput {
return o
}
// RFC 3339 timestamp of when the project was created.
func (o ProjectOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// ID of the `production` environment that Dokploy creates automatically with the project.
func (o ProjectOutput) DefaultEnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.DefaultEnvironmentId }).(pulumi.StringOutput)
}
// Free-form description.
func (o ProjectOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Project) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Project-wide environment variables in `KEY=value` format, one per line. These are shared with every service in the project.
func (o ProjectOutput) Env() pulumi.StringOutput {
return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.Env }).(pulumi.StringOutput)
}
// Display name of the project.
func (o ProjectOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// Organization that owns the project.
func (o ProjectOutput) OrganizationId() pulumi.StringOutput {
return o.ApplyT(func(v *Project) pulumi.StringOutput { return v.OrganizationId }).(pulumi.StringOutput)
}
type ProjectArrayOutput struct{ *pulumi.OutputState }
func (ProjectArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Project)(nil)).Elem()
}
func (o ProjectArrayOutput) ToProjectArrayOutput() ProjectArrayOutput {
return o
}
func (o ProjectArrayOutput) ToProjectArrayOutputWithContext(ctx context.Context) ProjectArrayOutput {
return o
}
func (o ProjectArrayOutput) Index(i pulumi.IntInput) ProjectOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Project {
return vs[0].([]*Project)[vs[1].(int)]
}).(ProjectOutput)
}
type ProjectMapOutput struct{ *pulumi.OutputState }
func (ProjectMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Project)(nil)).Elem()
}
func (o ProjectMapOutput) ToProjectMapOutput() ProjectMapOutput {
return o
}
func (o ProjectMapOutput) ToProjectMapOutputWithContext(ctx context.Context) ProjectMapOutput {
return o
}
func (o ProjectMapOutput) MapIndex(k pulumi.StringInput) ProjectOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Project {
return vs[0].(map[string]*Project)[vs[1].(string)]
}).(ProjectOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ProjectInput)(nil)).Elem(), &Project{})
pulumi.RegisterInputType(reflect.TypeOf((*ProjectArrayInput)(nil)).Elem(), ProjectArray{})
pulumi.RegisterInputType(reflect.TypeOf((*ProjectMapInput)(nil)).Elem(), ProjectMap{})
pulumi.RegisterOutputType(ProjectOutput{})
pulumi.RegisterOutputType(ProjectArrayOutput{})
pulumi.RegisterOutputType(ProjectMapOutput{})
}

162
sdk/go/dokploy/provider.go generated Normal file
View File

@@ -0,0 +1,162 @@
// 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"
)
// The provider type for the dokploy package. By default, resources use package-wide configuration
// settings, however an explicit `Provider` instance may be created and passed during resource
// construction to achieve fine-grained programmatic control over provider settings. See the
// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.
type Provider struct {
pulumi.ProviderResourceState
// API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
ApiKey pulumi.StringPtrOutput `pulumi:"apiKey"`
// 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.StringPtrOutput `pulumi:"host"`
}
// NewProvider registers a new resource with the given unique name, arguments, and options.
func NewProvider(ctx *pulumi.Context,
name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) {
if args == nil {
args = &ProviderArgs{}
}
if args.ApiKey == nil {
if d := internal.GetEnvOrDefault(nil, nil, "DOKPLOY_API_KEY"); d != nil {
args.ApiKey = pulumi.StringPtr(d.(string))
}
}
if args.Host == nil {
if d := internal.GetEnvOrDefault(nil, nil, "DOKPLOY_HOST"); d != nil {
args.Host = pulumi.StringPtr(d.(string))
}
}
if args.TimeoutSeconds == nil {
if d := internal.GetEnvOrDefault(nil, internal.ParseEnvInt, "DOKPLOY_TIMEOUT_SECONDS"); d != nil {
args.TimeoutSeconds = pulumi.IntPtr(d.(int))
}
}
if args.ApiKey != nil {
args.ApiKey = pulumi.ToSecret(args.ApiKey).(pulumi.StringPtrInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"apiKey",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource Provider
err := ctx.RegisterResource("pulumi:providers:dokploy", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
type providerArgs struct {
// API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
ApiKey *string `pulumi:"apiKey"`
// 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 *string `pulumi:"host"`
// Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`.
InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"`
// Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
TimeoutSeconds *int `pulumi:"timeoutSeconds"`
}
// The set of arguments for constructing a Provider resource.
type ProviderArgs struct {
// API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
ApiKey pulumi.StringPtrInput
// 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.StringPtrInput
// Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`.
InsecureSkipVerify pulumi.BoolPtrInput
// Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
TimeoutSeconds pulumi.IntPtrInput
}
func (ProviderArgs) ElementType() reflect.Type {
return reflect.TypeOf((*providerArgs)(nil)).Elem()
}
// This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.
func (r *Provider) TerraformConfig(ctx *pulumi.Context) (ProviderTerraformConfigResultOutput, error) {
out, err := ctx.Call("pulumi:providers:dokploy/terraformConfig", nil, ProviderTerraformConfigResultOutput{}, r)
if err != nil {
return ProviderTerraformConfigResultOutput{}, err
}
return out.(ProviderTerraformConfigResultOutput), nil
}
type ProviderTerraformConfigResult struct {
Result map[string]interface{} `pulumi:"result"`
}
type ProviderTerraformConfigResultOutput struct{ *pulumi.OutputState }
func (ProviderTerraformConfigResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*ProviderTerraformConfigResult)(nil)).Elem()
}
func (o ProviderTerraformConfigResultOutput) Result() pulumi.MapOutput {
return o.ApplyT(func(v ProviderTerraformConfigResult) map[string]interface{} { return v.Result }).(pulumi.MapOutput)
}
type ProviderInput interface {
pulumi.Input
ToProviderOutput() ProviderOutput
ToProviderOutputWithContext(ctx context.Context) ProviderOutput
}
func (*Provider) ElementType() reflect.Type {
return reflect.TypeOf((**Provider)(nil)).Elem()
}
func (i *Provider) ToProviderOutput() ProviderOutput {
return i.ToProviderOutputWithContext(context.Background())
}
func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput {
return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput)
}
type ProviderOutput struct{ *pulumi.OutputState }
func (ProviderOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Provider)(nil)).Elem()
}
func (o ProviderOutput) ToProviderOutput() ProviderOutput {
return o
}
func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput {
return o
}
// API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
func (o ProviderOutput) ApiKey() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.ApiKey }).(pulumi.StringPtrOutput)
}
// 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.
func (o ProviderOutput) Host() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Host }).(pulumi.StringPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{})
pulumi.RegisterOutputType(ProviderOutput{})
pulumi.RegisterOutputType(ProviderTerraformConfigResultOutput{})
}

6
sdk/go/dokploy/pulumi-plugin.json generated Normal file
View File

@@ -0,0 +1,6 @@
{
"resource": true,
"name": "dokploy",
"version": "0.1.0",
"server": "github://api.github.com/maxvojtkov/pulumi-dokploy"
}

359
sdk/go/dokploy/pulumiTypes.go generated Normal file
View File

@@ -0,0 +1,359 @@
// 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"
)
var _ = internal.GetEnvOrDefault
type GetProjectEnvironment struct {
Id string `pulumi:"id"`
IsDefault bool `pulumi:"isDefault"`
Name string `pulumi:"name"`
}
// GetProjectEnvironmentInput is an input type that accepts GetProjectEnvironmentArgs and GetProjectEnvironmentOutput values.
// You can construct a concrete instance of `GetProjectEnvironmentInput` via:
//
// GetProjectEnvironmentArgs{...}
type GetProjectEnvironmentInput interface {
pulumi.Input
ToGetProjectEnvironmentOutput() GetProjectEnvironmentOutput
ToGetProjectEnvironmentOutputWithContext(context.Context) GetProjectEnvironmentOutput
}
type GetProjectEnvironmentArgs struct {
Id pulumi.StringInput `pulumi:"id"`
IsDefault pulumi.BoolInput `pulumi:"isDefault"`
Name pulumi.StringInput `pulumi:"name"`
}
func (GetProjectEnvironmentArgs) ElementType() reflect.Type {
return reflect.TypeOf((*GetProjectEnvironment)(nil)).Elem()
}
func (i GetProjectEnvironmentArgs) ToGetProjectEnvironmentOutput() GetProjectEnvironmentOutput {
return i.ToGetProjectEnvironmentOutputWithContext(context.Background())
}
func (i GetProjectEnvironmentArgs) ToGetProjectEnvironmentOutputWithContext(ctx context.Context) GetProjectEnvironmentOutput {
return pulumi.ToOutputWithContext(ctx, i).(GetProjectEnvironmentOutput)
}
// GetProjectEnvironmentArrayInput is an input type that accepts GetProjectEnvironmentArray and GetProjectEnvironmentArrayOutput values.
// You can construct a concrete instance of `GetProjectEnvironmentArrayInput` via:
//
// GetProjectEnvironmentArray{ GetProjectEnvironmentArgs{...} }
type GetProjectEnvironmentArrayInput interface {
pulumi.Input
ToGetProjectEnvironmentArrayOutput() GetProjectEnvironmentArrayOutput
ToGetProjectEnvironmentArrayOutputWithContext(context.Context) GetProjectEnvironmentArrayOutput
}
type GetProjectEnvironmentArray []GetProjectEnvironmentInput
func (GetProjectEnvironmentArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]GetProjectEnvironment)(nil)).Elem()
}
func (i GetProjectEnvironmentArray) ToGetProjectEnvironmentArrayOutput() GetProjectEnvironmentArrayOutput {
return i.ToGetProjectEnvironmentArrayOutputWithContext(context.Background())
}
func (i GetProjectEnvironmentArray) ToGetProjectEnvironmentArrayOutputWithContext(ctx context.Context) GetProjectEnvironmentArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(GetProjectEnvironmentArrayOutput)
}
type GetProjectEnvironmentOutput struct{ *pulumi.OutputState }
func (GetProjectEnvironmentOutput) ElementType() reflect.Type {
return reflect.TypeOf((*GetProjectEnvironment)(nil)).Elem()
}
func (o GetProjectEnvironmentOutput) ToGetProjectEnvironmentOutput() GetProjectEnvironmentOutput {
return o
}
func (o GetProjectEnvironmentOutput) ToGetProjectEnvironmentOutputWithContext(ctx context.Context) GetProjectEnvironmentOutput {
return o
}
func (o GetProjectEnvironmentOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v GetProjectEnvironment) string { return v.Id }).(pulumi.StringOutput)
}
func (o GetProjectEnvironmentOutput) IsDefault() pulumi.BoolOutput {
return o.ApplyT(func(v GetProjectEnvironment) bool { return v.IsDefault }).(pulumi.BoolOutput)
}
func (o GetProjectEnvironmentOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v GetProjectEnvironment) string { return v.Name }).(pulumi.StringOutput)
}
type GetProjectEnvironmentArrayOutput struct{ *pulumi.OutputState }
func (GetProjectEnvironmentArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]GetProjectEnvironment)(nil)).Elem()
}
func (o GetProjectEnvironmentArrayOutput) ToGetProjectEnvironmentArrayOutput() GetProjectEnvironmentArrayOutput {
return o
}
func (o GetProjectEnvironmentArrayOutput) ToGetProjectEnvironmentArrayOutputWithContext(ctx context.Context) GetProjectEnvironmentArrayOutput {
return o
}
func (o GetProjectEnvironmentArrayOutput) Index(i pulumi.IntInput) GetProjectEnvironmentOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetProjectEnvironment {
return vs[0].([]GetProjectEnvironment)[vs[1].(int)]
}).(GetProjectEnvironmentOutput)
}
type GetProjectsProject struct {
DefaultEnvironmentId string `pulumi:"defaultEnvironmentId"`
Description string `pulumi:"description"`
Id string `pulumi:"id"`
Name string `pulumi:"name"`
}
// GetProjectsProjectInput is an input type that accepts GetProjectsProjectArgs and GetProjectsProjectOutput values.
// You can construct a concrete instance of `GetProjectsProjectInput` via:
//
// GetProjectsProjectArgs{...}
type GetProjectsProjectInput interface {
pulumi.Input
ToGetProjectsProjectOutput() GetProjectsProjectOutput
ToGetProjectsProjectOutputWithContext(context.Context) GetProjectsProjectOutput
}
type GetProjectsProjectArgs struct {
DefaultEnvironmentId pulumi.StringInput `pulumi:"defaultEnvironmentId"`
Description pulumi.StringInput `pulumi:"description"`
Id pulumi.StringInput `pulumi:"id"`
Name pulumi.StringInput `pulumi:"name"`
}
func (GetProjectsProjectArgs) ElementType() reflect.Type {
return reflect.TypeOf((*GetProjectsProject)(nil)).Elem()
}
func (i GetProjectsProjectArgs) ToGetProjectsProjectOutput() GetProjectsProjectOutput {
return i.ToGetProjectsProjectOutputWithContext(context.Background())
}
func (i GetProjectsProjectArgs) ToGetProjectsProjectOutputWithContext(ctx context.Context) GetProjectsProjectOutput {
return pulumi.ToOutputWithContext(ctx, i).(GetProjectsProjectOutput)
}
// GetProjectsProjectArrayInput is an input type that accepts GetProjectsProjectArray and GetProjectsProjectArrayOutput values.
// You can construct a concrete instance of `GetProjectsProjectArrayInput` via:
//
// GetProjectsProjectArray{ GetProjectsProjectArgs{...} }
type GetProjectsProjectArrayInput interface {
pulumi.Input
ToGetProjectsProjectArrayOutput() GetProjectsProjectArrayOutput
ToGetProjectsProjectArrayOutputWithContext(context.Context) GetProjectsProjectArrayOutput
}
type GetProjectsProjectArray []GetProjectsProjectInput
func (GetProjectsProjectArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]GetProjectsProject)(nil)).Elem()
}
func (i GetProjectsProjectArray) ToGetProjectsProjectArrayOutput() GetProjectsProjectArrayOutput {
return i.ToGetProjectsProjectArrayOutputWithContext(context.Background())
}
func (i GetProjectsProjectArray) ToGetProjectsProjectArrayOutputWithContext(ctx context.Context) GetProjectsProjectArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(GetProjectsProjectArrayOutput)
}
type GetProjectsProjectOutput struct{ *pulumi.OutputState }
func (GetProjectsProjectOutput) ElementType() reflect.Type {
return reflect.TypeOf((*GetProjectsProject)(nil)).Elem()
}
func (o GetProjectsProjectOutput) ToGetProjectsProjectOutput() GetProjectsProjectOutput {
return o
}
func (o GetProjectsProjectOutput) ToGetProjectsProjectOutputWithContext(ctx context.Context) GetProjectsProjectOutput {
return o
}
func (o GetProjectsProjectOutput) DefaultEnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v GetProjectsProject) string { return v.DefaultEnvironmentId }).(pulumi.StringOutput)
}
func (o GetProjectsProjectOutput) Description() pulumi.StringOutput {
return o.ApplyT(func(v GetProjectsProject) string { return v.Description }).(pulumi.StringOutput)
}
func (o GetProjectsProjectOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v GetProjectsProject) string { return v.Id }).(pulumi.StringOutput)
}
func (o GetProjectsProjectOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v GetProjectsProject) string { return v.Name }).(pulumi.StringOutput)
}
type GetProjectsProjectArrayOutput struct{ *pulumi.OutputState }
func (GetProjectsProjectArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]GetProjectsProject)(nil)).Elem()
}
func (o GetProjectsProjectArrayOutput) ToGetProjectsProjectArrayOutput() GetProjectsProjectArrayOutput {
return o
}
func (o GetProjectsProjectArrayOutput) ToGetProjectsProjectArrayOutputWithContext(ctx context.Context) GetProjectsProjectArrayOutput {
return o
}
func (o GetProjectsProjectArrayOutput) Index(i pulumi.IntInput) GetProjectsProjectOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetProjectsProject {
return vs[0].([]GetProjectsProject)[vs[1].(int)]
}).(GetProjectsProjectOutput)
}
type GetServersServer struct {
Id string `pulumi:"id"`
IpAddress string `pulumi:"ipAddress"`
Name string `pulumi:"name"`
ServerStatus string `pulumi:"serverStatus"`
}
// GetServersServerInput is an input type that accepts GetServersServerArgs and GetServersServerOutput values.
// You can construct a concrete instance of `GetServersServerInput` via:
//
// GetServersServerArgs{...}
type GetServersServerInput interface {
pulumi.Input
ToGetServersServerOutput() GetServersServerOutput
ToGetServersServerOutputWithContext(context.Context) GetServersServerOutput
}
type GetServersServerArgs struct {
Id pulumi.StringInput `pulumi:"id"`
IpAddress pulumi.StringInput `pulumi:"ipAddress"`
Name pulumi.StringInput `pulumi:"name"`
ServerStatus pulumi.StringInput `pulumi:"serverStatus"`
}
func (GetServersServerArgs) ElementType() reflect.Type {
return reflect.TypeOf((*GetServersServer)(nil)).Elem()
}
func (i GetServersServerArgs) ToGetServersServerOutput() GetServersServerOutput {
return i.ToGetServersServerOutputWithContext(context.Background())
}
func (i GetServersServerArgs) ToGetServersServerOutputWithContext(ctx context.Context) GetServersServerOutput {
return pulumi.ToOutputWithContext(ctx, i).(GetServersServerOutput)
}
// GetServersServerArrayInput is an input type that accepts GetServersServerArray and GetServersServerArrayOutput values.
// You can construct a concrete instance of `GetServersServerArrayInput` via:
//
// GetServersServerArray{ GetServersServerArgs{...} }
type GetServersServerArrayInput interface {
pulumi.Input
ToGetServersServerArrayOutput() GetServersServerArrayOutput
ToGetServersServerArrayOutputWithContext(context.Context) GetServersServerArrayOutput
}
type GetServersServerArray []GetServersServerInput
func (GetServersServerArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]GetServersServer)(nil)).Elem()
}
func (i GetServersServerArray) ToGetServersServerArrayOutput() GetServersServerArrayOutput {
return i.ToGetServersServerArrayOutputWithContext(context.Background())
}
func (i GetServersServerArray) ToGetServersServerArrayOutputWithContext(ctx context.Context) GetServersServerArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(GetServersServerArrayOutput)
}
type GetServersServerOutput struct{ *pulumi.OutputState }
func (GetServersServerOutput) ElementType() reflect.Type {
return reflect.TypeOf((*GetServersServer)(nil)).Elem()
}
func (o GetServersServerOutput) ToGetServersServerOutput() GetServersServerOutput {
return o
}
func (o GetServersServerOutput) ToGetServersServerOutputWithContext(ctx context.Context) GetServersServerOutput {
return o
}
func (o GetServersServerOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v GetServersServer) string { return v.Id }).(pulumi.StringOutput)
}
func (o GetServersServerOutput) IpAddress() pulumi.StringOutput {
return o.ApplyT(func(v GetServersServer) string { return v.IpAddress }).(pulumi.StringOutput)
}
func (o GetServersServerOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v GetServersServer) string { return v.Name }).(pulumi.StringOutput)
}
func (o GetServersServerOutput) ServerStatus() pulumi.StringOutput {
return o.ApplyT(func(v GetServersServer) string { return v.ServerStatus }).(pulumi.StringOutput)
}
type GetServersServerArrayOutput struct{ *pulumi.OutputState }
func (GetServersServerArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]GetServersServer)(nil)).Elem()
}
func (o GetServersServerArrayOutput) ToGetServersServerArrayOutput() GetServersServerArrayOutput {
return o
}
func (o GetServersServerArrayOutput) ToGetServersServerArrayOutputWithContext(ctx context.Context) GetServersServerArrayOutput {
return o
}
func (o GetServersServerArrayOutput) Index(i pulumi.IntInput) GetServersServerOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetServersServer {
return vs[0].([]GetServersServer)[vs[1].(int)]
}).(GetServersServerOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*GetProjectEnvironmentInput)(nil)).Elem(), GetProjectEnvironmentArgs{})
pulumi.RegisterInputType(reflect.TypeOf((*GetProjectEnvironmentArrayInput)(nil)).Elem(), GetProjectEnvironmentArray{})
pulumi.RegisterInputType(reflect.TypeOf((*GetProjectsProjectInput)(nil)).Elem(), GetProjectsProjectArgs{})
pulumi.RegisterInputType(reflect.TypeOf((*GetProjectsProjectArrayInput)(nil)).Elem(), GetProjectsProjectArray{})
pulumi.RegisterInputType(reflect.TypeOf((*GetServersServerInput)(nil)).Elem(), GetServersServerArgs{})
pulumi.RegisterInputType(reflect.TypeOf((*GetServersServerArrayInput)(nil)).Elem(), GetServersServerArray{})
pulumi.RegisterOutputType(GetProjectEnvironmentOutput{})
pulumi.RegisterOutputType(GetProjectEnvironmentArrayOutput{})
pulumi.RegisterOutputType(GetProjectsProjectOutput{})
pulumi.RegisterOutputType(GetProjectsProjectArrayOutput{})
pulumi.RegisterOutputType(GetServersServerOutput{})
pulumi.RegisterOutputType(GetServersServerArrayOutput{})
}

280
sdk/go/dokploy/redirect.go generated Normal file
View File

@@ -0,0 +1,280 @@
// 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"
)
type Redirect struct {
pulumi.CustomResourceState
// Application this redirect belongs to.
ApplicationId pulumi.StringOutput `pulumi:"applicationId"`
// RFC 3339 timestamp of when the redirect was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Issue a permanent (301) redirect instead of a temporary (302) one.
Permanent pulumi.BoolOutput `pulumi:"permanent"`
// Regular expression matched against the incoming URL.
Regex pulumi.StringOutput `pulumi:"regex"`
// Replacement URL, which may reference capture groups such as `${1}`.
Replacement pulumi.StringOutput `pulumi:"replacement"`
}
// NewRedirect registers a new resource with the given unique name, arguments, and options.
func NewRedirect(ctx *pulumi.Context,
name string, args *RedirectArgs, opts ...pulumi.ResourceOption) (*Redirect, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.ApplicationId == nil {
return nil, errors.New("invalid value for required argument 'ApplicationId'")
}
if args.Regex == nil {
return nil, errors.New("invalid value for required argument 'Regex'")
}
if args.Replacement == nil {
return nil, errors.New("invalid value for required argument 'Replacement'")
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource Redirect
err := ctx.RegisterResource("dokploy:index/redirect:Redirect", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetRedirect gets an existing Redirect 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 GetRedirect(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *RedirectState, opts ...pulumi.ResourceOption) (*Redirect, error) {
var resource Redirect
err := ctx.ReadResource("dokploy:index/redirect:Redirect", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Redirect resources.
type redirectState struct {
// Application this redirect belongs to.
ApplicationId *string `pulumi:"applicationId"`
// RFC 3339 timestamp of when the redirect was created.
CreatedAt *string `pulumi:"createdAt"`
// Issue a permanent (301) redirect instead of a temporary (302) one.
Permanent *bool `pulumi:"permanent"`
// Regular expression matched against the incoming URL.
Regex *string `pulumi:"regex"`
// Replacement URL, which may reference capture groups such as `${1}`.
Replacement *string `pulumi:"replacement"`
}
type RedirectState struct {
// Application this redirect belongs to.
ApplicationId pulumi.StringPtrInput
// RFC 3339 timestamp of when the redirect was created.
CreatedAt pulumi.StringPtrInput
// Issue a permanent (301) redirect instead of a temporary (302) one.
Permanent pulumi.BoolPtrInput
// Regular expression matched against the incoming URL.
Regex pulumi.StringPtrInput
// Replacement URL, which may reference capture groups such as `${1}`.
Replacement pulumi.StringPtrInput
}
func (RedirectState) ElementType() reflect.Type {
return reflect.TypeOf((*redirectState)(nil)).Elem()
}
type redirectArgs struct {
// Application this redirect belongs to.
ApplicationId string `pulumi:"applicationId"`
// Issue a permanent (301) redirect instead of a temporary (302) one.
Permanent *bool `pulumi:"permanent"`
// Regular expression matched against the incoming URL.
Regex string `pulumi:"regex"`
// Replacement URL, which may reference capture groups such as `${1}`.
Replacement string `pulumi:"replacement"`
}
// The set of arguments for constructing a Redirect resource.
type RedirectArgs struct {
// Application this redirect belongs to.
ApplicationId pulumi.StringInput
// Issue a permanent (301) redirect instead of a temporary (302) one.
Permanent pulumi.BoolPtrInput
// Regular expression matched against the incoming URL.
Regex pulumi.StringInput
// Replacement URL, which may reference capture groups such as `${1}`.
Replacement pulumi.StringInput
}
func (RedirectArgs) ElementType() reflect.Type {
return reflect.TypeOf((*redirectArgs)(nil)).Elem()
}
type RedirectInput interface {
pulumi.Input
ToRedirectOutput() RedirectOutput
ToRedirectOutputWithContext(ctx context.Context) RedirectOutput
}
func (*Redirect) ElementType() reflect.Type {
return reflect.TypeOf((**Redirect)(nil)).Elem()
}
func (i *Redirect) ToRedirectOutput() RedirectOutput {
return i.ToRedirectOutputWithContext(context.Background())
}
func (i *Redirect) ToRedirectOutputWithContext(ctx context.Context) RedirectOutput {
return pulumi.ToOutputWithContext(ctx, i).(RedirectOutput)
}
// RedirectArrayInput is an input type that accepts RedirectArray and RedirectArrayOutput values.
// You can construct a concrete instance of `RedirectArrayInput` via:
//
// RedirectArray{ RedirectArgs{...} }
type RedirectArrayInput interface {
pulumi.Input
ToRedirectArrayOutput() RedirectArrayOutput
ToRedirectArrayOutputWithContext(context.Context) RedirectArrayOutput
}
type RedirectArray []RedirectInput
func (RedirectArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Redirect)(nil)).Elem()
}
func (i RedirectArray) ToRedirectArrayOutput() RedirectArrayOutput {
return i.ToRedirectArrayOutputWithContext(context.Background())
}
func (i RedirectArray) ToRedirectArrayOutputWithContext(ctx context.Context) RedirectArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(RedirectArrayOutput)
}
// RedirectMapInput is an input type that accepts RedirectMap and RedirectMapOutput values.
// You can construct a concrete instance of `RedirectMapInput` via:
//
// RedirectMap{ "key": RedirectArgs{...} }
type RedirectMapInput interface {
pulumi.Input
ToRedirectMapOutput() RedirectMapOutput
ToRedirectMapOutputWithContext(context.Context) RedirectMapOutput
}
type RedirectMap map[string]RedirectInput
func (RedirectMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Redirect)(nil)).Elem()
}
func (i RedirectMap) ToRedirectMapOutput() RedirectMapOutput {
return i.ToRedirectMapOutputWithContext(context.Background())
}
func (i RedirectMap) ToRedirectMapOutputWithContext(ctx context.Context) RedirectMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(RedirectMapOutput)
}
type RedirectOutput struct{ *pulumi.OutputState }
func (RedirectOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Redirect)(nil)).Elem()
}
func (o RedirectOutput) ToRedirectOutput() RedirectOutput {
return o
}
func (o RedirectOutput) ToRedirectOutputWithContext(ctx context.Context) RedirectOutput {
return o
}
// Application this redirect belongs to.
func (o RedirectOutput) ApplicationId() pulumi.StringOutput {
return o.ApplyT(func(v *Redirect) pulumi.StringOutput { return v.ApplicationId }).(pulumi.StringOutput)
}
// RFC 3339 timestamp of when the redirect was created.
func (o RedirectOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Redirect) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Issue a permanent (301) redirect instead of a temporary (302) one.
func (o RedirectOutput) Permanent() pulumi.BoolOutput {
return o.ApplyT(func(v *Redirect) pulumi.BoolOutput { return v.Permanent }).(pulumi.BoolOutput)
}
// Regular expression matched against the incoming URL.
func (o RedirectOutput) Regex() pulumi.StringOutput {
return o.ApplyT(func(v *Redirect) pulumi.StringOutput { return v.Regex }).(pulumi.StringOutput)
}
// Replacement URL, which may reference capture groups such as `${1}`.
func (o RedirectOutput) Replacement() pulumi.StringOutput {
return o.ApplyT(func(v *Redirect) pulumi.StringOutput { return v.Replacement }).(pulumi.StringOutput)
}
type RedirectArrayOutput struct{ *pulumi.OutputState }
func (RedirectArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Redirect)(nil)).Elem()
}
func (o RedirectArrayOutput) ToRedirectArrayOutput() RedirectArrayOutput {
return o
}
func (o RedirectArrayOutput) ToRedirectArrayOutputWithContext(ctx context.Context) RedirectArrayOutput {
return o
}
func (o RedirectArrayOutput) Index(i pulumi.IntInput) RedirectOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Redirect {
return vs[0].([]*Redirect)[vs[1].(int)]
}).(RedirectOutput)
}
type RedirectMapOutput struct{ *pulumi.OutputState }
func (RedirectMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Redirect)(nil)).Elem()
}
func (o RedirectMapOutput) ToRedirectMapOutput() RedirectMapOutput {
return o
}
func (o RedirectMapOutput) ToRedirectMapOutputWithContext(ctx context.Context) RedirectMapOutput {
return o
}
func (o RedirectMapOutput) MapIndex(k pulumi.StringInput) RedirectOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Redirect {
return vs[0].(map[string]*Redirect)[vs[1].(string)]
}).(RedirectOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*RedirectInput)(nil)).Elem(), &Redirect{})
pulumi.RegisterInputType(reflect.TypeOf((*RedirectArrayInput)(nil)).Elem(), RedirectArray{})
pulumi.RegisterInputType(reflect.TypeOf((*RedirectMapInput)(nil)).Elem(), RedirectMap{})
pulumi.RegisterOutputType(RedirectOutput{})
pulumi.RegisterOutputType(RedirectArrayOutput{})
pulumi.RegisterOutputType(RedirectMapOutput{})
}

673
sdk/go/dokploy/redis.go generated Normal file
View File

@@ -0,0 +1,673 @@
// 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"
)
type Redis struct {
pulumi.CustomResourceState
// Unique Docker service name. Generated by Dokploy when omitted. 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"`
// Arguments appended to the container command.
Args pulumi.StringArrayOutput `pulumi:"args"`
// 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 used to authenticate to Redis.
DatabasePassword pulumi.StringOutput `pulumi:"databasePassword"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolOutput `pulumi:"detachDokployNetwork"`
// Redis image to run, for example `redis:7`.
DockerImage pulumi.StringOutput `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrOutput `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrOutput `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrOutput `pulumi:"updateConfigSwarm"`
}
// NewRedis registers a new resource with the given unique name, arguments, and options.
func NewRedis(ctx *pulumi.Context,
name string, args *RedisArgs, opts ...pulumi.ResourceOption) (*Redis, 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.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 Redis
err := ctx.RegisterResource("dokploy:index/redis:Redis", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetRedis gets an existing Redis 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 GetRedis(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *RedisState, opts ...pulumi.ResourceOption) (*Redis, error) {
var resource Redis
err := ctx.ReadResource("dokploy:index/redis:Redis", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Redis resources.
type redisState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus *string `pulumi:"applicationStatus"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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 used to authenticate to Redis.
DatabasePassword *string `pulumi:"databasePassword"`
// Free-form description.
Description *string `pulumi:"description"`
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork *bool `pulumi:"detachDokployNetwork"`
// Redis image to run, for example `redis:7`.
DockerImage *string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
type RedisState struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
ApplicationStatus pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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 used to authenticate to Redis.
DatabasePassword pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolPtrInput
// Redis image to run, for example `redis:7`.
DockerImage pulumi.StringPtrInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (RedisState) ElementType() reflect.Type {
return reflect.TypeOf((*redisState)(nil)).Elem()
}
type redisArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName *string `pulumi:"appName"`
// Arguments appended to the container command.
Args []string `pulumi:"args"`
// 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 used to authenticate to Redis.
DatabasePassword string `pulumi:"databasePassword"`
// Free-form description.
Description *string `pulumi:"description"`
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork *bool `pulumi:"detachDokployNetwork"`
// Redis image to run, for example `redis:7`.
DockerImage string `pulumi:"dockerImage"`
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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"`
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm *int `pulumi:"stopGracePeriodSwarm"`
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm *string `pulumi:"ulimitsSwarm"`
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm *string `pulumi:"updateConfigSwarm"`
}
// The set of arguments for constructing a Redis resource.
type RedisArgs struct {
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
AppName pulumi.StringPtrInput
// Arguments appended to the container command.
Args pulumi.StringArrayInput
// 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 used to authenticate to Redis.
DatabasePassword pulumi.StringInput
// Free-form description.
Description pulumi.StringPtrInput
// Detach the service from the shared `dokploy-network`.
DetachDokployNetwork pulumi.BoolPtrInput
// Redis image to run, for example `redis:7`.
DockerImage pulumi.StringInput
// 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 to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
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
// Grace period in nanoseconds before a container is killed.
StopGracePeriodSwarm pulumi.IntPtrInput
// Docker Swarm ulimits, as a JSON object.
UlimitsSwarm pulumi.StringPtrInput
// Docker Swarm rolling update configuration, as a JSON object.
UpdateConfigSwarm pulumi.StringPtrInput
}
func (RedisArgs) ElementType() reflect.Type {
return reflect.TypeOf((*redisArgs)(nil)).Elem()
}
type RedisInput interface {
pulumi.Input
ToRedisOutput() RedisOutput
ToRedisOutputWithContext(ctx context.Context) RedisOutput
}
func (*Redis) ElementType() reflect.Type {
return reflect.TypeOf((**Redis)(nil)).Elem()
}
func (i *Redis) ToRedisOutput() RedisOutput {
return i.ToRedisOutputWithContext(context.Background())
}
func (i *Redis) ToRedisOutputWithContext(ctx context.Context) RedisOutput {
return pulumi.ToOutputWithContext(ctx, i).(RedisOutput)
}
// RedisArrayInput is an input type that accepts RedisArray and RedisArrayOutput values.
// You can construct a concrete instance of `RedisArrayInput` via:
//
// RedisArray{ RedisArgs{...} }
type RedisArrayInput interface {
pulumi.Input
ToRedisArrayOutput() RedisArrayOutput
ToRedisArrayOutputWithContext(context.Context) RedisArrayOutput
}
type RedisArray []RedisInput
func (RedisArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Redis)(nil)).Elem()
}
func (i RedisArray) ToRedisArrayOutput() RedisArrayOutput {
return i.ToRedisArrayOutputWithContext(context.Background())
}
func (i RedisArray) ToRedisArrayOutputWithContext(ctx context.Context) RedisArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(RedisArrayOutput)
}
// RedisMapInput is an input type that accepts RedisMap and RedisMapOutput values.
// You can construct a concrete instance of `RedisMapInput` via:
//
// RedisMap{ "key": RedisArgs{...} }
type RedisMapInput interface {
pulumi.Input
ToRedisMapOutput() RedisMapOutput
ToRedisMapOutputWithContext(context.Context) RedisMapOutput
}
type RedisMap map[string]RedisInput
func (RedisMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Redis)(nil)).Elem()
}
func (i RedisMap) ToRedisMapOutput() RedisMapOutput {
return i.ToRedisMapOutputWithContext(context.Background())
}
func (i RedisMap) ToRedisMapOutputWithContext(ctx context.Context) RedisMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(RedisMapOutput)
}
type RedisOutput struct{ *pulumi.OutputState }
func (RedisOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Redis)(nil)).Elem()
}
func (o RedisOutput) ToRedisOutput() RedisOutput {
return o
}
func (o RedisOutput) ToRedisOutputWithContext(ctx context.Context) RedisOutput {
return o
}
// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
func (o RedisOutput) AppName() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.AppName }).(pulumi.StringOutput)
}
// Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
func (o RedisOutput) ApplicationStatus() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.ApplicationStatus }).(pulumi.StringOutput)
}
// Arguments appended to the container command.
func (o RedisOutput) Args() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Redis) pulumi.StringArrayOutput { return v.Args }).(pulumi.StringArrayOutput)
}
// Override the container entrypoint command.
func (o RedisOutput) Command() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.Command }).(pulumi.StringPtrOutput)
}
// Hard CPU limit, for example `1`.
func (o RedisOutput) CpuLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.CpuLimit }).(pulumi.StringPtrOutput)
}
// Soft CPU reservation, for example `0.5`.
func (o RedisOutput) CpuReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.CpuReservation }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the database was created.
func (o RedisOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Password used to authenticate to Redis.
func (o RedisOutput) DatabasePassword() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.DatabasePassword }).(pulumi.StringOutput)
}
// Free-form description.
func (o RedisOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// Detach the service from the shared `dokploy-network`.
func (o RedisOutput) DetachDokployNetwork() pulumi.BoolOutput {
return o.ApplyT(func(v *Redis) pulumi.BoolOutput { return v.DetachDokployNetwork }).(pulumi.BoolOutput)
}
// Redis image to run, for example `redis:7`.
func (o RedisOutput) DockerImage() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.DockerImage }).(pulumi.StringOutput)
}
// Docker Swarm endpoint specification, as a JSON object.
func (o RedisOutput) EndpointSpecSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.EndpointSpecSwarm }).(pulumi.StringPtrOutput)
}
// Environment variables in `KEY=value` format, one per line.
func (o RedisOutput) Env() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.Env }).(pulumi.StringPtrOutput)
}
// Environment this database belongs to.
func (o RedisOutput) EnvironmentId() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.EnvironmentId }).(pulumi.StringOutput)
}
// Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
func (o RedisOutput) ExternalPort() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.IntPtrOutput { return v.ExternalPort }).(pulumi.IntPtrOutput)
}
// Docker Swarm health check configuration, as a JSON object.
func (o RedisOutput) HealthCheckSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.HealthCheckSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm service labels, as a JSON object.
func (o RedisOutput) LabelsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.LabelsSwarm }).(pulumi.StringPtrOutput)
}
// Hard memory limit, for example `512m`.
func (o RedisOutput) MemoryLimit() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.MemoryLimit }).(pulumi.StringPtrOutput)
}
// Soft memory reservation, for example `256m`.
func (o RedisOutput) MemoryReservation() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.MemoryReservation }).(pulumi.StringPtrOutput)
}
// Docker Swarm service mode, as a JSON object.
func (o RedisOutput) ModeSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.ModeSwarm }).(pulumi.StringPtrOutput)
}
// Display name of the database.
func (o RedisOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *Redis) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// IDs of additional Docker networks to attach.
func (o RedisOutput) NetworkIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v *Redis) pulumi.StringArrayOutput { return v.NetworkIds }).(pulumi.StringArrayOutput)
}
// Docker Swarm network attachments, as a JSON array.
func (o RedisOutput) NetworkSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.NetworkSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm placement constraints, as a JSON object.
func (o RedisOutput) PlacementSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.PlacementSwarm }).(pulumi.StringPtrOutput)
}
// Number of replicas to run.
func (o RedisOutput) Replicas() pulumi.IntOutput {
return o.ApplyT(func(v *Redis) pulumi.IntOutput { return v.Replicas }).(pulumi.IntOutput)
}
// Docker Swarm restart policy, as a JSON object.
func (o RedisOutput) RestartPolicySwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.RestartPolicySwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rollback configuration, as a JSON object.
func (o RedisOutput) RollbackConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.RollbackConfigSwarm }).(pulumi.StringPtrOutput)
}
// Remote server to deploy on. Omit to use the Dokploy host itself.
func (o RedisOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Grace period in nanoseconds before a container is killed.
func (o RedisOutput) StopGracePeriodSwarm() pulumi.IntPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.IntPtrOutput { return v.StopGracePeriodSwarm }).(pulumi.IntPtrOutput)
}
// Docker Swarm ulimits, as a JSON object.
func (o RedisOutput) UlimitsSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.UlimitsSwarm }).(pulumi.StringPtrOutput)
}
// Docker Swarm rolling update configuration, as a JSON object.
func (o RedisOutput) UpdateConfigSwarm() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Redis) pulumi.StringPtrOutput { return v.UpdateConfigSwarm }).(pulumi.StringPtrOutput)
}
type RedisArrayOutput struct{ *pulumi.OutputState }
func (RedisArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Redis)(nil)).Elem()
}
func (o RedisArrayOutput) ToRedisArrayOutput() RedisArrayOutput {
return o
}
func (o RedisArrayOutput) ToRedisArrayOutputWithContext(ctx context.Context) RedisArrayOutput {
return o
}
func (o RedisArrayOutput) Index(i pulumi.IntInput) RedisOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Redis {
return vs[0].([]*Redis)[vs[1].(int)]
}).(RedisOutput)
}
type RedisMapOutput struct{ *pulumi.OutputState }
func (RedisMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Redis)(nil)).Elem()
}
func (o RedisMapOutput) ToRedisMapOutput() RedisMapOutput {
return o
}
func (o RedisMapOutput) ToRedisMapOutputWithContext(ctx context.Context) RedisMapOutput {
return o
}
func (o RedisMapOutput) MapIndex(k pulumi.StringInput) RedisOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Redis {
return vs[0].(map[string]*Redis)[vs[1].(string)]
}).(RedisOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*RedisInput)(nil)).Elem(), &Redis{})
pulumi.RegisterInputType(reflect.TypeOf((*RedisArrayInput)(nil)).Elem(), RedisArray{})
pulumi.RegisterInputType(reflect.TypeOf((*RedisMapInput)(nil)).Elem(), RedisMap{})
pulumi.RegisterOutputType(RedisOutput{})
pulumi.RegisterOutputType(RedisArrayOutput{})
pulumi.RegisterOutputType(RedisMapOutput{})
}

335
sdk/go/dokploy/registry.go generated Normal file
View File

@@ -0,0 +1,335 @@
// 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"
)
type Registry struct {
pulumi.CustomResourceState
// RFC 3339 timestamp of when the registry was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Prefix prepended to pushed image names, for example an organization or namespace.
ImagePrefix pulumi.StringPtrOutput `pulumi:"imagePrefix"`
// Password or access token used to authenticate.
Password pulumi.StringOutput `pulumi:"password"`
// Display name of the registry.
RegistryName pulumi.StringOutput `pulumi:"registryName"`
// Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
RegistryType pulumi.StringOutput `pulumi:"registryType"`
// Registry hostname, for example `ghcr.io`.
RegistryUrl pulumi.StringOutput `pulumi:"registryUrl"`
// Server this registry is scoped to.
ServerId pulumi.StringPtrOutput `pulumi:"serverId"`
// Username used to authenticate to the registry.
Username pulumi.StringOutput `pulumi:"username"`
}
// NewRegistry registers a new resource with the given unique name, arguments, and options.
func NewRegistry(ctx *pulumi.Context,
name string, args *RegistryArgs, opts ...pulumi.ResourceOption) (*Registry, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.Password == nil {
return nil, errors.New("invalid value for required argument 'Password'")
}
if args.RegistryName == nil {
return nil, errors.New("invalid value for required argument 'RegistryName'")
}
if args.RegistryUrl == nil {
return nil, errors.New("invalid value for required argument 'RegistryUrl'")
}
if args.Username == nil {
return nil, errors.New("invalid value for required argument 'Username'")
}
if args.Password != nil {
args.Password = pulumi.ToSecret(args.Password).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"password",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource Registry
err := ctx.RegisterResource("dokploy:index/registry:Registry", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetRegistry gets an existing Registry 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 GetRegistry(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *RegistryState, opts ...pulumi.ResourceOption) (*Registry, error) {
var resource Registry
err := ctx.ReadResource("dokploy:index/registry:Registry", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Registry resources.
type registryState struct {
// RFC 3339 timestamp of when the registry was created.
CreatedAt *string `pulumi:"createdAt"`
// Prefix prepended to pushed image names, for example an organization or namespace.
ImagePrefix *string `pulumi:"imagePrefix"`
// Password or access token used to authenticate.
Password *string `pulumi:"password"`
// Display name of the registry.
RegistryName *string `pulumi:"registryName"`
// Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
RegistryType *string `pulumi:"registryType"`
// Registry hostname, for example `ghcr.io`.
RegistryUrl *string `pulumi:"registryUrl"`
// Server this registry is scoped to.
ServerId *string `pulumi:"serverId"`
// Username used to authenticate to the registry.
Username *string `pulumi:"username"`
}
type RegistryState struct {
// RFC 3339 timestamp of when the registry was created.
CreatedAt pulumi.StringPtrInput
// Prefix prepended to pushed image names, for example an organization or namespace.
ImagePrefix pulumi.StringPtrInput
// Password or access token used to authenticate.
Password pulumi.StringPtrInput
// Display name of the registry.
RegistryName pulumi.StringPtrInput
// Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
RegistryType pulumi.StringPtrInput
// Registry hostname, for example `ghcr.io`.
RegistryUrl pulumi.StringPtrInput
// Server this registry is scoped to.
ServerId pulumi.StringPtrInput
// Username used to authenticate to the registry.
Username pulumi.StringPtrInput
}
func (RegistryState) ElementType() reflect.Type {
return reflect.TypeOf((*registryState)(nil)).Elem()
}
type registryArgs struct {
// Prefix prepended to pushed image names, for example an organization or namespace.
ImagePrefix *string `pulumi:"imagePrefix"`
// Password or access token used to authenticate.
Password string `pulumi:"password"`
// Display name of the registry.
RegistryName string `pulumi:"registryName"`
// Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
RegistryType *string `pulumi:"registryType"`
// Registry hostname, for example `ghcr.io`.
RegistryUrl string `pulumi:"registryUrl"`
// Server this registry is scoped to.
ServerId *string `pulumi:"serverId"`
// Username used to authenticate to the registry.
Username string `pulumi:"username"`
}
// The set of arguments for constructing a Registry resource.
type RegistryArgs struct {
// Prefix prepended to pushed image names, for example an organization or namespace.
ImagePrefix pulumi.StringPtrInput
// Password or access token used to authenticate.
Password pulumi.StringInput
// Display name of the registry.
RegistryName pulumi.StringInput
// Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
RegistryType pulumi.StringPtrInput
// Registry hostname, for example `ghcr.io`.
RegistryUrl pulumi.StringInput
// Server this registry is scoped to.
ServerId pulumi.StringPtrInput
// Username used to authenticate to the registry.
Username pulumi.StringInput
}
func (RegistryArgs) ElementType() reflect.Type {
return reflect.TypeOf((*registryArgs)(nil)).Elem()
}
type RegistryInput interface {
pulumi.Input
ToRegistryOutput() RegistryOutput
ToRegistryOutputWithContext(ctx context.Context) RegistryOutput
}
func (*Registry) ElementType() reflect.Type {
return reflect.TypeOf((**Registry)(nil)).Elem()
}
func (i *Registry) ToRegistryOutput() RegistryOutput {
return i.ToRegistryOutputWithContext(context.Background())
}
func (i *Registry) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput {
return pulumi.ToOutputWithContext(ctx, i).(RegistryOutput)
}
// RegistryArrayInput is an input type that accepts RegistryArray and RegistryArrayOutput values.
// You can construct a concrete instance of `RegistryArrayInput` via:
//
// RegistryArray{ RegistryArgs{...} }
type RegistryArrayInput interface {
pulumi.Input
ToRegistryArrayOutput() RegistryArrayOutput
ToRegistryArrayOutputWithContext(context.Context) RegistryArrayOutput
}
type RegistryArray []RegistryInput
func (RegistryArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Registry)(nil)).Elem()
}
func (i RegistryArray) ToRegistryArrayOutput() RegistryArrayOutput {
return i.ToRegistryArrayOutputWithContext(context.Background())
}
func (i RegistryArray) ToRegistryArrayOutputWithContext(ctx context.Context) RegistryArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(RegistryArrayOutput)
}
// RegistryMapInput is an input type that accepts RegistryMap and RegistryMapOutput values.
// You can construct a concrete instance of `RegistryMapInput` via:
//
// RegistryMap{ "key": RegistryArgs{...} }
type RegistryMapInput interface {
pulumi.Input
ToRegistryMapOutput() RegistryMapOutput
ToRegistryMapOutputWithContext(context.Context) RegistryMapOutput
}
type RegistryMap map[string]RegistryInput
func (RegistryMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Registry)(nil)).Elem()
}
func (i RegistryMap) ToRegistryMapOutput() RegistryMapOutput {
return i.ToRegistryMapOutputWithContext(context.Background())
}
func (i RegistryMap) ToRegistryMapOutputWithContext(ctx context.Context) RegistryMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(RegistryMapOutput)
}
type RegistryOutput struct{ *pulumi.OutputState }
func (RegistryOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Registry)(nil)).Elem()
}
func (o RegistryOutput) ToRegistryOutput() RegistryOutput {
return o
}
func (o RegistryOutput) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput {
return o
}
// RFC 3339 timestamp of when the registry was created.
func (o RegistryOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Registry) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Prefix prepended to pushed image names, for example an organization or namespace.
func (o RegistryOutput) ImagePrefix() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Registry) pulumi.StringPtrOutput { return v.ImagePrefix }).(pulumi.StringPtrOutput)
}
// Password or access token used to authenticate.
func (o RegistryOutput) Password() pulumi.StringOutput {
return o.ApplyT(func(v *Registry) pulumi.StringOutput { return v.Password }).(pulumi.StringOutput)
}
// Display name of the registry.
func (o RegistryOutput) RegistryName() pulumi.StringOutput {
return o.ApplyT(func(v *Registry) pulumi.StringOutput { return v.RegistryName }).(pulumi.StringOutput)
}
// Registry kind. Dokploy currently accepts only `cloud`. Valid values: `cloud`. Defaults to `cloud`.
func (o RegistryOutput) RegistryType() pulumi.StringOutput {
return o.ApplyT(func(v *Registry) pulumi.StringOutput { return v.RegistryType }).(pulumi.StringOutput)
}
// Registry hostname, for example `ghcr.io`.
func (o RegistryOutput) RegistryUrl() pulumi.StringOutput {
return o.ApplyT(func(v *Registry) pulumi.StringOutput { return v.RegistryUrl }).(pulumi.StringOutput)
}
// Server this registry is scoped to.
func (o RegistryOutput) ServerId() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Registry) pulumi.StringPtrOutput { return v.ServerId }).(pulumi.StringPtrOutput)
}
// Username used to authenticate to the registry.
func (o RegistryOutput) Username() pulumi.StringOutput {
return o.ApplyT(func(v *Registry) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput)
}
type RegistryArrayOutput struct{ *pulumi.OutputState }
func (RegistryArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Registry)(nil)).Elem()
}
func (o RegistryArrayOutput) ToRegistryArrayOutput() RegistryArrayOutput {
return o
}
func (o RegistryArrayOutput) ToRegistryArrayOutputWithContext(ctx context.Context) RegistryArrayOutput {
return o
}
func (o RegistryArrayOutput) Index(i pulumi.IntInput) RegistryOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Registry {
return vs[0].([]*Registry)[vs[1].(int)]
}).(RegistryOutput)
}
type RegistryMapOutput struct{ *pulumi.OutputState }
func (RegistryMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Registry)(nil)).Elem()
}
func (o RegistryMapOutput) ToRegistryMapOutput() RegistryMapOutput {
return o
}
func (o RegistryMapOutput) ToRegistryMapOutputWithContext(ctx context.Context) RegistryMapOutput {
return o
}
func (o RegistryMapOutput) MapIndex(k pulumi.StringInput) RegistryOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Registry {
return vs[0].(map[string]*Registry)[vs[1].(string)]
}).(RegistryOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*RegistryInput)(nil)).Elem(), &Registry{})
pulumi.RegisterInputType(reflect.TypeOf((*RegistryArrayInput)(nil)).Elem(), RegistryArray{})
pulumi.RegisterInputType(reflect.TypeOf((*RegistryMapInput)(nil)).Elem(), RegistryMap{})
pulumi.RegisterOutputType(RegistryOutput{})
pulumi.RegisterOutputType(RegistryArrayOutput{})
pulumi.RegisterOutputType(RegistryMapOutput{})
}

272
sdk/go/dokploy/security.go generated Normal file
View File

@@ -0,0 +1,272 @@
// 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"
)
type Security struct {
pulumi.CustomResourceState
// Application these credentials protect.
ApplicationId pulumi.StringOutput `pulumi:"applicationId"`
// RFC 3339 timestamp of when the credentials were created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Basic auth password.
Password pulumi.StringOutput `pulumi:"password"`
// Basic auth username.
Username pulumi.StringOutput `pulumi:"username"`
}
// NewSecurity registers a new resource with the given unique name, arguments, and options.
func NewSecurity(ctx *pulumi.Context,
name string, args *SecurityArgs, opts ...pulumi.ResourceOption) (*Security, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.ApplicationId == nil {
return nil, errors.New("invalid value for required argument 'ApplicationId'")
}
if args.Password == nil {
return nil, errors.New("invalid value for required argument 'Password'")
}
if args.Username == nil {
return nil, errors.New("invalid value for required argument 'Username'")
}
if args.Password != nil {
args.Password = pulumi.ToSecret(args.Password).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"password",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource Security
err := ctx.RegisterResource("dokploy:index/security:Security", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetSecurity gets an existing Security 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 GetSecurity(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *SecurityState, opts ...pulumi.ResourceOption) (*Security, error) {
var resource Security
err := ctx.ReadResource("dokploy:index/security:Security", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering Security resources.
type securityState struct {
// Application these credentials protect.
ApplicationId *string `pulumi:"applicationId"`
// RFC 3339 timestamp of when the credentials were created.
CreatedAt *string `pulumi:"createdAt"`
// Basic auth password.
Password *string `pulumi:"password"`
// Basic auth username.
Username *string `pulumi:"username"`
}
type SecurityState struct {
// Application these credentials protect.
ApplicationId pulumi.StringPtrInput
// RFC 3339 timestamp of when the credentials were created.
CreatedAt pulumi.StringPtrInput
// Basic auth password.
Password pulumi.StringPtrInput
// Basic auth username.
Username pulumi.StringPtrInput
}
func (SecurityState) ElementType() reflect.Type {
return reflect.TypeOf((*securityState)(nil)).Elem()
}
type securityArgs struct {
// Application these credentials protect.
ApplicationId string `pulumi:"applicationId"`
// Basic auth password.
Password string `pulumi:"password"`
// Basic auth username.
Username string `pulumi:"username"`
}
// The set of arguments for constructing a Security resource.
type SecurityArgs struct {
// Application these credentials protect.
ApplicationId pulumi.StringInput
// Basic auth password.
Password pulumi.StringInput
// Basic auth username.
Username pulumi.StringInput
}
func (SecurityArgs) ElementType() reflect.Type {
return reflect.TypeOf((*securityArgs)(nil)).Elem()
}
type SecurityInput interface {
pulumi.Input
ToSecurityOutput() SecurityOutput
ToSecurityOutputWithContext(ctx context.Context) SecurityOutput
}
func (*Security) ElementType() reflect.Type {
return reflect.TypeOf((**Security)(nil)).Elem()
}
func (i *Security) ToSecurityOutput() SecurityOutput {
return i.ToSecurityOutputWithContext(context.Background())
}
func (i *Security) ToSecurityOutputWithContext(ctx context.Context) SecurityOutput {
return pulumi.ToOutputWithContext(ctx, i).(SecurityOutput)
}
// SecurityArrayInput is an input type that accepts SecurityArray and SecurityArrayOutput values.
// You can construct a concrete instance of `SecurityArrayInput` via:
//
// SecurityArray{ SecurityArgs{...} }
type SecurityArrayInput interface {
pulumi.Input
ToSecurityArrayOutput() SecurityArrayOutput
ToSecurityArrayOutputWithContext(context.Context) SecurityArrayOutput
}
type SecurityArray []SecurityInput
func (SecurityArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Security)(nil)).Elem()
}
func (i SecurityArray) ToSecurityArrayOutput() SecurityArrayOutput {
return i.ToSecurityArrayOutputWithContext(context.Background())
}
func (i SecurityArray) ToSecurityArrayOutputWithContext(ctx context.Context) SecurityArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(SecurityArrayOutput)
}
// SecurityMapInput is an input type that accepts SecurityMap and SecurityMapOutput values.
// You can construct a concrete instance of `SecurityMapInput` via:
//
// SecurityMap{ "key": SecurityArgs{...} }
type SecurityMapInput interface {
pulumi.Input
ToSecurityMapOutput() SecurityMapOutput
ToSecurityMapOutputWithContext(context.Context) SecurityMapOutput
}
type SecurityMap map[string]SecurityInput
func (SecurityMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Security)(nil)).Elem()
}
func (i SecurityMap) ToSecurityMapOutput() SecurityMapOutput {
return i.ToSecurityMapOutputWithContext(context.Background())
}
func (i SecurityMap) ToSecurityMapOutputWithContext(ctx context.Context) SecurityMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(SecurityMapOutput)
}
type SecurityOutput struct{ *pulumi.OutputState }
func (SecurityOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Security)(nil)).Elem()
}
func (o SecurityOutput) ToSecurityOutput() SecurityOutput {
return o
}
func (o SecurityOutput) ToSecurityOutputWithContext(ctx context.Context) SecurityOutput {
return o
}
// Application these credentials protect.
func (o SecurityOutput) ApplicationId() pulumi.StringOutput {
return o.ApplyT(func(v *Security) pulumi.StringOutput { return v.ApplicationId }).(pulumi.StringOutput)
}
// RFC 3339 timestamp of when the credentials were created.
func (o SecurityOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *Security) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Basic auth password.
func (o SecurityOutput) Password() pulumi.StringOutput {
return o.ApplyT(func(v *Security) pulumi.StringOutput { return v.Password }).(pulumi.StringOutput)
}
// Basic auth username.
func (o SecurityOutput) Username() pulumi.StringOutput {
return o.ApplyT(func(v *Security) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput)
}
type SecurityArrayOutput struct{ *pulumi.OutputState }
func (SecurityArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*Security)(nil)).Elem()
}
func (o SecurityArrayOutput) ToSecurityArrayOutput() SecurityArrayOutput {
return o
}
func (o SecurityArrayOutput) ToSecurityArrayOutputWithContext(ctx context.Context) SecurityArrayOutput {
return o
}
func (o SecurityArrayOutput) Index(i pulumi.IntInput) SecurityOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Security {
return vs[0].([]*Security)[vs[1].(int)]
}).(SecurityOutput)
}
type SecurityMapOutput struct{ *pulumi.OutputState }
func (SecurityMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*Security)(nil)).Elem()
}
func (o SecurityMapOutput) ToSecurityMapOutput() SecurityMapOutput {
return o
}
func (o SecurityMapOutput) ToSecurityMapOutputWithContext(ctx context.Context) SecurityMapOutput {
return o
}
func (o SecurityMapOutput) MapIndex(k pulumi.StringInput) SecurityOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Security {
return vs[0].(map[string]*Security)[vs[1].(string)]
}).(SecurityOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*SecurityInput)(nil)).Elem(), &Security{})
pulumi.RegisterInputType(reflect.TypeOf((*SecurityArrayInput)(nil)).Elem(), SecurityArray{})
pulumi.RegisterInputType(reflect.TypeOf((*SecurityMapInput)(nil)).Elem(), SecurityMap{})
pulumi.RegisterOutputType(SecurityOutput{})
pulumi.RegisterOutputType(SecurityArrayOutput{})
pulumi.RegisterOutputType(SecurityMapOutput{})
}

295
sdk/go/dokploy/sshKey.go generated Normal file
View File

@@ -0,0 +1,295 @@
// 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"
)
type SshKey struct {
pulumi.CustomResourceState
// RFC 3339 timestamp of when the key was created.
CreatedAt pulumi.StringOutput `pulumi:"createdAt"`
// Free-form description.
Description pulumi.StringPtrOutput `pulumi:"description"`
// RFC 3339 timestamp of when the key was last used, if ever.
LastUsedAt pulumi.StringOutput `pulumi:"lastUsedAt"`
// Display name of the key pair.
Name pulumi.StringOutput `pulumi:"name"`
// PEM-encoded private key.
PrivateKey pulumi.StringOutput `pulumi:"privateKey"`
// OpenSSH-formatted public key.
PublicKey pulumi.StringOutput `pulumi:"publicKey"`
}
// NewSshKey registers a new resource with the given unique name, arguments, and options.
func NewSshKey(ctx *pulumi.Context,
name string, args *SshKeyArgs, opts ...pulumi.ResourceOption) (*SshKey, error) {
if args == nil {
return nil, errors.New("missing one or more required arguments")
}
if args.PrivateKey == nil {
return nil, errors.New("invalid value for required argument 'PrivateKey'")
}
if args.PublicKey == nil {
return nil, errors.New("invalid value for required argument 'PublicKey'")
}
if args.PrivateKey != nil {
args.PrivateKey = pulumi.ToSecret(args.PrivateKey).(pulumi.StringInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"privateKey",
})
opts = append(opts, secrets)
opts = internal.PkgResourceDefaultOpts(opts)
var resource SshKey
err := ctx.RegisterResource("dokploy:index/sshKey:SshKey", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetSshKey gets an existing SshKey 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 GetSshKey(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *SshKeyState, opts ...pulumi.ResourceOption) (*SshKey, error) {
var resource SshKey
err := ctx.ReadResource("dokploy:index/sshKey:SshKey", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering SshKey resources.
type sshKeyState struct {
// RFC 3339 timestamp of when the key was created.
CreatedAt *string `pulumi:"createdAt"`
// Free-form description.
Description *string `pulumi:"description"`
// RFC 3339 timestamp of when the key was last used, if ever.
LastUsedAt *string `pulumi:"lastUsedAt"`
// Display name of the key pair.
Name *string `pulumi:"name"`
// PEM-encoded private key.
PrivateKey *string `pulumi:"privateKey"`
// OpenSSH-formatted public key.
PublicKey *string `pulumi:"publicKey"`
}
type SshKeyState struct {
// RFC 3339 timestamp of when the key was created.
CreatedAt pulumi.StringPtrInput
// Free-form description.
Description pulumi.StringPtrInput
// RFC 3339 timestamp of when the key was last used, if ever.
LastUsedAt pulumi.StringPtrInput
// Display name of the key pair.
Name pulumi.StringPtrInput
// PEM-encoded private key.
PrivateKey pulumi.StringPtrInput
// OpenSSH-formatted public key.
PublicKey pulumi.StringPtrInput
}
func (SshKeyState) ElementType() reflect.Type {
return reflect.TypeOf((*sshKeyState)(nil)).Elem()
}
type sshKeyArgs struct {
// Free-form description.
Description *string `pulumi:"description"`
// Display name of the key pair.
Name *string `pulumi:"name"`
// PEM-encoded private key.
PrivateKey string `pulumi:"privateKey"`
// OpenSSH-formatted public key.
PublicKey string `pulumi:"publicKey"`
}
// The set of arguments for constructing a SshKey resource.
type SshKeyArgs struct {
// Free-form description.
Description pulumi.StringPtrInput
// Display name of the key pair.
Name pulumi.StringPtrInput
// PEM-encoded private key.
PrivateKey pulumi.StringInput
// OpenSSH-formatted public key.
PublicKey pulumi.StringInput
}
func (SshKeyArgs) ElementType() reflect.Type {
return reflect.TypeOf((*sshKeyArgs)(nil)).Elem()
}
type SshKeyInput interface {
pulumi.Input
ToSshKeyOutput() SshKeyOutput
ToSshKeyOutputWithContext(ctx context.Context) SshKeyOutput
}
func (*SshKey) ElementType() reflect.Type {
return reflect.TypeOf((**SshKey)(nil)).Elem()
}
func (i *SshKey) ToSshKeyOutput() SshKeyOutput {
return i.ToSshKeyOutputWithContext(context.Background())
}
func (i *SshKey) ToSshKeyOutputWithContext(ctx context.Context) SshKeyOutput {
return pulumi.ToOutputWithContext(ctx, i).(SshKeyOutput)
}
// SshKeyArrayInput is an input type that accepts SshKeyArray and SshKeyArrayOutput values.
// You can construct a concrete instance of `SshKeyArrayInput` via:
//
// SshKeyArray{ SshKeyArgs{...} }
type SshKeyArrayInput interface {
pulumi.Input
ToSshKeyArrayOutput() SshKeyArrayOutput
ToSshKeyArrayOutputWithContext(context.Context) SshKeyArrayOutput
}
type SshKeyArray []SshKeyInput
func (SshKeyArray) ElementType() reflect.Type {
return reflect.TypeOf((*[]*SshKey)(nil)).Elem()
}
func (i SshKeyArray) ToSshKeyArrayOutput() SshKeyArrayOutput {
return i.ToSshKeyArrayOutputWithContext(context.Background())
}
func (i SshKeyArray) ToSshKeyArrayOutputWithContext(ctx context.Context) SshKeyArrayOutput {
return pulumi.ToOutputWithContext(ctx, i).(SshKeyArrayOutput)
}
// SshKeyMapInput is an input type that accepts SshKeyMap and SshKeyMapOutput values.
// You can construct a concrete instance of `SshKeyMapInput` via:
//
// SshKeyMap{ "key": SshKeyArgs{...} }
type SshKeyMapInput interface {
pulumi.Input
ToSshKeyMapOutput() SshKeyMapOutput
ToSshKeyMapOutputWithContext(context.Context) SshKeyMapOutput
}
type SshKeyMap map[string]SshKeyInput
func (SshKeyMap) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*SshKey)(nil)).Elem()
}
func (i SshKeyMap) ToSshKeyMapOutput() SshKeyMapOutput {
return i.ToSshKeyMapOutputWithContext(context.Background())
}
func (i SshKeyMap) ToSshKeyMapOutputWithContext(ctx context.Context) SshKeyMapOutput {
return pulumi.ToOutputWithContext(ctx, i).(SshKeyMapOutput)
}
type SshKeyOutput struct{ *pulumi.OutputState }
func (SshKeyOutput) ElementType() reflect.Type {
return reflect.TypeOf((**SshKey)(nil)).Elem()
}
func (o SshKeyOutput) ToSshKeyOutput() SshKeyOutput {
return o
}
func (o SshKeyOutput) ToSshKeyOutputWithContext(ctx context.Context) SshKeyOutput {
return o
}
// RFC 3339 timestamp of when the key was created.
func (o SshKeyOutput) CreatedAt() pulumi.StringOutput {
return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
}
// Free-form description.
func (o SshKeyOutput) Description() pulumi.StringPtrOutput {
return o.ApplyT(func(v *SshKey) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
}
// RFC 3339 timestamp of when the key was last used, if ever.
func (o SshKeyOutput) LastUsedAt() pulumi.StringOutput {
return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.LastUsedAt }).(pulumi.StringOutput)
}
// Display name of the key pair.
func (o SshKeyOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
}
// PEM-encoded private key.
func (o SshKeyOutput) PrivateKey() pulumi.StringOutput {
return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.PrivateKey }).(pulumi.StringOutput)
}
// OpenSSH-formatted public key.
func (o SshKeyOutput) PublicKey() pulumi.StringOutput {
return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.PublicKey }).(pulumi.StringOutput)
}
type SshKeyArrayOutput struct{ *pulumi.OutputState }
func (SshKeyArrayOutput) ElementType() reflect.Type {
return reflect.TypeOf((*[]*SshKey)(nil)).Elem()
}
func (o SshKeyArrayOutput) ToSshKeyArrayOutput() SshKeyArrayOutput {
return o
}
func (o SshKeyArrayOutput) ToSshKeyArrayOutputWithContext(ctx context.Context) SshKeyArrayOutput {
return o
}
func (o SshKeyArrayOutput) Index(i pulumi.IntInput) SshKeyOutput {
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SshKey {
return vs[0].([]*SshKey)[vs[1].(int)]
}).(SshKeyOutput)
}
type SshKeyMapOutput struct{ *pulumi.OutputState }
func (SshKeyMapOutput) ElementType() reflect.Type {
return reflect.TypeOf((*map[string]*SshKey)(nil)).Elem()
}
func (o SshKeyMapOutput) ToSshKeyMapOutput() SshKeyMapOutput {
return o
}
func (o SshKeyMapOutput) ToSshKeyMapOutputWithContext(ctx context.Context) SshKeyMapOutput {
return o
}
func (o SshKeyMapOutput) MapIndex(k pulumi.StringInput) SshKeyOutput {
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SshKey {
return vs[0].(map[string]*SshKey)[vs[1].(string)]
}).(SshKeyOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*SshKeyInput)(nil)).Elem(), &SshKey{})
pulumi.RegisterInputType(reflect.TypeOf((*SshKeyArrayInput)(nil)).Elem(), SshKeyArray{})
pulumi.RegisterInputType(reflect.TypeOf((*SshKeyMapInput)(nil)).Elem(), SshKeyMap{})
pulumi.RegisterOutputType(SshKeyOutput{})
pulumi.RegisterOutputType(SshKeyArrayOutput{})
pulumi.RegisterOutputType(SshKeyMapOutput{})
}

1
sdk/nodejs/.gitattributes generated vendored Normal file
View File

@@ -0,0 +1 @@
* linguist-generated

2
sdk/nodejs/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,2 @@
node_modules/
bin/

Some files were not shown because too many files have changed in this diff Show More