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

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

package com.pulumi.gcp.compute.kotlin

import com.pulumi.core.Output
import com.pulumi.gcp.compute.kotlin.outputs.RegionNetworkFirewallPolicyWithRulesPredefinedRule
import com.pulumi.gcp.compute.kotlin.outputs.RegionNetworkFirewallPolicyWithRulesRule
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.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import com.pulumi.gcp.compute.kotlin.outputs.RegionNetworkFirewallPolicyWithRulesPredefinedRule.Companion.toKotlin as regionNetworkFirewallPolicyWithRulesPredefinedRuleToKotlin
import com.pulumi.gcp.compute.kotlin.outputs.RegionNetworkFirewallPolicyWithRulesRule.Companion.toKotlin as regionNetworkFirewallPolicyWithRulesRuleToKotlin

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

    public var args: RegionNetworkFirewallPolicyWithRulesArgs =
        RegionNetworkFirewallPolicyWithRulesArgs()

    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 RegionNetworkFirewallPolicyWithRulesArgsBuilder.() -> Unit) {
        val builder = RegionNetworkFirewallPolicyWithRulesArgsBuilder()
        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(): RegionNetworkFirewallPolicyWithRules {
        val builtJavaResource =
            com.pulumi.gcp.compute.RegionNetworkFirewallPolicyWithRules(
                this.name,
                this.args.toJava(),
                this.opts.toJava(),
            )
        return RegionNetworkFirewallPolicyWithRules(builtJavaResource)
    }
}

/**
 * ## Example Usage
 * ### Compute Region Network Firewall Policy With Rules Full
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const addressGroup1 = new gcp.networksecurity.AddressGroup("address_group_1", {
 *     name: "tf-address-group",
 *     parent: project.then(project => project.id),
 *     description: "Regional address group",
 *     location: "us-west2",
 *     items: ["208.80.154.224/32"],
 *     type: "IPV4",
 *     capacity: 100,
 * });
 * const secureTagKey1 = new gcp.tags.TagKey("secure_tag_key_1", {
 *     description: "Tag key",
 *     parent: project.then(project => project.id),
 *     purpose: "GCE_FIREWALL",
 *     shortName: "tf-tag-key",
 *     purposeData: {
 *         network: project.then(project => `${project.name}/default`),
 *     },
 * });
 * const secureTagValue1 = new gcp.tags.TagValue("secure_tag_value_1", {
 *     description: "Tag value",
 *     parent: secureTagKey1.id,
 *     shortName: "tf-tag-value",
 * });
 * const region_network_firewall_policy_with_rules = new gcp.compute.RegionNetworkFirewallPolicyWithRules("region-network-firewall-policy-with-rules", {
 *     name: "tf-region-fw-policy-with-rules",
 *     region: "us-west2",
 *     description: "Terraform test",
 *     rules: [
 *         {
 *             description: "tcp rule",
 *             priority: 1000,
 *             enableLogging: true,
 *             action: "allow",
 *             direction: "EGRESS",
 *             match: {
 *                 layer4Configs: [{
 *                     ipProtocol: "tcp",
 *                     ports: [
 *                         "8080",
 *                         "7070",
 *                     ],
 *                 }],
 *                 destIpRanges: ["11.100.0.1/32"],
 *                 destFqdns: [
 *                     "www.yyy.com",
 *                     "www.zzz.com",
 *                 ],
 *                 destRegionCodes: [
 *                     "HK",
 *                     "IN",
 *                 ],
 *                 destThreatIntelligences: [
 *                     "iplist-search-engines-crawlers",
 *                     "iplist-tor-exit-nodes",
 *                 ],
 *                 destAddressGroups: [addressGroup1.id],
 *             },
 *             targetSecureTags: [{
 *                 name: secureTagValue1.id,
 *             }],
 *         },
 *         {
 *             description: "udp rule",
 *             ruleName: "test-rule",
 *             priority: 2000,
 *             enableLogging: false,
 *             action: "deny",
 *             direction: "INGRESS",
 *             match: {
 *                 layer4Configs: [{
 *                     ipProtocol: "udp",
 *                 }],
 *                 srcIpRanges: ["0.0.0.0/0"],
 *                 srcFqdns: [
 *                     "www.abc.com",
 *                     "www.def.com",
 *                 ],
 *                 srcRegionCodes: [
 *                     "US",
 *                     "CA",
 *                 ],
 *                 srcThreatIntelligences: [
 *                     "iplist-known-malicious-ips",
 *                     "iplist-public-clouds",
 *                 ],
 *                 srcAddressGroups: [addressGroup1.id],
 *                 srcSecureTags: [{
 *                     name: secureTagValue1.id,
 *                 }],
 *             },
 *             disabled: true,
 *         },
 *     ],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * address_group1 = gcp.networksecurity.AddressGroup("address_group_1",
 *     name="tf-address-group",
 *     parent=project.id,
 *     description="Regional address group",
 *     location="us-west2",
 *     items=["208.80.154.224/32"],
 *     type="IPV4",
 *     capacity=100)
 * secure_tag_key1 = gcp.tags.TagKey("secure_tag_key_1",
 *     description="Tag key",
 *     parent=project.id,
 *     purpose="GCE_FIREWALL",
 *     short_name="tf-tag-key",
 *     purpose_data={
 *         "network": f"{project.name}/default",
 *     })
 * secure_tag_value1 = gcp.tags.TagValue("secure_tag_value_1",
 *     description="Tag value",
 *     parent=secure_tag_key1.id,
 *     short_name="tf-tag-value")
 * region_network_firewall_policy_with_rules = gcp.compute.RegionNetworkFirewallPolicyWithRules("region-network-firewall-policy-with-rules",
 *     name="tf-region-fw-policy-with-rules",
 *     region="us-west2",
 *     description="Terraform test",
 *     rules=[
 *         {
 *             "description": "tcp rule",
 *             "priority": 1000,
 *             "enable_logging": True,
 *             "action": "allow",
 *             "direction": "EGRESS",
 *             "match": {
 *                 "layer4_configs": [{
 *                     "ip_protocol": "tcp",
 *                     "ports": [
 *                         "8080",
 *                         "7070",
 *                     ],
 *                 }],
 *                 "dest_ip_ranges": ["11.100.0.1/32"],
 *                 "dest_fqdns": [
 *                     "www.yyy.com",
 *                     "www.zzz.com",
 *                 ],
 *                 "dest_region_codes": [
 *                     "HK",
 *                     "IN",
 *                 ],
 *                 "dest_threat_intelligences": [
 *                     "iplist-search-engines-crawlers",
 *                     "iplist-tor-exit-nodes",
 *                 ],
 *                 "dest_address_groups": [address_group1.id],
 *             },
 *             "target_secure_tags": [{
 *                 "name": secure_tag_value1.id,
 *             }],
 *         },
 *         {
 *             "description": "udp rule",
 *             "rule_name": "test-rule",
 *             "priority": 2000,
 *             "enable_logging": False,
 *             "action": "deny",
 *             "direction": "INGRESS",
 *             "match": {
 *                 "layer4_configs": [{
 *                     "ip_protocol": "udp",
 *                 }],
 *                 "src_ip_ranges": ["0.0.0.0/0"],
 *                 "src_fqdns": [
 *                     "www.abc.com",
 *                     "www.def.com",
 *                 ],
 *                 "src_region_codes": [
 *                     "US",
 *                     "CA",
 *                 ],
 *                 "src_threat_intelligences": [
 *                     "iplist-known-malicious-ips",
 *                     "iplist-public-clouds",
 *                 ],
 *                 "src_address_groups": [address_group1.id],
 *                 "src_secure_tags": [{
 *                     "name": secure_tag_value1.id,
 *                 }],
 *             },
 *             "disabled": True,
 *         },
 *     ])
 * ```
 * ```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 addressGroup1 = new Gcp.NetworkSecurity.AddressGroup("address_group_1", new()
 *     {
 *         Name = "tf-address-group",
 *         Parent = project.Apply(getProjectResult => getProjectResult.Id),
 *         Description = "Regional address group",
 *         Location = "us-west2",
 *         Items = new[]
 *         {
 *             "208.80.154.224/32",
 *         },
 *         Type = "IPV4",
 *         Capacity = 100,
 *     });
 *     var secureTagKey1 = new Gcp.Tags.TagKey("secure_tag_key_1", new()
 *     {
 *         Description = "Tag key",
 *         Parent = project.Apply(getProjectResult => getProjectResult.Id),
 *         Purpose = "GCE_FIREWALL",
 *         ShortName = "tf-tag-key",
 *         PurposeData =
 *         {
 *             { "network", $"{project.Apply(getProjectResult => getProjectResult.Name)}/default" },
 *         },
 *     });
 *     var secureTagValue1 = new Gcp.Tags.TagValue("secure_tag_value_1", new()
 *     {
 *         Description = "Tag value",
 *         Parent = secureTagKey1.Id,
 *         ShortName = "tf-tag-value",
 *     });
 *     var region_network_firewall_policy_with_rules = new Gcp.Compute.RegionNetworkFirewallPolicyWithRules("region-network-firewall-policy-with-rules", new()
 *     {
 *         Name = "tf-region-fw-policy-with-rules",
 *         Region = "us-west2",
 *         Description = "Terraform test",
 *         Rules = new[]
 *         {
 *             new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleArgs
 *             {
 *                 Description = "tcp rule",
 *                 Priority = 1000,
 *                 EnableLogging = true,
 *                 Action = "allow",
 *                 Direction = "EGRESS",
 *                 Match = new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleMatchArgs
 *                 {
 *                     Layer4Configs = new[]
 *                     {
 *                         new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs
 *                         {
 *                             IpProtocol = "tcp",
 *                             Ports = new[]
 *                             {
 *                                 "8080",
 *                                 "7070",
 *                             },
 *                         },
 *                     },
 *                     DestIpRanges = new[]
 *                     {
 *                         "11.100.0.1/32",
 *                     },
 *                     DestFqdns = new[]
 *                     {
 *                         "www.yyy.com",
 *                         "www.zzz.com",
 *                     },
 *                     DestRegionCodes = new[]
 *                     {
 *                         "HK",
 *                         "IN",
 *                     },
 *                     DestThreatIntelligences = new[]
 *                     {
 *                         "iplist-search-engines-crawlers",
 *                         "iplist-tor-exit-nodes",
 *                     },
 *                     DestAddressGroups = new[]
 *                     {
 *                         addressGroup1.Id,
 *                     },
 *                 },
 *                 TargetSecureTags = new[]
 *                 {
 *                     new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs
 *                     {
 *                         Name = secureTagValue1.Id,
 *                     },
 *                 },
 *             },
 *             new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleArgs
 *             {
 *                 Description = "udp rule",
 *                 RuleName = "test-rule",
 *                 Priority = 2000,
 *                 EnableLogging = false,
 *                 Action = "deny",
 *                 Direction = "INGRESS",
 *                 Match = new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleMatchArgs
 *                 {
 *                     Layer4Configs = new[]
 *                     {
 *                         new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs
 *                         {
 *                             IpProtocol = "udp",
 *                         },
 *                     },
 *                     SrcIpRanges = new[]
 *                     {
 *                         "0.0.0.0/0",
 *                     },
 *                     SrcFqdns = new[]
 *                     {
 *                         "www.abc.com",
 *                         "www.def.com",
 *                     },
 *                     SrcRegionCodes = new[]
 *                     {
 *                         "US",
 *                         "CA",
 *                     },
 *                     SrcThreatIntelligences = new[]
 *                     {
 *                         "iplist-known-malicious-ips",
 *                         "iplist-public-clouds",
 *                     },
 *                     SrcAddressGroups = new[]
 *                     {
 *                         addressGroup1.Id,
 *                     },
 *                     SrcSecureTags = new[]
 *                     {
 *                         new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs
 *                         {
 *                             Name = secureTagValue1.Id,
 *                         },
 *                     },
 *                 },
 *                 Disabled = true,
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		addressGroup1, err := networksecurity.NewAddressGroup(ctx, "address_group_1", &networksecurity.AddressGroupArgs{
 * 			Name:        pulumi.String("tf-address-group"),
 * 			Parent:      pulumi.String(project.Id),
 * 			Description: pulumi.String("Regional address group"),
 * 			Location:    pulumi.String("us-west2"),
 * 			Items: pulumi.StringArray{
 * 				pulumi.String("208.80.154.224/32"),
 * 			},
 * 			Type:     pulumi.String("IPV4"),
 * 			Capacity: pulumi.Int(100),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		secureTagKey1, err := tags.NewTagKey(ctx, "secure_tag_key_1", &tags.TagKeyArgs{
 * 			Description: pulumi.String("Tag key"),
 * 			Parent:      pulumi.String(project.Id),
 * 			Purpose:     pulumi.String("GCE_FIREWALL"),
 * 			ShortName:   pulumi.String("tf-tag-key"),
 * 			PurposeData: pulumi.StringMap{
 * 				"network": pulumi.Sprintf("%v/default", project.Name),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		secureTagValue1, err := tags.NewTagValue(ctx, "secure_tag_value_1", &tags.TagValueArgs{
 * 			Description: pulumi.String("Tag value"),
 * 			Parent:      secureTagKey1.ID(),
 * 			ShortName:   pulumi.String("tf-tag-value"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = compute.NewRegionNetworkFirewallPolicyWithRules(ctx, "region-network-firewall-policy-with-rules", &compute.RegionNetworkFirewallPolicyWithRulesArgs{
 * 			Name:        pulumi.String("tf-region-fw-policy-with-rules"),
 * 			Region:      pulumi.String("us-west2"),
 * 			Description: pulumi.String("Terraform test"),
 * 			Rules: compute.RegionNetworkFirewallPolicyWithRulesRuleArray{
 * 				&compute.RegionNetworkFirewallPolicyWithRulesRuleArgs{
 * 					Description:   pulumi.String("tcp rule"),
 * 					Priority:      pulumi.Int(1000),
 * 					EnableLogging: pulumi.Bool(true),
 * 					Action:        pulumi.String("allow"),
 * 					Direction:     pulumi.String("EGRESS"),
 * 					Match: &compute.RegionNetworkFirewallPolicyWithRulesRuleMatchArgs{
 * 						Layer4Configs: compute.RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{
 * 							&compute.RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{
 * 								IpProtocol: pulumi.String("tcp"),
 * 								Ports: pulumi.StringArray{
 * 									pulumi.String("8080"),
 * 									pulumi.String("7070"),
 * 								},
 * 							},
 * 						},
 * 						DestIpRanges: pulumi.StringArray{
 * 							pulumi.String("11.100.0.1/32"),
 * 						},
 * 						DestFqdns: pulumi.StringArray{
 * 							pulumi.String("www.yyy.com"),
 * 							pulumi.String("www.zzz.com"),
 * 						},
 * 						DestRegionCodes: pulumi.StringArray{
 * 							pulumi.String("HK"),
 * 							pulumi.String("IN"),
 * 						},
 * 						DestThreatIntelligences: pulumi.StringArray{
 * 							pulumi.String("iplist-search-engines-crawlers"),
 * 							pulumi.String("iplist-tor-exit-nodes"),
 * 						},
 * 						DestAddressGroups: pulumi.StringArray{
 * 							addressGroup1.ID(),
 * 						},
 * 					},
 * 					TargetSecureTags: compute.RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTagArray{
 * 						&compute.RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs{
 * 							Name: secureTagValue1.ID(),
 * 						},
 * 					},
 * 				},
 * 				&compute.RegionNetworkFirewallPolicyWithRulesRuleArgs{
 * 					Description:   pulumi.String("udp rule"),
 * 					RuleName:      pulumi.String("test-rule"),
 * 					Priority:      pulumi.Int(2000),
 * 					EnableLogging: pulumi.Bool(false),
 * 					Action:        pulumi.String("deny"),
 * 					Direction:     pulumi.String("INGRESS"),
 * 					Match: &compute.RegionNetworkFirewallPolicyWithRulesRuleMatchArgs{
 * 						Layer4Configs: compute.RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{
 * 							&compute.RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{
 * 								IpProtocol: pulumi.String("udp"),
 * 							},
 * 						},
 * 						SrcIpRanges: pulumi.StringArray{
 * 							pulumi.String("0.0.0.0/0"),
 * 						},
 * 						SrcFqdns: pulumi.StringArray{
 * 							pulumi.String("www.abc.com"),
 * 							pulumi.String("www.def.com"),
 * 						},
 * 						SrcRegionCodes: pulumi.StringArray{
 * 							pulumi.String("US"),
 * 							pulumi.String("CA"),
 * 						},
 * 						SrcThreatIntelligences: pulumi.StringArray{
 * 							pulumi.String("iplist-known-malicious-ips"),
 * 							pulumi.String("iplist-public-clouds"),
 * 						},
 * 						SrcAddressGroups: pulumi.StringArray{
 * 							addressGroup1.ID(),
 * 						},
 * 						SrcSecureTags: compute.RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArray{
 * 							&compute.RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs{
 * 								Name: secureTagValue1.ID(),
 * 							},
 * 						},
 * 					},
 * 					Disabled: 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.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.networksecurity.AddressGroup;
 * import com.pulumi.gcp.networksecurity.AddressGroupArgs;
 * import com.pulumi.gcp.tags.TagKey;
 * import com.pulumi.gcp.tags.TagKeyArgs;
 * import com.pulumi.gcp.tags.TagValue;
 * import com.pulumi.gcp.tags.TagValueArgs;
 * import com.pulumi.gcp.compute.RegionNetworkFirewallPolicyWithRules;
 * import com.pulumi.gcp.compute.RegionNetworkFirewallPolicyWithRulesArgs;
 * import com.pulumi.gcp.compute.inputs.RegionNetworkFirewallPolicyWithRulesRuleArgs;
 * import com.pulumi.gcp.compute.inputs.RegionNetworkFirewallPolicyWithRulesRuleMatchArgs;
 * 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 addressGroup1 = new AddressGroup("addressGroup1", AddressGroupArgs.builder()
 *             .name("tf-address-group")
 *             .parent(project.applyValue(getProjectResult -> getProjectResult.id()))
 *             .description("Regional address group")
 *             .location("us-west2")
 *             .items("208.80.154.224/32")
 *             .type("IPV4")
 *             .capacity(100)
 *             .build());
 *         var secureTagKey1 = new TagKey("secureTagKey1", TagKeyArgs.builder()
 *             .description("Tag key")
 *             .parent(project.applyValue(getProjectResult -> getProjectResult.id()))
 *             .purpose("GCE_FIREWALL")
 *             .shortName("tf-tag-key")
 *             .purposeData(Map.of("network", String.format("%s/default", project.applyValue(getProjectResult -> getProjectResult.name()))))
 *             .build());
 *         var secureTagValue1 = new TagValue("secureTagValue1", TagValueArgs.builder()
 *             .description("Tag value")
 *             .parent(secureTagKey1.id())
 *             .shortName("tf-tag-value")
 *             .build());
 *         var region_network_firewall_policy_with_rules = new RegionNetworkFirewallPolicyWithRules("region-network-firewall-policy-with-rules", RegionNetworkFirewallPolicyWithRulesArgs.builder()
 *             .name("tf-region-fw-policy-with-rules")
 *             .region("us-west2")
 *             .description("Terraform test")
 *             .rules(
 *                 RegionNetworkFirewallPolicyWithRulesRuleArgs.builder()
 *                     .description("tcp rule")
 *                     .priority(1000)
 *                     .enableLogging(true)
 *                     .action("allow")
 *                     .direction("EGRESS")
 *                     .match(RegionNetworkFirewallPolicyWithRulesRuleMatchArgs.builder()
 *                         .layer4Configs(RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()
 *                             .ipProtocol("tcp")
 *                             .ports(
 *                                 8080,
 *                                 7070)
 *                             .build())
 *                         .destIpRanges("11.100.0.1/32")
 *                         .destFqdns(
 *                             "www.yyy.com",
 *                             "www.zzz.com")
 *                         .destRegionCodes(
 *                             "HK",
 *                             "IN")
 *                         .destThreatIntelligences(
 *                             "iplist-search-engines-crawlers",
 *                             "iplist-tor-exit-nodes")
 *                         .destAddressGroups(addressGroup1.id())
 *                         .build())
 *                     .targetSecureTags(RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs.builder()
 *                         .name(secureTagValue1.id())
 *                         .build())
 *                     .build(),
 *                 RegionNetworkFirewallPolicyWithRulesRuleArgs.builder()
 *                     .description("udp rule")
 *                     .ruleName("test-rule")
 *                     .priority(2000)
 *                     .enableLogging(false)
 *                     .action("deny")
 *                     .direction("INGRESS")
 *                     .match(RegionNetworkFirewallPolicyWithRulesRuleMatchArgs.builder()
 *                         .layer4Configs(RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()
 *                             .ipProtocol("udp")
 *                             .build())
 *                         .srcIpRanges("0.0.0.0/0")
 *                         .srcFqdns(
 *                             "www.abc.com",
 *                             "www.def.com")
 *                         .srcRegionCodes(
 *                             "US",
 *                             "CA")
 *                         .srcThreatIntelligences(
 *                             "iplist-known-malicious-ips",
 *                             "iplist-public-clouds")
 *                         .srcAddressGroups(addressGroup1.id())
 *                         .srcSecureTags(RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs.builder()
 *                             .name(secureTagValue1.id())
 *                             .build())
 *                         .build())
 *                     .disabled(true)
 *                     .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   region-network-firewall-policy-with-rules:
 *     type: gcp:compute:RegionNetworkFirewallPolicyWithRules
 *     properties:
 *       name: tf-region-fw-policy-with-rules
 *       region: us-west2
 *       description: Terraform test
 *       rules:
 *         - description: tcp rule
 *           priority: 1000
 *           enableLogging: true
 *           action: allow
 *           direction: EGRESS
 *           match:
 *             layer4Configs:
 *               - ipProtocol: tcp
 *                 ports:
 *                   - 8080
 *                   - 7070
 *             destIpRanges:
 *               - 11.100.0.1/32
 *             destFqdns:
 *               - www.yyy.com
 *               - www.zzz.com
 *             destRegionCodes:
 *               - HK
 *               - IN
 *             destThreatIntelligences:
 *               - iplist-search-engines-crawlers
 *               - iplist-tor-exit-nodes
 *             destAddressGroups:
 *               - ${addressGroup1.id}
 *           targetSecureTags:
 *             - name: ${secureTagValue1.id}
 *         - description: udp rule
 *           ruleName: test-rule
 *           priority: 2000
 *           enableLogging: false
 *           action: deny
 *           direction: INGRESS
 *           match:
 *             layer4Configs:
 *               - ipProtocol: udp
 *             srcIpRanges:
 *               - 0.0.0.0/0
 *             srcFqdns:
 *               - www.abc.com
 *               - www.def.com
 *             srcRegionCodes:
 *               - US
 *               - CA
 *             srcThreatIntelligences:
 *               - iplist-known-malicious-ips
 *               - iplist-public-clouds
 *             srcAddressGroups:
 *               - ${addressGroup1.id}
 *             srcSecureTags:
 *               - name: ${secureTagValue1.id}
 *           disabled: true
 *   addressGroup1:
 *     type: gcp:networksecurity:AddressGroup
 *     name: address_group_1
 *     properties:
 *       name: tf-address-group
 *       parent: ${project.id}
 *       description: Regional address group
 *       location: us-west2
 *       items:
 *         - 208.80.154.224/32
 *       type: IPV4
 *       capacity: 100
 *   secureTagKey1:
 *     type: gcp:tags:TagKey
 *     name: secure_tag_key_1
 *     properties:
 *       description: Tag key
 *       parent: ${project.id}
 *       purpose: GCE_FIREWALL
 *       shortName: tf-tag-key
 *       purposeData:
 *         network: ${project.name}/default
 *   secureTagValue1:
 *     type: gcp:tags:TagValue
 *     name: secure_tag_value_1
 *     properties:
 *       description: Tag value
 *       parent: ${secureTagKey1.id}
 *       shortName: tf-tag-value
 * variables:
 *   project:
 *     fn::invoke:
 *       function: gcp:organizations:getProject
 *       arguments: {}
 * ```
 * 
 * ## Import
 * RegionNetworkFirewallPolicyWithRules can be imported using any of these accepted formats:
 * * `projects/{{project}}/regions/{{region}}/firewallPolicies/{{name}}`
 * * `{{project}}/{{region}}/{{name}}`
 * * `{{region}}/{{name}}`
 * * `{{name}}`
 * When using the `pulumi import` command, RegionNetworkFirewallPolicyWithRules can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:compute/regionNetworkFirewallPolicyWithRules:RegionNetworkFirewallPolicyWithRules default projects/{{project}}/regions/{{region}}/firewallPolicies/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:compute/regionNetworkFirewallPolicyWithRules:RegionNetworkFirewallPolicyWithRules default {{project}}/{{region}}/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:compute/regionNetworkFirewallPolicyWithRules:RegionNetworkFirewallPolicyWithRules default {{region}}/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:compute/regionNetworkFirewallPolicyWithRules:RegionNetworkFirewallPolicyWithRules default {{name}}
 * ```
 */
public class RegionNetworkFirewallPolicyWithRules internal constructor(
    override val javaResource: com.pulumi.gcp.compute.RegionNetworkFirewallPolicyWithRules,
) : KotlinCustomResource(javaResource, RegionNetworkFirewallPolicyWithRulesMapper) {
    /**
     * Creation timestamp in RFC3339 text format.
     */
    public val creationTimestamp: Output
        get() = javaResource.creationTimestamp().applyValue({ args0 -> args0 })

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

    /**
     * Fingerprint of the resource. This field is used internally during updates of this resource.
     */
    public val fingerprint: Output
        get() = javaResource.fingerprint().applyValue({ args0 -> args0 })

    /**
     * User-provided name of the Network firewall policy.
     * The name should be unique in the project in which the firewall policy is created.
     * The name must be 1-63 characters long, and comply with RFC1035. Specifically,
     * the name must be 1-63 characters long and match the regular expression a-z?
     * which means the first character must be a lowercase letter, and all following characters must be a dash,
     * lowercase letter, or digit, except the last character, which cannot be a dash.
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * The unique identifier for the resource. This identifier is defined by the server.
     */
    public val networkFirewallPolicyId: Output
        get() = javaResource.networkFirewallPolicyId().applyValue({ args0 -> args0 })

    /**
     * A list of firewall policy pre-defined rules.
     * Structure is documented below.
     */
    public val predefinedRules: Output>
        get() = javaResource.predefinedRules().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> regionNetworkFirewallPolicyWithRulesPredefinedRuleToKotlin(args0) })
            })
        })

    public val project: Output
        get() = javaResource.project().applyValue({ args0 -> args0 })

    /**
     * The region of this resource.
     */
    public val region: Output
        get() = javaResource.region().applyValue({ args0 -> args0 })

    /**
     * Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.
     */
    public val ruleTupleCount: Output
        get() = javaResource.ruleTupleCount().applyValue({ args0 -> args0 })

    /**
     * A list of firewall policy rules.
     * Structure is documented below.
     */
    public val rules: Output>
        get() = javaResource.rules().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    regionNetworkFirewallPolicyWithRulesRuleToKotlin(args0)
                })
            })
        })

    /**
     * Server-defined URL for the resource.
     */
    public val selfLink: Output
        get() = javaResource.selfLink().applyValue({ args0 -> args0 })

    /**
     * Server-defined URL for this resource with the resource id.
     */
    public val selfLinkWithId: Output
        get() = javaResource.selfLinkWithId().applyValue({ args0 -> args0 })
}

public object RegionNetworkFirewallPolicyWithRulesMapper :
    ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.gcp.compute.RegionNetworkFirewallPolicyWithRules::class == javaResource::class

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy