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
+1
View File
@@ -0,0 +1 @@
* linguist-generated
+2
View File
@@ -0,0 +1,2 @@
bin
obj
+1906
View File
File diff suppressed because it is too large Load Diff
+202
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
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
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
View File
@@ -0,0 +1 @@
A Pulumi package for creating and managing Dokploy resources
+286
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
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
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
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
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
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
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
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
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 Contributor’s 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 party’s
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
party’s 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 party’s 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
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
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
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
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
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();
}
}
+34
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;
}
}
}
+38
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;
}
}
}
+38
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
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
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
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
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
View File
@@ -0,0 +1,3 @@
name: dokploy
description: A Pulumi resource provider for dokploy.
language: dotnet
+206
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
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
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
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
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
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
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
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

+6
View File
@@ -0,0 +1,6 @@
{
"resource": true,
"name": "dokploy",
"version": "0.1.0",
"server": "github://api.github.com/maxvojtkov/pulumi-dokploy"
}
+1
View File
@@ -0,0 +1 @@
0.1.0
+115
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
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
View File
@@ -0,0 +1 @@
* linguist-generated
+3
View File
@@ -0,0 +1,3 @@
name: dokploy
description: A Pulumi resource provider for dokploy.
language: go
+1650
View File
File diff suppressed because it is too large Load Diff
+299
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
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
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
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
View File
@@ -0,0 +1,2 @@
// A Pulumi package for creating and managing Dokploy resources
package dokploy
+454
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
View File
@@ -0,0 +1,6 @@
{
"resource": true,
"name": "dokploy",
"version": "0.1.0",
"server": "github://api.github.com/maxvojtkov/pulumi-dokploy"
}
+359
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
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
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
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
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
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
View File
@@ -0,0 +1 @@
* linguist-generated
+2
View File
@@ -0,0 +1,2 @@
node_modules/
bin/
+3
View File
@@ -0,0 +1,3 @@
name: dokploy
description: A Pulumi resource provider for dokploy.
language: nodejs
+4
View File
@@ -0,0 +1,4 @@
> This provider is a derived work of the [Terraform Provider](https://github.com/maxvojtkov/terraform-provider-dokploy)
> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,
> first check the [`pulumi-dokploy` repo](https://github.com/maxvojtkov/pulumi-dokploy/issues); however, if that doesn't turn up anything,
> please consult the source [`terraform-provider-dokploy` repo](https://github.com/maxvojtkov/terraform-provider-dokploy/issues).
+1408
View File
File diff suppressed because it is too large Load Diff
+155
View File
@@ -0,0 +1,155 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Certificate extends pulumi.CustomResource {
/**
* Get an existing Certificate resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: CertificateState, opts?: pulumi.CustomResourceOptions): Certificate {
return new Certificate(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/certificate:Certificate';
/**
* Returns true if the given object is an instance of Certificate. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Certificate {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Certificate.__pulumiType;
}
/**
* Whether Dokploy should renew this certificate automatically.
*/
declare public readonly autoRenew: pulumi.Output<boolean>;
/**
* PEM-encoded certificate chain.
*/
declare public readonly certificateData: pulumi.Output<string>;
/**
* Path where Dokploy writes the certificate on disk.
*/
declare public /*out*/ readonly certificatePath: pulumi.Output<string>;
/**
* Display name of the certificate.
*/
declare public readonly name: pulumi.Output<string>;
/**
* PEM-encoded private key.
*/
declare public readonly privateKey: pulumi.Output<string>;
/**
* Server this certificate is installed on.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Create a Certificate resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: CertificateArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: CertificateArgs | CertificateState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as CertificateState | undefined;
resourceInputs["autoRenew"] = state?.autoRenew;
resourceInputs["certificateData"] = state?.certificateData;
resourceInputs["certificatePath"] = state?.certificatePath;
resourceInputs["name"] = state?.name;
resourceInputs["privateKey"] = state?.privateKey;
resourceInputs["serverId"] = state?.serverId;
} else {
const args = argsOrState as CertificateArgs | undefined;
if (args?.certificateData === undefined && !opts.urn) {
throw new Error("Missing required property 'certificateData'");
}
if (args?.privateKey === undefined && !opts.urn) {
throw new Error("Missing required property 'privateKey'");
}
resourceInputs["autoRenew"] = args?.autoRenew;
resourceInputs["certificateData"] = args?.certificateData;
resourceInputs["name"] = args?.name;
resourceInputs["privateKey"] = args?.privateKey ? pulumi.secret(args.privateKey) : undefined;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["certificatePath"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["privateKey"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(Certificate.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Certificate resources.
*/
export interface CertificateState {
/**
* Whether Dokploy should renew this certificate automatically.
*/
autoRenew?: pulumi.Input<boolean>;
/**
* PEM-encoded certificate chain.
*/
certificateData?: pulumi.Input<string>;
/**
* Path where Dokploy writes the certificate on disk.
*/
certificatePath?: pulumi.Input<string>;
/**
* Display name of the certificate.
*/
name?: pulumi.Input<string>;
/**
* PEM-encoded private key.
*/
privateKey?: pulumi.Input<string>;
/**
* Server this certificate is installed on.
*/
serverId?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Certificate resource.
*/
export interface CertificateArgs {
/**
* Whether Dokploy should renew this certificate automatically.
*/
autoRenew?: pulumi.Input<boolean>;
/**
* PEM-encoded certificate chain.
*/
certificateData: pulumi.Input<string>;
/**
* Display name of the certificate.
*/
name?: pulumi.Input<string>;
/**
* PEM-encoded private key.
*/
privateKey: pulumi.Input<string>;
/**
* Server this certificate is installed on.
*/
serverId?: pulumi.Input<string>;
}
+678
View File
@@ -0,0 +1,678 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Compose extends pulumi.CustomResource {
/**
* Get an existing Compose resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ComposeState, opts?: pulumi.CustomResourceOptions): Compose {
return new Compose(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/compose:Compose';
/**
* Returns true if the given object is an instance of Compose. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Compose {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Compose.__pulumiType;
}
/**
* Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Deploy automatically when the configured trigger fires.
*/
declare public readonly autoDeploy: pulumi.Output<boolean>;
/**
* Bitbucket branch to deploy.
*/
declare public readonly bitbucketBranch: pulumi.Output<string | undefined>;
/**
* ID of the configured Bitbucket provider connection.
*/
declare public readonly bitbucketId: pulumi.Output<string | undefined>;
/**
* Bitbucket repository owner.
*/
declare public readonly bitbucketOwner: pulumi.Output<string | undefined>;
/**
* Bitbucket repository name.
*/
declare public readonly bitbucketRepository: pulumi.Output<string | undefined>;
/**
* Bitbucket repository slug.
*/
declare public readonly bitbucketRepositorySlug: pulumi.Output<string | undefined>;
/**
* GitHub branch to deploy.
*/
declare public readonly branch: pulumi.Output<string | undefined>;
/**
* Custom `docker compose` command to run.
*/
declare public readonly command: pulumi.Output<string>;
/**
* Inline Compose file contents. Used when `sourceType` is `raw`.
*/
declare public readonly composeFile: pulumi.Output<string>;
/**
* Path to the Compose file within the repository.
*/
declare public readonly composePath: pulumi.Output<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
declare public /*out*/ readonly composeStatus: pulumi.Output<string>;
/**
* Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
*/
declare public readonly composeType: pulumi.Output<string>;
/**
* RFC 3339 timestamp of when the stack was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Branch to deploy for a custom Git remote.
*/
declare public readonly customGitBranch: pulumi.Output<string | undefined>;
/**
* SSH key used to clone a private custom Git remote.
*/
declare public readonly customGitSshKeyId: pulumi.Output<string | undefined>;
/**
* Git remote URL, when `sourceType` is `git`.
*/
declare public readonly customGitUrl: pulumi.Output<string | undefined>;
/**
* Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
*/
declare public readonly deleteVolumes: pulumi.Output<boolean | undefined>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Clone Git submodules when checking out the repository.
*/
declare public readonly enableSubmodules: pulumi.Output<boolean>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
declare public readonly env: pulumi.Output<string | undefined>;
/**
* Environment this stack belongs to.
*/
declare public readonly environmentId: pulumi.Output<string>;
/**
* Gitea branch to deploy.
*/
declare public readonly giteaBranch: pulumi.Output<string | undefined>;
/**
* ID of the configured Gitea provider connection.
*/
declare public readonly giteaId: pulumi.Output<string | undefined>;
/**
* Gitea repository owner.
*/
declare public readonly giteaOwner: pulumi.Output<string | undefined>;
/**
* Gitea repository name.
*/
declare public readonly giteaRepository: pulumi.Output<string | undefined>;
/**
* ID of the configured GitHub provider connection.
*/
declare public readonly githubId: pulumi.Output<string | undefined>;
/**
* GitLab branch to deploy.
*/
declare public readonly gitlabBranch: pulumi.Output<string | undefined>;
/**
* ID of the configured GitLab provider connection.
*/
declare public readonly gitlabId: pulumi.Output<string | undefined>;
/**
* GitLab repository owner.
*/
declare public readonly gitlabOwner: pulumi.Output<string | undefined>;
/**
* Full GitLab namespace path.
*/
declare public readonly gitlabPathNamespace: pulumi.Output<string | undefined>;
/**
* Numeric GitLab project ID.
*/
declare public readonly gitlabProjectId: pulumi.Output<number | undefined>;
/**
* GitLab repository name.
*/
declare public readonly gitlabRepository: pulumi.Output<string | undefined>;
/**
* Run the stack on its own isolated Docker network.
*/
declare public readonly isolatedDeployment: pulumi.Output<boolean>;
/**
* Prefix volume names for isolated deployments. Retained for backwards compatibility.
*/
declare public readonly isolatedDeploymentsVolume: pulumi.Output<boolean>;
/**
* Display name of the stack.
*/
declare public readonly name: pulumi.Output<string>;
/**
* GitHub repository owner.
*/
declare public readonly owner: pulumi.Output<string | undefined>;
/**
* Append a random suffix to service and volume names.
*/
declare public readonly randomize: pulumi.Output<boolean>;
/**
* GitHub repository name.
*/
declare public readonly repository: pulumi.Output<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
*/
declare public readonly sourceType: pulumi.Output<string>;
/**
* Suffix appended to generated resource names.
*/
declare public readonly suffix: pulumi.Output<string>;
/**
* What triggers an automatic deployment. Valid values: `push`, `tag`.
*/
declare public readonly triggerType: pulumi.Output<string>;
/**
* Glob patterns that limit which changed paths trigger an automatic deployment.
*/
declare public readonly watchPaths: pulumi.Output<string[]>;
/**
* Create a Compose resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: ComposeArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: ComposeArgs | ComposeState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as ComposeState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["autoDeploy"] = state?.autoDeploy;
resourceInputs["bitbucketBranch"] = state?.bitbucketBranch;
resourceInputs["bitbucketId"] = state?.bitbucketId;
resourceInputs["bitbucketOwner"] = state?.bitbucketOwner;
resourceInputs["bitbucketRepository"] = state?.bitbucketRepository;
resourceInputs["bitbucketRepositorySlug"] = state?.bitbucketRepositorySlug;
resourceInputs["branch"] = state?.branch;
resourceInputs["command"] = state?.command;
resourceInputs["composeFile"] = state?.composeFile;
resourceInputs["composePath"] = state?.composePath;
resourceInputs["composeStatus"] = state?.composeStatus;
resourceInputs["composeType"] = state?.composeType;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["customGitBranch"] = state?.customGitBranch;
resourceInputs["customGitSshKeyId"] = state?.customGitSshKeyId;
resourceInputs["customGitUrl"] = state?.customGitUrl;
resourceInputs["deleteVolumes"] = state?.deleteVolumes;
resourceInputs["description"] = state?.description;
resourceInputs["enableSubmodules"] = state?.enableSubmodules;
resourceInputs["env"] = state?.env;
resourceInputs["environmentId"] = state?.environmentId;
resourceInputs["giteaBranch"] = state?.giteaBranch;
resourceInputs["giteaId"] = state?.giteaId;
resourceInputs["giteaOwner"] = state?.giteaOwner;
resourceInputs["giteaRepository"] = state?.giteaRepository;
resourceInputs["githubId"] = state?.githubId;
resourceInputs["gitlabBranch"] = state?.gitlabBranch;
resourceInputs["gitlabId"] = state?.gitlabId;
resourceInputs["gitlabOwner"] = state?.gitlabOwner;
resourceInputs["gitlabPathNamespace"] = state?.gitlabPathNamespace;
resourceInputs["gitlabProjectId"] = state?.gitlabProjectId;
resourceInputs["gitlabRepository"] = state?.gitlabRepository;
resourceInputs["isolatedDeployment"] = state?.isolatedDeployment;
resourceInputs["isolatedDeploymentsVolume"] = state?.isolatedDeploymentsVolume;
resourceInputs["name"] = state?.name;
resourceInputs["owner"] = state?.owner;
resourceInputs["randomize"] = state?.randomize;
resourceInputs["repository"] = state?.repository;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["sourceType"] = state?.sourceType;
resourceInputs["suffix"] = state?.suffix;
resourceInputs["triggerType"] = state?.triggerType;
resourceInputs["watchPaths"] = state?.watchPaths;
} else {
const args = argsOrState as ComposeArgs | undefined;
if (args?.environmentId === undefined && !opts.urn) {
throw new Error("Missing required property 'environmentId'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["autoDeploy"] = args?.autoDeploy;
resourceInputs["bitbucketBranch"] = args?.bitbucketBranch;
resourceInputs["bitbucketId"] = args?.bitbucketId;
resourceInputs["bitbucketOwner"] = args?.bitbucketOwner;
resourceInputs["bitbucketRepository"] = args?.bitbucketRepository;
resourceInputs["bitbucketRepositorySlug"] = args?.bitbucketRepositorySlug;
resourceInputs["branch"] = args?.branch;
resourceInputs["command"] = args?.command;
resourceInputs["composeFile"] = args?.composeFile;
resourceInputs["composePath"] = args?.composePath;
resourceInputs["composeType"] = args?.composeType;
resourceInputs["customGitBranch"] = args?.customGitBranch;
resourceInputs["customGitSshKeyId"] = args?.customGitSshKeyId;
resourceInputs["customGitUrl"] = args?.customGitUrl;
resourceInputs["deleteVolumes"] = args?.deleteVolumes;
resourceInputs["description"] = args?.description;
resourceInputs["enableSubmodules"] = args?.enableSubmodules;
resourceInputs["env"] = args?.env;
resourceInputs["environmentId"] = args?.environmentId;
resourceInputs["giteaBranch"] = args?.giteaBranch;
resourceInputs["giteaId"] = args?.giteaId;
resourceInputs["giteaOwner"] = args?.giteaOwner;
resourceInputs["giteaRepository"] = args?.giteaRepository;
resourceInputs["githubId"] = args?.githubId;
resourceInputs["gitlabBranch"] = args?.gitlabBranch;
resourceInputs["gitlabId"] = args?.gitlabId;
resourceInputs["gitlabOwner"] = args?.gitlabOwner;
resourceInputs["gitlabPathNamespace"] = args?.gitlabPathNamespace;
resourceInputs["gitlabProjectId"] = args?.gitlabProjectId;
resourceInputs["gitlabRepository"] = args?.gitlabRepository;
resourceInputs["isolatedDeployment"] = args?.isolatedDeployment;
resourceInputs["isolatedDeploymentsVolume"] = args?.isolatedDeploymentsVolume;
resourceInputs["name"] = args?.name;
resourceInputs["owner"] = args?.owner;
resourceInputs["randomize"] = args?.randomize;
resourceInputs["repository"] = args?.repository;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["sourceType"] = args?.sourceType;
resourceInputs["suffix"] = args?.suffix;
resourceInputs["triggerType"] = args?.triggerType;
resourceInputs["watchPaths"] = args?.watchPaths;
resourceInputs["composeStatus"] = undefined /*out*/;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Compose.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Compose resources.
*/
export interface ComposeState {
/**
* Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
*/
appName?: pulumi.Input<string>;
/**
* Deploy automatically when the configured trigger fires.
*/
autoDeploy?: pulumi.Input<boolean>;
/**
* Bitbucket branch to deploy.
*/
bitbucketBranch?: pulumi.Input<string>;
/**
* ID of the configured Bitbucket provider connection.
*/
bitbucketId?: pulumi.Input<string>;
/**
* Bitbucket repository owner.
*/
bitbucketOwner?: pulumi.Input<string>;
/**
* Bitbucket repository name.
*/
bitbucketRepository?: pulumi.Input<string>;
/**
* Bitbucket repository slug.
*/
bitbucketRepositorySlug?: pulumi.Input<string>;
/**
* GitHub branch to deploy.
*/
branch?: pulumi.Input<string>;
/**
* Custom `docker compose` command to run.
*/
command?: pulumi.Input<string>;
/**
* Inline Compose file contents. Used when `sourceType` is `raw`.
*/
composeFile?: pulumi.Input<string>;
/**
* Path to the Compose file within the repository.
*/
composePath?: pulumi.Input<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
composeStatus?: pulumi.Input<string>;
/**
* Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
*/
composeType?: pulumi.Input<string>;
/**
* RFC 3339 timestamp of when the stack was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Branch to deploy for a custom Git remote.
*/
customGitBranch?: pulumi.Input<string>;
/**
* SSH key used to clone a private custom Git remote.
*/
customGitSshKeyId?: pulumi.Input<string>;
/**
* Git remote URL, when `sourceType` is `git`.
*/
customGitUrl?: pulumi.Input<string>;
/**
* Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
*/
deleteVolumes?: pulumi.Input<boolean>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Clone Git submodules when checking out the repository.
*/
enableSubmodules?: pulumi.Input<boolean>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this stack belongs to.
*/
environmentId?: pulumi.Input<string>;
/**
* Gitea branch to deploy.
*/
giteaBranch?: pulumi.Input<string>;
/**
* ID of the configured Gitea provider connection.
*/
giteaId?: pulumi.Input<string>;
/**
* Gitea repository owner.
*/
giteaOwner?: pulumi.Input<string>;
/**
* Gitea repository name.
*/
giteaRepository?: pulumi.Input<string>;
/**
* ID of the configured GitHub provider connection.
*/
githubId?: pulumi.Input<string>;
/**
* GitLab branch to deploy.
*/
gitlabBranch?: pulumi.Input<string>;
/**
* ID of the configured GitLab provider connection.
*/
gitlabId?: pulumi.Input<string>;
/**
* GitLab repository owner.
*/
gitlabOwner?: pulumi.Input<string>;
/**
* Full GitLab namespace path.
*/
gitlabPathNamespace?: pulumi.Input<string>;
/**
* Numeric GitLab project ID.
*/
gitlabProjectId?: pulumi.Input<number>;
/**
* GitLab repository name.
*/
gitlabRepository?: pulumi.Input<string>;
/**
* Run the stack on its own isolated Docker network.
*/
isolatedDeployment?: pulumi.Input<boolean>;
/**
* Prefix volume names for isolated deployments. Retained for backwards compatibility.
*/
isolatedDeploymentsVolume?: pulumi.Input<boolean>;
/**
* Display name of the stack.
*/
name?: pulumi.Input<string>;
/**
* GitHub repository owner.
*/
owner?: pulumi.Input<string>;
/**
* Append a random suffix to service and volume names.
*/
randomize?: pulumi.Input<boolean>;
/**
* GitHub repository name.
*/
repository?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
*/
sourceType?: pulumi.Input<string>;
/**
* Suffix appended to generated resource names.
*/
suffix?: pulumi.Input<string>;
/**
* What triggers an automatic deployment. Valid values: `push`, `tag`.
*/
triggerType?: pulumi.Input<string>;
/**
* Glob patterns that limit which changed paths trigger an automatic deployment.
*/
watchPaths?: pulumi.Input<pulumi.Input<string>[]>;
}
/**
* The set of arguments for constructing a Compose resource.
*/
export interface ComposeArgs {
/**
* Unique Docker stack name. Generated by Dokploy when omitted. Changing it forces a new stack.
*/
appName?: pulumi.Input<string>;
/**
* Deploy automatically when the configured trigger fires.
*/
autoDeploy?: pulumi.Input<boolean>;
/**
* Bitbucket branch to deploy.
*/
bitbucketBranch?: pulumi.Input<string>;
/**
* ID of the configured Bitbucket provider connection.
*/
bitbucketId?: pulumi.Input<string>;
/**
* Bitbucket repository owner.
*/
bitbucketOwner?: pulumi.Input<string>;
/**
* Bitbucket repository name.
*/
bitbucketRepository?: pulumi.Input<string>;
/**
* Bitbucket repository slug.
*/
bitbucketRepositorySlug?: pulumi.Input<string>;
/**
* GitHub branch to deploy.
*/
branch?: pulumi.Input<string>;
/**
* Custom `docker compose` command to run.
*/
command?: pulumi.Input<string>;
/**
* Inline Compose file contents. Used when `sourceType` is `raw`.
*/
composeFile?: pulumi.Input<string>;
/**
* Path to the Compose file within the repository.
*/
composePath?: pulumi.Input<string>;
/**
* Whether to run the stack with Docker Compose or Docker Swarm. Valid values: `docker-compose`, `stack`.
*/
composeType?: pulumi.Input<string>;
/**
* Branch to deploy for a custom Git remote.
*/
customGitBranch?: pulumi.Input<string>;
/**
* SSH key used to clone a private custom Git remote.
*/
customGitSshKeyId?: pulumi.Input<string>;
/**
* Git remote URL, when `sourceType` is `git`.
*/
customGitUrl?: pulumi.Input<string>;
/**
* Whether to delete the stack's Docker volumes when this resource is destroyed. Defaults to `false`, which preserves the data.
*/
deleteVolumes?: pulumi.Input<boolean>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Clone Git submodules when checking out the repository.
*/
enableSubmodules?: pulumi.Input<boolean>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this stack belongs to.
*/
environmentId: pulumi.Input<string>;
/**
* Gitea branch to deploy.
*/
giteaBranch?: pulumi.Input<string>;
/**
* ID of the configured Gitea provider connection.
*/
giteaId?: pulumi.Input<string>;
/**
* Gitea repository owner.
*/
giteaOwner?: pulumi.Input<string>;
/**
* Gitea repository name.
*/
giteaRepository?: pulumi.Input<string>;
/**
* ID of the configured GitHub provider connection.
*/
githubId?: pulumi.Input<string>;
/**
* GitLab branch to deploy.
*/
gitlabBranch?: pulumi.Input<string>;
/**
* ID of the configured GitLab provider connection.
*/
gitlabId?: pulumi.Input<string>;
/**
* GitLab repository owner.
*/
gitlabOwner?: pulumi.Input<string>;
/**
* Full GitLab namespace path.
*/
gitlabPathNamespace?: pulumi.Input<string>;
/**
* Numeric GitLab project ID.
*/
gitlabProjectId?: pulumi.Input<number>;
/**
* GitLab repository name.
*/
gitlabRepository?: pulumi.Input<string>;
/**
* Run the stack on its own isolated Docker network.
*/
isolatedDeployment?: pulumi.Input<boolean>;
/**
* Prefix volume names for isolated deployments. Retained for backwards compatibility.
*/
isolatedDeploymentsVolume?: pulumi.Input<boolean>;
/**
* Display name of the stack.
*/
name?: pulumi.Input<string>;
/**
* GitHub repository owner.
*/
owner?: pulumi.Input<string>;
/**
* Append a random suffix to service and volume names.
*/
randomize?: pulumi.Input<boolean>;
/**
* GitHub repository name.
*/
repository?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Where the Compose file comes from. Valid values: `git`, `github`, `gitlab`, `bitbucket`, `gitea`, `raw`.
*/
sourceType?: pulumi.Input<string>;
/**
* Suffix appended to generated resource names.
*/
suffix?: pulumi.Input<string>;
/**
* What triggers an automatic deployment. Valid values: `push`, `tag`.
*/
triggerType?: pulumi.Input<string>;
/**
* Glob patterns that limit which changed paths trigger an automatic deployment.
*/
watchPaths?: pulumi.Input<pulumi.Input<string>[]>;
}
+5
View File
@@ -0,0 +1,5 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
// Export members:
export * from "./vars";
+53
View File
@@ -0,0 +1,53 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "../utilities";
declare var exports: any;
const __config = new pulumi.Config("dokploy");
/**
* API token generated in Dokploy under *Settings > Profile > API/CLI*. May also be set with the `DOKPLOY_API_KEY` environment variable.
*/
export declare const apiKey: string | undefined;
Object.defineProperty(exports, "apiKey", {
get() {
return __config.get("apiKey") ?? utilities.getEnv("DOKPLOY_API_KEY");
},
enumerable: true,
});
/**
* 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.
*/
export declare const host: string | undefined;
Object.defineProperty(exports, "host", {
get() {
return __config.get("host") ?? utilities.getEnv("DOKPLOY_HOST");
},
enumerable: true,
});
/**
* Skip TLS certificate verification. Only use this for instances behind a self-signed certificate. Defaults to `false`.
*/
export declare const insecureSkipVerify: boolean | undefined;
Object.defineProperty(exports, "insecureSkipVerify", {
get() {
return __config.getObject<boolean>("insecureSkipVerify");
},
enumerable: true,
});
/**
* Per-request timeout in seconds. Defaults to `60`. May also be set with the `DOKPLOY_TIMEOUT_SECONDS` environment variable.
*/
export declare const timeoutSeconds: number | undefined;
Object.defineProperty(exports, "timeoutSeconds", {
get() {
return __config.getObject<number>("timeoutSeconds") ?? utilities.getEnvNumber("DOKPLOY_TIMEOUT_SECONDS");
},
enumerable: true,
});
+220
View File
@@ -0,0 +1,220 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Destination extends pulumi.CustomResource {
/**
* Get an existing Destination resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DestinationState, opts?: pulumi.CustomResourceOptions): Destination {
return new Destination(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/destination:Destination';
/**
* Returns true if the given object is an instance of Destination. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Destination {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Destination.__pulumiType;
}
/**
* S3 access key ID.
*/
declare public readonly accessKey: pulumi.Output<string>;
/**
* Extra flags passed to the underlying `rclone` invocation.
*/
declare public readonly additionalFlags: pulumi.Output<string[]>;
/**
* Bucket name.
*/
declare public readonly bucket: pulumi.Output<string>;
/**
* Timestamp of when the destination was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* S3 endpoint URL.
*/
declare public readonly endpoint: pulumi.Output<string>;
/**
* Display name of the destination.
*/
declare public readonly name: pulumi.Output<string>;
/**
* Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
*/
declare public readonly providerName: pulumi.Output<string | undefined>;
/**
* Bucket region, for example `us-east-1`.
*/
declare public readonly region: pulumi.Output<string>;
/**
* S3 secret access key.
*/
declare public readonly secretAccessKey: pulumi.Output<string>;
/**
* Server this destination is scoped to.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Create a Destination resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: DestinationArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: DestinationArgs | DestinationState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as DestinationState | undefined;
resourceInputs["accessKey"] = state?.accessKey;
resourceInputs["additionalFlags"] = state?.additionalFlags;
resourceInputs["bucket"] = state?.bucket;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["endpoint"] = state?.endpoint;
resourceInputs["name"] = state?.name;
resourceInputs["providerName"] = state?.providerName;
resourceInputs["region"] = state?.region;
resourceInputs["secretAccessKey"] = state?.secretAccessKey;
resourceInputs["serverId"] = state?.serverId;
} else {
const args = argsOrState as DestinationArgs | undefined;
if (args?.accessKey === undefined && !opts.urn) {
throw new Error("Missing required property 'accessKey'");
}
if (args?.bucket === undefined && !opts.urn) {
throw new Error("Missing required property 'bucket'");
}
if (args?.endpoint === undefined && !opts.urn) {
throw new Error("Missing required property 'endpoint'");
}
if (args?.region === undefined && !opts.urn) {
throw new Error("Missing required property 'region'");
}
if (args?.secretAccessKey === undefined && !opts.urn) {
throw new Error("Missing required property 'secretAccessKey'");
}
resourceInputs["accessKey"] = args?.accessKey;
resourceInputs["additionalFlags"] = args?.additionalFlags;
resourceInputs["bucket"] = args?.bucket;
resourceInputs["endpoint"] = args?.endpoint;
resourceInputs["name"] = args?.name;
resourceInputs["providerName"] = args?.providerName;
resourceInputs["region"] = args?.region;
resourceInputs["secretAccessKey"] = args?.secretAccessKey ? pulumi.secret(args.secretAccessKey) : undefined;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["secretAccessKey"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(Destination.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Destination resources.
*/
export interface DestinationState {
/**
* S3 access key ID.
*/
accessKey?: pulumi.Input<string>;
/**
* Extra flags passed to the underlying `rclone` invocation.
*/
additionalFlags?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Bucket name.
*/
bucket?: pulumi.Input<string>;
/**
* Timestamp of when the destination was created.
*/
createdAt?: pulumi.Input<string>;
/**
* S3 endpoint URL.
*/
endpoint?: pulumi.Input<string>;
/**
* Display name of the destination.
*/
name?: pulumi.Input<string>;
/**
* Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
*/
providerName?: pulumi.Input<string>;
/**
* Bucket region, for example `us-east-1`.
*/
region?: pulumi.Input<string>;
/**
* S3 secret access key.
*/
secretAccessKey?: pulumi.Input<string>;
/**
* Server this destination is scoped to.
*/
serverId?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Destination resource.
*/
export interface DestinationArgs {
/**
* S3 access key ID.
*/
accessKey: pulumi.Input<string>;
/**
* Extra flags passed to the underlying `rclone` invocation.
*/
additionalFlags?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Bucket name.
*/
bucket: pulumi.Input<string>;
/**
* S3 endpoint URL.
*/
endpoint: pulumi.Input<string>;
/**
* Display name of the destination.
*/
name?: pulumi.Input<string>;
/**
* Provider label, for example `s3` or `cloudflare`. Named `providerName` because `provider` is reserved by Terraform.
*/
providerName?: pulumi.Input<string>;
/**
* Bucket region, for example `us-east-1`.
*/
region: pulumi.Input<string>;
/**
* S3 secret access key.
*/
secretAccessKey: pulumi.Input<string>;
/**
* Server this destination is scoped to.
*/
serverId?: pulumi.Input<string>;
}
+304
View File
@@ -0,0 +1,304 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Domain extends pulumi.CustomResource {
/**
* Get an existing Domain resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DomainState, opts?: pulumi.CustomResourceOptions): Domain {
return new Domain(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/domain:Domain';
/**
* Returns true if the given object is an instance of Domain. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Domain {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Domain.__pulumiType;
}
/**
* Application this domain routes to.
*/
declare public readonly applicationId: pulumi.Output<string | undefined>;
/**
* How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
*/
declare public readonly certificateType: pulumi.Output<string>;
/**
* Compose stack this domain routes to.
*/
declare public readonly composeId: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the domain was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Traefik certificate resolver name, when `certificateType` is `custom`.
*/
declare public readonly customCertResolver: pulumi.Output<string | undefined>;
/**
* Traefik entrypoint to bind, when not using the defaults.
*/
declare public readonly customEntrypoint: pulumi.Output<string | undefined>;
/**
* What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
*/
declare public readonly domainType: pulumi.Output<string>;
/**
* Protect this domain with Dokploy's forward auth.
*/
declare public readonly forwardAuthEnabled: pulumi.Output<boolean>;
/**
* Fully-qualified hostname, for example `api.example.com`.
*/
declare public readonly host: pulumi.Output<string>;
/**
* Serve the domain over HTTPS and redirect HTTP traffic to it.
*/
declare public readonly https: pulumi.Output<boolean>;
/**
* Path the request is rewritten to before it reaches the container, defaults to `/`.
*/
declare public readonly internalPath: pulumi.Output<string>;
/**
* Names of Traefik middlewares to apply.
*/
declare public readonly middlewares: pulumi.Output<string[]>;
/**
* Path prefix this domain routes, defaults to `/`.
*/
declare public readonly path: pulumi.Output<string>;
/**
* Container port that receives the traffic, defaults to `3000`.
*/
declare public readonly port: pulumi.Output<number>;
/**
* Preview deployment this domain routes to.
*/
declare public readonly previewDeploymentId: pulumi.Output<string | undefined>;
/**
* Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
*/
declare public readonly serviceName: pulumi.Output<string | undefined>;
/**
* Strip `path` from the request before forwarding it.
*/
declare public readonly stripPath: pulumi.Output<boolean>;
/**
* Create a Domain resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: DomainArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: DomainArgs | DomainState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as DomainState | undefined;
resourceInputs["applicationId"] = state?.applicationId;
resourceInputs["certificateType"] = state?.certificateType;
resourceInputs["composeId"] = state?.composeId;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["customCertResolver"] = state?.customCertResolver;
resourceInputs["customEntrypoint"] = state?.customEntrypoint;
resourceInputs["domainType"] = state?.domainType;
resourceInputs["forwardAuthEnabled"] = state?.forwardAuthEnabled;
resourceInputs["host"] = state?.host;
resourceInputs["https"] = state?.https;
resourceInputs["internalPath"] = state?.internalPath;
resourceInputs["middlewares"] = state?.middlewares;
resourceInputs["path"] = state?.path;
resourceInputs["port"] = state?.port;
resourceInputs["previewDeploymentId"] = state?.previewDeploymentId;
resourceInputs["serviceName"] = state?.serviceName;
resourceInputs["stripPath"] = state?.stripPath;
} else {
const args = argsOrState as DomainArgs | undefined;
if (args?.host === undefined && !opts.urn) {
throw new Error("Missing required property 'host'");
}
resourceInputs["applicationId"] = args?.applicationId;
resourceInputs["certificateType"] = args?.certificateType;
resourceInputs["composeId"] = args?.composeId;
resourceInputs["customCertResolver"] = args?.customCertResolver;
resourceInputs["customEntrypoint"] = args?.customEntrypoint;
resourceInputs["domainType"] = args?.domainType;
resourceInputs["forwardAuthEnabled"] = args?.forwardAuthEnabled;
resourceInputs["host"] = args?.host;
resourceInputs["https"] = args?.https;
resourceInputs["internalPath"] = args?.internalPath;
resourceInputs["middlewares"] = args?.middlewares;
resourceInputs["path"] = args?.path;
resourceInputs["port"] = args?.port;
resourceInputs["previewDeploymentId"] = args?.previewDeploymentId;
resourceInputs["serviceName"] = args?.serviceName;
resourceInputs["stripPath"] = args?.stripPath;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Domain.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Domain resources.
*/
export interface DomainState {
/**
* Application this domain routes to.
*/
applicationId?: pulumi.Input<string>;
/**
* How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
*/
certificateType?: pulumi.Input<string>;
/**
* Compose stack this domain routes to.
*/
composeId?: pulumi.Input<string>;
/**
* RFC 3339 timestamp of when the domain was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Traefik certificate resolver name, when `certificateType` is `custom`.
*/
customCertResolver?: pulumi.Input<string>;
/**
* Traefik entrypoint to bind, when not using the defaults.
*/
customEntrypoint?: pulumi.Input<string>;
/**
* What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
*/
domainType?: pulumi.Input<string>;
/**
* Protect this domain with Dokploy's forward auth.
*/
forwardAuthEnabled?: pulumi.Input<boolean>;
/**
* Fully-qualified hostname, for example `api.example.com`.
*/
host?: pulumi.Input<string>;
/**
* Serve the domain over HTTPS and redirect HTTP traffic to it.
*/
https?: pulumi.Input<boolean>;
/**
* Path the request is rewritten to before it reaches the container, defaults to `/`.
*/
internalPath?: pulumi.Input<string>;
/**
* Names of Traefik middlewares to apply.
*/
middlewares?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Path prefix this domain routes, defaults to `/`.
*/
path?: pulumi.Input<string>;
/**
* Container port that receives the traffic, defaults to `3000`.
*/
port?: pulumi.Input<number>;
/**
* Preview deployment this domain routes to.
*/
previewDeploymentId?: pulumi.Input<string>;
/**
* Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
*/
serviceName?: pulumi.Input<string>;
/**
* Strip `path` from the request before forwarding it.
*/
stripPath?: pulumi.Input<boolean>;
}
/**
* The set of arguments for constructing a Domain resource.
*/
export interface DomainArgs {
/**
* Application this domain routes to.
*/
applicationId?: pulumi.Input<string>;
/**
* How TLS certificates are obtained. Use `letsencrypt` for automatic certificates. Valid values: `letsencrypt`, `none`, `custom`.
*/
certificateType?: pulumi.Input<string>;
/**
* Compose stack this domain routes to.
*/
composeId?: pulumi.Input<string>;
/**
* Traefik certificate resolver name, when `certificateType` is `custom`.
*/
customCertResolver?: pulumi.Input<string>;
/**
* Traefik entrypoint to bind, when not using the defaults.
*/
customEntrypoint?: pulumi.Input<string>;
/**
* What kind of target this domain points at. Valid values: `compose`, `application`, `preview`.
*/
domainType?: pulumi.Input<string>;
/**
* Protect this domain with Dokploy's forward auth.
*/
forwardAuthEnabled?: pulumi.Input<boolean>;
/**
* Fully-qualified hostname, for example `api.example.com`.
*/
host: pulumi.Input<string>;
/**
* Serve the domain over HTTPS and redirect HTTP traffic to it.
*/
https?: pulumi.Input<boolean>;
/**
* Path the request is rewritten to before it reaches the container, defaults to `/`.
*/
internalPath?: pulumi.Input<string>;
/**
* Names of Traefik middlewares to apply.
*/
middlewares?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Path prefix this domain routes, defaults to `/`.
*/
path?: pulumi.Input<string>;
/**
* Container port that receives the traffic, defaults to `3000`.
*/
port?: pulumi.Input<number>;
/**
* Preview deployment this domain routes to.
*/
previewDeploymentId?: pulumi.Input<string>;
/**
* Name of the service inside a Compose stack that receives the traffic. Required when `composeId` is set.
*/
serviceName?: pulumi.Input<string>;
/**
* Strip `path` from the request before forwarding it.
*/
stripPath?: pulumi.Input<boolean>;
}
+146
View File
@@ -0,0 +1,146 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Environment extends pulumi.CustomResource {
/**
* Get an existing Environment resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: EnvironmentState, opts?: pulumi.CustomResourceOptions): Environment {
return new Environment(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/environment:Environment';
/**
* Returns true if the given object is an instance of Environment. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Environment {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Environment.__pulumiType;
}
/**
* RFC 3339 timestamp of when the environment was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
*/
declare public readonly env: pulumi.Output<string>;
/**
* Whether this is the project's default environment.
*/
declare public /*out*/ readonly isDefault: pulumi.Output<boolean>;
/**
* Environment name, for example `staging`.
*/
declare public readonly name: pulumi.Output<string>;
/**
* Project this environment belongs to.
*/
declare public readonly projectId: pulumi.Output<string>;
/**
* Create a Environment resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: EnvironmentArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: EnvironmentArgs | EnvironmentState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as EnvironmentState | undefined;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["description"] = state?.description;
resourceInputs["env"] = state?.env;
resourceInputs["isDefault"] = state?.isDefault;
resourceInputs["name"] = state?.name;
resourceInputs["projectId"] = state?.projectId;
} else {
const args = argsOrState as EnvironmentArgs | undefined;
if (args?.projectId === undefined && !opts.urn) {
throw new Error("Missing required property 'projectId'");
}
resourceInputs["description"] = args?.description;
resourceInputs["env"] = args?.env;
resourceInputs["name"] = args?.name;
resourceInputs["projectId"] = args?.projectId;
resourceInputs["createdAt"] = undefined /*out*/;
resourceInputs["isDefault"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Environment.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Environment resources.
*/
export interface EnvironmentState {
/**
* RFC 3339 timestamp of when the environment was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
*/
env?: pulumi.Input<string>;
/**
* Whether this is the project's default environment.
*/
isDefault?: pulumi.Input<boolean>;
/**
* Environment name, for example `staging`.
*/
name?: pulumi.Input<string>;
/**
* Project this environment belongs to.
*/
projectId?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Environment resource.
*/
export interface EnvironmentArgs {
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Environment-wide variables in `KEY=value` format, one per line. These are merged into every service in this environment.
*/
env?: pulumi.Input<string>;
/**
* Environment name, for example `staging`.
*/
name?: pulumi.Input<string>;
/**
* Project this environment belongs to.
*/
projectId: pulumi.Input<string>;
}
+47
View File
@@ -0,0 +1,47 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export function getApplication(args: GetApplicationArgs, opts?: pulumi.InvokeOptions): Promise<GetApplicationResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getApplication:getApplication", {
"id": args.id,
}, opts);
}
/**
* A collection of arguments for invoking getApplication.
*/
export interface GetApplicationArgs {
id: string;
}
/**
* A collection of values returned by getApplication.
*/
export interface GetApplicationResult {
readonly appName: string;
readonly applicationStatus: string;
readonly buildType: string;
readonly createdAt: string;
readonly description: string;
readonly environmentId: string;
readonly id: string;
readonly name: string;
readonly sourceType: string;
}
export function getApplicationOutput(args: GetApplicationOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetApplicationResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getApplication:getApplication", {
"id": args.id,
}, opts);
}
/**
* A collection of arguments for invoking getApplication.
*/
export interface GetApplicationOutputArgs {
id: pulumi.Input<string>;
}
+45
View File
@@ -0,0 +1,45 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export function getEnvironment(args: GetEnvironmentArgs, opts?: pulumi.InvokeOptions): Promise<GetEnvironmentResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getEnvironment:getEnvironment", {
"id": args.id,
}, opts);
}
/**
* A collection of arguments for invoking getEnvironment.
*/
export interface GetEnvironmentArgs {
id: string;
}
/**
* A collection of values returned by getEnvironment.
*/
export interface GetEnvironmentResult {
readonly createdAt: string;
readonly description: string;
readonly env: string;
readonly id: string;
readonly isDefault: boolean;
readonly name: string;
readonly projectId: string;
}
export function getEnvironmentOutput(args: GetEnvironmentOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetEnvironmentResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getEnvironment:getEnvironment", {
"id": args.id,
}, opts);
}
/**
* A collection of arguments for invoking getEnvironment.
*/
export interface GetEnvironmentOutputArgs {
id: pulumi.Input<string>;
}
+48
View File
@@ -0,0 +1,48 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
import * as utilities from "./utilities";
export function getProject(args: GetProjectArgs, opts?: pulumi.InvokeOptions): Promise<GetProjectResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getProject:getProject", {
"id": args.id,
}, opts);
}
/**
* A collection of arguments for invoking getProject.
*/
export interface GetProjectArgs {
id: string;
}
/**
* A collection of values returned by getProject.
*/
export interface GetProjectResult {
readonly createdAt: string;
readonly defaultEnvironmentId: string;
readonly description: string;
readonly env: string;
readonly environments: outputs.GetProjectEnvironment[];
readonly id: string;
readonly name: string;
readonly organizationId: string;
}
export function getProjectOutput(args: GetProjectOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetProjectResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getProject:getProject", {
"id": args.id,
}, opts);
}
/**
* A collection of arguments for invoking getProject.
*/
export interface GetProjectOutputArgs {
id: pulumi.Input<string>;
}
+25
View File
@@ -0,0 +1,25 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
import * as utilities from "./utilities";
export function getProjects(opts?: pulumi.InvokeOptions): Promise<GetProjectsResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getProjects:getProjects", {
}, opts);
}
/**
* A collection of values returned by getProjects.
*/
export interface GetProjectsResult {
readonly projects: outputs.GetProjectsProject[];
}
export function getProjectsOutput(opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetProjectsResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getProjects:getProjects", {
}, opts);
}
+25
View File
@@ -0,0 +1,25 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
import * as utilities from "./utilities";
export function getServers(opts?: pulumi.InvokeOptions): Promise<GetServersResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invoke("dokploy:index/getServers:getServers", {
}, opts);
}
/**
* A collection of values returned by getServers.
*/
export interface GetServersResult {
readonly servers: outputs.GetServersServer[];
}
export function getServersOutput(opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetServersResult> {
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
return pulumi.runtime.invokeOutput("dokploy:index/getServers:getServers", {
}, opts);
}
+207
View File
@@ -0,0 +1,207 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
// Export members:
export { ApplicationArgs, ApplicationState } from "./application";
export type Application = import("./application").Application;
export const Application: typeof import("./application").Application = null as any;
utilities.lazyLoad(exports, ["Application"], () => require("./application"));
export { CertificateArgs, CertificateState } from "./certificate";
export type Certificate = import("./certificate").Certificate;
export const Certificate: typeof import("./certificate").Certificate = null as any;
utilities.lazyLoad(exports, ["Certificate"], () => require("./certificate"));
export { ComposeArgs, ComposeState } from "./compose";
export type Compose = import("./compose").Compose;
export const Compose: typeof import("./compose").Compose = null as any;
utilities.lazyLoad(exports, ["Compose"], () => require("./compose"));
export { DestinationArgs, DestinationState } from "./destination";
export type Destination = import("./destination").Destination;
export const Destination: typeof import("./destination").Destination = null as any;
utilities.lazyLoad(exports, ["Destination"], () => require("./destination"));
export { DomainArgs, DomainState } from "./domain";
export type Domain = import("./domain").Domain;
export const Domain: typeof import("./domain").Domain = null as any;
utilities.lazyLoad(exports, ["Domain"], () => require("./domain"));
export { EnvironmentArgs, EnvironmentState } from "./environment";
export type Environment = import("./environment").Environment;
export const Environment: typeof import("./environment").Environment = null as any;
utilities.lazyLoad(exports, ["Environment"], () => require("./environment"));
export { GetApplicationArgs, GetApplicationResult, GetApplicationOutputArgs } from "./getApplication";
export const getApplication: typeof import("./getApplication").getApplication = null as any;
export const getApplicationOutput: typeof import("./getApplication").getApplicationOutput = null as any;
utilities.lazyLoad(exports, ["getApplication","getApplicationOutput"], () => require("./getApplication"));
export { GetEnvironmentArgs, GetEnvironmentResult, GetEnvironmentOutputArgs } from "./getEnvironment";
export const getEnvironment: typeof import("./getEnvironment").getEnvironment = null as any;
export const getEnvironmentOutput: typeof import("./getEnvironment").getEnvironmentOutput = null as any;
utilities.lazyLoad(exports, ["getEnvironment","getEnvironmentOutput"], () => require("./getEnvironment"));
export { GetProjectArgs, GetProjectResult, GetProjectOutputArgs } from "./getProject";
export const getProject: typeof import("./getProject").getProject = null as any;
export const getProjectOutput: typeof import("./getProject").getProjectOutput = null as any;
utilities.lazyLoad(exports, ["getProject","getProjectOutput"], () => require("./getProject"));
export { GetProjectsResult } from "./getProjects";
export const getProjects: typeof import("./getProjects").getProjects = null as any;
export const getProjectsOutput: typeof import("./getProjects").getProjectsOutput = null as any;
utilities.lazyLoad(exports, ["getProjects","getProjectsOutput"], () => require("./getProjects"));
export { GetServersResult } from "./getServers";
export const getServers: typeof import("./getServers").getServers = null as any;
export const getServersOutput: typeof import("./getServers").getServersOutput = null as any;
utilities.lazyLoad(exports, ["getServers","getServersOutput"], () => require("./getServers"));
export { MariaDbArgs, MariaDbState } from "./mariaDb";
export type MariaDb = import("./mariaDb").MariaDb;
export const MariaDb: typeof import("./mariaDb").MariaDb = null as any;
utilities.lazyLoad(exports, ["MariaDb"], () => require("./mariaDb"));
export { MongoArgs, MongoState } from "./mongo";
export type Mongo = import("./mongo").Mongo;
export const Mongo: typeof import("./mongo").Mongo = null as any;
utilities.lazyLoad(exports, ["Mongo"], () => require("./mongo"));
export { MountArgs, MountState } from "./mount";
export type Mount = import("./mount").Mount;
export const Mount: typeof import("./mount").Mount = null as any;
utilities.lazyLoad(exports, ["Mount"], () => require("./mount"));
export { MySqlArgs, MySqlState } from "./mySql";
export type MySql = import("./mySql").MySql;
export const MySql: typeof import("./mySql").MySql = null as any;
utilities.lazyLoad(exports, ["MySql"], () => require("./mySql"));
export { PortArgs, PortState } from "./port";
export type Port = import("./port").Port;
export const Port: typeof import("./port").Port = null as any;
utilities.lazyLoad(exports, ["Port"], () => require("./port"));
export { PostgresArgs, PostgresState } from "./postgres";
export type Postgres = import("./postgres").Postgres;
export const Postgres: typeof import("./postgres").Postgres = null as any;
utilities.lazyLoad(exports, ["Postgres"], () => require("./postgres"));
export { ProjectArgs, ProjectState } from "./project";
export type Project = import("./project").Project;
export const Project: typeof import("./project").Project = null as any;
utilities.lazyLoad(exports, ["Project"], () => require("./project"));
export * from "./provider";
import { Provider } from "./provider";
export { RedirectArgs, RedirectState } from "./redirect";
export type Redirect = import("./redirect").Redirect;
export const Redirect: typeof import("./redirect").Redirect = null as any;
utilities.lazyLoad(exports, ["Redirect"], () => require("./redirect"));
export { RedisArgs, RedisState } from "./redis";
export type Redis = import("./redis").Redis;
export const Redis: typeof import("./redis").Redis = null as any;
utilities.lazyLoad(exports, ["Redis"], () => require("./redis"));
export { RegistryArgs, RegistryState } from "./registry";
export type Registry = import("./registry").Registry;
export const Registry: typeof import("./registry").Registry = null as any;
utilities.lazyLoad(exports, ["Registry"], () => require("./registry"));
export { SecurityArgs, SecurityState } from "./security";
export type Security = import("./security").Security;
export const Security: typeof import("./security").Security = null as any;
utilities.lazyLoad(exports, ["Security"], () => require("./security"));
export { SshKeyArgs, SshKeyState } from "./sshKey";
export type SshKey = import("./sshKey").SshKey;
export const SshKey: typeof import("./sshKey").SshKey = null as any;
utilities.lazyLoad(exports, ["SshKey"], () => require("./sshKey"));
// Export sub-modules:
import * as config from "./config";
import * as types from "./types";
export {
config,
types,
};
const _module = {
version: utilities.getVersion(),
construct: (name: string, type: string, urn: string): pulumi.Resource => {
switch (type) {
case "dokploy:index/application:Application":
return new Application(name, <any>undefined, { urn })
case "dokploy:index/certificate:Certificate":
return new Certificate(name, <any>undefined, { urn })
case "dokploy:index/compose:Compose":
return new Compose(name, <any>undefined, { urn })
case "dokploy:index/destination:Destination":
return new Destination(name, <any>undefined, { urn })
case "dokploy:index/domain:Domain":
return new Domain(name, <any>undefined, { urn })
case "dokploy:index/environment:Environment":
return new Environment(name, <any>undefined, { urn })
case "dokploy:index/mariaDb:MariaDb":
return new MariaDb(name, <any>undefined, { urn })
case "dokploy:index/mongo:Mongo":
return new Mongo(name, <any>undefined, { urn })
case "dokploy:index/mount:Mount":
return new Mount(name, <any>undefined, { urn })
case "dokploy:index/mySql:MySql":
return new MySql(name, <any>undefined, { urn })
case "dokploy:index/port:Port":
return new Port(name, <any>undefined, { urn })
case "dokploy:index/postgres:Postgres":
return new Postgres(name, <any>undefined, { urn })
case "dokploy:index/project:Project":
return new Project(name, <any>undefined, { urn })
case "dokploy:index/redirect:Redirect":
return new Redirect(name, <any>undefined, { urn })
case "dokploy:index/redis:Redis":
return new Redis(name, <any>undefined, { urn })
case "dokploy:index/registry:Registry":
return new Registry(name, <any>undefined, { urn })
case "dokploy:index/security:Security":
return new Security(name, <any>undefined, { urn })
case "dokploy:index/sshKey:SshKey":
return new SshKey(name, <any>undefined, { urn })
default:
throw new Error(`unknown resource type ${type}`);
}
},
};
pulumi.runtime.registerResourceModule("dokploy", "index/application", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/certificate", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/compose", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/destination", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/domain", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/environment", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mariaDb", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mongo", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mount", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/mySql", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/port", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/postgres", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/project", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/redirect", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/redis", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/registry", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/security", _module)
pulumi.runtime.registerResourceModule("dokploy", "index/sshKey", _module)
pulumi.runtime.registerResourcePackage("dokploy", {
version: utilities.getVersion(),
constructProvider: (name: string, type: string, urn: string): pulumi.ProviderResource => {
if (type !== "pulumi:providers:dokploy") {
throw new Error(`unknown provider type ${type}`);
}
return new Provider(name, <any>undefined, { urn });
},
});
+555
View File
@@ -0,0 +1,555 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class MariaDb extends pulumi.CustomResource {
/**
* Get an existing MariaDb resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: MariaDbState, opts?: pulumi.CustomResourceOptions): MariaDb {
return new MariaDb(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/mariaDb:MariaDb';
/**
* Returns true if the given object is an instance of MariaDb. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is MariaDb {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === MariaDb.__pulumiType;
}
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
declare public /*out*/ readonly applicationStatus: pulumi.Output<string>;
/**
* Arguments appended to the container command.
*/
declare public readonly args: pulumi.Output<string[]>;
/**
* Override the container entrypoint command.
*/
declare public readonly command: pulumi.Output<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
declare public readonly cpuLimit: pulumi.Output<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
declare public readonly cpuReservation: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Name of the database to create.
*/
declare public readonly databaseName: pulumi.Output<string>;
/**
* Password for the database user.
*/
declare public readonly databasePassword: pulumi.Output<string>;
/**
* Password for the MariaDB `root` user.
*/
declare public readonly databaseRootPassword: pulumi.Output<string>;
/**
* Database user to create.
*/
declare public readonly databaseUser: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
declare public readonly detachDokployNetwork: pulumi.Output<boolean>;
/**
* MariaDB image to run, for example `mariadb:11`.
*/
declare public readonly dockerImage: pulumi.Output<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
declare public readonly endpointSpecSwarm: pulumi.Output<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
declare public readonly env: pulumi.Output<string | undefined>;
/**
* Environment this database belongs to.
*/
declare public readonly environmentId: pulumi.Output<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
declare public readonly externalPort: pulumi.Output<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
declare public readonly healthCheckSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
declare public readonly labelsSwarm: pulumi.Output<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
declare public readonly memoryLimit: pulumi.Output<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
declare public readonly memoryReservation: pulumi.Output<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
declare public readonly modeSwarm: pulumi.Output<string | undefined>;
/**
* Display name of the database.
*/
declare public readonly name: pulumi.Output<string>;
/**
* IDs of additional Docker networks to attach.
*/
declare public readonly networkIds: pulumi.Output<string[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
declare public readonly networkSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
declare public readonly placementSwarm: pulumi.Output<string | undefined>;
/**
* Number of replicas to run.
*/
declare public readonly replicas: pulumi.Output<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
declare public readonly restartPolicySwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
declare public readonly rollbackConfigSwarm: pulumi.Output<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
declare public readonly stopGracePeriodSwarm: pulumi.Output<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
declare public readonly ulimitsSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
declare public readonly updateConfigSwarm: pulumi.Output<string | undefined>;
/**
* Create a MariaDb resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: MariaDbArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: MariaDbArgs | MariaDbState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as MariaDbState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationStatus"] = state?.applicationStatus;
resourceInputs["args"] = state?.args;
resourceInputs["command"] = state?.command;
resourceInputs["cpuLimit"] = state?.cpuLimit;
resourceInputs["cpuReservation"] = state?.cpuReservation;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["databaseName"] = state?.databaseName;
resourceInputs["databasePassword"] = state?.databasePassword;
resourceInputs["databaseRootPassword"] = state?.databaseRootPassword;
resourceInputs["databaseUser"] = state?.databaseUser;
resourceInputs["description"] = state?.description;
resourceInputs["detachDokployNetwork"] = state?.detachDokployNetwork;
resourceInputs["dockerImage"] = state?.dockerImage;
resourceInputs["endpointSpecSwarm"] = state?.endpointSpecSwarm;
resourceInputs["env"] = state?.env;
resourceInputs["environmentId"] = state?.environmentId;
resourceInputs["externalPort"] = state?.externalPort;
resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = state?.labelsSwarm;
resourceInputs["memoryLimit"] = state?.memoryLimit;
resourceInputs["memoryReservation"] = state?.memoryReservation;
resourceInputs["modeSwarm"] = state?.modeSwarm;
resourceInputs["name"] = state?.name;
resourceInputs["networkIds"] = state?.networkIds;
resourceInputs["networkSwarm"] = state?.networkSwarm;
resourceInputs["placementSwarm"] = state?.placementSwarm;
resourceInputs["replicas"] = state?.replicas;
resourceInputs["restartPolicySwarm"] = state?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = state?.rollbackConfigSwarm;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["stopGracePeriodSwarm"] = state?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = state?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = state?.updateConfigSwarm;
} else {
const args = argsOrState as MariaDbArgs | undefined;
if (args?.databaseName === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseName'");
}
if (args?.databasePassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databasePassword'");
}
if (args?.databaseRootPassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseRootPassword'");
}
if (args?.databaseUser === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseUser'");
}
if (args?.dockerImage === undefined && !opts.urn) {
throw new Error("Missing required property 'dockerImage'");
}
if (args?.environmentId === undefined && !opts.urn) {
throw new Error("Missing required property 'environmentId'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["args"] = args?.args;
resourceInputs["command"] = args?.command;
resourceInputs["cpuLimit"] = args?.cpuLimit;
resourceInputs["cpuReservation"] = args?.cpuReservation;
resourceInputs["databaseName"] = args?.databaseName;
resourceInputs["databasePassword"] = args?.databasePassword ? pulumi.secret(args.databasePassword) : undefined;
resourceInputs["databaseRootPassword"] = args?.databaseRootPassword ? pulumi.secret(args.databaseRootPassword) : undefined;
resourceInputs["databaseUser"] = args?.databaseUser;
resourceInputs["description"] = args?.description;
resourceInputs["detachDokployNetwork"] = args?.detachDokployNetwork;
resourceInputs["dockerImage"] = args?.dockerImage;
resourceInputs["endpointSpecSwarm"] = args?.endpointSpecSwarm;
resourceInputs["env"] = args?.env;
resourceInputs["environmentId"] = args?.environmentId;
resourceInputs["externalPort"] = args?.externalPort;
resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = args?.labelsSwarm;
resourceInputs["memoryLimit"] = args?.memoryLimit;
resourceInputs["memoryReservation"] = args?.memoryReservation;
resourceInputs["modeSwarm"] = args?.modeSwarm;
resourceInputs["name"] = args?.name;
resourceInputs["networkIds"] = args?.networkIds;
resourceInputs["networkSwarm"] = args?.networkSwarm;
resourceInputs["placementSwarm"] = args?.placementSwarm;
resourceInputs["replicas"] = args?.replicas;
resourceInputs["restartPolicySwarm"] = args?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = args?.rollbackConfigSwarm;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["stopGracePeriodSwarm"] = args?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = args?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = args?.updateConfigSwarm;
resourceInputs["applicationStatus"] = undefined /*out*/;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["databasePassword", "databaseRootPassword"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(MariaDb.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering MariaDb resources.
*/
export interface MariaDbState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Name of the database to create.
*/
databaseName?: pulumi.Input<string>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string>;
/**
* Password for the MariaDB `root` user.
*/
databaseRootPassword?: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* MariaDB image to run, for example `mariadb:11`.
*/
dockerImage?: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a MariaDb resource.
*/
export interface MariaDbArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* Name of the database to create.
*/
databaseName: pulumi.Input<string>;
/**
* Password for the database user.
*/
databasePassword: pulumi.Input<string>;
/**
* Password for the MariaDB `root` user.
*/
databaseRootPassword: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* MariaDB image to run, for example `mariadb:11`.
*/
dockerImage: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
+532
View File
@@ -0,0 +1,532 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Mongo extends pulumi.CustomResource {
/**
* Get an existing Mongo resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: MongoState, opts?: pulumi.CustomResourceOptions): Mongo {
return new Mongo(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/mongo:Mongo';
/**
* Returns true if the given object is an instance of Mongo. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Mongo {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Mongo.__pulumiType;
}
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
declare public /*out*/ readonly applicationStatus: pulumi.Output<string>;
/**
* Arguments appended to the container command.
*/
declare public readonly args: pulumi.Output<string[]>;
/**
* Override the container entrypoint command.
*/
declare public readonly command: pulumi.Output<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
declare public readonly cpuLimit: pulumi.Output<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
declare public readonly cpuReservation: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Password for the root user.
*/
declare public readonly databasePassword: pulumi.Output<string>;
/**
* Root username to create.
*/
declare public readonly databaseUser: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
declare public readonly detachDokployNetwork: pulumi.Output<boolean>;
/**
* MongoDB image to run. Defaults to `mongo:8`.
*/
declare public readonly dockerImage: pulumi.Output<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
declare public readonly endpointSpecSwarm: pulumi.Output<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
declare public readonly env: pulumi.Output<string | undefined>;
/**
* Environment this database belongs to.
*/
declare public readonly environmentId: pulumi.Output<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
declare public readonly externalPort: pulumi.Output<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
declare public readonly healthCheckSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
declare public readonly labelsSwarm: pulumi.Output<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
declare public readonly memoryLimit: pulumi.Output<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
declare public readonly memoryReservation: pulumi.Output<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
declare public readonly modeSwarm: pulumi.Output<string | undefined>;
/**
* Display name of the database.
*/
declare public readonly name: pulumi.Output<string>;
/**
* IDs of additional Docker networks to attach.
*/
declare public readonly networkIds: pulumi.Output<string[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
declare public readonly networkSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
declare public readonly placementSwarm: pulumi.Output<string | undefined>;
/**
* Start the instance as a single-node replica set.
*/
declare public readonly replicaSets: pulumi.Output<boolean>;
/**
* Number of replicas to run.
*/
declare public readonly replicas: pulumi.Output<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
declare public readonly restartPolicySwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
declare public readonly rollbackConfigSwarm: pulumi.Output<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
declare public readonly stopGracePeriodSwarm: pulumi.Output<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
declare public readonly ulimitsSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
declare public readonly updateConfigSwarm: pulumi.Output<string | undefined>;
/**
* Create a Mongo resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: MongoArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: MongoArgs | MongoState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as MongoState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationStatus"] = state?.applicationStatus;
resourceInputs["args"] = state?.args;
resourceInputs["command"] = state?.command;
resourceInputs["cpuLimit"] = state?.cpuLimit;
resourceInputs["cpuReservation"] = state?.cpuReservation;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["databasePassword"] = state?.databasePassword;
resourceInputs["databaseUser"] = state?.databaseUser;
resourceInputs["description"] = state?.description;
resourceInputs["detachDokployNetwork"] = state?.detachDokployNetwork;
resourceInputs["dockerImage"] = state?.dockerImage;
resourceInputs["endpointSpecSwarm"] = state?.endpointSpecSwarm;
resourceInputs["env"] = state?.env;
resourceInputs["environmentId"] = state?.environmentId;
resourceInputs["externalPort"] = state?.externalPort;
resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = state?.labelsSwarm;
resourceInputs["memoryLimit"] = state?.memoryLimit;
resourceInputs["memoryReservation"] = state?.memoryReservation;
resourceInputs["modeSwarm"] = state?.modeSwarm;
resourceInputs["name"] = state?.name;
resourceInputs["networkIds"] = state?.networkIds;
resourceInputs["networkSwarm"] = state?.networkSwarm;
resourceInputs["placementSwarm"] = state?.placementSwarm;
resourceInputs["replicaSets"] = state?.replicaSets;
resourceInputs["replicas"] = state?.replicas;
resourceInputs["restartPolicySwarm"] = state?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = state?.rollbackConfigSwarm;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["stopGracePeriodSwarm"] = state?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = state?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = state?.updateConfigSwarm;
} else {
const args = argsOrState as MongoArgs | undefined;
if (args?.databasePassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databasePassword'");
}
if (args?.databaseUser === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseUser'");
}
if (args?.environmentId === undefined && !opts.urn) {
throw new Error("Missing required property 'environmentId'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["args"] = args?.args;
resourceInputs["command"] = args?.command;
resourceInputs["cpuLimit"] = args?.cpuLimit;
resourceInputs["cpuReservation"] = args?.cpuReservation;
resourceInputs["databasePassword"] = args?.databasePassword ? pulumi.secret(args.databasePassword) : undefined;
resourceInputs["databaseUser"] = args?.databaseUser;
resourceInputs["description"] = args?.description;
resourceInputs["detachDokployNetwork"] = args?.detachDokployNetwork;
resourceInputs["dockerImage"] = args?.dockerImage;
resourceInputs["endpointSpecSwarm"] = args?.endpointSpecSwarm;
resourceInputs["env"] = args?.env;
resourceInputs["environmentId"] = args?.environmentId;
resourceInputs["externalPort"] = args?.externalPort;
resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = args?.labelsSwarm;
resourceInputs["memoryLimit"] = args?.memoryLimit;
resourceInputs["memoryReservation"] = args?.memoryReservation;
resourceInputs["modeSwarm"] = args?.modeSwarm;
resourceInputs["name"] = args?.name;
resourceInputs["networkIds"] = args?.networkIds;
resourceInputs["networkSwarm"] = args?.networkSwarm;
resourceInputs["placementSwarm"] = args?.placementSwarm;
resourceInputs["replicaSets"] = args?.replicaSets;
resourceInputs["replicas"] = args?.replicas;
resourceInputs["restartPolicySwarm"] = args?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = args?.rollbackConfigSwarm;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["stopGracePeriodSwarm"] = args?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = args?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = args?.updateConfigSwarm;
resourceInputs["applicationStatus"] = undefined /*out*/;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["databasePassword"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(Mongo.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Mongo resources.
*/
export interface MongoState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Password for the root user.
*/
databasePassword?: pulumi.Input<string>;
/**
* Root username to create.
*/
databaseUser?: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* MongoDB image to run. Defaults to `mongo:8`.
*/
dockerImage?: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Start the instance as a single-node replica set.
*/
replicaSets?: pulumi.Input<boolean>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Mongo resource.
*/
export interface MongoArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* Password for the root user.
*/
databasePassword: pulumi.Input<string>;
/**
* Root username to create.
*/
databaseUser: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* MongoDB image to run. Defaults to `mongo:8`.
*/
dockerImage?: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Start the instance as a single-node replica set.
*/
replicaSets?: pulumi.Input<boolean>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
+191
View File
@@ -0,0 +1,191 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Mount extends pulumi.CustomResource {
/**
* Get an existing Mount resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: MountState, opts?: pulumi.CustomResourceOptions): Mount {
return new Mount(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/mount:Mount';
/**
* Returns true if the given object is an instance of Mount. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Mount {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Mount.__pulumiType;
}
/**
* Contents of the generated file, when `type` is `file`.
*/
declare public readonly content: pulumi.Output<string | undefined>;
/**
* Path of the generated file, when `type` is `file`.
*/
declare public readonly filePath: pulumi.Output<string | undefined>;
/**
* Path on the host, when `type` is `bind`.
*/
declare public readonly hostPath: pulumi.Output<string | undefined>;
/**
* Path inside the container where the mount appears.
*/
declare public readonly mountPath: pulumi.Output<string>;
/**
* ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
*/
declare public readonly serviceId: pulumi.Output<string>;
/**
* The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
*/
declare public readonly serviceType: pulumi.Output<string>;
/**
* The kind of mount to create. Valid values: `bind`, `volume`, `file`.
*/
declare public readonly type: pulumi.Output<string>;
/**
* Name of the Docker volume, when `type` is `volume`.
*/
declare public readonly volumeName: pulumi.Output<string | undefined>;
/**
* Create a Mount resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: MountArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: MountArgs | MountState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as MountState | undefined;
resourceInputs["content"] = state?.content;
resourceInputs["filePath"] = state?.filePath;
resourceInputs["hostPath"] = state?.hostPath;
resourceInputs["mountPath"] = state?.mountPath;
resourceInputs["serviceId"] = state?.serviceId;
resourceInputs["serviceType"] = state?.serviceType;
resourceInputs["type"] = state?.type;
resourceInputs["volumeName"] = state?.volumeName;
} else {
const args = argsOrState as MountArgs | undefined;
if (args?.mountPath === undefined && !opts.urn) {
throw new Error("Missing required property 'mountPath'");
}
if (args?.serviceId === undefined && !opts.urn) {
throw new Error("Missing required property 'serviceId'");
}
if (args?.serviceType === undefined && !opts.urn) {
throw new Error("Missing required property 'serviceType'");
}
if (args?.type === undefined && !opts.urn) {
throw new Error("Missing required property 'type'");
}
resourceInputs["content"] = args?.content;
resourceInputs["filePath"] = args?.filePath;
resourceInputs["hostPath"] = args?.hostPath;
resourceInputs["mountPath"] = args?.mountPath;
resourceInputs["serviceId"] = args?.serviceId;
resourceInputs["serviceType"] = args?.serviceType;
resourceInputs["type"] = args?.type;
resourceInputs["volumeName"] = args?.volumeName;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Mount.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Mount resources.
*/
export interface MountState {
/**
* Contents of the generated file, when `type` is `file`.
*/
content?: pulumi.Input<string>;
/**
* Path of the generated file, when `type` is `file`.
*/
filePath?: pulumi.Input<string>;
/**
* Path on the host, when `type` is `bind`.
*/
hostPath?: pulumi.Input<string>;
/**
* Path inside the container where the mount appears.
*/
mountPath?: pulumi.Input<string>;
/**
* ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
*/
serviceId?: pulumi.Input<string>;
/**
* The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
*/
serviceType?: pulumi.Input<string>;
/**
* The kind of mount to create. Valid values: `bind`, `volume`, `file`.
*/
type?: pulumi.Input<string>;
/**
* Name of the Docker volume, when `type` is `volume`.
*/
volumeName?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Mount resource.
*/
export interface MountArgs {
/**
* Contents of the generated file, when `type` is `file`.
*/
content?: pulumi.Input<string>;
/**
* Path of the generated file, when `type` is `file`.
*/
filePath?: pulumi.Input<string>;
/**
* Path on the host, when `type` is `bind`.
*/
hostPath?: pulumi.Input<string>;
/**
* Path inside the container where the mount appears.
*/
mountPath: pulumi.Input<string>;
/**
* ID of the service this mount attaches to. Must match `serviceType` — an application ID, a compose ID, a postgres ID, and so on.
*/
serviceId: pulumi.Input<string>;
/**
* The kind of service this mount attaches to. Valid values: `application`, `postgres`, `mysql`, `mariadb`, `mongo`, `redis`, `compose`.
*/
serviceType: pulumi.Input<string>;
/**
* The kind of mount to create. Valid values: `bind`, `volume`, `file`.
*/
type: pulumi.Input<string>;
/**
* Name of the Docker volume, when `type` is `volume`.
*/
volumeName?: pulumi.Input<string>;
}
+555
View File
@@ -0,0 +1,555 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class MySql extends pulumi.CustomResource {
/**
* Get an existing MySql resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: MySqlState, opts?: pulumi.CustomResourceOptions): MySql {
return new MySql(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/mySql:MySql';
/**
* Returns true if the given object is an instance of MySql. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is MySql {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === MySql.__pulumiType;
}
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
declare public /*out*/ readonly applicationStatus: pulumi.Output<string>;
/**
* Arguments appended to the container command.
*/
declare public readonly args: pulumi.Output<string[]>;
/**
* Override the container entrypoint command.
*/
declare public readonly command: pulumi.Output<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
declare public readonly cpuLimit: pulumi.Output<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
declare public readonly cpuReservation: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Name of the database to create.
*/
declare public readonly databaseName: pulumi.Output<string>;
/**
* Password for the database user.
*/
declare public readonly databasePassword: pulumi.Output<string>;
/**
* Password for the MySQL `root` user.
*/
declare public readonly databaseRootPassword: pulumi.Output<string>;
/**
* Database user to create.
*/
declare public readonly databaseUser: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
declare public readonly detachDokployNetwork: pulumi.Output<boolean>;
/**
* MySQL image to run, for example `mysql:8`.
*/
declare public readonly dockerImage: pulumi.Output<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
declare public readonly endpointSpecSwarm: pulumi.Output<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
declare public readonly env: pulumi.Output<string | undefined>;
/**
* Environment this database belongs to.
*/
declare public readonly environmentId: pulumi.Output<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
declare public readonly externalPort: pulumi.Output<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
declare public readonly healthCheckSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
declare public readonly labelsSwarm: pulumi.Output<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
declare public readonly memoryLimit: pulumi.Output<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
declare public readonly memoryReservation: pulumi.Output<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
declare public readonly modeSwarm: pulumi.Output<string | undefined>;
/**
* Display name of the database.
*/
declare public readonly name: pulumi.Output<string>;
/**
* IDs of additional Docker networks to attach.
*/
declare public readonly networkIds: pulumi.Output<string[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
declare public readonly networkSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
declare public readonly placementSwarm: pulumi.Output<string | undefined>;
/**
* Number of replicas to run.
*/
declare public readonly replicas: pulumi.Output<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
declare public readonly restartPolicySwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
declare public readonly rollbackConfigSwarm: pulumi.Output<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
declare public readonly stopGracePeriodSwarm: pulumi.Output<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
declare public readonly ulimitsSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
declare public readonly updateConfigSwarm: pulumi.Output<string | undefined>;
/**
* Create a MySql resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: MySqlArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: MySqlArgs | MySqlState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as MySqlState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationStatus"] = state?.applicationStatus;
resourceInputs["args"] = state?.args;
resourceInputs["command"] = state?.command;
resourceInputs["cpuLimit"] = state?.cpuLimit;
resourceInputs["cpuReservation"] = state?.cpuReservation;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["databaseName"] = state?.databaseName;
resourceInputs["databasePassword"] = state?.databasePassword;
resourceInputs["databaseRootPassword"] = state?.databaseRootPassword;
resourceInputs["databaseUser"] = state?.databaseUser;
resourceInputs["description"] = state?.description;
resourceInputs["detachDokployNetwork"] = state?.detachDokployNetwork;
resourceInputs["dockerImage"] = state?.dockerImage;
resourceInputs["endpointSpecSwarm"] = state?.endpointSpecSwarm;
resourceInputs["env"] = state?.env;
resourceInputs["environmentId"] = state?.environmentId;
resourceInputs["externalPort"] = state?.externalPort;
resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = state?.labelsSwarm;
resourceInputs["memoryLimit"] = state?.memoryLimit;
resourceInputs["memoryReservation"] = state?.memoryReservation;
resourceInputs["modeSwarm"] = state?.modeSwarm;
resourceInputs["name"] = state?.name;
resourceInputs["networkIds"] = state?.networkIds;
resourceInputs["networkSwarm"] = state?.networkSwarm;
resourceInputs["placementSwarm"] = state?.placementSwarm;
resourceInputs["replicas"] = state?.replicas;
resourceInputs["restartPolicySwarm"] = state?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = state?.rollbackConfigSwarm;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["stopGracePeriodSwarm"] = state?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = state?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = state?.updateConfigSwarm;
} else {
const args = argsOrState as MySqlArgs | undefined;
if (args?.databaseName === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseName'");
}
if (args?.databasePassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databasePassword'");
}
if (args?.databaseRootPassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseRootPassword'");
}
if (args?.databaseUser === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseUser'");
}
if (args?.dockerImage === undefined && !opts.urn) {
throw new Error("Missing required property 'dockerImage'");
}
if (args?.environmentId === undefined && !opts.urn) {
throw new Error("Missing required property 'environmentId'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["args"] = args?.args;
resourceInputs["command"] = args?.command;
resourceInputs["cpuLimit"] = args?.cpuLimit;
resourceInputs["cpuReservation"] = args?.cpuReservation;
resourceInputs["databaseName"] = args?.databaseName;
resourceInputs["databasePassword"] = args?.databasePassword ? pulumi.secret(args.databasePassword) : undefined;
resourceInputs["databaseRootPassword"] = args?.databaseRootPassword ? pulumi.secret(args.databaseRootPassword) : undefined;
resourceInputs["databaseUser"] = args?.databaseUser;
resourceInputs["description"] = args?.description;
resourceInputs["detachDokployNetwork"] = args?.detachDokployNetwork;
resourceInputs["dockerImage"] = args?.dockerImage;
resourceInputs["endpointSpecSwarm"] = args?.endpointSpecSwarm;
resourceInputs["env"] = args?.env;
resourceInputs["environmentId"] = args?.environmentId;
resourceInputs["externalPort"] = args?.externalPort;
resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = args?.labelsSwarm;
resourceInputs["memoryLimit"] = args?.memoryLimit;
resourceInputs["memoryReservation"] = args?.memoryReservation;
resourceInputs["modeSwarm"] = args?.modeSwarm;
resourceInputs["name"] = args?.name;
resourceInputs["networkIds"] = args?.networkIds;
resourceInputs["networkSwarm"] = args?.networkSwarm;
resourceInputs["placementSwarm"] = args?.placementSwarm;
resourceInputs["replicas"] = args?.replicas;
resourceInputs["restartPolicySwarm"] = args?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = args?.rollbackConfigSwarm;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["stopGracePeriodSwarm"] = args?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = args?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = args?.updateConfigSwarm;
resourceInputs["applicationStatus"] = undefined /*out*/;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["databasePassword", "databaseRootPassword"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(MySql.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering MySql resources.
*/
export interface MySqlState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Name of the database to create.
*/
databaseName?: pulumi.Input<string>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string>;
/**
* Password for the MySQL `root` user.
*/
databaseRootPassword?: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* MySQL image to run, for example `mysql:8`.
*/
dockerImage?: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a MySql resource.
*/
export interface MySqlArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* Name of the database to create.
*/
databaseName: pulumi.Input<string>;
/**
* Password for the database user.
*/
databasePassword: pulumi.Input<string>;
/**
* Password for the MySQL `root` user.
*/
databaseRootPassword: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* MySQL image to run, for example `mysql:8`.
*/
dockerImage: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
+2683
View File
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
{
"name": "@maxvojtkov/pulumi-dokploy",
"version": "0.1.0",
"description": "A Pulumi package for creating and managing Dokploy resources. Based on terraform-provider-dokploy: version v0.1.0",
"keywords": [
"pulumi",
"dokploy",
"paas",
"docker",
"deployment",
"category/cloud",
"category/infrastructure"
],
"homepage": "https://github.com/maxvojtkov/pulumi-dokploy",
"repository": "https://github.com/maxvojtkov/pulumi-dokploy",
"license": "MPL-2.0",
"scripts": {
"build": "tsc"
},
"dependencies": {
"@pulumi/pulumi": "^3.0.0"
},
"devDependencies": {
"@types/node": "^18",
"typescript": "^4.6.0"
},
"pulumi": {
"resource": true,
"name": "dokploy",
"version": "0.1.0",
"server": "github://api.github.com/maxvojtkov/pulumi-dokploy"
}
}
+149
View File
@@ -0,0 +1,149 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Port extends pulumi.CustomResource {
/**
* Get an existing Port resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: PortState, opts?: pulumi.CustomResourceOptions): Port {
return new Port(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/port:Port';
/**
* Returns true if the given object is an instance of Port. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Port {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Port.__pulumiType;
}
/**
* Application this port belongs to.
*/
declare public readonly applicationId: pulumi.Output<string>;
/**
* Transport protocol. Valid values: `tcp`, `udp`.
*/
declare public readonly protocol: pulumi.Output<string>;
/**
* Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
*/
declare public readonly publishMode: pulumi.Output<string>;
/**
* Port exposed on the host.
*/
declare public readonly publishedPort: pulumi.Output<number>;
/**
* Port the container listens on.
*/
declare public readonly targetPort: pulumi.Output<number>;
/**
* Create a Port resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: PortArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: PortArgs | PortState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as PortState | undefined;
resourceInputs["applicationId"] = state?.applicationId;
resourceInputs["protocol"] = state?.protocol;
resourceInputs["publishMode"] = state?.publishMode;
resourceInputs["publishedPort"] = state?.publishedPort;
resourceInputs["targetPort"] = state?.targetPort;
} else {
const args = argsOrState as PortArgs | undefined;
if (args?.applicationId === undefined && !opts.urn) {
throw new Error("Missing required property 'applicationId'");
}
if (args?.protocol === undefined && !opts.urn) {
throw new Error("Missing required property 'protocol'");
}
if (args?.publishedPort === undefined && !opts.urn) {
throw new Error("Missing required property 'publishedPort'");
}
if (args?.targetPort === undefined && !opts.urn) {
throw new Error("Missing required property 'targetPort'");
}
resourceInputs["applicationId"] = args?.applicationId;
resourceInputs["protocol"] = args?.protocol;
resourceInputs["publishMode"] = args?.publishMode;
resourceInputs["publishedPort"] = args?.publishedPort;
resourceInputs["targetPort"] = args?.targetPort;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Port.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Port resources.
*/
export interface PortState {
/**
* Application this port belongs to.
*/
applicationId?: pulumi.Input<string>;
/**
* Transport protocol. Valid values: `tcp`, `udp`.
*/
protocol?: pulumi.Input<string>;
/**
* Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
*/
publishMode?: pulumi.Input<string>;
/**
* Port exposed on the host.
*/
publishedPort?: pulumi.Input<number>;
/**
* Port the container listens on.
*/
targetPort?: pulumi.Input<number>;
}
/**
* The set of arguments for constructing a Port resource.
*/
export interface PortArgs {
/**
* Application this port belongs to.
*/
applicationId: pulumi.Input<string>;
/**
* Transport protocol. Valid values: `tcp`, `udp`.
*/
protocol: pulumi.Input<string>;
/**
* Docker Swarm publish mode. `host` binds directly to the node; `ingress` uses the swarm routing mesh. Valid values: `ingress`, `host`.
*/
publishMode?: pulumi.Input<string>;
/**
* Port exposed on the host.
*/
publishedPort: pulumi.Input<number>;
/**
* Port the container listens on.
*/
targetPort: pulumi.Input<number>;
}
+538
View File
@@ -0,0 +1,538 @@
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as utilities from "./utilities";
export class Postgres extends pulumi.CustomResource {
/**
* Get an existing Postgres resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: PostgresState, opts?: pulumi.CustomResourceOptions): Postgres {
return new Postgres(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'dokploy:index/postgres:Postgres';
/**
* Returns true if the given object is an instance of Postgres. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Postgres {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Postgres.__pulumiType;
}
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
declare public readonly appName: pulumi.Output<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
declare public /*out*/ readonly applicationStatus: pulumi.Output<string>;
/**
* Arguments appended to the container command.
*/
declare public readonly args: pulumi.Output<string[]>;
/**
* Override the container entrypoint command.
*/
declare public readonly command: pulumi.Output<string | undefined>;
/**
* Hard CPU limit, for example `1`.
*/
declare public readonly cpuLimit: pulumi.Output<string | undefined>;
/**
* Soft CPU reservation, for example `0.5`.
*/
declare public readonly cpuReservation: pulumi.Output<string | undefined>;
/**
* RFC 3339 timestamp of when the database was created.
*/
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
/**
* Name of the database to create.
*/
declare public readonly databaseName: pulumi.Output<string>;
/**
* Password for the database user.
*/
declare public readonly databasePassword: pulumi.Output<string>;
/**
* Database user to create.
*/
declare public readonly databaseUser: pulumi.Output<string>;
/**
* Free-form description.
*/
declare public readonly description: pulumi.Output<string | undefined>;
/**
* Detach the service from the shared `dokploy-network`.
*/
declare public readonly detachDokployNetwork: pulumi.Output<boolean>;
/**
* PostgreSQL image to run, for example `postgres:16`.
*/
declare public readonly dockerImage: pulumi.Output<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
declare public readonly endpointSpecSwarm: pulumi.Output<string | undefined>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
declare public readonly env: pulumi.Output<string | undefined>;
/**
* Environment this database belongs to.
*/
declare public readonly environmentId: pulumi.Output<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
declare public readonly externalPort: pulumi.Output<number | undefined>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
declare public readonly healthCheckSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm service labels, as a JSON object.
*/
declare public readonly labelsSwarm: pulumi.Output<string | undefined>;
/**
* Hard memory limit, for example `512m`.
*/
declare public readonly memoryLimit: pulumi.Output<string | undefined>;
/**
* Soft memory reservation, for example `256m`.
*/
declare public readonly memoryReservation: pulumi.Output<string | undefined>;
/**
* Docker Swarm service mode, as a JSON object.
*/
declare public readonly modeSwarm: pulumi.Output<string | undefined>;
/**
* Display name of the database.
*/
declare public readonly name: pulumi.Output<string>;
/**
* IDs of additional Docker networks to attach.
*/
declare public readonly networkIds: pulumi.Output<string[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
declare public readonly networkSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
declare public readonly placementSwarm: pulumi.Output<string | undefined>;
/**
* Number of replicas to run.
*/
declare public readonly replicas: pulumi.Output<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
declare public readonly restartPolicySwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
declare public readonly rollbackConfigSwarm: pulumi.Output<string | undefined>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
declare public readonly serverId: pulumi.Output<string | undefined>;
/**
* Grace period in nanoseconds before a container is killed.
*/
declare public readonly stopGracePeriodSwarm: pulumi.Output<number | undefined>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
declare public readonly ulimitsSwarm: pulumi.Output<string | undefined>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
declare public readonly updateConfigSwarm: pulumi.Output<string | undefined>;
/**
* Create a Postgres resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: PostgresArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: PostgresArgs | PostgresState, opts?: pulumi.CustomResourceOptions) {
let resourceInputs: pulumi.Inputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState as PostgresState | undefined;
resourceInputs["appName"] = state?.appName;
resourceInputs["applicationStatus"] = state?.applicationStatus;
resourceInputs["args"] = state?.args;
resourceInputs["command"] = state?.command;
resourceInputs["cpuLimit"] = state?.cpuLimit;
resourceInputs["cpuReservation"] = state?.cpuReservation;
resourceInputs["createdAt"] = state?.createdAt;
resourceInputs["databaseName"] = state?.databaseName;
resourceInputs["databasePassword"] = state?.databasePassword;
resourceInputs["databaseUser"] = state?.databaseUser;
resourceInputs["description"] = state?.description;
resourceInputs["detachDokployNetwork"] = state?.detachDokployNetwork;
resourceInputs["dockerImage"] = state?.dockerImage;
resourceInputs["endpointSpecSwarm"] = state?.endpointSpecSwarm;
resourceInputs["env"] = state?.env;
resourceInputs["environmentId"] = state?.environmentId;
resourceInputs["externalPort"] = state?.externalPort;
resourceInputs["healthCheckSwarm"] = state?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = state?.labelsSwarm;
resourceInputs["memoryLimit"] = state?.memoryLimit;
resourceInputs["memoryReservation"] = state?.memoryReservation;
resourceInputs["modeSwarm"] = state?.modeSwarm;
resourceInputs["name"] = state?.name;
resourceInputs["networkIds"] = state?.networkIds;
resourceInputs["networkSwarm"] = state?.networkSwarm;
resourceInputs["placementSwarm"] = state?.placementSwarm;
resourceInputs["replicas"] = state?.replicas;
resourceInputs["restartPolicySwarm"] = state?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = state?.rollbackConfigSwarm;
resourceInputs["serverId"] = state?.serverId;
resourceInputs["stopGracePeriodSwarm"] = state?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = state?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = state?.updateConfigSwarm;
} else {
const args = argsOrState as PostgresArgs | undefined;
if (args?.databaseName === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseName'");
}
if (args?.databasePassword === undefined && !opts.urn) {
throw new Error("Missing required property 'databasePassword'");
}
if (args?.databaseUser === undefined && !opts.urn) {
throw new Error("Missing required property 'databaseUser'");
}
if (args?.dockerImage === undefined && !opts.urn) {
throw new Error("Missing required property 'dockerImage'");
}
if (args?.environmentId === undefined && !opts.urn) {
throw new Error("Missing required property 'environmentId'");
}
resourceInputs["appName"] = args?.appName;
resourceInputs["args"] = args?.args;
resourceInputs["command"] = args?.command;
resourceInputs["cpuLimit"] = args?.cpuLimit;
resourceInputs["cpuReservation"] = args?.cpuReservation;
resourceInputs["databaseName"] = args?.databaseName;
resourceInputs["databasePassword"] = args?.databasePassword ? pulumi.secret(args.databasePassword) : undefined;
resourceInputs["databaseUser"] = args?.databaseUser;
resourceInputs["description"] = args?.description;
resourceInputs["detachDokployNetwork"] = args?.detachDokployNetwork;
resourceInputs["dockerImage"] = args?.dockerImage;
resourceInputs["endpointSpecSwarm"] = args?.endpointSpecSwarm;
resourceInputs["env"] = args?.env;
resourceInputs["environmentId"] = args?.environmentId;
resourceInputs["externalPort"] = args?.externalPort;
resourceInputs["healthCheckSwarm"] = args?.healthCheckSwarm;
resourceInputs["labelsSwarm"] = args?.labelsSwarm;
resourceInputs["memoryLimit"] = args?.memoryLimit;
resourceInputs["memoryReservation"] = args?.memoryReservation;
resourceInputs["modeSwarm"] = args?.modeSwarm;
resourceInputs["name"] = args?.name;
resourceInputs["networkIds"] = args?.networkIds;
resourceInputs["networkSwarm"] = args?.networkSwarm;
resourceInputs["placementSwarm"] = args?.placementSwarm;
resourceInputs["replicas"] = args?.replicas;
resourceInputs["restartPolicySwarm"] = args?.restartPolicySwarm;
resourceInputs["rollbackConfigSwarm"] = args?.rollbackConfigSwarm;
resourceInputs["serverId"] = args?.serverId;
resourceInputs["stopGracePeriodSwarm"] = args?.stopGracePeriodSwarm;
resourceInputs["ulimitsSwarm"] = args?.ulimitsSwarm;
resourceInputs["updateConfigSwarm"] = args?.updateConfigSwarm;
resourceInputs["applicationStatus"] = undefined /*out*/;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["databasePassword"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(Postgres.__pulumiType, name, resourceInputs, opts);
}
}
/**
* Input properties used for looking up and filtering Postgres resources.
*/
export interface PostgresState {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Current status reported by Dokploy: `idle`, `running`, `done` or `error`.
*/
applicationStatus?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* RFC 3339 timestamp of when the database was created.
*/
createdAt?: pulumi.Input<string>;
/**
* Name of the database to create.
*/
databaseName?: pulumi.Input<string>;
/**
* Password for the database user.
*/
databasePassword?: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser?: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* PostgreSQL image to run, for example `postgres:16`.
*/
dockerImage?: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId?: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Postgres resource.
*/
export interface PostgresArgs {
/**
* Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new database.
*/
appName?: pulumi.Input<string>;
/**
* Arguments appended to the container command.
*/
args?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Override the container entrypoint command.
*/
command?: pulumi.Input<string>;
/**
* Hard CPU limit, for example `1`.
*/
cpuLimit?: pulumi.Input<string>;
/**
* Soft CPU reservation, for example `0.5`.
*/
cpuReservation?: pulumi.Input<string>;
/**
* Name of the database to create.
*/
databaseName: pulumi.Input<string>;
/**
* Password for the database user.
*/
databasePassword: pulumi.Input<string>;
/**
* Database user to create.
*/
databaseUser: pulumi.Input<string>;
/**
* Free-form description.
*/
description?: pulumi.Input<string>;
/**
* Detach the service from the shared `dokploy-network`.
*/
detachDokployNetwork?: pulumi.Input<boolean>;
/**
* PostgreSQL image to run, for example `postgres:16`.
*/
dockerImage: pulumi.Input<string>;
/**
* Docker Swarm endpoint specification, as a JSON object.
*/
endpointSpecSwarm?: pulumi.Input<string>;
/**
* Environment variables in `KEY=value` format, one per line.
*/
env?: pulumi.Input<string>;
/**
* Environment this database belongs to.
*/
environmentId: pulumi.Input<string>;
/**
* Host port to expose the database on. Leave unset to keep the database reachable only from inside the Docker network.
*/
externalPort?: pulumi.Input<number>;
/**
* Docker Swarm health check configuration, as a JSON object.
*/
healthCheckSwarm?: pulumi.Input<string>;
/**
* Docker Swarm service labels, as a JSON object.
*/
labelsSwarm?: pulumi.Input<string>;
/**
* Hard memory limit, for example `512m`.
*/
memoryLimit?: pulumi.Input<string>;
/**
* Soft memory reservation, for example `256m`.
*/
memoryReservation?: pulumi.Input<string>;
/**
* Docker Swarm service mode, as a JSON object.
*/
modeSwarm?: pulumi.Input<string>;
/**
* Display name of the database.
*/
name?: pulumi.Input<string>;
/**
* IDs of additional Docker networks to attach.
*/
networkIds?: pulumi.Input<pulumi.Input<string>[]>;
/**
* Docker Swarm network attachments, as a JSON array.
*/
networkSwarm?: pulumi.Input<string>;
/**
* Docker Swarm placement constraints, as a JSON object.
*/
placementSwarm?: pulumi.Input<string>;
/**
* Number of replicas to run.
*/
replicas?: pulumi.Input<number>;
/**
* Docker Swarm restart policy, as a JSON object.
*/
restartPolicySwarm?: pulumi.Input<string>;
/**
* Docker Swarm rollback configuration, as a JSON object.
*/
rollbackConfigSwarm?: pulumi.Input<string>;
/**
* Remote server to deploy on. Omit to use the Dokploy host itself.
*/
serverId?: pulumi.Input<string>;
/**
* Grace period in nanoseconds before a container is killed.
*/
stopGracePeriodSwarm?: pulumi.Input<number>;
/**
* Docker Swarm ulimits, as a JSON object.
*/
ulimitsSwarm?: pulumi.Input<string>;
/**
* Docker Swarm rolling update configuration, as a JSON object.
*/
updateConfigSwarm?: pulumi.Input<string>;
}

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