Files
pulumi-dokploy/sdk/python/pulumi_dokploy/destination.py
T
max-voitcov 73386ba0ff
build / build (push) Failing after 11m22s
release / plugin (push) Failing after 31m35s
release / sdks (push) Has been skipped
Bridge what Dokploy v0.30 added, and let the docs through
Six new resources from terraform-provider-dokploy v0.2.0 -- Network,
DnsProvider, VaultProvider, Schedule, VolumeBackup and Libsql -- plus the new
properties on Domain (`enabled`), Compose (`serviceNetworks`, `createEnvFile`,
`icon`) and Application. Verified with `pulumi up` against a live v0.30.2
instance: create, preview-clean, and destroy.

The upstream provider also now refuses a volume Mount with no `volumeName`,
which Dokploy would otherwise turn into an anonymous Docker volume recreated
on every deploy. That surfaces here at preview time, before anything exists.

Two things made that fix nearly invisible to Pulumi users, so this commit
fixes the second one: the bridge resolves the upstream `docs/` through the Go
module cache, where a locally `replace`d dependency never lands, so tfgen was
emitting every resource with no description at all. UpstreamRepoPath now
points at the checkout and all 445 inputs carry documentation -- with names
rendered per language, so Python readers see `volume_name` where TypeScript
readers see `volumeName`.
2026-08-26 00:46:32 +03:00

571 lines
24 KiB
Python
Generated

# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***
import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
from typing import NotRequired, TypedDict, TypeAlias
else:
from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities
__all__ = ['DestinationArgs', 'Destination']
@pulumi.input_type
class DestinationArgs:
def __init__(__self__, *,
access_key: pulumi.Input[_builtins.str],
bucket: pulumi.Input[_builtins.str],
endpoint: pulumi.Input[_builtins.str],
region: pulumi.Input[_builtins.str],
secret_access_key: pulumi.Input[_builtins.str],
additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
name: pulumi.Input[Optional[_builtins.str]] = None,
provider_name: pulumi.Input[Optional[_builtins.str]] = None,
server_id: pulumi.Input[Optional[_builtins.str]] = None):
"""
The set of arguments for constructing a Destination resource.
:param pulumi.Input[_builtins.str] access_key: S3 access key ID.
:param pulumi.Input[_builtins.str] bucket: Bucket name.
:param pulumi.Input[_builtins.str] endpoint: S3 endpoint URL.
:param pulumi.Input[_builtins.str] region: Bucket region, for example `us-east-1`.
:param pulumi.Input[_builtins.str] secret_access_key: S3 secret access key.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_flags: Extra flags passed to the underlying `rclone` invocation.
:param pulumi.Input[_builtins.str] name: Display name of the destination.
:param pulumi.Input[_builtins.str] provider_name: Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
:param pulumi.Input[_builtins.str] server_id: Server this destination is scoped to.
"""
pulumi.set(__self__, "access_key", access_key)
pulumi.set(__self__, "bucket", bucket)
pulumi.set(__self__, "endpoint", endpoint)
pulumi.set(__self__, "region", region)
pulumi.set(__self__, "secret_access_key", secret_access_key)
if additional_flags is not None:
pulumi.set(__self__, "additional_flags", additional_flags)
if name is not None:
pulumi.set(__self__, "name", name)
if provider_name is not None:
pulumi.set(__self__, "provider_name", provider_name)
if server_id is not None:
pulumi.set(__self__, "server_id", server_id)
@_builtins.property
@pulumi.getter(name="accessKey")
def access_key(self) -> pulumi.Input[_builtins.str]:
"""
S3 access key ID.
"""
return pulumi.get(self, "access_key")
@access_key.setter
def access_key(self, value: pulumi.Input[_builtins.str]):
pulumi.set(self, "access_key", value)
@_builtins.property
@pulumi.getter
def bucket(self) -> pulumi.Input[_builtins.str]:
"""
Bucket name.
"""
return pulumi.get(self, "bucket")
@bucket.setter
def bucket(self, value: pulumi.Input[_builtins.str]):
pulumi.set(self, "bucket", value)
@_builtins.property
@pulumi.getter
def endpoint(self) -> pulumi.Input[_builtins.str]:
"""
S3 endpoint URL.
"""
return pulumi.get(self, "endpoint")
@endpoint.setter
def endpoint(self, value: pulumi.Input[_builtins.str]):
pulumi.set(self, "endpoint", value)
@_builtins.property
@pulumi.getter
def region(self) -> pulumi.Input[_builtins.str]:
"""
Bucket region, for example `us-east-1`.
"""
return pulumi.get(self, "region")
@region.setter
def region(self, value: pulumi.Input[_builtins.str]):
pulumi.set(self, "region", value)
@_builtins.property
@pulumi.getter(name="secretAccessKey")
def secret_access_key(self) -> pulumi.Input[_builtins.str]:
"""
S3 secret access key.
"""
return pulumi.get(self, "secret_access_key")
@secret_access_key.setter
def secret_access_key(self, value: pulumi.Input[_builtins.str]):
pulumi.set(self, "secret_access_key", value)
@_builtins.property
@pulumi.getter(name="additionalFlags")
def additional_flags(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]:
"""
Extra flags passed to the underlying `rclone` invocation.
"""
return pulumi.get(self, "additional_flags")
@additional_flags.setter
def additional_flags(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]):
pulumi.set(self, "additional_flags", value)
@_builtins.property
@pulumi.getter
def name(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Display name of the destination.
"""
return pulumi.get(self, "name")
@name.setter
def name(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "name", value)
@_builtins.property
@pulumi.getter(name="providerName")
def provider_name(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
"""
return pulumi.get(self, "provider_name")
@provider_name.setter
def provider_name(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "provider_name", value)
@_builtins.property
@pulumi.getter(name="serverId")
def server_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Server this destination is scoped to.
"""
return pulumi.get(self, "server_id")
@server_id.setter
def server_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "server_id", value)
@pulumi.input_type
class _DestinationState:
def __init__(__self__, *,
access_key: pulumi.Input[Optional[_builtins.str]] = None,
additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
bucket: pulumi.Input[Optional[_builtins.str]] = None,
created_at: pulumi.Input[Optional[_builtins.str]] = None,
endpoint: pulumi.Input[Optional[_builtins.str]] = None,
name: pulumi.Input[Optional[_builtins.str]] = None,
provider_name: pulumi.Input[Optional[_builtins.str]] = None,
region: pulumi.Input[Optional[_builtins.str]] = None,
secret_access_key: pulumi.Input[Optional[_builtins.str]] = None,
server_id: pulumi.Input[Optional[_builtins.str]] = None):
"""
Input properties used for looking up and filtering Destination resources.
:param pulumi.Input[_builtins.str] access_key: S3 access key ID.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_flags: Extra flags passed to the underlying `rclone` invocation.
:param pulumi.Input[_builtins.str] bucket: Bucket name.
:param pulumi.Input[_builtins.str] created_at: Timestamp of when the destination was created.
:param pulumi.Input[_builtins.str] endpoint: S3 endpoint URL.
:param pulumi.Input[_builtins.str] name: Display name of the destination.
:param pulumi.Input[_builtins.str] provider_name: Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
:param pulumi.Input[_builtins.str] region: Bucket region, for example `us-east-1`.
:param pulumi.Input[_builtins.str] secret_access_key: S3 secret access key.
:param pulumi.Input[_builtins.str] server_id: Server this destination is scoped to.
"""
if access_key is not None:
pulumi.set(__self__, "access_key", access_key)
if additional_flags is not None:
pulumi.set(__self__, "additional_flags", additional_flags)
if bucket is not None:
pulumi.set(__self__, "bucket", bucket)
if created_at is not None:
pulumi.set(__self__, "created_at", created_at)
if endpoint is not None:
pulumi.set(__self__, "endpoint", endpoint)
if name is not None:
pulumi.set(__self__, "name", name)
if provider_name is not None:
pulumi.set(__self__, "provider_name", provider_name)
if region is not None:
pulumi.set(__self__, "region", region)
if secret_access_key is not None:
pulumi.set(__self__, "secret_access_key", secret_access_key)
if server_id is not None:
pulumi.set(__self__, "server_id", server_id)
@_builtins.property
@pulumi.getter(name="accessKey")
def access_key(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
S3 access key ID.
"""
return pulumi.get(self, "access_key")
@access_key.setter
def access_key(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "access_key", value)
@_builtins.property
@pulumi.getter(name="additionalFlags")
def additional_flags(self) -> pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]:
"""
Extra flags passed to the underlying `rclone` invocation.
"""
return pulumi.get(self, "additional_flags")
@additional_flags.setter
def additional_flags(self, value: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]]):
pulumi.set(self, "additional_flags", value)
@_builtins.property
@pulumi.getter
def bucket(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Bucket name.
"""
return pulumi.get(self, "bucket")
@bucket.setter
def bucket(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "bucket", value)
@_builtins.property
@pulumi.getter(name="createdAt")
def created_at(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Timestamp of when the destination was created.
"""
return pulumi.get(self, "created_at")
@created_at.setter
def created_at(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "created_at", value)
@_builtins.property
@pulumi.getter
def endpoint(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
S3 endpoint URL.
"""
return pulumi.get(self, "endpoint")
@endpoint.setter
def endpoint(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "endpoint", value)
@_builtins.property
@pulumi.getter
def name(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Display name of the destination.
"""
return pulumi.get(self, "name")
@name.setter
def name(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "name", value)
@_builtins.property
@pulumi.getter(name="providerName")
def provider_name(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
"""
return pulumi.get(self, "provider_name")
@provider_name.setter
def provider_name(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "provider_name", value)
@_builtins.property
@pulumi.getter
def region(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Bucket region, for example `us-east-1`.
"""
return pulumi.get(self, "region")
@region.setter
def region(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "region", value)
@_builtins.property
@pulumi.getter(name="secretAccessKey")
def secret_access_key(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
S3 secret access key.
"""
return pulumi.get(self, "secret_access_key")
@secret_access_key.setter
def secret_access_key(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "secret_access_key", value)
@_builtins.property
@pulumi.getter(name="serverId")
def server_id(self) -> pulumi.Input[Optional[_builtins.str]]:
"""
Server this destination is scoped to.
"""
return pulumi.get(self, "server_id")
@server_id.setter
def server_id(self, value: pulumi.Input[Optional[_builtins.str]]):
pulumi.set(self, "server_id", value)
@pulumi.type_token("dokploy:index/destination:Destination")
class Destination(pulumi.CustomResource):
@overload
def __init__(__self__,
resource_name: str,
opts: Optional[pulumi.ResourceOptions] = None,
access_key: pulumi.Input[Optional[_builtins.str]] = None,
additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
bucket: pulumi.Input[Optional[_builtins.str]] = None,
endpoint: pulumi.Input[Optional[_builtins.str]] = None,
name: pulumi.Input[Optional[_builtins.str]] = None,
provider_name: pulumi.Input[Optional[_builtins.str]] = None,
region: pulumi.Input[Optional[_builtins.str]] = None,
secret_access_key: pulumi.Input[Optional[_builtins.str]] = None,
server_id: pulumi.Input[Optional[_builtins.str]] = None,
__props__=None):
"""
An S3-compatible bucket that Dokploy writes database and volume backups to.
> The secret access key is stored in Terraform state. Use a state backend with encryption at rest.
:param str resource_name: The name of the resource.
:param pulumi.ResourceOptions opts: Options for the resource.
:param pulumi.Input[_builtins.str] access_key: S3 access key ID.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_flags: Extra flags passed to the underlying `rclone` invocation.
:param pulumi.Input[_builtins.str] bucket: Bucket name.
:param pulumi.Input[_builtins.str] endpoint: S3 endpoint URL.
:param pulumi.Input[_builtins.str] name: Display name of the destination.
:param pulumi.Input[_builtins.str] provider_name: Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
:param pulumi.Input[_builtins.str] region: Bucket region, for example `us-east-1`.
:param pulumi.Input[_builtins.str] secret_access_key: S3 secret access key.
:param pulumi.Input[_builtins.str] server_id: Server this destination is scoped to.
"""
...
@overload
def __init__(__self__,
resource_name: str,
args: DestinationArgs,
opts: Optional[pulumi.ResourceOptions] = None):
"""
An S3-compatible bucket that Dokploy writes database and volume backups to.
> The secret access key is stored in Terraform state. Use a state backend with encryption at rest.
:param str resource_name: The name of the resource.
:param DestinationArgs args: The arguments to use to populate this resource's properties.
:param pulumi.ResourceOptions opts: Options for the resource.
"""
...
def __init__(__self__, resource_name: str, *args, **kwargs):
resource_args, opts = _utilities.get_resource_args_opts(DestinationArgs, pulumi.ResourceOptions, *args, **kwargs)
if resource_args is not None:
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
else:
__self__._internal_init(resource_name, *args, **kwargs)
def _internal_init(__self__,
resource_name: str,
opts: Optional[pulumi.ResourceOptions] = None,
access_key: pulumi.Input[Optional[_builtins.str]] = None,
additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
bucket: pulumi.Input[Optional[_builtins.str]] = None,
endpoint: pulumi.Input[Optional[_builtins.str]] = None,
name: pulumi.Input[Optional[_builtins.str]] = None,
provider_name: pulumi.Input[Optional[_builtins.str]] = None,
region: pulumi.Input[Optional[_builtins.str]] = None,
secret_access_key: pulumi.Input[Optional[_builtins.str]] = None,
server_id: pulumi.Input[Optional[_builtins.str]] = None,
__props__=None):
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
if not isinstance(opts, pulumi.ResourceOptions):
raise TypeError('Expected resource options to be a ResourceOptions instance')
if opts.id is None:
if __props__ is not None:
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
__props__ = DestinationArgs.__new__(DestinationArgs)
if access_key is None and not opts.urn:
raise TypeError("Missing required property 'access_key'")
__props__.__dict__["access_key"] = access_key
__props__.__dict__["additional_flags"] = additional_flags
if bucket is None and not opts.urn:
raise TypeError("Missing required property 'bucket'")
__props__.__dict__["bucket"] = bucket
if endpoint is None and not opts.urn:
raise TypeError("Missing required property 'endpoint'")
__props__.__dict__["endpoint"] = endpoint
__props__.__dict__["name"] = name
__props__.__dict__["provider_name"] = provider_name
if region is None and not opts.urn:
raise TypeError("Missing required property 'region'")
__props__.__dict__["region"] = region
if secret_access_key is None and not opts.urn:
raise TypeError("Missing required property 'secret_access_key'")
__props__.__dict__["secret_access_key"] = None if secret_access_key is None else pulumi.Output.secret(secret_access_key)
__props__.__dict__["server_id"] = server_id
__props__.__dict__["created_at"] = None
secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["secretAccessKey"])
opts = pulumi.ResourceOptions.merge(opts, secret_opts)
super(Destination, __self__).__init__(
'dokploy:index/destination:Destination',
resource_name,
__props__,
opts)
@staticmethod
def get(resource_name: str,
id: pulumi.Input[str],
opts: Optional[pulumi.ResourceOptions] = None,
access_key: pulumi.Input[Optional[_builtins.str]] = None,
additional_flags: pulumi.Input[Optional[Sequence[pulumi.Input[_builtins.str]]]] = None,
bucket: pulumi.Input[Optional[_builtins.str]] = None,
created_at: pulumi.Input[Optional[_builtins.str]] = None,
endpoint: pulumi.Input[Optional[_builtins.str]] = None,
name: pulumi.Input[Optional[_builtins.str]] = None,
provider_name: pulumi.Input[Optional[_builtins.str]] = None,
region: pulumi.Input[Optional[_builtins.str]] = None,
secret_access_key: pulumi.Input[Optional[_builtins.str]] = None,
server_id: pulumi.Input[Optional[_builtins.str]] = None) -> 'Destination':
"""
Get an existing Destination resource's state with the given name, id, and optional extra
properties used to qualify the lookup.
:param str resource_name: The unique name of the resulting resource.
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
:param pulumi.ResourceOptions opts: Options for the resource.
:param pulumi.Input[_builtins.str] access_key: S3 access key ID.
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] additional_flags: Extra flags passed to the underlying `rclone` invocation.
:param pulumi.Input[_builtins.str] bucket: Bucket name.
:param pulumi.Input[_builtins.str] created_at: Timestamp of when the destination was created.
:param pulumi.Input[_builtins.str] endpoint: S3 endpoint URL.
:param pulumi.Input[_builtins.str] name: Display name of the destination.
:param pulumi.Input[_builtins.str] provider_name: Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
:param pulumi.Input[_builtins.str] region: Bucket region, for example `us-east-1`.
:param pulumi.Input[_builtins.str] secret_access_key: S3 secret access key.
:param pulumi.Input[_builtins.str] server_id: Server this destination is scoped to.
"""
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
__props__ = _DestinationState.__new__(_DestinationState)
__props__.__dict__["access_key"] = access_key
__props__.__dict__["additional_flags"] = additional_flags
__props__.__dict__["bucket"] = bucket
__props__.__dict__["created_at"] = created_at
__props__.__dict__["endpoint"] = endpoint
__props__.__dict__["name"] = name
__props__.__dict__["provider_name"] = provider_name
__props__.__dict__["region"] = region
__props__.__dict__["secret_access_key"] = secret_access_key
__props__.__dict__["server_id"] = server_id
return Destination(resource_name, opts=opts, __props__=__props__)
@_builtins.property
@pulumi.getter(name="accessKey")
def access_key(self) -> pulumi.Output[_builtins.str]:
"""
S3 access key ID.
"""
return pulumi.get(self, "access_key")
@_builtins.property
@pulumi.getter(name="additionalFlags")
def additional_flags(self) -> pulumi.Output[Sequence[_builtins.str]]:
"""
Extra flags passed to the underlying `rclone` invocation.
"""
return pulumi.get(self, "additional_flags")
@_builtins.property
@pulumi.getter
def bucket(self) -> pulumi.Output[_builtins.str]:
"""
Bucket name.
"""
return pulumi.get(self, "bucket")
@_builtins.property
@pulumi.getter(name="createdAt")
def created_at(self) -> pulumi.Output[_builtins.str]:
"""
Timestamp of when the destination was created.
"""
return pulumi.get(self, "created_at")
@_builtins.property
@pulumi.getter
def endpoint(self) -> pulumi.Output[_builtins.str]:
"""
S3 endpoint URL.
"""
return pulumi.get(self, "endpoint")
@_builtins.property
@pulumi.getter
def name(self) -> pulumi.Output[_builtins.str]:
"""
Display name of the destination.
"""
return pulumi.get(self, "name")
@_builtins.property
@pulumi.getter(name="providerName")
def provider_name(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Provider label, for example `s3` or `cloudflare`. Named `provider_name` because `provider` is reserved by Terraform.
"""
return pulumi.get(self, "provider_name")
@_builtins.property
@pulumi.getter
def region(self) -> pulumi.Output[_builtins.str]:
"""
Bucket region, for example `us-east-1`.
"""
return pulumi.get(self, "region")
@_builtins.property
@pulumi.getter(name="secretAccessKey")
def secret_access_key(self) -> pulumi.Output[_builtins.str]:
"""
S3 secret access key.
"""
return pulumi.get(self, "secret_access_key")
@_builtins.property
@pulumi.getter(name="serverId")
def server_id(self) -> pulumi.Output[Optional[_builtins.str]]:
"""
Server this destination is scoped to.
"""
return pulumi.get(self, "server_id")