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

com.pulumi.gcp.networkconnectivity.kotlin.Group.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.networkconnectivity.kotlin

import com.pulumi.core.Output
import com.pulumi.gcp.networkconnectivity.kotlin.outputs.GroupAutoAccept
import com.pulumi.gcp.networkconnectivity.kotlin.outputs.GroupAutoAccept.Companion.toKotlin
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map

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

    public var args: GroupArgs = GroupArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

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

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

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

    internal fun build(): Group {
        val builtJavaResource = com.pulumi.gcp.networkconnectivity.Group(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return Group(builtJavaResource)
    }
}

/**
 * The NetworkConnectivity Group resource
 * To get more information about Group, see:
 * * [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.global.hubs.groups)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)
 * ## Example Usage
 * ### Network Connectivity Group Basic
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const basicHub = new gcp.networkconnectivity.Hub("basic_hub", {
 *     name: "network-connectivity-hub1",
 *     description: "A sample hub",
 *     labels: {
 *         "label-one": "value-one",
 *     },
 * });
 * const primary = new gcp.networkconnectivity.Group("primary", {
 *     hub: basicHub.id,
 *     name: "default",
 *     labels: {
 *         "label-one": "value-one",
 *     },
 *     description: "A sample hub group",
 *     autoAccept: {
 *         autoAcceptProjects: [
 *             "foo",
 *             "bar",
 *         ],
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * basic_hub = gcp.networkconnectivity.Hub("basic_hub",
 *     name="network-connectivity-hub1",
 *     description="A sample hub",
 *     labels={
 *         "label-one": "value-one",
 *     })
 * primary = gcp.networkconnectivity.Group("primary",
 *     hub=basic_hub.id,
 *     name="default",
 *     labels={
 *         "label-one": "value-one",
 *     },
 *     description="A sample hub group",
 *     auto_accept={
 *         "auto_accept_projects": [
 *             "foo",
 *             "bar",
 *         ],
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var basicHub = new Gcp.NetworkConnectivity.Hub("basic_hub", new()
 *     {
 *         Name = "network-connectivity-hub1",
 *         Description = "A sample hub",
 *         Labels =
 *         {
 *             { "label-one", "value-one" },
 *         },
 *     });
 *     var primary = new Gcp.NetworkConnectivity.Group("primary", new()
 *     {
 *         Hub = basicHub.Id,
 *         Name = "default",
 *         Labels =
 *         {
 *             { "label-one", "value-one" },
 *         },
 *         Description = "A sample hub group",
 *         AutoAccept = new Gcp.NetworkConnectivity.Inputs.GroupAutoAcceptArgs
 *         {
 *             AutoAcceptProjects = new[]
 *             {
 *                 "foo",
 *                 "bar",
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		basicHub, err := networkconnectivity.NewHub(ctx, "basic_hub", &networkconnectivity.HubArgs{
 * 			Name:        pulumi.String("network-connectivity-hub1"),
 * 			Description: pulumi.String("A sample hub"),
 * 			Labels: pulumi.StringMap{
 * 				"label-one": pulumi.String("value-one"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = networkconnectivity.NewGroup(ctx, "primary", &networkconnectivity.GroupArgs{
 * 			Hub:  basicHub.ID(),
 * 			Name: pulumi.String("default"),
 * 			Labels: pulumi.StringMap{
 * 				"label-one": pulumi.String("value-one"),
 * 			},
 * 			Description: pulumi.String("A sample hub group"),
 * 			AutoAccept: &networkconnectivity.GroupAutoAcceptArgs{
 * 				AutoAcceptProjects: pulumi.StringArray{
 * 					pulumi.String("foo"),
 * 					pulumi.String("bar"),
 * 				},
 * 			},
 * 		})
 * 		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.networkconnectivity.Hub;
 * import com.pulumi.gcp.networkconnectivity.HubArgs;
 * import com.pulumi.gcp.networkconnectivity.Group;
 * import com.pulumi.gcp.networkconnectivity.GroupArgs;
 * import com.pulumi.gcp.networkconnectivity.inputs.GroupAutoAcceptArgs;
 * 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 basicHub = new Hub("basicHub", HubArgs.builder()
 *             .name("network-connectivity-hub1")
 *             .description("A sample hub")
 *             .labels(Map.of("label-one", "value-one"))
 *             .build());
 *         var primary = new Group("primary", GroupArgs.builder()
 *             .hub(basicHub.id())
 *             .name("default")
 *             .labels(Map.of("label-one", "value-one"))
 *             .description("A sample hub group")
 *             .autoAccept(GroupAutoAcceptArgs.builder()
 *                 .autoAcceptProjects(
 *                     "foo",
 *                     "bar")
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   basicHub:
 *     type: gcp:networkconnectivity:Hub
 *     name: basic_hub
 *     properties:
 *       name: network-connectivity-hub1
 *       description: A sample hub
 *       labels:
 *         label-one: value-one
 *   primary:
 *     type: gcp:networkconnectivity:Group
 *     properties:
 *       hub: ${basicHub.id}
 *       name: default
 *       labels:
 *         label-one: value-one
 *       description: A sample hub group
 *       autoAccept:
 *         autoAcceptProjects:
 *           - foo
 *           - bar
 * ```
 * 
 * ## Import
 * Group can be imported using any of these accepted formats:
 * * `projects/{{project}}/locations/global/hubs/{{hub}}/groups/{{name}}`
 * * `{{project}}/{{hub}}/{{name}}`
 * * `{{hub}}/{{name}}`
 * When using the `pulumi import` command, Group can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:networkconnectivity/group:Group default projects/{{project}}/locations/global/hubs/{{hub}}/groups/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:networkconnectivity/group:Group default {{project}}/{{hub}}/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:networkconnectivity/group:Group default {{hub}}/{{name}}
 * ```
 */
public class Group internal constructor(
    override val javaResource: com.pulumi.gcp.networkconnectivity.Group,
) : KotlinCustomResource(javaResource, GroupMapper) {
    /**
     * Optional. The auto-accept setting for this group.
     * Structure is documented below.
     */
    public val autoAccept: Output?
        get() = javaResource.autoAccept().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    toKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * Output only. The time the hub was created.
     */
    public val createTime: Output
        get() = javaResource.createTime().applyValue({ args0 -> args0 })

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

    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    public val effectiveLabels: Output>
        get() = javaResource.effectiveLabels().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.key.to(args0.value)
            }).toMap()
        })

    /**
     * The name of the hub. Hub names must be unique. They use the following form: projects/{projectNumber}/locations/global/hubs/{hubId}
     * - - -
     */
    public val hub: Output
        get() = javaResource.hub().applyValue({ args0 -> args0 })

    /**
     * Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).
     * **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.
     */
    public val labels: Output>?
        get() = javaResource.labels().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(args0.value)
                }).toMap()
            }).orElse(null)
        })

    /**
     * The name of the group. Group names must be unique.
     * Possible values are: `default`, `center`, `edge`.
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    public val project: Output
        get() = javaResource.project().applyValue({ args0 -> args0 })

    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    public val pulumiLabels: Output>
        get() = javaResource.pulumiLabels().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.key.to(args0.value)
            }).toMap()
        })

    /**
     * Output only. The name of the route table that corresponds to this group. They use the following form: `projects/{projectNumber}/locations/global/hubs/{hubId}/routeTables/{route_table_id}`
     */
    public val routeTable: Output
        get() = javaResource.routeTable().applyValue({ args0 -> args0 })

    /**
     * Output only. The current lifecycle state of this hub.
     */
    public val state: Output
        get() = javaResource.state().applyValue({ args0 -> args0 })

    /**
     * Output only. The Google-generated UUID for the group. This value is unique across all group resources. If a group is deleted and another with the same name is created, the new route table is assigned a different uniqueId.
     */
    public val uid: Output
        get() = javaResource.uid().applyValue({ args0 -> args0 })

    /**
     * Output only. The time the hub was last updated.
     */
    public val updateTime: Output
        get() = javaResource.updateTime().applyValue({ args0 -> args0 })
}

public object GroupMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.gcp.networkconnectivity.Group::class == javaResource::class

    override fun map(javaResource: Resource): Group = Group(
        javaResource as
            com.pulumi.gcp.networkconnectivity.Group,
    )
}

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy