@@ -724,8 +724,7 @@ func TestAccComposerEnvironment_composerV2MasterAuthNetworksUpdate(t *testing.T)
724
724
})
725
725
}
726
726
727
- // Checks behavior of node config, including dependencies on Compute resources.
728
- func TestAccComposerEnvironment_withNodeConfig (t * testing.T ) {
727
+ func TestAccComposer1Environment_withNodeConfig (t * testing.T ) {
729
728
t .Parallel ()
730
729
731
730
envName := fmt .Sprintf ("%s-%d" , testComposerEnvironmentPrefix , RandInt (t ))
@@ -739,7 +738,7 @@ func TestAccComposerEnvironment_withNodeConfig(t *testing.T) {
739
738
CheckDestroy : testAccComposerEnvironmentDestroyProducer (t ),
740
739
Steps : []resource.TestStep {
741
740
{
742
- Config : testAccComposerEnvironment_nodeCfg (envName , network , subnetwork , serviceAccount ),
741
+ Config : testAccComposer1Environment_nodeCfg (envName , network , subnetwork , serviceAccount ),
743
742
},
744
743
{
745
744
ResourceName : "google_composer_environment.test" ,
@@ -752,7 +751,41 @@ func TestAccComposerEnvironment_withNodeConfig(t *testing.T) {
752
751
{
753
752
PlanOnly : true ,
754
753
ExpectNonEmptyPlan : false ,
755
- Config : testAccComposerEnvironment_nodeCfg (envName , network , subnetwork , serviceAccount ),
754
+ Config : testAccComposer1Environment_nodeCfg (envName , network , subnetwork , serviceAccount ),
755
+ Check : testAccCheckClearComposerEnvironmentFirewalls (t , network ),
756
+ },
757
+ },
758
+ })
759
+ }
760
+
761
+ func TestAccComposer2Environment_withNodeConfig (t * testing.T ) {
762
+ t .Parallel ()
763
+
764
+ envName := fmt .Sprintf ("%s-%d" , testComposerEnvironmentPrefix , RandInt (t ))
765
+ network := fmt .Sprintf ("%s-%d" , testComposerNetworkPrefix , RandInt (t ))
766
+ subnetwork := network + "-1"
767
+ serviceAccount := fmt .Sprintf ("tf-test-%d" , RandInt (t ))
768
+
769
+ VcrTest (t , resource.TestCase {
770
+ PreCheck : func () { AccTestPreCheck (t ) },
771
+ ProtoV5ProviderFactories : ProtoV5ProviderFactories (t ),
772
+ CheckDestroy : testAccComposerEnvironmentDestroyProducer (t ),
773
+ Steps : []resource.TestStep {
774
+ {
775
+ Config : testAccComposer2Environment_nodeCfg (envName , network , subnetwork , serviceAccount ),
776
+ },
777
+ {
778
+ ResourceName : "google_composer_environment.test" ,
779
+ ImportState : true ,
780
+ ImportStateVerify : true ,
781
+ },
782
+ // This is a terrible clean-up step in order to get destroy to succeed,
783
+ // due to dangling firewall rules left by the Composer Environment blocking network deletion.
784
+ // TODO: Remove this check if firewall rules bug gets fixed by Composer.
785
+ {
786
+ PlanOnly : true ,
787
+ ExpectNonEmptyPlan : false ,
788
+ Config : testAccComposer2Environment_nodeCfg (envName , network , subnetwork , serviceAccount ),
756
789
Check : testAccCheckClearComposerEnvironmentFirewalls (t , network ),
757
790
},
758
791
},
@@ -1832,7 +1865,7 @@ resource "google_compute_subnetwork" "test" {
1832
1865
` , name , network , subnetwork )
1833
1866
}
1834
1867
1835
- func testAccComposerEnvironment_nodeCfg (environment , network , subnetwork , serviceAccount string ) string {
1868
+ func testAccComposer1Environment_nodeCfg (environment , network , subnetwork , serviceAccount string ) string {
1836
1869
return fmt .Sprintf (`
1837
1870
data "google_project" "project" {}
1838
1871
@@ -1850,6 +1883,10 @@ resource "google_composer_environment" "test" {
1850
1883
use_ip_aliases = true
1851
1884
cluster_ipv4_cidr_block = "10.0.0.0/16"
1852
1885
}
1886
+ tags = toset(["t1", "t2"])
1887
+ machine_type = "n2-highcpu-2"
1888
+ disk_size_gb = 20
1889
+ oauth_scopes = toset(["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/bigquery"])
1853
1890
}
1854
1891
software_config {
1855
1892
image_version = "composer-1-airflow-2"
@@ -1883,6 +1920,56 @@ resource "google_project_iam_member" "composer-worker" {
1883
1920
` , environment , network , subnetwork , serviceAccount )
1884
1921
}
1885
1922
1923
+ func testAccComposer2Environment_nodeCfg (environment , network , subnetwork , serviceAccount string ) string {
1924
+ return fmt .Sprintf (`
1925
+ data "google_project" "project" {}
1926
+
1927
+ resource "google_composer_environment" "test" {
1928
+ name = "%s"
1929
+ region = "us-central1"
1930
+ config {
1931
+ node_config {
1932
+ network = google_compute_network.test.self_link
1933
+ subnetwork = google_compute_subnetwork.test.self_link
1934
+
1935
+ service_account = google_service_account.test.name
1936
+ ip_allocation_policy {
1937
+ cluster_ipv4_cidr_block = "10.0.0.0/16"
1938
+ }
1939
+ tags = toset(["t1", "t2"])
1940
+ }
1941
+ software_config {
1942
+ image_version = "composer-2-airflow-2"
1943
+ }
1944
+ }
1945
+ depends_on = [google_project_iam_member.composer-worker]
1946
+ }
1947
+
1948
+ resource "google_compute_network" "test" {
1949
+ name = "%s"
1950
+ auto_create_subnetworks = false
1951
+ }
1952
+
1953
+ resource "google_compute_subnetwork" "test" {
1954
+ name = "%s"
1955
+ ip_cidr_range = "10.2.0.0/16"
1956
+ region = "us-central1"
1957
+ network = google_compute_network.test.self_link
1958
+ }
1959
+
1960
+ resource "google_service_account" "test" {
1961
+ account_id = "%s"
1962
+ display_name = "Test Service Account for Composer Environment"
1963
+ }
1964
+
1965
+ resource "google_project_iam_member" "composer-worker" {
1966
+ project = data.google_project.project.project_id
1967
+ role = "roles/composer.worker"
1968
+ member = "serviceAccount:${google_service_account.test.email}"
1969
+ }
1970
+ ` , environment , network , subnetwork , serviceAccount )
1971
+ }
1972
+
1886
1973
func testAccComposerEnvironment_airflow2RecoveryCfg (name , network , subnetwork string ) string {
1887
1974
return fmt .Sprintf (`
1888
1975
resource "google_composer_environment" "test" {
0 commit comments