Skip to content

Commit cd21e6a

Browse files
Composer internal ip (#9507) (#6761)
[upstream:160dcbcb63977c2e56e4a342905588829b120e3f] Signed-off-by: Modular Magician <[email protected]>
1 parent 40d70bc commit cd21e6a

File tree

4 files changed

+89
-2
lines changed

4 files changed

+89
-2
lines changed

.changelog/9507.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
composer: added support for `composer_internal_ipv4_cidr_block` field to `google_composer_environment`
3+
```

google-beta/services/composer/resource_composer_environment.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,13 @@ func ResourceComposerEnvironment() *schema.Resource {
341341
},
342342
},
343343
},
344+
"composer_internal_ipv4_cidr_block": {
345+
Type: schema.TypeString,
346+
Computed: true,
347+
Optional: true,
348+
ForceNew: true,
349+
Description: `IPv4 cidr range that will be used by Composer internal components.`,
350+
},
344351
},
345352
},
346353
},
@@ -1569,8 +1576,10 @@ func flattenComposerEnvironmentConfigPrivateEnvironmentConfig(envCfg *composer.P
15691576
if envCfg.NetworkingConfig != nil {
15701577
transformed["connection_type"] = envCfg.NetworkingConfig.ConnectionType
15711578
}
1572-
transformed["enable_private_endpoint"] = envCfg.PrivateClusterConfig.EnablePrivateEndpoint
1573-
transformed["master_ipv4_cidr_block"] = envCfg.PrivateClusterConfig.MasterIpv4CidrBlock
1579+
if envCfg.PrivateClusterConfig != nil {
1580+
transformed["enable_private_endpoint"] = envCfg.PrivateClusterConfig.EnablePrivateEndpoint
1581+
transformed["master_ipv4_cidr_block"] = envCfg.PrivateClusterConfig.MasterIpv4CidrBlock
1582+
}
15741583
transformed["cloud_sql_ipv4_cidr_block"] = envCfg.CloudSqlIpv4CidrBlock
15751584
transformed["web_server_ipv4_cidr_block"] = envCfg.WebServerIpv4CidrBlock
15761585
transformed["cloud_composer_network_ipv4_cidr_block"] = envCfg.CloudComposerNetworkIpv4CidrBlock
@@ -1596,6 +1605,7 @@ func flattenComposerEnvironmentConfigNodeConfig(nodeCfg *composer.NodeConfig) in
15961605
transformed["enable_ip_masq_agent"] = nodeCfg.EnableIpMasqAgent
15971606
transformed["tags"] = flattenComposerEnvironmentConfigNodeConfigTags(nodeCfg.Tags)
15981607
transformed["ip_allocation_policy"] = flattenComposerEnvironmentConfigNodeConfigIPAllocationPolicy(nodeCfg.IpAllocationPolicy)
1608+
transformed["composer_internal_ipv4_cidr_block"] = nodeCfg.ComposerInternalIpv4CidrBlock
15991609
return []interface{}{transformed}
16001610
}
16011611

@@ -2130,6 +2140,10 @@ func expandComposerEnvironmentConfigNodeConfig(v interface{}, d *schema.Resource
21302140
}
21312141
transformed.Tags = transformedTags
21322142

2143+
if transformedComposerInternalIpv4CidrBlock, ok := original["composer_internal_ipv4_cidr_block"]; ok {
2144+
transformed.ComposerInternalIpv4CidrBlock = transformedComposerInternalIpv4CidrBlock.(string)
2145+
}
2146+
21332147
return transformed, nil
21342148
}
21352149

google-beta/services/composer/resource_composer_environment_test.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,6 +1114,40 @@ func TestAccComposerEnvironment_customBucket(t *testing.T) {
11141114
})
11151115
}
11161116

1117+
// Checks Composer 3 environment creation with new fields.
1118+
func TestAccComposerEnvironmentComposer3_basic(t *testing.T) {
1119+
t.Parallel()
1120+
1121+
envName := fmt.Sprintf("%s-%d", testComposerEnvironmentPrefix, acctest.RandInt(t))
1122+
network := fmt.Sprintf("%s-%d", testComposerNetworkPrefix, acctest.RandInt(t))
1123+
subnetwork := network + "-1"
1124+
1125+
acctest.VcrTest(t, resource.TestCase{
1126+
PreCheck: func() { acctest.AccTestPreCheck(t) },
1127+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
1128+
CheckDestroy: testAccComposerEnvironmentDestroyProducer(t),
1129+
Steps: []resource.TestStep{
1130+
{
1131+
Config: testAccComposerEnvironmentComposer3_basic(envName, network, subnetwork),
1132+
},
1133+
{
1134+
ResourceName: "google_composer_environment.test",
1135+
ImportState: true,
1136+
ImportStateVerify: true,
1137+
},
1138+
// This is a terrible clean-up step in order to get destroy to succeed,
1139+
// due to dangling firewall rules left by the Composer Environment blocking network deletion.
1140+
// TODO: Remove this check if firewall rules bug gets fixed by Composer.
1141+
{
1142+
PlanOnly: true,
1143+
ExpectNonEmptyPlan: false,
1144+
Config: testAccComposerEnvironmentComposer3_basic(envName, network, subnetwork),
1145+
Check: testAccCheckClearComposerEnvironmentFirewalls(t, network),
1146+
},
1147+
},
1148+
})
1149+
}
1150+
11171151
func testAccComposerEnvironment_customBucket(bucketName, envName, network, subnetwork string) string {
11181152
return fmt.Sprintf(`
11191153
resource "google_storage_bucket" "test" {
@@ -2662,6 +2696,37 @@ resource "google_project_iam_member" "composer-worker" {
26622696
`, environment, network, subnetwork, serviceAccount)
26632697
}
26642698

2699+
func testAccComposerEnvironmentComposer3_basic(name, network, subnetwork string) string {
2700+
return fmt.Sprintf(`
2701+
resource "google_composer_environment" "test" {
2702+
name = "%s"
2703+
region = "us-central1"
2704+
config {
2705+
node_config {
2706+
composer_internal_ipv4_cidr_block = "100.64.128.0/20"
2707+
}
2708+
software_config {
2709+
image_version = "composer-3-airflow-2"
2710+
}
2711+
}
2712+
}
2713+
2714+
// use a separate network to avoid conflicts with other tests running in parallel
2715+
// that use the default network/subnet
2716+
resource "google_compute_network" "test" {
2717+
name = "%s"
2718+
auto_create_subnetworks = false
2719+
}
2720+
2721+
resource "google_compute_subnetwork" "test" {
2722+
name = "%s"
2723+
ip_cidr_range = "10.2.0.0/16"
2724+
region = "us-central1"
2725+
network = google_compute_network.test.self_link
2726+
}
2727+
`, name, network, subnetwork)
2728+
}
2729+
26652730
// WARNING: This is not actually a check and is a terrible clean-up step because Composer Environments
26662731
// have a bug that hasn't been fixed. Composer will add firewalls to non-default networks for environments
26672732
// but will not remove them when the Environment is deleted.

website/docs/r/composer_environment.html.markdown

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,11 @@ The `node_config` block supports:
769769
packets from node IP addresses instead of Pod IP addresses
770770
See the [documentation](https://cloud.google.com/composer/docs/enable-ip-masquerade-agent).
771771

772+
* `composer_internal_ipv4_cidr_block` -
773+
(Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html), Cloud Composer 3 only)
774+
At least /20 IPv4 cidr range that will be used by Composer internal components.
775+
Cannot be updated.
776+
772777
The `software_config` block supports:
773778

774779
* `airflow_config_overrides` -

0 commit comments

Comments
 (0)