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

com.pulumi.gcp.artifactregistry.kotlin.RepositoryArgs.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: 8.10.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.artifactregistry.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.artifactregistry.RepositoryArgs.builder
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryCleanupPolicyArgs
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryCleanupPolicyArgsBuilder
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryDockerConfigArgs
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryDockerConfigArgsBuilder
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryMavenConfigArgs
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryMavenConfigArgsBuilder
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryRemoteRepositoryConfigArgs
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryRemoteRepositoryConfigArgsBuilder
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryVirtualRepositoryConfigArgs
import com.pulumi.gcp.artifactregistry.kotlin.inputs.RepositoryVirtualRepositoryConfigArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * A repository for storing artifacts
 * To get more information about Repository, see:
 * * [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)
 * ## Example Usage
 * ### Artifact Registry Repository Basic
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "my-repository",
 *     description: "example docker repository",
 *     format: "DOCKER",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="my-repository",
 *     description="example docker repository",
 *     format="DOCKER")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository",
 *         Description = "example docker repository",
 *         Format = "DOCKER",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository"),
 * 			Description:  pulumi.String("example docker repository"),
 * 			Format:       pulumi.String("DOCKER"),
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository")
 *             .description("example docker repository")
 *             .format("DOCKER")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository
 *       description: example docker repository
 *       format: DOCKER
 * ```
 * 
 * ### Artifact Registry Repository Docker
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "my-repository",
 *     description: "example docker repository",
 *     format: "DOCKER",
 *     dockerConfig: {
 *         immutableTags: true,
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="my-repository",
 *     description="example docker repository",
 *     format="DOCKER",
 *     docker_config=gcp.artifactregistry.RepositoryDockerConfigArgs(
 *         immutable_tags=True,
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository",
 *         Description = "example docker repository",
 *         Format = "DOCKER",
 *         DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs
 *         {
 *             ImmutableTags = true,
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository"),
 * 			Description:  pulumi.String("example docker repository"),
 * 			Format:       pulumi.String("DOCKER"),
 * 			DockerConfig: &artifactregistry.RepositoryDockerConfigArgs{
 * 				ImmutableTags: pulumi.Bool(true),
 * 			},
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository")
 *             .description("example docker repository")
 *             .format("DOCKER")
 *             .dockerConfig(RepositoryDockerConfigArgs.builder()
 *                 .immutableTags(true)
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository
 *       description: example docker repository
 *       format: DOCKER
 *       dockerConfig:
 *         immutableTags: true
 * ```
 * 
 * ### Artifact Registry Repository Cmek
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "my-repository",
 *     description: "example docker repository with cmek",
 *     format: "DOCKER",
 *     kmsKeyName: "kms-key",
 * });
 * const project = gcp.organizations.getProject({});
 * const cryptoKey = new gcp.kms.CryptoKeyIAMMember("crypto_key", {
 *     cryptoKeyId: "kms-key",
 *     role: "roles/cloudkms.cryptoKeyEncrypterDecrypter",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="my-repository",
 *     description="example docker repository with cmek",
 *     format="DOCKER",
 *     kms_key_name="kms-key")
 * project = gcp.organizations.get_project()
 * crypto_key = gcp.kms.CryptoKeyIAMMember("crypto_key",
 *     crypto_key_id="kms-key",
 *     role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository",
 *         Description = "example docker repository with cmek",
 *         Format = "DOCKER",
 *         KmsKeyName = "kms-key",
 *     });
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember("crypto_key", new()
 *     {
 *         CryptoKeyId = "kms-key",
 *         Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository"),
 * 			Description:  pulumi.String("example docker repository with cmek"),
 * 			Format:       pulumi.String("DOCKER"),
 * 			KmsKeyName:   pulumi.String("kms-key"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		project, err := organizations.LookupProject(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
 * 			CryptoKeyId: pulumi.String("kms-key"),
 * 			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"),
 * 			Member:      pulumi.String(fmt.Sprintf("serviceAccount:service-%[email protected]", project.Number)),
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.kms.CryptoKeyIAMMember;
 * import com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository")
 *             .description("example docker repository with cmek")
 *             .format("DOCKER")
 *             .kmsKeyName("kms-key")
 *             .build());
 *         final var project = OrganizationsFunctions.getProject();
 *         var cryptoKey = new CryptoKeyIAMMember("cryptoKey", CryptoKeyIAMMemberArgs.builder()
 *             .cryptoKeyId("kms-key")
 *             .role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository
 *       description: example docker repository with cmek
 *       format: DOCKER
 *       kmsKeyName: kms-key
 *   cryptoKey:
 *     type: gcp:kms:CryptoKeyIAMMember
 *     name: crypto_key
 *     properties:
 *       cryptoKeyId: kms-key
 *       role: roles/cloudkms.cryptoKeyEncrypterDecrypter
 *       member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com
 * variables:
 *   project:
 *     fn::invoke:
 *       Function: gcp:organizations:getProject
 *       Arguments: {}
 * ```
 * 
 * ### Artifact Registry Repository Virtual
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo_upstream_1 = new gcp.artifactregistry.Repository("my-repo-upstream-1", {
 *     location: "us-central1",
 *     repositoryId: "my-repository-upstream-1",
 *     description: "example docker repository (upstream source) 1",
 *     format: "DOCKER",
 * });
 * const my_repo_upstream_2 = new gcp.artifactregistry.Repository("my-repo-upstream-2", {
 *     location: "us-central1",
 *     repositoryId: "my-repository-upstream-2",
 *     description: "example docker repository (upstream source) 2",
 *     format: "DOCKER",
 * });
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "my-repository",
 *     description: "example virtual docker repository",
 *     format: "DOCKER",
 *     mode: "VIRTUAL_REPOSITORY",
 *     virtualRepositoryConfig: {
 *         upstreamPolicies: [
 *             {
 *                 id: "my-repository-upstream-1",
 *                 repository: my_repo_upstream_1.id,
 *                 priority: 20,
 *             },
 *             {
 *                 id: "my-repository-upstream-2",
 *                 repository: my_repo_upstream_2.id,
 *                 priority: 10,
 *             },
 *         ],
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo_upstream_1 = gcp.artifactregistry.Repository("my-repo-upstream-1",
 *     location="us-central1",
 *     repository_id="my-repository-upstream-1",
 *     description="example docker repository (upstream source) 1",
 *     format="DOCKER")
 * my_repo_upstream_2 = gcp.artifactregistry.Repository("my-repo-upstream-2",
 *     location="us-central1",
 *     repository_id="my-repository-upstream-2",
 *     description="example docker repository (upstream source) 2",
 *     format="DOCKER")
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="my-repository",
 *     description="example virtual docker repository",
 *     format="DOCKER",
 *     mode="VIRTUAL_REPOSITORY",
 *     virtual_repository_config=gcp.artifactregistry.RepositoryVirtualRepositoryConfigArgs(
 *         upstream_policies=[
 *             gcp.artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs(
 *                 id="my-repository-upstream-1",
 *                 repository=my_repo_upstream_1.id,
 *                 priority=20,
 *             ),
 *             gcp.artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs(
 *                 id="my-repository-upstream-2",
 *                 repository=my_repo_upstream_2.id,
 *                 priority=10,
 *             ),
 *         ],
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository("my-repo-upstream-1", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository-upstream-1",
 *         Description = "example docker repository (upstream source) 1",
 *         Format = "DOCKER",
 *     });
 *     var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository("my-repo-upstream-2", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository-upstream-2",
 *         Description = "example docker repository (upstream source) 2",
 *         Format = "DOCKER",
 *     });
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository",
 *         Description = "example virtual docker repository",
 *         Format = "DOCKER",
 *         Mode = "VIRTUAL_REPOSITORY",
 *         VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs
 *         {
 *             UpstreamPolicies = new[]
 *             {
 *                 new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs
 *                 {
 *                     Id = "my-repository-upstream-1",
 *                     Repository = my_repo_upstream_1.Id,
 *                     Priority = 20,
 *                 },
 *                 new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs
 *                 {
 *                     Id = "my-repository-upstream-2",
 *                     Repository = my_repo_upstream_2.Id,
 *                     Priority = 10,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo-upstream-1", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository-upstream-1"),
 * 			Description:  pulumi.String("example docker repository (upstream source) 1"),
 * 			Format:       pulumi.String("DOCKER"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo-upstream-2", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository-upstream-2"),
 * 			Description:  pulumi.String("example docker repository (upstream source) 2"),
 * 			Format:       pulumi.String("DOCKER"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository"),
 * 			Description:  pulumi.String("example virtual docker repository"),
 * 			Format:       pulumi.String("DOCKER"),
 * 			Mode:         pulumi.String("VIRTUAL_REPOSITORY"),
 * 			VirtualRepositoryConfig: &artifactregistry.RepositoryVirtualRepositoryConfigArgs{
 * 				UpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{
 * 					&artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{
 * 						Id:         pulumi.String("my-repository-upstream-1"),
 * 						Repository: my_repo_upstream_1.ID(),
 * 						Priority:   pulumi.Int(20),
 * 					},
 * 					&artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{
 * 						Id:         pulumi.String("my-repository-upstream-2"),
 * 						Repository: my_repo_upstream_2.ID(),
 * 						Priority:   pulumi.Int(10),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;
 * 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 my_repo_upstream_1 = new Repository("my-repo-upstream-1", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository-upstream-1")
 *             .description("example docker repository (upstream source) 1")
 *             .format("DOCKER")
 *             .build());
 *         var my_repo_upstream_2 = new Repository("my-repo-upstream-2", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository-upstream-2")
 *             .description("example docker repository (upstream source) 2")
 *             .format("DOCKER")
 *             .build());
 *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository")
 *             .description("example virtual docker repository")
 *             .format("DOCKER")
 *             .mode("VIRTUAL_REPOSITORY")
 *             .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()
 *                 .upstreamPolicies(
 *                     RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()
 *                         .id("my-repository-upstream-1")
 *                         .repository(my_repo_upstream_1.id())
 *                         .priority(20)
 *                         .build(),
 *                     RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()
 *                         .id("my-repository-upstream-2")
 *                         .repository(my_repo_upstream_2.id())
 *                         .priority(10)
 *                         .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo-upstream-1:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository-upstream-1
 *       description: example docker repository (upstream source) 1
 *       format: DOCKER
 *   my-repo-upstream-2:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository-upstream-2
 *       description: example docker repository (upstream source) 2
 *       format: DOCKER
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository
 *       description: example virtual docker repository
 *       format: DOCKER
 *       mode: VIRTUAL_REPOSITORY
 *       virtualRepositoryConfig:
 *         upstreamPolicies:
 *           - id: my-repository-upstream-1
 *             repository: ${["my-repo-upstream-1"].id}
 *             priority: 20
 *           - id: my-repository-upstream-2
 *             repository: ${["my-repo-upstream-2"].id}
 *             priority: 10
 * ```
 * 
 * ### Artifact Registry Repository Remote
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "my-repository",
 *     description: "example remote docker repository",
 *     format: "DOCKER",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "docker hub",
 *         dockerRepository: {
 *             publicRepository: "DOCKER_HUB",
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="my-repository",
 *     description="example remote docker repository",
 *     format="DOCKER",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="docker hub",
 *         docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(
 *             public_repository="DOCKER_HUB",
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository",
 *         Description = "example remote docker repository",
 *         Format = "DOCKER",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "docker hub",
 *             DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs
 *             {
 *                 PublicRepository = "DOCKER_HUB",
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("my-repository"),
 * 			Description:  pulumi.String("example remote docker repository"),
 * 			Format:       pulumi.String("DOCKER"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description: pulumi.String("docker hub"),
 * 				DockerRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{
 * 					PublicRepository: pulumi.String("DOCKER_HUB"),
 * 				},
 * 			},
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository")
 *             .description("example remote docker repository")
 *             .format("DOCKER")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("docker hub")
 *                 .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()
 *                     .publicRepository("DOCKER_HUB")
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository
 *       description: example remote docker repository
 *       format: DOCKER
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: docker hub
 *         dockerRepository:
 *           publicRepository: DOCKER_HUB
 * ```
 * 
 * ### Artifact Registry Repository Remote Apt
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "debian-buster",
 *     description: "example remote apt repository",
 *     format: "APT",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "Debian buster remote repository",
 *         aptRepository: {
 *             publicRepository: {
 *                 repositoryBase: "DEBIAN",
 *                 repositoryPath: "debian/dists/buster",
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="debian-buster",
 *     description="example remote apt repository",
 *     format="APT",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="Debian buster remote repository",
 *         apt_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs(
 *             public_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs(
 *                 repository_base="DEBIAN",
 *                 repository_path="debian/dists/buster",
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "debian-buster",
 *         Description = "example remote apt repository",
 *         Format = "APT",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "Debian buster remote repository",
 *             AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs
 *             {
 *                 PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs
 *                 {
 *                     RepositoryBase = "DEBIAN",
 *                     RepositoryPath = "debian/dists/buster",
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("debian-buster"),
 * 			Description:  pulumi.String("example remote apt repository"),
 * 			Format:       pulumi.String("APT"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description: pulumi.String("Debian buster remote repository"),
 * 				AptRepository: &artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{
 * 					PublicRepository: &artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{
 * 						RepositoryBase: pulumi.String("DEBIAN"),
 * 						RepositoryPath: pulumi.String("debian/dists/buster"),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("debian-buster")
 *             .description("example remote apt repository")
 *             .format("APT")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("Debian buster remote repository")
 *                 .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()
 *                     .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()
 *                         .repositoryBase("DEBIAN")
 *                         .repositoryPath("debian/dists/buster")
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: debian-buster
 *       description: example remote apt repository
 *       format: APT
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: Debian buster remote repository
 *         aptRepository:
 *           publicRepository:
 *             repositoryBase: DEBIAN
 *             repositoryPath: debian/dists/buster
 * ```
 * 
 * ### Artifact Registry Repository Remote Yum
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "centos-8",
 *     description: "example remote yum repository",
 *     format: "YUM",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "Centos 8 remote repository",
 *         yumRepository: {
 *             publicRepository: {
 *                 repositoryBase: "CENTOS",
 *                 repositoryPath: "centos/8-stream/BaseOS/x86_64/os",
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="centos-8",
 *     description="example remote yum repository",
 *     format="YUM",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="Centos 8 remote repository",
 *         yum_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs(
 *             public_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs(
 *                 repository_base="CENTOS",
 *                 repository_path="centos/8-stream/BaseOS/x86_64/os",
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "centos-8",
 *         Description = "example remote yum repository",
 *         Format = "YUM",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "Centos 8 remote repository",
 *             YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs
 *             {
 *                 PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs
 *                 {
 *                     RepositoryBase = "CENTOS",
 *                     RepositoryPath = "centos/8-stream/BaseOS/x86_64/os",
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("centos-8"),
 * 			Description:  pulumi.String("example remote yum repository"),
 * 			Format:       pulumi.String("YUM"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description: pulumi.String("Centos 8 remote repository"),
 * 				YumRepository: &artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{
 * 					PublicRepository: &artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{
 * 						RepositoryBase: pulumi.String("CENTOS"),
 * 						RepositoryPath: pulumi.String("centos/8-stream/BaseOS/x86_64/os"),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("centos-8")
 *             .description("example remote yum repository")
 *             .format("YUM")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("Centos 8 remote repository")
 *                 .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()
 *                     .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()
 *                         .repositoryBase("CENTOS")
 *                         .repositoryPath("centos/8-stream/BaseOS/x86_64/os")
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: centos-8
 *       description: example remote yum repository
 *       format: YUM
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: Centos 8 remote repository
 *         yumRepository:
 *           publicRepository:
 *             repositoryBase: CENTOS
 *             repositoryPath: centos/8-stream/BaseOS/x86_64/os
 * ```
 * 
 * ### Artifact Registry Repository Cleanup
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "my-repository",
 *     description: "example docker repository with cleanup policies",
 *     format: "DOCKER",
 *     cleanupPolicyDryRun: false,
 *     cleanupPolicies: [
 *         {
 *             id: "delete-prerelease",
 *             action: "DELETE",
 *             condition: {
 *                 tagState: "TAGGED",
 *                 tagPrefixes: [
 *                     "alpha",
 *                     "v0",
 *                 ],
 *                 olderThan: "2592000s",
 *             },
 *         },
 *         {
 *             id: "keep-tagged-release",
 *             action: "KEEP",
 *             condition: {
 *                 tagState: "TAGGED",
 *                 tagPrefixes: ["release"],
 *                 packageNamePrefixes: [
 *                     "webapp",
 *                     "mobile",
 *                 ],
 *             },
 *         },
 *         {
 *             id: "keep-minimum-versions",
 *             action: "KEEP",
 *             mostRecentVersions: {
 *                 packageNamePrefixes: [
 *                     "webapp",
 *                     "mobile",
 *                     "sandbox",
 *                 ],
 *                 keepCount: 5,
 *             },
 *         },
 *     ],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="my-repository",
 *     description="example docker repository with cleanup policies",
 *     format="DOCKER",
 *     cleanup_policy_dry_run=False,
 *     cleanup_policies=[
 *         gcp.artifactregistry.RepositoryCleanupPolicyArgs(
 *             id="delete-prerelease",
 *             action="DELETE",
 *             condition=gcp.artifactregistry.RepositoryCleanupPolicyConditionArgs(
 *                 tag_state="TAGGED",
 *                 tag_prefixes=[
 *                     "alpha",
 *                     "v0",
 *                 ],
 *                 older_than="2592000s",
 *             ),
 *         ),
 *         gcp.artifactregistry.RepositoryCleanupPolicyArgs(
 *             id="keep-tagged-release",
 *             action="KEEP",
 *             condition=gcp.artifactregistry.RepositoryCleanupPolicyConditionArgs(
 *                 tag_state="TAGGED",
 *                 tag_prefixes=["release"],
 *                 package_name_prefixes=[
 *                     "webapp",
 *                     "mobile",
 *                 ],
 *             ),
 *         ),
 *         gcp.artifactregistry.RepositoryCleanupPolicyArgs(
 *             id="keep-minimum-versions",
 *             action="KEEP",
 *             most_recent_versions=gcp.artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs(
 *                 package_name_prefixes=[
 *                     "webapp",
 *                     "mobile",
 *                     "sandbox",
 *                 ],
 *                 keep_count=5,
 *             ),
 *         ),
 *     ])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "my-repository",
 *         Description = "example docker repository with cleanup policies",
 *         Format = "DOCKER",
 *         CleanupPolicyDryRun = false,
 *         CleanupPolicies = new[]
 *         {
 *             new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs
 *             {
 *                 Id = "delete-prerelease",
 *                 Action = "DELETE",
 *                 Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs
 *                 {
 *                     TagState = "TAGGED",
 *                     TagPrefixes = new[]
 *                     {
 *                         "alpha",
 *                         "v0",
 *                     },
 *                     OlderThan = "2592000s",
 *                 },
 *             },
 *             new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs
 *             {
 *                 Id = "keep-tagged-release",
 *                 Action = "KEEP",
 *                 Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs
 *                 {
 *                     TagState = "TAGGED",
 *                     TagPrefixes = new[]
 *                     {
 *                         "release",
 *                     },
 *                     PackageNamePrefixes = new[]
 *                     {
 *                         "webapp",
 *                         "mobile",
 *                     },
 *                 },
 *             },
 *             new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs
 *             {
 *                 Id = "keep-minimum-versions",
 *                 Action = "KEEP",
 *                 MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs
 *                 {
 *                     PackageNamePrefixes = new[]
 *                     {
 *                         "webapp",
 *                         "mobile",
 *                         "sandbox",
 *                     },
 *                     KeepCount = 5,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:            pulumi.String("us-central1"),
 * 			RepositoryId:        pulumi.String("my-repository"),
 * 			Description:         pulumi.String("example docker repository with cleanup policies"),
 * 			Format:              pulumi.String("DOCKER"),
 * 			CleanupPolicyDryRun: pulumi.Bool(false),
 * 			CleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{
 * 				&artifactregistry.RepositoryCleanupPolicyArgs{
 * 					Id:     pulumi.String("delete-prerelease"),
 * 					Action: pulumi.String("DELETE"),
 * 					Condition: &artifactregistry.RepositoryCleanupPolicyConditionArgs{
 * 						TagState: pulumi.String("TAGGED"),
 * 						TagPrefixes: pulumi.StringArray{
 * 							pulumi.String("alpha"),
 * 							pulumi.String("v0"),
 * 						},
 * 						OlderThan: pulumi.String("2592000s"),
 * 					},
 * 				},
 * 				&artifactregistry.RepositoryCleanupPolicyArgs{
 * 					Id:     pulumi.String("keep-tagged-release"),
 * 					Action: pulumi.String("KEEP"),
 * 					Condition: &artifactregistry.RepositoryCleanupPolicyConditionArgs{
 * 						TagState: pulumi.String("TAGGED"),
 * 						TagPrefixes: pulumi.StringArray{
 * 							pulumi.String("release"),
 * 						},
 * 						PackageNamePrefixes: pulumi.StringArray{
 * 							pulumi.String("webapp"),
 * 							pulumi.String("mobile"),
 * 						},
 * 					},
 * 				},
 * 				&artifactregistry.RepositoryCleanupPolicyArgs{
 * 					Id:     pulumi.String("keep-minimum-versions"),
 * 					Action: pulumi.String("KEEP"),
 * 					MostRecentVersions: &artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{
 * 						PackageNamePrefixes: pulumi.StringArray{
 * 							pulumi.String("webapp"),
 * 							pulumi.String("mobile"),
 * 							pulumi.String("sandbox"),
 * 						},
 * 						KeepCount: pulumi.Int(5),
 * 					},
 * 				},
 * 			},
 * 		})
 * 		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.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;
 * 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 my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("my-repository")
 *             .description("example docker repository with cleanup policies")
 *             .format("DOCKER")
 *             .cleanupPolicyDryRun(false)
 *             .cleanupPolicies(
 *                 RepositoryCleanupPolicyArgs.builder()
 *                     .id("delete-prerelease")
 *                     .action("DELETE")
 *                     .condition(RepositoryCleanupPolicyConditionArgs.builder()
 *                         .tagState("TAGGED")
 *                         .tagPrefixes(
 *                             "alpha",
 *                             "v0")
 *                         .olderThan("2592000s")
 *                         .build())
 *                     .build(),
 *                 RepositoryCleanupPolicyArgs.builder()
 *                     .id("keep-tagged-release")
 *                     .action("KEEP")
 *                     .condition(RepositoryCleanupPolicyConditionArgs.builder()
 *                         .tagState("TAGGED")
 *                         .tagPrefixes("release")
 *                         .packageNamePrefixes(
 *                             "webapp",
 *                             "mobile")
 *                         .build())
 *                     .build(),
 *                 RepositoryCleanupPolicyArgs.builder()
 *                     .id("keep-minimum-versions")
 *                     .action("KEEP")
 *                     .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()
 *                         .packageNamePrefixes(
 *                             "webapp",
 *                             "mobile",
 *                             "sandbox")
 *                         .keepCount(5)
 *                         .build())
 *                     .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: my-repository
 *       description: example docker repository with cleanup policies
 *       format: DOCKER
 *       cleanupPolicyDryRun: false
 *       cleanupPolicies:
 *         - id: delete-prerelease
 *           action: DELETE
 *           condition:
 *             tagState: TAGGED
 *             tagPrefixes:
 *               - alpha
 *               - v0
 *             olderThan: 2592000s
 *         - id: keep-tagged-release
 *           action: KEEP
 *           condition:
 *             tagState: TAGGED
 *             tagPrefixes:
 *               - release
 *             packageNamePrefixes:
 *               - webapp
 *               - mobile
 *         - id: keep-minimum-versions
 *           action: KEEP
 *           mostRecentVersions:
 *             packageNamePrefixes:
 *               - webapp
 *               - mobile
 *               - sandbox
 *             keepCount: 5
 * ```
 * 
 * ### Artifact Registry Repository Remote Dockerhub Auth
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", {
 *     secretId: "example-secret",
 *     replication: {
 *         auto: {},
 *     },
 * });
 * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", {
 *     secret: example_remote_secret.id,
 *     secretData: "remote-password",
 * });
 * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", {
 *     secretId: example_remote_secret.id,
 *     role: "roles/secretmanager.secretAccessor",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),
 * });
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "example-dockerhub-remote",
 *     description: "example remote dockerhub repository with credentials",
 *     format: "DOCKER",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "docker hub with custom credentials",
 *         disableUpstreamValidation: true,
 *         dockerRepository: {
 *             publicRepository: "DOCKER_HUB",
 *         },
 *         upstreamCredentials: {
 *             usernamePasswordCredentials: {
 *                 username: "remote-username",
 *                 passwordSecretVersion: example_remote_secretVersion.name,
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * example_remote_secret = gcp.secretmanager.Secret("example-remote-secret",
 *     secret_id="example-secret",
 *     replication=gcp.secretmanager.SecretReplicationArgs(
 *         auto=gcp.secretmanager.SecretReplicationAutoArgs(),
 *     ))
 * example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version",
 *     secret=example_remote_secret.id,
 *     secret_data="remote-password")
 * secret_access = gcp.secretmanager.SecretIamMember("secret-access",
 *     secret_id=example_remote_secret.id,
 *     role="roles/secretmanager.secretAccessor",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com")
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="example-dockerhub-remote",
 *     description="example remote dockerhub repository with credentials",
 *     format="DOCKER",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="docker hub with custom credentials",
 *         disable_upstream_validation=True,
 *         docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(
 *             public_repository="DOCKER_HUB",
 *         ),
 *         upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(
 *             username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(
 *                 username="remote-username",
 *                 password_secret_version=example_remote_secret_version.name,
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new()
 *     {
 *         SecretId = "example-secret",
 *         Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
 *         {
 *             Auto = null,
 *         },
 *     });
 *     var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new()
 *     {
 *         Secret = example_remote_secret.Id,
 *         SecretData = "remote-password",
 *     });
 *     var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new()
 *     {
 *         SecretId = example_remote_secret.Id,
 *         Role = "roles/secretmanager.secretAccessor",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com",
 *     });
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "example-dockerhub-remote",
 *         Description = "example remote dockerhub repository with credentials",
 *         Format = "DOCKER",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "docker hub with custom credentials",
 *             DisableUpstreamValidation = true,
 *             DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs
 *             {
 *                 PublicRepository = "DOCKER_HUB",
 *             },
 *             UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs
 *             {
 *                 UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs
 *                 {
 *                     Username = "remote-username",
 *                     PasswordSecretVersion = example_remote_secretVersion.Name,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		project, err := organizations.LookupProject(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{
 * 			SecretId: pulumi.String("example-secret"),
 * 			Replication: &secretmanager.SecretReplicationArgs{
 * 				Auto: nil,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{
 * 			Secret:     example_remote_secret.ID(),
 * 			SecretData: pulumi.String("remote-password"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{
 * 			SecretId: example_remote_secret.ID(),
 * 			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
 * 			Member:   pulumi.String(fmt.Sprintf("serviceAccount:service-%[email protected]", project.Number)),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("example-dockerhub-remote"),
 * 			Description:  pulumi.String("example remote dockerhub repository with credentials"),
 * 			Format:       pulumi.String("DOCKER"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description:               pulumi.String("docker hub with custom credentials"),
 * 				DisableUpstreamValidation: pulumi.Bool(true),
 * 				DockerRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{
 * 					PublicRepository: pulumi.String("DOCKER_HUB"),
 * 				},
 * 				UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{
 * 					UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{
 * 						Username:              pulumi.String("remote-username"),
 * 						PasswordSecretVersion: example_remote_secretVersion.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.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.secretmanager.Secret;
 * import com.pulumi.gcp.secretmanager.SecretArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
 * import com.pulumi.gcp.secretmanager.SecretVersion;
 * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
 * import com.pulumi.gcp.secretmanager.SecretIamMember;
 * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
 * import com.pulumi.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;
 * 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) {
 *         final var project = OrganizationsFunctions.getProject();
 *         var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder()
 *             .secretId("example-secret")
 *             .replication(SecretReplicationArgs.builder()
 *                 .auto()
 *                 .build())
 *             .build());
 *         var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder()
 *             .secret(example_remote_secret.id())
 *             .secretData("remote-password")
 *             .build());
 *         var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder()
 *             .secretId(example_remote_secret.id())
 *             .role("roles/secretmanager.secretAccessor")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("example-dockerhub-remote")
 *             .description("example remote dockerhub repository with credentials")
 *             .format("DOCKER")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("docker hub with custom credentials")
 *                 .disableUpstreamValidation(true)
 *                 .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()
 *                     .publicRepository("DOCKER_HUB")
 *                     .build())
 *                 .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()
 *                     .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()
 *                         .username("remote-username")
 *                         .passwordSecretVersion(example_remote_secretVersion.name())
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example-remote-secret:
 *     type: gcp:secretmanager:Secret
 *     properties:
 *       secretId: example-secret
 *       replication:
 *         auto: {}
 *   example-remote-secretVersion:
 *     type: gcp:secretmanager:SecretVersion
 *     name: example-remote-secret_version
 *     properties:
 *       secret: ${["example-remote-secret"].id}
 *       secretData: remote-password
 *   secret-access:
 *     type: gcp:secretmanager:SecretIamMember
 *     properties:
 *       secretId: ${["example-remote-secret"].id}
 *       role: roles/secretmanager.secretAccessor
 *       member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: example-dockerhub-remote
 *       description: example remote dockerhub repository with credentials
 *       format: DOCKER
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: docker hub with custom credentials
 *         disableUpstreamValidation: true
 *         dockerRepository:
 *           publicRepository: DOCKER_HUB
 *         upstreamCredentials:
 *           usernamePasswordCredentials:
 *             username: remote-username
 *             passwordSecretVersion: ${["example-remote-secretVersion"].name}
 * variables:
 *   project:
 *     fn::invoke:
 *       Function: gcp:organizations:getProject
 *       Arguments: {}
 * ```
 * 
 * ### Artifact Registry Repository Remote Docker Custom With Auth
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", {
 *     secretId: "example-secret",
 *     replication: {
 *         auto: {},
 *     },
 * });
 * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", {
 *     secret: example_remote_secret.id,
 *     secretData: "remote-password",
 * });
 * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", {
 *     secretId: example_remote_secret.id,
 *     role: "roles/secretmanager.secretAccessor",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),
 * });
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "example-docker-custom-remote",
 *     description: "example remote custom docker repository with credentials",
 *     format: "DOCKER",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "custom docker remote with credentials",
 *         disableUpstreamValidation: true,
 *         dockerRepository: {
 *             customRepository: {
 *                 uri: "https://registry-1.docker.io",
 *             },
 *         },
 *         upstreamCredentials: {
 *             usernamePasswordCredentials: {
 *                 username: "remote-username",
 *                 passwordSecretVersion: example_remote_secretVersion.name,
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * example_remote_secret = gcp.secretmanager.Secret("example-remote-secret",
 *     secret_id="example-secret",
 *     replication=gcp.secretmanager.SecretReplicationArgs(
 *         auto=gcp.secretmanager.SecretReplicationAutoArgs(),
 *     ))
 * example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version",
 *     secret=example_remote_secret.id,
 *     secret_data="remote-password")
 * secret_access = gcp.secretmanager.SecretIamMember("secret-access",
 *     secret_id=example_remote_secret.id,
 *     role="roles/secretmanager.secretAccessor",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com")
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="example-docker-custom-remote",
 *     description="example remote custom docker repository with credentials",
 *     format="DOCKER",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="custom docker remote with credentials",
 *         disable_upstream_validation=True,
 *         docker_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs(
 *             custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs(
 *                 uri="https://registry-1.docker.io",
 *             ),
 *         ),
 *         upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(
 *             username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(
 *                 username="remote-username",
 *                 password_secret_version=example_remote_secret_version.name,
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new()
 *     {
 *         SecretId = "example-secret",
 *         Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
 *         {
 *             Auto = null,
 *         },
 *     });
 *     var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new()
 *     {
 *         Secret = example_remote_secret.Id,
 *         SecretData = "remote-password",
 *     });
 *     var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new()
 *     {
 *         SecretId = example_remote_secret.Id,
 *         Role = "roles/secretmanager.secretAccessor",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com",
 *     });
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "example-docker-custom-remote",
 *         Description = "example remote custom docker repository with credentials",
 *         Format = "DOCKER",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "custom docker remote with credentials",
 *             DisableUpstreamValidation = true,
 *             DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs
 *             {
 *                 CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs
 *                 {
 *                     Uri = "https://registry-1.docker.io",
 *                 },
 *             },
 *             UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs
 *             {
 *                 UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs
 *                 {
 *                     Username = "remote-username",
 *                     PasswordSecretVersion = example_remote_secretVersion.Name,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		project, err := organizations.LookupProject(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{
 * 			SecretId: pulumi.String("example-secret"),
 * 			Replication: &secretmanager.SecretReplicationArgs{
 * 				Auto: nil,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{
 * 			Secret:     example_remote_secret.ID(),
 * 			SecretData: pulumi.String("remote-password"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{
 * 			SecretId: example_remote_secret.ID(),
 * 			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
 * 			Member:   pulumi.String(fmt.Sprintf("serviceAccount:service-%[email protected]", project.Number)),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("example-docker-custom-remote"),
 * 			Description:  pulumi.String("example remote custom docker repository with credentials"),
 * 			Format:       pulumi.String("DOCKER"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description:               pulumi.String("custom docker remote with credentials"),
 * 				DisableUpstreamValidation: pulumi.Bool(true),
 * 				DockerRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{
 * 					CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{
 * 						Uri: pulumi.String("https://registry-1.docker.io"),
 * 					},
 * 				},
 * 				UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{
 * 					UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{
 * 						Username:              pulumi.String("remote-username"),
 * 						PasswordSecretVersion: example_remote_secretVersion.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.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.secretmanager.Secret;
 * import com.pulumi.gcp.secretmanager.SecretArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
 * import com.pulumi.gcp.secretmanager.SecretVersion;
 * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
 * import com.pulumi.gcp.secretmanager.SecretIamMember;
 * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
 * import com.pulumi.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;
 * 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) {
 *         final var project = OrganizationsFunctions.getProject();
 *         var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder()
 *             .secretId("example-secret")
 *             .replication(SecretReplicationArgs.builder()
 *                 .auto()
 *                 .build())
 *             .build());
 *         var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder()
 *             .secret(example_remote_secret.id())
 *             .secretData("remote-password")
 *             .build());
 *         var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder()
 *             .secretId(example_remote_secret.id())
 *             .role("roles/secretmanager.secretAccessor")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("example-docker-custom-remote")
 *             .description("example remote custom docker repository with credentials")
 *             .format("DOCKER")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("custom docker remote with credentials")
 *                 .disableUpstreamValidation(true)
 *                 .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()
 *                     .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()
 *                         .uri("https://registry-1.docker.io")
 *                         .build())
 *                     .build())
 *                 .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()
 *                     .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()
 *                         .username("remote-username")
 *                         .passwordSecretVersion(example_remote_secretVersion.name())
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example-remote-secret:
 *     type: gcp:secretmanager:Secret
 *     properties:
 *       secretId: example-secret
 *       replication:
 *         auto: {}
 *   example-remote-secretVersion:
 *     type: gcp:secretmanager:SecretVersion
 *     name: example-remote-secret_version
 *     properties:
 *       secret: ${["example-remote-secret"].id}
 *       secretData: remote-password
 *   secret-access:
 *     type: gcp:secretmanager:SecretIamMember
 *     properties:
 *       secretId: ${["example-remote-secret"].id}
 *       role: roles/secretmanager.secretAccessor
 *       member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: example-docker-custom-remote
 *       description: example remote custom docker repository with credentials
 *       format: DOCKER
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: custom docker remote with credentials
 *         disableUpstreamValidation: true
 *         dockerRepository:
 *           customRepository:
 *             uri: https://registry-1.docker.io
 *         upstreamCredentials:
 *           usernamePasswordCredentials:
 *             username: remote-username
 *             passwordSecretVersion: ${["example-remote-secretVersion"].name}
 * variables:
 *   project:
 *     fn::invoke:
 *       Function: gcp:organizations:getProject
 *       Arguments: {}
 * ```
 * 
 * ### Artifact Registry Repository Remote Maven Custom With Auth
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", {
 *     secretId: "example-secret",
 *     replication: {
 *         auto: {},
 *     },
 * });
 * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", {
 *     secret: example_remote_secret.id,
 *     secretData: "remote-password",
 * });
 * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", {
 *     secretId: example_remote_secret.id,
 *     role: "roles/secretmanager.secretAccessor",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),
 * });
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "example-maven-custom-remote",
 *     description: "example remote custom maven repository with credentials",
 *     format: "MAVEN",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "custom maven remote with credentials",
 *         disableUpstreamValidation: true,
 *         mavenRepository: {
 *             customRepository: {
 *                 uri: "https://my.maven.registry",
 *             },
 *         },
 *         upstreamCredentials: {
 *             usernamePasswordCredentials: {
 *                 username: "remote-username",
 *                 passwordSecretVersion: example_remote_secretVersion.name,
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * example_remote_secret = gcp.secretmanager.Secret("example-remote-secret",
 *     secret_id="example-secret",
 *     replication=gcp.secretmanager.SecretReplicationArgs(
 *         auto=gcp.secretmanager.SecretReplicationAutoArgs(),
 *     ))
 * example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version",
 *     secret=example_remote_secret.id,
 *     secret_data="remote-password")
 * secret_access = gcp.secretmanager.SecretIamMember("secret-access",
 *     secret_id=example_remote_secret.id,
 *     role="roles/secretmanager.secretAccessor",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com")
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="example-maven-custom-remote",
 *     description="example remote custom maven repository with credentials",
 *     format="MAVEN",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="custom maven remote with credentials",
 *         disable_upstream_validation=True,
 *         maven_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs(
 *             custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs(
 *                 uri="https://my.maven.registry",
 *             ),
 *         ),
 *         upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(
 *             username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(
 *                 username="remote-username",
 *                 password_secret_version=example_remote_secret_version.name,
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new()
 *     {
 *         SecretId = "example-secret",
 *         Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
 *         {
 *             Auto = null,
 *         },
 *     });
 *     var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new()
 *     {
 *         Secret = example_remote_secret.Id,
 *         SecretData = "remote-password",
 *     });
 *     var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new()
 *     {
 *         SecretId = example_remote_secret.Id,
 *         Role = "roles/secretmanager.secretAccessor",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com",
 *     });
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "example-maven-custom-remote",
 *         Description = "example remote custom maven repository with credentials",
 *         Format = "MAVEN",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "custom maven remote with credentials",
 *             DisableUpstreamValidation = true,
 *             MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs
 *             {
 *                 CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs
 *                 {
 *                     Uri = "https://my.maven.registry",
 *                 },
 *             },
 *             UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs
 *             {
 *                 UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs
 *                 {
 *                     Username = "remote-username",
 *                     PasswordSecretVersion = example_remote_secretVersion.Name,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		project, err := organizations.LookupProject(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{
 * 			SecretId: pulumi.String("example-secret"),
 * 			Replication: &secretmanager.SecretReplicationArgs{
 * 				Auto: nil,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{
 * 			Secret:     example_remote_secret.ID(),
 * 			SecretData: pulumi.String("remote-password"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{
 * 			SecretId: example_remote_secret.ID(),
 * 			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
 * 			Member:   pulumi.String(fmt.Sprintf("serviceAccount:service-%[email protected]", project.Number)),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("example-maven-custom-remote"),
 * 			Description:  pulumi.String("example remote custom maven repository with credentials"),
 * 			Format:       pulumi.String("MAVEN"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description:               pulumi.String("custom maven remote with credentials"),
 * 				DisableUpstreamValidation: pulumi.Bool(true),
 * 				MavenRepository: &artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{
 * 					CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{
 * 						Uri: pulumi.String("https://my.maven.registry"),
 * 					},
 * 				},
 * 				UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{
 * 					UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{
 * 						Username:              pulumi.String("remote-username"),
 * 						PasswordSecretVersion: example_remote_secretVersion.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.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.secretmanager.Secret;
 * import com.pulumi.gcp.secretmanager.SecretArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
 * import com.pulumi.gcp.secretmanager.SecretVersion;
 * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
 * import com.pulumi.gcp.secretmanager.SecretIamMember;
 * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
 * import com.pulumi.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;
 * 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) {
 *         final var project = OrganizationsFunctions.getProject();
 *         var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder()
 *             .secretId("example-secret")
 *             .replication(SecretReplicationArgs.builder()
 *                 .auto()
 *                 .build())
 *             .build());
 *         var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder()
 *             .secret(example_remote_secret.id())
 *             .secretData("remote-password")
 *             .build());
 *         var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder()
 *             .secretId(example_remote_secret.id())
 *             .role("roles/secretmanager.secretAccessor")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("example-maven-custom-remote")
 *             .description("example remote custom maven repository with credentials")
 *             .format("MAVEN")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("custom maven remote with credentials")
 *                 .disableUpstreamValidation(true)
 *                 .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()
 *                     .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()
 *                         .uri("https://my.maven.registry")
 *                         .build())
 *                     .build())
 *                 .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()
 *                     .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()
 *                         .username("remote-username")
 *                         .passwordSecretVersion(example_remote_secretVersion.name())
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example-remote-secret:
 *     type: gcp:secretmanager:Secret
 *     properties:
 *       secretId: example-secret
 *       replication:
 *         auto: {}
 *   example-remote-secretVersion:
 *     type: gcp:secretmanager:SecretVersion
 *     name: example-remote-secret_version
 *     properties:
 *       secret: ${["example-remote-secret"].id}
 *       secretData: remote-password
 *   secret-access:
 *     type: gcp:secretmanager:SecretIamMember
 *     properties:
 *       secretId: ${["example-remote-secret"].id}
 *       role: roles/secretmanager.secretAccessor
 *       member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: example-maven-custom-remote
 *       description: example remote custom maven repository with credentials
 *       format: MAVEN
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: custom maven remote with credentials
 *         disableUpstreamValidation: true
 *         mavenRepository:
 *           customRepository:
 *             uri: https://my.maven.registry
 *         upstreamCredentials:
 *           usernamePasswordCredentials:
 *             username: remote-username
 *             passwordSecretVersion: ${["example-remote-secretVersion"].name}
 * variables:
 *   project:
 *     fn::invoke:
 *       Function: gcp:organizations:getProject
 *       Arguments: {}
 * ```
 * 
 * ### Artifact Registry Repository Remote Npm Custom With Auth
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", {
 *     secretId: "example-secret",
 *     replication: {
 *         auto: {},
 *     },
 * });
 * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", {
 *     secret: example_remote_secret.id,
 *     secretData: "remote-password",
 * });
 * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", {
 *     secretId: example_remote_secret.id,
 *     role: "roles/secretmanager.secretAccessor",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),
 * });
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "example-npm-custom-remote",
 *     description: "example remote custom npm repository with credentials",
 *     format: "NPM",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "custom npm with credentials",
 *         disableUpstreamValidation: true,
 *         npmRepository: {
 *             customRepository: {
 *                 uri: "https://my.npm.registry",
 *             },
 *         },
 *         upstreamCredentials: {
 *             usernamePasswordCredentials: {
 *                 username: "remote-username",
 *                 passwordSecretVersion: example_remote_secretVersion.name,
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * example_remote_secret = gcp.secretmanager.Secret("example-remote-secret",
 *     secret_id="example-secret",
 *     replication=gcp.secretmanager.SecretReplicationArgs(
 *         auto=gcp.secretmanager.SecretReplicationAutoArgs(),
 *     ))
 * example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version",
 *     secret=example_remote_secret.id,
 *     secret_data="remote-password")
 * secret_access = gcp.secretmanager.SecretIamMember("secret-access",
 *     secret_id=example_remote_secret.id,
 *     role="roles/secretmanager.secretAccessor",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com")
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="example-npm-custom-remote",
 *     description="example remote custom npm repository with credentials",
 *     format="NPM",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="custom npm with credentials",
 *         disable_upstream_validation=True,
 *         npm_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs(
 *             custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs(
 *                 uri="https://my.npm.registry",
 *             ),
 *         ),
 *         upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(
 *             username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(
 *                 username="remote-username",
 *                 password_secret_version=example_remote_secret_version.name,
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new()
 *     {
 *         SecretId = "example-secret",
 *         Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
 *         {
 *             Auto = null,
 *         },
 *     });
 *     var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new()
 *     {
 *         Secret = example_remote_secret.Id,
 *         SecretData = "remote-password",
 *     });
 *     var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new()
 *     {
 *         SecretId = example_remote_secret.Id,
 *         Role = "roles/secretmanager.secretAccessor",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com",
 *     });
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "example-npm-custom-remote",
 *         Description = "example remote custom npm repository with credentials",
 *         Format = "NPM",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "custom npm with credentials",
 *             DisableUpstreamValidation = true,
 *             NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs
 *             {
 *                 CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs
 *                 {
 *                     Uri = "https://my.npm.registry",
 *                 },
 *             },
 *             UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs
 *             {
 *                 UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs
 *                 {
 *                     Username = "remote-username",
 *                     PasswordSecretVersion = example_remote_secretVersion.Name,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		project, err := organizations.LookupProject(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{
 * 			SecretId: pulumi.String("example-secret"),
 * 			Replication: &secretmanager.SecretReplicationArgs{
 * 				Auto: nil,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{
 * 			Secret:     example_remote_secret.ID(),
 * 			SecretData: pulumi.String("remote-password"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{
 * 			SecretId: example_remote_secret.ID(),
 * 			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
 * 			Member:   pulumi.String(fmt.Sprintf("serviceAccount:service-%[email protected]", project.Number)),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("example-npm-custom-remote"),
 * 			Description:  pulumi.String("example remote custom npm repository with credentials"),
 * 			Format:       pulumi.String("NPM"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description:               pulumi.String("custom npm with credentials"),
 * 				DisableUpstreamValidation: pulumi.Bool(true),
 * 				NpmRepository: &artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{
 * 					CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{
 * 						Uri: pulumi.String("https://my.npm.registry"),
 * 					},
 * 				},
 * 				UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{
 * 					UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{
 * 						Username:              pulumi.String("remote-username"),
 * 						PasswordSecretVersion: example_remote_secretVersion.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.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.secretmanager.Secret;
 * import com.pulumi.gcp.secretmanager.SecretArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
 * import com.pulumi.gcp.secretmanager.SecretVersion;
 * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
 * import com.pulumi.gcp.secretmanager.SecretIamMember;
 * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
 * import com.pulumi.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;
 * 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) {
 *         final var project = OrganizationsFunctions.getProject();
 *         var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder()
 *             .secretId("example-secret")
 *             .replication(SecretReplicationArgs.builder()
 *                 .auto()
 *                 .build())
 *             .build());
 *         var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder()
 *             .secret(example_remote_secret.id())
 *             .secretData("remote-password")
 *             .build());
 *         var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder()
 *             .secretId(example_remote_secret.id())
 *             .role("roles/secretmanager.secretAccessor")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("example-npm-custom-remote")
 *             .description("example remote custom npm repository with credentials")
 *             .format("NPM")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("custom npm with credentials")
 *                 .disableUpstreamValidation(true)
 *                 .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()
 *                     .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()
 *                         .uri("https://my.npm.registry")
 *                         .build())
 *                     .build())
 *                 .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()
 *                     .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()
 *                         .username("remote-username")
 *                         .passwordSecretVersion(example_remote_secretVersion.name())
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example-remote-secret:
 *     type: gcp:secretmanager:Secret
 *     properties:
 *       secretId: example-secret
 *       replication:
 *         auto: {}
 *   example-remote-secretVersion:
 *     type: gcp:secretmanager:SecretVersion
 *     name: example-remote-secret_version
 *     properties:
 *       secret: ${["example-remote-secret"].id}
 *       secretData: remote-password
 *   secret-access:
 *     type: gcp:secretmanager:SecretIamMember
 *     properties:
 *       secretId: ${["example-remote-secret"].id}
 *       role: roles/secretmanager.secretAccessor
 *       member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: example-npm-custom-remote
 *       description: example remote custom npm repository with credentials
 *       format: NPM
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: custom npm with credentials
 *         disableUpstreamValidation: true
 *         npmRepository:
 *           customRepository:
 *             uri: https://my.npm.registry
 *         upstreamCredentials:
 *           usernamePasswordCredentials:
 *             username: remote-username
 *             passwordSecretVersion: ${["example-remote-secretVersion"].name}
 * variables:
 *   project:
 *     fn::invoke:
 *       Function: gcp:organizations:getProject
 *       Arguments: {}
 * ```
 * 
 * ### Artifact Registry Repository Remote Python Custom With Auth
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const example_remote_secret = new gcp.secretmanager.Secret("example-remote-secret", {
 *     secretId: "example-secret",
 *     replication: {
 *         auto: {},
 *     },
 * });
 * const example_remote_secretVersion = new gcp.secretmanager.SecretVersion("example-remote-secret_version", {
 *     secret: example_remote_secret.id,
 *     secretData: "remote-password",
 * });
 * const secret_access = new gcp.secretmanager.SecretIamMember("secret-access", {
 *     secretId: example_remote_secret.id,
 *     role: "roles/secretmanager.secretAccessor",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),
 * });
 * const my_repo = new gcp.artifactregistry.Repository("my-repo", {
 *     location: "us-central1",
 *     repositoryId: "example-python-custom-remote",
 *     description: "example remote custom python repository with credentials",
 *     format: "PYTHON",
 *     mode: "REMOTE_REPOSITORY",
 *     remoteRepositoryConfig: {
 *         description: "custom npm with credentials",
 *         disableUpstreamValidation: true,
 *         pythonRepository: {
 *             customRepository: {
 *                 uri: "https://my.python.registry",
 *             },
 *         },
 *         upstreamCredentials: {
 *             usernamePasswordCredentials: {
 *                 username: "remote-username",
 *                 passwordSecretVersion: example_remote_secretVersion.name,
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * example_remote_secret = gcp.secretmanager.Secret("example-remote-secret",
 *     secret_id="example-secret",
 *     replication=gcp.secretmanager.SecretReplicationArgs(
 *         auto=gcp.secretmanager.SecretReplicationAutoArgs(),
 *     ))
 * example_remote_secret_version = gcp.secretmanager.SecretVersion("example-remote-secret_version",
 *     secret=example_remote_secret.id,
 *     secret_data="remote-password")
 * secret_access = gcp.secretmanager.SecretIamMember("secret-access",
 *     secret_id=example_remote_secret.id,
 *     role="roles/secretmanager.secretAccessor",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com")
 * my_repo = gcp.artifactregistry.Repository("my-repo",
 *     location="us-central1",
 *     repository_id="example-python-custom-remote",
 *     description="example remote custom python repository with credentials",
 *     format="PYTHON",
 *     mode="REMOTE_REPOSITORY",
 *     remote_repository_config=gcp.artifactregistry.RepositoryRemoteRepositoryConfigArgs(
 *         description="custom npm with credentials",
 *         disable_upstream_validation=True,
 *         python_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs(
 *             custom_repository=gcp.artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs(
 *                 uri="https://my.python.registry",
 *             ),
 *         ),
 *         upstream_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs(
 *             username_password_credentials=gcp.artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs(
 *                 username="remote-username",
 *                 password_secret_version=example_remote_secret_version.name,
 *             ),
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var example_remote_secret = new Gcp.SecretManager.Secret("example-remote-secret", new()
 *     {
 *         SecretId = "example-secret",
 *         Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
 *         {
 *             Auto = null,
 *         },
 *     });
 *     var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion("example-remote-secret_version", new()
 *     {
 *         Secret = example_remote_secret.Id,
 *         SecretData = "remote-password",
 *     });
 *     var secret_access = new Gcp.SecretManager.SecretIamMember("secret-access", new()
 *     {
 *         SecretId = example_remote_secret.Id,
 *         Role = "roles/secretmanager.secretAccessor",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com",
 *     });
 *     var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
 *     {
 *         Location = "us-central1",
 *         RepositoryId = "example-python-custom-remote",
 *         Description = "example remote custom python repository with credentials",
 *         Format = "PYTHON",
 *         Mode = "REMOTE_REPOSITORY",
 *         RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs
 *         {
 *             Description = "custom npm with credentials",
 *             DisableUpstreamValidation = true,
 *             PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs
 *             {
 *                 CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs
 *                 {
 *                     Uri = "https://my.python.registry",
 *                 },
 *             },
 *             UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs
 *             {
 *                 UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs
 *                 {
 *                     Username = "remote-username",
 *                     PasswordSecretVersion = example_remote_secretVersion.Name,
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		project, err := organizations.LookupProject(ctx, nil, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{
 * 			SecretId: pulumi.String("example-secret"),
 * 			Replication: &secretmanager.SecretReplicationArgs{
 * 				Auto: nil,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{
 * 			Secret:     example_remote_secret.ID(),
 * 			SecretData: pulumi.String("remote-password"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{
 * 			SecretId: example_remote_secret.ID(),
 * 			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
 * 			Member:   pulumi.String(fmt.Sprintf("serviceAccount:service-%[email protected]", project.Number)),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{
 * 			Location:     pulumi.String("us-central1"),
 * 			RepositoryId: pulumi.String("example-python-custom-remote"),
 * 			Description:  pulumi.String("example remote custom python repository with credentials"),
 * 			Format:       pulumi.String("PYTHON"),
 * 			Mode:         pulumi.String("REMOTE_REPOSITORY"),
 * 			RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{
 * 				Description:               pulumi.String("custom npm with credentials"),
 * 				DisableUpstreamValidation: pulumi.Bool(true),
 * 				PythonRepository: &artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{
 * 					CustomRepository: &artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{
 * 						Uri: pulumi.String("https://my.python.registry"),
 * 					},
 * 				},
 * 				UpstreamCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{
 * 					UsernamePasswordCredentials: &artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{
 * 						Username:              pulumi.String("remote-username"),
 * 						PasswordSecretVersion: example_remote_secretVersion.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.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.secretmanager.Secret;
 * import com.pulumi.gcp.secretmanager.SecretArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
 * import com.pulumi.gcp.secretmanager.SecretVersion;
 * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
 * import com.pulumi.gcp.secretmanager.SecretIamMember;
 * import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
 * import com.pulumi.gcp.artifactregistry.Repository;
 * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;
 * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;
 * 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) {
 *         final var project = OrganizationsFunctions.getProject();
 *         var example_remote_secret = new Secret("example-remote-secret", SecretArgs.builder()
 *             .secretId("example-secret")
 *             .replication(SecretReplicationArgs.builder()
 *                 .auto()
 *                 .build())
 *             .build());
 *         var example_remote_secretVersion = new SecretVersion("example-remote-secretVersion", SecretVersionArgs.builder()
 *             .secret(example_remote_secret.id())
 *             .secretData("remote-password")
 *             .build());
 *         var secret_access = new SecretIamMember("secret-access", SecretIamMemberArgs.builder()
 *             .secretId(example_remote_secret.id())
 *             .role("roles/secretmanager.secretAccessor")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
 *             .location("us-central1")
 *             .repositoryId("example-python-custom-remote")
 *             .description("example remote custom python repository with credentials")
 *             .format("PYTHON")
 *             .mode("REMOTE_REPOSITORY")
 *             .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()
 *                 .description("custom npm with credentials")
 *                 .disableUpstreamValidation(true)
 *                 .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()
 *                     .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()
 *                         .uri("https://my.python.registry")
 *                         .build())
 *                     .build())
 *                 .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()
 *                     .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()
 *                         .username("remote-username")
 *                         .passwordSecretVersion(example_remote_secretVersion.name())
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example-remote-secret:
 *     type: gcp:secretmanager:Secret
 *     properties:
 *       secretId: example-secret
 *       replication:
 *         auto: {}
 *   example-remote-secretVersion:
 *     type: gcp:secretmanager:SecretVersion
 *     name: example-remote-secret_version
 *     properties:
 *       secret: ${["example-remote-secret"].id}
 *       secretData: remote-password
 *   secret-access:
 *     type: gcp:secretmanager:SecretIamMember
 *     properties:
 *       secretId: ${["example-remote-secret"].id}
 *       role: roles/secretmanager.secretAccessor
 *       member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com
 *   my-repo:
 *     type: gcp:artifactregistry:Repository
 *     properties:
 *       location: us-central1
 *       repositoryId: example-python-custom-remote
 *       description: example remote custom python repository with credentials
 *       format: PYTHON
 *       mode: REMOTE_REPOSITORY
 *       remoteRepositoryConfig:
 *         description: custom npm with credentials
 *         disableUpstreamValidation: true
 *         pythonRepository:
 *           customRepository:
 *             uri: https://my.python.registry
 *         upstreamCredentials:
 *           usernamePasswordCredentials:
 *             username: remote-username
 *             passwordSecretVersion: ${["example-remote-secretVersion"].name}
 * variables:
 *   project:
 *     fn::invoke:
 *       Function: gcp:organizations:getProject
 *       Arguments: {}
 * ```
 * 
 * ## Import
 * Repository can be imported using any of these accepted formats:
 * * `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`
 * * `{{project}}/{{location}}/{{repository_id}}`
 * * `{{location}}/{{repository_id}}`
 * * `{{repository_id}}`
 * When using the `pulumi import` command, Repository can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}
 * ```
 * ```sh
 * $ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}
 * ```
 * ```sh
 * $ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}
 * ```
 * ```sh
 * $ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}
 * ```
 * @property cleanupPolicies Cleanup policies for this repository. Cleanup policies indicate when
 * certain package versions can be automatically deleted.
 * Map keys are policy IDs supplied by users during policy creation. They must
 * unique within a repository and be under 128 characters in length.
 * Structure is documented below.
 * @property cleanupPolicyDryRun If true, the cleanup pipeline is prevented from deleting versions in this
 * repository.
 * @property description The user-provided description of the repository.
 * @property dockerConfig Docker repository config contains repository level configuration for the repositories of docker type.
 * Structure is documented below.
 * @property format The format of packages that are stored in the repository. Supported formats
 * can be found [here](https://cloud.google.com/artifact-registry/docs/supported-formats).
 * You can only create alpha formats if you are a member of the
 * [alpha user group](https://cloud.google.com/artifact-registry/docs/supported-formats#alpha-access).
 * - - -
 * @property kmsKeyName The Cloud KMS resource name of the customer managed encryption key that’s
 * used to encrypt the contents of the Repository. Has the form:
 * `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`.
 * This value may not be changed after the Repository has been created.
 * @property labels Labels with user-defined metadata.
 * This field may contain up to 64 entries. Label keys and values may be no
 * longer than 63 characters. Label keys must begin with a lowercase letter
 * and may only contain lowercase letters, numeric characters, underscores,
 * and dashes.
 * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
 * Please refer to the field `effective_labels` for all of the labels present on the resource.
 * @property location The name of the location this repository is located in.
 * @property mavenConfig MavenRepositoryConfig is maven related repository details.
 * Provides additional configuration details for repositories of the maven
 * format type.
 * Structure is documented below.
 * @property mode The mode configures the repository to serve artifacts from different sources.
 * Default value is `STANDARD_REPOSITORY`.
 * Possible values are: `STANDARD_REPOSITORY`, `VIRTUAL_REPOSITORY`, `REMOTE_REPOSITORY`.
 * @property project The ID of the project in which the resource belongs.
 * If it is not provided, the provider project is used.
 * @property remoteRepositoryConfig Configuration specific for a Remote Repository.
 * Structure is documented below.
 * @property repositoryId The last part of the repository name, for example:
 * "repo1"
 * @property virtualRepositoryConfig Configuration specific for a Virtual Repository.
 * Structure is documented below.
 */
public data class RepositoryArgs(
    public val cleanupPolicies: Output>? = null,
    public val cleanupPolicyDryRun: Output? = null,
    public val description: Output? = null,
    public val dockerConfig: Output? = null,
    public val format: Output? = null,
    public val kmsKeyName: Output? = null,
    public val labels: Output>? = null,
    public val location: Output? = null,
    public val mavenConfig: Output? = null,
    public val mode: Output? = null,
    public val project: Output? = null,
    public val remoteRepositoryConfig: Output? = null,
    public val repositoryId: Output? = null,
    public val virtualRepositoryConfig: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.artifactregistry.RepositoryArgs =
        com.pulumi.gcp.artifactregistry.RepositoryArgs.builder()
            .cleanupPolicies(
                cleanupPolicies?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .cleanupPolicyDryRun(cleanupPolicyDryRun?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .dockerConfig(dockerConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .format(format?.applyValue({ args0 -> args0 }))
            .kmsKeyName(kmsKeyName?.applyValue({ args0 -> args0 }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .location(location?.applyValue({ args0 -> args0 }))
            .mavenConfig(mavenConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .mode(mode?.applyValue({ args0 -> args0 }))
            .project(project?.applyValue({ args0 -> args0 }))
            .remoteRepositoryConfig(
                remoteRepositoryConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .repositoryId(repositoryId?.applyValue({ args0 -> args0 }))
            .virtualRepositoryConfig(
                virtualRepositoryConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            ).build()
}

/**
 * Builder for [RepositoryArgs].
 */
@PulumiTagMarker
public class RepositoryArgsBuilder internal constructor() {
    private var cleanupPolicies: Output>? = null

    private var cleanupPolicyDryRun: Output? = null

    private var description: Output? = null

    private var dockerConfig: Output? = null

    private var format: Output? = null

    private var kmsKeyName: Output? = null

    private var labels: Output>? = null

    private var location: Output? = null

    private var mavenConfig: Output? = null

    private var mode: Output? = null

    private var project: Output? = null

    private var remoteRepositoryConfig: Output? = null

    private var repositoryId: Output? = null

    private var virtualRepositoryConfig: Output? = null

    /**
     * @param value Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("xcpdtcruiooahlwh")
    public suspend fun cleanupPolicies(`value`: Output>) {
        this.cleanupPolicies = value
    }

    @JvmName("rtguqjqneewrsuub")
    public suspend fun cleanupPolicies(vararg values: Output) {
        this.cleanupPolicies = Output.all(values.asList())
    }

    /**
     * @param values Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("gdkwqbufwkqxdqtc")
    public suspend fun cleanupPolicies(values: List>) {
        this.cleanupPolicies = Output.all(values)
    }

    /**
     * @param value If true, the cleanup pipeline is prevented from deleting versions in this
     * repository.
     */
    @JvmName("sibnsyytyfsacjxf")
    public suspend fun cleanupPolicyDryRun(`value`: Output) {
        this.cleanupPolicyDryRun = value
    }

    /**
     * @param value The user-provided description of the repository.
     */
    @JvmName("nlmhldaavynwvsqs")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Docker repository config contains repository level configuration for the repositories of docker type.
     * Structure is documented below.
     */
    @JvmName("mujcpeafameuywon")
    public suspend fun dockerConfig(`value`: Output) {
        this.dockerConfig = value
    }

    /**
     * @param value The format of packages that are stored in the repository. Supported formats
     * can be found [here](https://cloud.google.com/artifact-registry/docs/supported-formats).
     * You can only create alpha formats if you are a member of the
     * [alpha user group](https://cloud.google.com/artifact-registry/docs/supported-formats#alpha-access).
     * - - -
     */
    @JvmName("fmpgutuoulrqqswi")
    public suspend fun format(`value`: Output) {
        this.format = value
    }

    /**
     * @param value The Cloud KMS resource name of the customer managed encryption key that’s
     * used to encrypt the contents of the Repository. Has the form:
     * `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`.
     * This value may not be changed after the Repository has been created.
     */
    @JvmName("wqnphfesbdgpocdg")
    public suspend fun kmsKeyName(`value`: Output) {
        this.kmsKeyName = value
    }

    /**
     * @param value Labels with user-defined metadata.
     * This field may contain up to 64 entries. Label keys and values may be no
     * longer than 63 characters. Label keys must begin with a lowercase letter
     * and may only contain lowercase letters, numeric characters, underscores,
     * and dashes.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("sosnytkhdsccpptk")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value The name of the location this repository is located in.
     */
    @JvmName("kwoyvortbvdqpmhx")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value MavenRepositoryConfig is maven related repository details.
     * Provides additional configuration details for repositories of the maven
     * format type.
     * Structure is documented below.
     */
    @JvmName("hxoffqvtmuxnuqxd")
    public suspend fun mavenConfig(`value`: Output) {
        this.mavenConfig = value
    }

    /**
     * @param value The mode configures the repository to serve artifacts from different sources.
     * Default value is `STANDARD_REPOSITORY`.
     * Possible values are: `STANDARD_REPOSITORY`, `VIRTUAL_REPOSITORY`, `REMOTE_REPOSITORY`.
     */
    @JvmName("apsdwknhwfyfxown")
    public suspend fun mode(`value`: Output) {
        this.mode = value
    }

    /**
     * @param value The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    @JvmName("savairrvgywxgkxm")
    public suspend fun project(`value`: Output) {
        this.project = value
    }

    /**
     * @param value Configuration specific for a Remote Repository.
     * Structure is documented below.
     */
    @JvmName("nsgtokpnfidbhjsc")
    public suspend fun remoteRepositoryConfig(`value`: Output) {
        this.remoteRepositoryConfig = value
    }

    /**
     * @param value The last part of the repository name, for example:
     * "repo1"
     */
    @JvmName("cplwlswxrjvrhfix")
    public suspend fun repositoryId(`value`: Output) {
        this.repositoryId = value
    }

    /**
     * @param value Configuration specific for a Virtual Repository.
     * Structure is documented below.
     */
    @JvmName("srgshervriohrxij")
    public suspend fun virtualRepositoryConfig(`value`: Output) {
        this.virtualRepositoryConfig = value
    }

    /**
     * @param value Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("xxadfqhtwhpejbms")
    public suspend fun cleanupPolicies(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.cleanupPolicies = mapped
    }

    /**
     * @param argument Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("srvemsmfqbyknttq")
    public suspend fun cleanupPolicies(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            RepositoryCleanupPolicyArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.cleanupPolicies = mapped
    }

    /**
     * @param argument Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("plnpwqvtxmsguvja")
    public suspend fun cleanupPolicies(vararg argument: suspend RepositoryCleanupPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            RepositoryCleanupPolicyArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.cleanupPolicies = mapped
    }

    /**
     * @param argument Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("clqjqgaurtrkxjfx")
    public suspend fun cleanupPolicies(argument: suspend RepositoryCleanupPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            RepositoryCleanupPolicyArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.cleanupPolicies = mapped
    }

    /**
     * @param values Cleanup policies for this repository. Cleanup policies indicate when
     * certain package versions can be automatically deleted.
     * Map keys are policy IDs supplied by users during policy creation. They must
     * unique within a repository and be under 128 characters in length.
     * Structure is documented below.
     */
    @JvmName("ukhjebajyeiubfua")
    public suspend fun cleanupPolicies(vararg values: RepositoryCleanupPolicyArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.cleanupPolicies = mapped
    }

    /**
     * @param value If true, the cleanup pipeline is prevented from deleting versions in this
     * repository.
     */
    @JvmName("frigytrwtrwjaqll")
    public suspend fun cleanupPolicyDryRun(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.cleanupPolicyDryRun = mapped
    }

    /**
     * @param value The user-provided description of the repository.
     */
    @JvmName("xfdikwgyuumlydrw")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value Docker repository config contains repository level configuration for the repositories of docker type.
     * Structure is documented below.
     */
    @JvmName("khdeeqdshwnleuvu")
    public suspend fun dockerConfig(`value`: RepositoryDockerConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dockerConfig = mapped
    }

    /**
     * @param argument Docker repository config contains repository level configuration for the repositories of docker type.
     * Structure is documented below.
     */
    @JvmName("gtmocaxikhdpdyxk")
    public suspend fun dockerConfig(argument: suspend RepositoryDockerConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RepositoryDockerConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.dockerConfig = mapped
    }

    /**
     * @param value The format of packages that are stored in the repository. Supported formats
     * can be found [here](https://cloud.google.com/artifact-registry/docs/supported-formats).
     * You can only create alpha formats if you are a member of the
     * [alpha user group](https://cloud.google.com/artifact-registry/docs/supported-formats#alpha-access).
     * - - -
     */
    @JvmName("igrtalokdjdcfsan")
    public suspend fun format(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.format = mapped
    }

    /**
     * @param value The Cloud KMS resource name of the customer managed encryption key that’s
     * used to encrypt the contents of the Repository. Has the form:
     * `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`.
     * This value may not be changed after the Repository has been created.
     */
    @JvmName("jkpcaehvtpmbyfky")
    public suspend fun kmsKeyName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kmsKeyName = mapped
    }

    /**
     * @param value Labels with user-defined metadata.
     * This field may contain up to 64 entries. Label keys and values may be no
     * longer than 63 characters. Label keys must begin with a lowercase letter
     * and may only contain lowercase letters, numeric characters, underscores,
     * and dashes.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("bnpwsvfngooeqnef")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values Labels with user-defined metadata.
     * This field may contain up to 64 entries. Label keys and values may be no
     * longer than 63 characters. Label keys must begin with a lowercase letter
     * and may only contain lowercase letters, numeric characters, underscores,
     * and dashes.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("chfjtkkeqgveviyd")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value The name of the location this repository is located in.
     */
    @JvmName("rqhgoorcfebcgxta")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value MavenRepositoryConfig is maven related repository details.
     * Provides additional configuration details for repositories of the maven
     * format type.
     * Structure is documented below.
     */
    @JvmName("kyvxjuerlitaaxki")
    public suspend fun mavenConfig(`value`: RepositoryMavenConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mavenConfig = mapped
    }

    /**
     * @param argument MavenRepositoryConfig is maven related repository details.
     * Provides additional configuration details for repositories of the maven
     * format type.
     * Structure is documented below.
     */
    @JvmName("rkjvkeujhugvmgdn")
    public suspend fun mavenConfig(argument: suspend RepositoryMavenConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RepositoryMavenConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.mavenConfig = mapped
    }

    /**
     * @param value The mode configures the repository to serve artifacts from different sources.
     * Default value is `STANDARD_REPOSITORY`.
     * Possible values are: `STANDARD_REPOSITORY`, `VIRTUAL_REPOSITORY`, `REMOTE_REPOSITORY`.
     */
    @JvmName("rmpjmdwiqooamxrs")
    public suspend fun mode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mode = mapped
    }

    /**
     * @param value The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    @JvmName("ownhluwhsatwghab")
    public suspend fun project(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.project = mapped
    }

    /**
     * @param value Configuration specific for a Remote Repository.
     * Structure is documented below.
     */
    @JvmName("jjnelnhnhojlscoy")
    public suspend fun remoteRepositoryConfig(`value`: RepositoryRemoteRepositoryConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.remoteRepositoryConfig = mapped
    }

    /**
     * @param argument Configuration specific for a Remote Repository.
     * Structure is documented below.
     */
    @JvmName("hvpdnnyxapqfgrxw")
    public suspend fun remoteRepositoryConfig(argument: suspend RepositoryRemoteRepositoryConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RepositoryRemoteRepositoryConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.remoteRepositoryConfig = mapped
    }

    /**
     * @param value The last part of the repository name, for example:
     * "repo1"
     */
    @JvmName("adjuuypqbkxjkxwq")
    public suspend fun repositoryId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.repositoryId = mapped
    }

    /**
     * @param value Configuration specific for a Virtual Repository.
     * Structure is documented below.
     */
    @JvmName("pqwsoqlxmxmpmttt")
    public suspend fun virtualRepositoryConfig(`value`: RepositoryVirtualRepositoryConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.virtualRepositoryConfig = mapped
    }

    /**
     * @param argument Configuration specific for a Virtual Repository.
     * Structure is documented below.
     */
    @JvmName("pbusjxfveglokpbq")
    public suspend fun virtualRepositoryConfig(argument: suspend RepositoryVirtualRepositoryConfigArgsBuilder.() -> Unit) {
        val toBeMapped = RepositoryVirtualRepositoryConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.virtualRepositoryConfig = mapped
    }

    internal fun build(): RepositoryArgs = RepositoryArgs(
        cleanupPolicies = cleanupPolicies,
        cleanupPolicyDryRun = cleanupPolicyDryRun,
        description = description,
        dockerConfig = dockerConfig,
        format = format,
        kmsKeyName = kmsKeyName,
        labels = labels,
        location = location,
        mavenConfig = mavenConfig,
        mode = mode,
        project = project,
        remoteRepositoryConfig = remoteRepositoryConfig,
        repositoryId = repositoryId,
        virtualRepositoryConfig = virtualRepositoryConfig,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy