All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.vault.database.kotlin.SecretsMount.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.4.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.vault.database.kotlin

import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import com.pulumi.vault.database.kotlin.outputs.SecretsMountCassandra
import com.pulumi.vault.database.kotlin.outputs.SecretsMountCouchbase
import com.pulumi.vault.database.kotlin.outputs.SecretsMountElasticsearch
import com.pulumi.vault.database.kotlin.outputs.SecretsMountHana
import com.pulumi.vault.database.kotlin.outputs.SecretsMountInfluxdb
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMongodb
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMongodbatla
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMssql
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysql
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysqlAurora
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysqlLegacy
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysqlRd
import com.pulumi.vault.database.kotlin.outputs.SecretsMountOracle
import com.pulumi.vault.database.kotlin.outputs.SecretsMountPostgresql
import com.pulumi.vault.database.kotlin.outputs.SecretsMountRedi
import com.pulumi.vault.database.kotlin.outputs.SecretsMountRedisElasticach
import com.pulumi.vault.database.kotlin.outputs.SecretsMountRedshift
import com.pulumi.vault.database.kotlin.outputs.SecretsMountSnowflake
import kotlin.Any
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.vault.database.kotlin.outputs.SecretsMountCassandra.Companion.toKotlin as secretsMountCassandraToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountCouchbase.Companion.toKotlin as secretsMountCouchbaseToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountElasticsearch.Companion.toKotlin as secretsMountElasticsearchToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountHana.Companion.toKotlin as secretsMountHanaToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountInfluxdb.Companion.toKotlin as secretsMountInfluxdbToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMongodb.Companion.toKotlin as secretsMountMongodbToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMongodbatla.Companion.toKotlin as secretsMountMongodbatlaToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMssql.Companion.toKotlin as secretsMountMssqlToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysql.Companion.toKotlin as secretsMountMysqlToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysqlAurora.Companion.toKotlin as secretsMountMysqlAuroraToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysqlLegacy.Companion.toKotlin as secretsMountMysqlLegacyToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountMysqlRd.Companion.toKotlin as secretsMountMysqlRdToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountOracle.Companion.toKotlin as secretsMountOracleToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountPostgresql.Companion.toKotlin as secretsMountPostgresqlToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountRedi.Companion.toKotlin as secretsMountRediToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountRedisElasticach.Companion.toKotlin as secretsMountRedisElasticachToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountRedshift.Companion.toKotlin as secretsMountRedshiftToKotlin
import com.pulumi.vault.database.kotlin.outputs.SecretsMountSnowflake.Companion.toKotlin as secretsMountSnowflakeToKotlin

/**
 * Builder for [SecretsMount].
 */
@PulumiTagMarker
public class SecretsMountResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: SecretsMountArgs = SecretsMountArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend SecretsMountArgsBuilder.() -> Unit) {
        val builder = SecretsMountArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): SecretsMount {
        val builtJavaResource = com.pulumi.vault.database.SecretsMount(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return SecretsMount(builtJavaResource)
    }
}

/**
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as vault from "@pulumi/vault";
 * const db = new vault.database.SecretsMount("db", {
 *     path: "db",
 *     mssqls: [{
 *         name: "db1",
 *         username: "sa",
 *         password: "super_secret_1",
 *         connectionUrl: "sqlserver://{{username}}:{{password}}@127.0.0.1:1433",
 *         allowedRoles: ["dev1"],
 *     }],
 *     postgresqls: [{
 *         name: "db2",
 *         username: "postgres",
 *         password: "super_secret_2",
 *         connectionUrl: "postgresql://{{username}}:{{password}}@127.0.0.1:5432/postgres",
 *         verifyConnection: true,
 *         allowedRoles: ["dev2"],
 *     }],
 * });
 * const dev1 = new vault.database.SecretBackendRole("dev1", {
 *     name: "dev1",
 *     backend: db.path,
 *     dbName: db.mssqls.apply(mssqls => mssqls?.[0]?.name),
 *     creationStatements: [
 *         "CREATE LOGIN [{{name}}] WITH PASSWORD = '{{password}}';",
 *         "CREATE USER [{{name}}] FOR LOGIN [{{name}}];",
 *         "GRANT SELECT ON SCHEMA::dbo TO [{{name}}];",
 *     ],
 * });
 * const dev2 = new vault.database.SecretBackendRole("dev2", {
 *     name: "dev2",
 *     backend: db.path,
 *     dbName: db.postgresqls.apply(postgresqls => postgresqls?.[0]?.name),
 *     creationStatements: [
 *         "CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';",
 *         "GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";",
 *     ],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_vault as vault
 * db = vault.database.SecretsMount("db",
 *     path="db",
 *     mssqls=[vault.database.SecretsMountMssqlArgs(
 *         name="db1",
 *         username="sa",
 *         password="super_secret_1",
 *         connection_url="sqlserver://{{username}}:{{password}}@127.0.0.1:1433",
 *         allowed_roles=["dev1"],
 *     )],
 *     postgresqls=[vault.database.SecretsMountPostgresqlArgs(
 *         name="db2",
 *         username="postgres",
 *         password="super_secret_2",
 *         connection_url="postgresql://{{username}}:{{password}}@127.0.0.1:5432/postgres",
 *         verify_connection=True,
 *         allowed_roles=["dev2"],
 *     )])
 * dev1 = vault.database.SecretBackendRole("dev1",
 *     name="dev1",
 *     backend=db.path,
 *     db_name=db.mssqls[0].name,
 *     creation_statements=[
 *         "CREATE LOGIN [{{name}}] WITH PASSWORD = '{{password}}';",
 *         "CREATE USER [{{name}}] FOR LOGIN [{{name}}];",
 *         "GRANT SELECT ON SCHEMA::dbo TO [{{name}}];",
 *     ])
 * dev2 = vault.database.SecretBackendRole("dev2",
 *     name="dev2",
 *     backend=db.path,
 *     db_name=db.postgresqls[0].name,
 *     creation_statements=[
 *         "CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';",
 *         "GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";",
 *     ])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Vault = Pulumi.Vault;
 * return await Deployment.RunAsync(() =>
 * {
 *     var db = new Vault.Database.SecretsMount("db", new()
 *     {
 *         Path = "db",
 *         Mssqls = new[]
 *         {
 *             new Vault.Database.Inputs.SecretsMountMssqlArgs
 *             {
 *                 Name = "db1",
 *                 Username = "sa",
 *                 Password = "super_secret_1",
 *                 ConnectionUrl = "sqlserver://{{username}}:{{password}}@127.0.0.1:1433",
 *                 AllowedRoles = new[]
 *                 {
 *                     "dev1",
 *                 },
 *             },
 *         },
 *         Postgresqls = new[]
 *         {
 *             new Vault.Database.Inputs.SecretsMountPostgresqlArgs
 *             {
 *                 Name = "db2",
 *                 Username = "postgres",
 *                 Password = "super_secret_2",
 *                 ConnectionUrl = "postgresql://{{username}}:{{password}}@127.0.0.1:5432/postgres",
 *                 VerifyConnection = true,
 *                 AllowedRoles = new[]
 *                 {
 *                     "dev2",
 *                 },
 *             },
 *         },
 *     });
 *     var dev1 = new Vault.Database.SecretBackendRole("dev1", new()
 *     {
 *         Name = "dev1",
 *         Backend = db.Path,
 *         DbName = db.Mssqls.Apply(mssqls => mssqls[0]?.Name),
 *         CreationStatements = new[]
 *         {
 *             "CREATE LOGIN [{{name}}] WITH PASSWORD = '{{password}}';",
 *             "CREATE USER [{{name}}] FOR LOGIN [{{name}}];",
 *             "GRANT SELECT ON SCHEMA::dbo TO [{{name}}];",
 *         },
 *     });
 *     var dev2 = new Vault.Database.SecretBackendRole("dev2", new()
 *     {
 *         Name = "dev2",
 *         Backend = db.Path,
 *         DbName = db.Postgresqls.Apply(postgresqls => postgresqls[0]?.Name),
 *         CreationStatements = new[]
 *         {
 *             "CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';",
 *             "GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";",
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-vault/sdk/v6/go/vault/database"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		db, err := database.NewSecretsMount(ctx, "db", &database.SecretsMountArgs{
 * 			Path: pulumi.String("db"),
 * 			Mssqls: database.SecretsMountMssqlArray{
 * 				&database.SecretsMountMssqlArgs{
 * 					Name:          pulumi.String("db1"),
 * 					Username:      pulumi.String("sa"),
 * 					Password:      pulumi.String("super_secret_1"),
 * 					ConnectionUrl: pulumi.String("sqlserver://{{username}}:{{password}}@127.0.0.1:1433"),
 * 					AllowedRoles: pulumi.StringArray{
 * 						pulumi.String("dev1"),
 * 					},
 * 				},
 * 			},
 * 			Postgresqls: database.SecretsMountPostgresqlArray{
 * 				&database.SecretsMountPostgresqlArgs{
 * 					Name:             pulumi.String("db2"),
 * 					Username:         pulumi.String("postgres"),
 * 					Password:         pulumi.String("super_secret_2"),
 * 					ConnectionUrl:    pulumi.String("postgresql://{{username}}:{{password}}@127.0.0.1:5432/postgres"),
 * 					VerifyConnection: pulumi.Bool(true),
 * 					AllowedRoles: pulumi.StringArray{
 * 						pulumi.String("dev2"),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = database.NewSecretBackendRole(ctx, "dev1", &database.SecretBackendRoleArgs{
 * 			Name:    pulumi.String("dev1"),
 * 			Backend: db.Path,
 * 			DbName: pulumi.String(db.Mssqls.ApplyT(func(mssqls []database.SecretsMountMssql) (*string, error) {
 * 				return &mssqls[0].Name, nil
 * 			}).(pulumi.StringPtrOutput)),
 * 			CreationStatements: pulumi.StringArray{
 * 				pulumi.String("CREATE LOGIN [{{name}}] WITH PASSWORD = '{{password}}';"),
 * 				pulumi.String("CREATE USER [{{name}}] FOR LOGIN [{{name}}];"),
 * 				pulumi.String("GRANT SELECT ON SCHEMA::dbo TO [{{name}}];"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = database.NewSecretBackendRole(ctx, "dev2", &database.SecretBackendRoleArgs{
 * 			Name:    pulumi.String("dev2"),
 * 			Backend: db.Path,
 * 			DbName: pulumi.String(db.Postgresqls.ApplyT(func(postgresqls []database.SecretsMountPostgresql) (*string, error) {
 * 				return &postgresqls[0].Name, nil
 * 			}).(pulumi.StringPtrOutput)),
 * 			CreationStatements: pulumi.StringArray{
 * 				pulumi.String("CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';"),
 * 				pulumi.String("GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.vault.database.SecretsMount;
 * import com.pulumi.vault.database.SecretsMountArgs;
 * import com.pulumi.vault.database.inputs.SecretsMountMssqlArgs;
 * import com.pulumi.vault.database.inputs.SecretsMountPostgresqlArgs;
 * import com.pulumi.vault.database.SecretBackendRole;
 * import com.pulumi.vault.database.SecretBackendRoleArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var db = new SecretsMount("db", SecretsMountArgs.builder()
 *             .path("db")
 *             .mssqls(SecretsMountMssqlArgs.builder()
 *                 .name("db1")
 *                 .username("sa")
 *                 .password("super_secret_1")
 *                 .connectionUrl("sqlserver://{{username}}:{{password}}@127.0.0.1:1433")
 *                 .allowedRoles("dev1")
 *                 .build())
 *             .postgresqls(SecretsMountPostgresqlArgs.builder()
 *                 .name("db2")
 *                 .username("postgres")
 *                 .password("super_secret_2")
 *                 .connectionUrl("postgresql://{{username}}:{{password}}@127.0.0.1:5432/postgres")
 *                 .verifyConnection(true)
 *                 .allowedRoles("dev2")
 *                 .build())
 *             .build());
 *         var dev1 = new SecretBackendRole("dev1", SecretBackendRoleArgs.builder()
 *             .name("dev1")
 *             .backend(db.path())
 *             .dbName(db.mssqls().applyValue(mssqls -> mssqls[0].name()))
 *             .creationStatements(
 *                 "CREATE LOGIN [{{name}}] WITH PASSWORD = '{{password}}';",
 *                 "CREATE USER [{{name}}] FOR LOGIN [{{name}}];",
 *                 "GRANT SELECT ON SCHEMA::dbo TO [{{name}}];")
 *             .build());
 *         var dev2 = new SecretBackendRole("dev2", SecretBackendRoleArgs.builder()
 *             .name("dev2")
 *             .backend(db.path())
 *             .dbName(db.postgresqls().applyValue(postgresqls -> postgresqls[0].name()))
 *             .creationStatements(
 *                 "CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';",
 *                 "GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   db:
 *     type: vault:database:SecretsMount
 *     properties:
 *       path: db
 *       mssqls:
 *         - name: db1
 *           username: sa
 *           password: super_secret_1
 *           connectionUrl: sqlserver://{{username}}:{{password}}@127.0.0.1:1433
 *           allowedRoles:
 *             - dev1
 *       postgresqls:
 *         - name: db2
 *           username: postgres
 *           password: super_secret_2
 *           connectionUrl: postgresql://{{username}}:{{password}}@127.0.0.1:5432/postgres
 *           verifyConnection: true
 *           allowedRoles:
 *             - dev2
 *   dev1:
 *     type: vault:database:SecretBackendRole
 *     properties:
 *       name: dev1
 *       backend: ${db.path}
 *       dbName: ${db.mssqls[0].name}
 *       creationStatements:
 *         - CREATE LOGIN [{{name}}] WITH PASSWORD = '{{password}}';
 *         - CREATE USER [{{name}}] FOR LOGIN [{{name}}];
 *         - GRANT SELECT ON SCHEMA::dbo TO [{{name}}];
 *   dev2:
 *     type: vault:database:SecretBackendRole
 *     properties:
 *       name: dev2
 *       backend: ${db.path}
 *       dbName: ${db.postgresqls[0].name}
 *       creationStatements:
 *         - CREATE ROLE "{{name}}" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';
 *         - GRANT SELECT ON ALL TABLES IN SCHEMA public TO "{{name}}";
 * ```
 * 
 * ## Import
 * Database secret backend connections can be imported using the `path` e.g.
 * ```sh
 * $ pulumi import vault:database/secretsMount:SecretsMount db db
 * ```
 */
public class SecretsMount internal constructor(
    override val javaResource: com.pulumi.vault.database.SecretsMount,
) : KotlinCustomResource(javaResource, SecretsMountMapper) {
    /**
     * Accessor of the mount
     */
    public val accessor: Output
        get() = javaResource.accessor().applyValue({ args0 -> args0 })

    /**
     * Set of managed key registry entry names that the mount in question is allowed to access
     * The following arguments are common to all database engines:
     */
    public val allowedManagedKeys: Output>?
        get() = javaResource.allowedManagedKeys().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 -> args0 })
            }).orElse(null)
        })

    /**
     * List of headers to allow and pass from the request to the plugin
     */
    public val allowedResponseHeaders: Output>?
        get() = javaResource.allowedResponseHeaders().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 -> args0 })
            }).orElse(null)
        })

    /**
     * Specifies the list of keys that will not be HMAC'd by audit devices in the request data object.
     */
    public val auditNonHmacRequestKeys: Output>
        get() = javaResource.auditNonHmacRequestKeys().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            })
        })

    /**
     * Specifies the list of keys that will not be HMAC'd by audit devices in the response data object.
     */
    public val auditNonHmacResponseKeys: Output>
        get() = javaResource.auditNonHmacResponseKeys().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            })
        })

    /**
     * A nested block containing configuration options for Cassandra connections.
     * *See Configuration Options for more info*
     */
    public val cassandras: Output>?
        get() = javaResource.cassandras().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountCassandraToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for Couchbase connections.
     * *See Configuration Options for more info*
     */
    public val couchbases: Output>?
        get() = javaResource.couchbases().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountCouchbaseToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * Default lease duration for tokens and secrets in seconds
     */
    public val defaultLeaseTtlSeconds: Output
        get() = javaResource.defaultLeaseTtlSeconds().applyValue({ args0 -> args0 })

    /**
     * List of headers to allow and pass from the request to the plugin
     */
    public val delegatedAuthAccessors: Output>?
        get() = javaResource.delegatedAuthAccessors().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 -> args0 })
            }).orElse(null)
        })

    /**
     * Human-friendly description of the mount
     */
    public val description: Output?
        get() = javaResource.description().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for Elasticsearch connections.
     * *See Configuration Options for more info*
     */
    public val elasticsearches: Output>?
        get() = javaResource.elasticsearches().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        secretsMountElasticsearchToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The total number of database secrets engines configured.
     */
    public val engineCount: Output
        get() = javaResource.engineCount().applyValue({ args0 -> args0 })

    /**
     * Boolean flag that can be explicitly set to true to enable the secrets engine to access Vault's external entropy source
     */
    public val externalEntropyAccess: Output?
        get() = javaResource.externalEntropyAccess().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for SAP HanaDB connections.
     * *See Configuration Options for more info*
     */
    public val hanas: Output>?
        get() = javaResource.hanas().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountHanaToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * The key to use for signing plugin workload identity tokens
     */
    public val identityTokenKey: Output?
        get() = javaResource.identityTokenKey().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for InfluxDB connections.
     * *See Configuration Options for more info*
     */
    public val influxdbs: Output>?
        get() = javaResource.influxdbs().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountInfluxdbToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * Specifies whether to show this mount in the UI-specific listing endpoint
     */
    public val listingVisibility: Output?
        get() = javaResource.listingVisibility().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * Boolean flag that can be explicitly set to true to enforce local mount in HA environment
     */
    public val local: Output?
        get() = javaResource.local().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * Maximum possible lease duration for tokens and secrets in seconds
     */
    public val maxLeaseTtlSeconds: Output
        get() = javaResource.maxLeaseTtlSeconds().applyValue({ args0 -> args0 })

    /**
     * A nested block containing configuration options for MongoDB Atlas connections.
     * *See Configuration Options for more info*
     */
    public val mongodbatlas: Output>?
        get() = javaResource.mongodbatlas().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountMongodbatlaToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for MongoDB connections.
     * *See Configuration Options for more info*
     */
    public val mongodbs: Output>?
        get() = javaResource.mongodbs().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountMongodbToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for MSSQL connections.
     * *See Configuration Options for more info*
     */
    public val mssqls: Output>?
        get() = javaResource.mssqls().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountMssqlToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for Aurora MySQL connections.
     * *See Configuration Options for more info*
     */
    public val mysqlAuroras: Output>?
        get() = javaResource.mysqlAuroras().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountMysqlAuroraToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for legacy MySQL connections.
     * *See Configuration Options for more info*
     */
    public val mysqlLegacies: Output>?
        get() = javaResource.mysqlLegacies().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        secretsMountMysqlLegacyToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for RDS MySQL connections.
     * *See Configuration Options for more info*
     */
    public val mysqlRds: Output>?
        get() = javaResource.mysqlRds().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountMysqlRdToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for MySQL connections.
     * *See Configuration Options for more info*
     */
    public val mysqls: Output>?
        get() = javaResource.mysqls().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountMysqlToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * Target namespace. (requires Enterprise)
     */
    public val namespace: Output?
        get() = javaResource.namespace().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * Specifies mount type specific options that are passed to the backend
     */
    public val options: Output>?
        get() = javaResource.options().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(args0.value)
                }).toMap()
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for Oracle connections.
     * *See Configuration Options for more info*
     */
    public val oracles: Output>?
        get() = javaResource.oracles().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountOracleToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * List of headers to allow and pass from the request to the plugin
     */
    public val passthroughRequestHeaders: Output>?
        get() = javaResource.passthroughRequestHeaders().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 -> args0 })
            }).orElse(null)
        })

    /**
     * Where the secret backend will be mounted
     */
    public val path: Output
        get() = javaResource.path().applyValue({ args0 -> args0 })

    /**
     * Specifies the semantic version of the plugin to use, e.g. 'v1.0.0'
     */
    public val pluginVersion: Output?
        get() = javaResource.pluginVersion().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for PostgreSQL connections.
     * *See Configuration Options for more info*
     */
    public val postgresqls: Output>?
        get() = javaResource.postgresqls().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountPostgresqlToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for Redis connections.
     * *See Configuration Options for more info*
     */
    public val redis: Output>?
        get() = javaResource.redis().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountRediToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for Redis ElastiCache connections.
     * *See Configuration Options for more info*
     */
    public val redisElasticaches: Output>?
        get() = javaResource.redisElasticaches().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        secretsMountRedisElasticachToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * A nested block containing configuration options for AWS Redshift connections.
     * *See Configuration Options for more info*
     */
    public val redshifts: Output>?
        get() = javaResource.redshifts().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountRedshiftToKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * Boolean flag that can be explicitly set to true to enable seal wrapping for the mount, causing values stored by the mount to be wrapped by the seal's encryption capability
     */
    public val sealWrap: Output
        get() = javaResource.sealWrap().applyValue({ args0 -> args0 })

    /**
     * A nested block containing configuration options for Snowflake connections.
     * *See Configuration Options for more info*
     */
    public val snowflakes: Output>?
        get() = javaResource.snowflakes().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> secretsMountSnowflakeToKotlin(args0) })
                })
            }).orElse(null)
        })
}

public object SecretsMountMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.vault.database.SecretsMount::class == javaResource::class

    override fun map(javaResource: Resource): SecretsMount = SecretsMount(
        javaResource as
            com.pulumi.vault.database.SecretsMount,
    )
}

/**
 * @see [SecretsMount].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [SecretsMount].
 */
public suspend fun secretsMount(
    name: String,
    block: suspend SecretsMountResourceBuilder.() -> Unit,
): SecretsMount {
    val builder = SecretsMountResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [SecretsMount].
 * @param name The _unique_ name of the resulting resource.
 */
public fun secretsMount(name: String): SecretsMount {
    val builder = SecretsMountResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy