Bridge what Dokploy v0.30 added, and let the docs through
build / build (push) Failing after 11m22s
release / plugin (push) Failing after 31m35s
release / sdks (push) Has been skipped

Six new resources from terraform-provider-dokploy v0.2.0 -- Network,
DnsProvider, VaultProvider, Schedule, VolumeBackup and Libsql -- plus the new
properties on Domain (`enabled`), Compose (`serviceNetworks`, `createEnvFile`,
`icon`) and Application. Verified with `pulumi up` against a live v0.30.2
instance: create, preview-clean, and destroy.

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

Two things made that fix nearly invisible to Pulumi users, so this commit
fixes the second one: the bridge resolves the upstream `docs/` through the Go
module cache, where a locally `replace`d dependency never lands, so tfgen was
emitting every resource with no description at all. UpstreamRepoPath now
points at the checkout and all 445 inputs carry documentation -- with names
rendered per language, so Python readers see `volume_name` where TypeScript
readers see `volumeName`.
This commit is contained in:
max-voitcov
2026-08-26 00:46:32 +03:00
parent ad3e908c98
commit 73386ba0ff
137 changed files with 19660 additions and 5183 deletions
+437
View File
@@ -0,0 +1,437 @@
// *** WARNING: this file was generated by pulumi-language-dotnet. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;
namespace Maxvojtkov.Dokploy
{
/// <summary>
/// A scheduled backup of a Docker volume to a configured `dokploy.Destination`.
///
/// This is the counterpart to a `dokploy.Mount` with `type = "volume"`: the mount gives the volume a stable name, and this resource copies its contents off the host on a schedule.
///
/// Set exactly one of the `*_id` attributes to say which service owns the volume.
/// </summary>
[DokployResourceType("dokploy:index/volumeBackup:VolumeBackup")]
public partial class VolumeBackup : global::Pulumi.CustomResource
{
/// <summary>
/// Docker service name that owns the volume. Derived by Dokploy when omitted.
/// </summary>
[Output("appName")]
public Output<string> AppName { get; private set; } = null!;
/// <summary>
/// Application that owns the volume.
/// </summary>
[Output("applicationId")]
public Output<string?> ApplicationId { get; private set; } = null!;
/// <summary>
/// Compose stack that owns the volume.
/// </summary>
[Output("composeId")]
public Output<string?> ComposeId { get; private set; } = null!;
/// <summary>
/// RFC 3339 timestamp of when the backup job was created.
/// </summary>
[Output("createdAt")]
public Output<string> CreatedAt { get; private set; } = null!;
/// <summary>
/// Standard five-field cron expression, for example `0 4 * * *`.
/// </summary>
[Output("cronExpression")]
public Output<string> CronExpression { get; private set; } = null!;
/// <summary>
/// Backup destination (S3-compatible bucket) to upload to.
/// </summary>
[Output("destinationId")]
public Output<string> DestinationId { get; private set; } = null!;
/// <summary>
/// Whether the backup schedule is active.
/// </summary>
[Output("enabled")]
public Output<bool> Enabled { get; private set; } = null!;
/// <summary>
/// Number of backups to retain. Older ones are pruned.
/// </summary>
[Output("keepLatestCount")]
public Output<int> KeepLatestCount { get; private set; } = null!;
/// <summary>
/// libSQL instance that owns the volume.
/// </summary>
[Output("libsqlId")]
public Output<string?> LibsqlId { get; private set; } = null!;
/// <summary>
/// MariaDB instance that owns the volume.
/// </summary>
[Output("mariadbId")]
public Output<string?> MariadbId { get; private set; } = null!;
/// <summary>
/// MongoDB instance that owns the volume.
/// </summary>
[Output("mongoId")]
public Output<string?> MongoId { get; private set; } = null!;
/// <summary>
/// MySQL instance that owns the volume.
/// </summary>
[Output("mysqlId")]
public Output<string?> MysqlId { get; private set; } = null!;
/// <summary>
/// Display name of the backup job.
/// </summary>
[Output("name")]
public Output<string> Name { get; private set; } = null!;
/// <summary>
/// PostgreSQL instance that owns the volume.
/// </summary>
[Output("postgresId")]
public Output<string?> PostgresId { get; private set; } = null!;
/// <summary>
/// Path prefix inside the destination bucket, for example `backups/shop/`.
/// </summary>
[Output("prefix")]
public Output<string> Prefix { get; private set; } = null!;
/// <summary>
/// Redis instance that owns the volume.
/// </summary>
[Output("redisId")]
public Output<string?> RedisId { get; private set; } = null!;
/// <summary>
/// Service inside a Compose stack that owns the volume.
/// </summary>
[Output("serviceName")]
public Output<string?> ServiceName { get; private set; } = null!;
/// <summary>
/// The kind of service that owns the volume. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. Defaults to `Application`.
/// </summary>
[Output("serviceType")]
public Output<string> ServiceType { get; private set; } = null!;
/// <summary>
/// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
/// </summary>
[Output("turnOff")]
public Output<bool> TurnOff { get; private set; } = null!;
/// <summary>
/// Name of the Docker volume to back up.
/// </summary>
[Output("volumeName")]
public Output<string> VolumeName { get; private set; } = null!;
/// <summary>
/// Create a VolumeBackup 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 VolumeBackup(string name, VolumeBackupArgs args, CustomResourceOptions? options = null)
: base("dokploy:index/volumeBackup:VolumeBackup", name, args ?? new VolumeBackupArgs(), MakeResourceOptions(options, ""))
{
}
private VolumeBackup(string name, Input<string> id, VolumeBackupState? state = null, CustomResourceOptions? options = null)
: base("dokploy:index/volumeBackup:VolumeBackup", name, state, MakeResourceOptions(options, id))
{
}
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
{
var defaultOptions = new CustomResourceOptions
{
Version = Utilities.Version,
PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}",
};
var merged = CustomResourceOptions.Merge(defaultOptions, options);
// Override the ID if one was specified for consistency with other language SDKs.
merged.Id = id ?? merged.Id;
return merged;
}
/// <summary>
/// Get an existing VolumeBackup 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 VolumeBackup Get(string name, Input<string> id, VolumeBackupState? state = null, CustomResourceOptions? options = null)
{
return new VolumeBackup(name, id, state, options);
}
}
public sealed class VolumeBackupArgs : global::Pulumi.ResourceArgs
{
/// <summary>
/// Docker service name that owns the volume. Derived by Dokploy when omitted.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Application that owns the volume.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// Compose stack that owns the volume.
/// </summary>
[Input("composeId")]
public Input<string>? ComposeId { get; set; }
/// <summary>
/// Standard five-field cron expression, for example `0 4 * * *`.
/// </summary>
[Input("cronExpression", required: true)]
public Input<string> CronExpression { get; set; } = null!;
/// <summary>
/// Backup destination (S3-compatible bucket) to upload to.
/// </summary>
[Input("destinationId", required: true)]
public Input<string> DestinationId { get; set; } = null!;
/// <summary>
/// Whether the backup schedule is active.
/// </summary>
[Input("enabled")]
public Input<bool>? Enabled { get; set; }
/// <summary>
/// Number of backups to retain. Older ones are pruned.
/// </summary>
[Input("keepLatestCount")]
public Input<int>? KeepLatestCount { get; set; }
/// <summary>
/// libSQL instance that owns the volume.
/// </summary>
[Input("libsqlId")]
public Input<string>? LibsqlId { get; set; }
/// <summary>
/// MariaDB instance that owns the volume.
/// </summary>
[Input("mariadbId")]
public Input<string>? MariadbId { get; set; }
/// <summary>
/// MongoDB instance that owns the volume.
/// </summary>
[Input("mongoId")]
public Input<string>? MongoId { get; set; }
/// <summary>
/// MySQL instance that owns the volume.
/// </summary>
[Input("mysqlId")]
public Input<string>? MysqlId { get; set; }
/// <summary>
/// Display name of the backup job.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// PostgreSQL instance that owns the volume.
/// </summary>
[Input("postgresId")]
public Input<string>? PostgresId { get; set; }
/// <summary>
/// Path prefix inside the destination bucket, for example `backups/shop/`.
/// </summary>
[Input("prefix", required: true)]
public Input<string> Prefix { get; set; } = null!;
/// <summary>
/// Redis instance that owns the volume.
/// </summary>
[Input("redisId")]
public Input<string>? RedisId { get; set; }
/// <summary>
/// Service inside a Compose stack that owns the volume.
/// </summary>
[Input("serviceName")]
public Input<string>? ServiceName { get; set; }
/// <summary>
/// The kind of service that owns the volume. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. Defaults to `Application`.
/// </summary>
[Input("serviceType")]
public Input<string>? ServiceType { get; set; }
/// <summary>
/// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
/// </summary>
[Input("turnOff")]
public Input<bool>? TurnOff { get; set; }
/// <summary>
/// Name of the Docker volume to back up.
/// </summary>
[Input("volumeName", required: true)]
public Input<string> VolumeName { get; set; } = null!;
public VolumeBackupArgs()
{
}
public static new VolumeBackupArgs Empty => new VolumeBackupArgs();
}
public sealed class VolumeBackupState : global::Pulumi.ResourceArgs
{
/// <summary>
/// Docker service name that owns the volume. Derived by Dokploy when omitted.
/// </summary>
[Input("appName")]
public Input<string>? AppName { get; set; }
/// <summary>
/// Application that owns the volume.
/// </summary>
[Input("applicationId")]
public Input<string>? ApplicationId { get; set; }
/// <summary>
/// Compose stack that owns the volume.
/// </summary>
[Input("composeId")]
public Input<string>? ComposeId { get; set; }
/// <summary>
/// RFC 3339 timestamp of when the backup job was created.
/// </summary>
[Input("createdAt")]
public Input<string>? CreatedAt { get; set; }
/// <summary>
/// Standard five-field cron expression, for example `0 4 * * *`.
/// </summary>
[Input("cronExpression")]
public Input<string>? CronExpression { get; set; }
/// <summary>
/// Backup destination (S3-compatible bucket) to upload to.
/// </summary>
[Input("destinationId")]
public Input<string>? DestinationId { get; set; }
/// <summary>
/// Whether the backup schedule is active.
/// </summary>
[Input("enabled")]
public Input<bool>? Enabled { get; set; }
/// <summary>
/// Number of backups to retain. Older ones are pruned.
/// </summary>
[Input("keepLatestCount")]
public Input<int>? KeepLatestCount { get; set; }
/// <summary>
/// libSQL instance that owns the volume.
/// </summary>
[Input("libsqlId")]
public Input<string>? LibsqlId { get; set; }
/// <summary>
/// MariaDB instance that owns the volume.
/// </summary>
[Input("mariadbId")]
public Input<string>? MariadbId { get; set; }
/// <summary>
/// MongoDB instance that owns the volume.
/// </summary>
[Input("mongoId")]
public Input<string>? MongoId { get; set; }
/// <summary>
/// MySQL instance that owns the volume.
/// </summary>
[Input("mysqlId")]
public Input<string>? MysqlId { get; set; }
/// <summary>
/// Display name of the backup job.
/// </summary>
[Input("name")]
public Input<string>? Name { get; set; }
/// <summary>
/// PostgreSQL instance that owns the volume.
/// </summary>
[Input("postgresId")]
public Input<string>? PostgresId { get; set; }
/// <summary>
/// Path prefix inside the destination bucket, for example `backups/shop/`.
/// </summary>
[Input("prefix")]
public Input<string>? Prefix { get; set; }
/// <summary>
/// Redis instance that owns the volume.
/// </summary>
[Input("redisId")]
public Input<string>? RedisId { get; set; }
/// <summary>
/// Service inside a Compose stack that owns the volume.
/// </summary>
[Input("serviceName")]
public Input<string>? ServiceName { get; set; }
/// <summary>
/// The kind of service that owns the volume. Valid values: `Application`, `Postgres`, `Mysql`, `Mariadb`, `Mongo`, `Redis`, `Compose`, `Libsql`. Defaults to `Application`.
/// </summary>
[Input("serviceType")]
public Input<string>? ServiceType { get; set; }
/// <summary>
/// Stop the service while the backup runs. Slower, but guarantees a consistent copy of data that is being written to.
/// </summary>
[Input("turnOff")]
public Input<bool>? TurnOff { get; set; }
/// <summary>
/// Name of the Docker volume to back up.
/// </summary>
[Input("volumeName")]
public Input<string>? VolumeName { get; set; }
public VolumeBackupState()
{
}
public static new VolumeBackupState Empty => new VolumeBackupState();
}
}