@@ -4,6 +4,7 @@ package compute_test
4
4
5
5
import (
6
6
"fmt"
7
+ "net/http"
7
8
"reflect"
8
9
"regexp"
9
10
"sort"
@@ -19,6 +20,7 @@ import (
19
20
"github.com/hashicorp/terraform-provider-google/google/envvar"
20
21
tpgcompute "github.com/hashicorp/terraform-provider-google/google/services/compute"
21
22
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
23
+ transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
22
24
23
25
"google.golang.org/api/compute/v1"
24
26
)
@@ -8044,3 +8046,100 @@ resource "google_compute_instance" "foobar" {
8044
8046
}
8045
8047
` , suffix , region , suffix , instance , region , stack_type )
8046
8048
}
8049
+
8050
+ func TestAccComputeInstance_bootDisk_storagePoolSpecified (t * testing.T ) {
8051
+ t .Parallel ()
8052
+
8053
+ instanceName := fmt .Sprintf ("tf-test-instance-%s" , acctest .RandString (t , 10 ))
8054
+ storagePoolName := fmt .Sprintf ("tf-test-storage-pool-%s" , acctest .RandString (t , 10 ))
8055
+ storagePoolUrl := fmt .Sprintf ("/projects/%s/zones/%s/storagePools/%s" , envvar .GetTestProjectFromEnv (), envvar .GetTestZoneFromEnv (), storagePoolName )
8056
+
8057
+ acctest .VcrTest (t , resource.TestCase {
8058
+ PreCheck : func () { acctest .AccTestPreCheck (t ) },
8059
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories (t ),
8060
+ Steps : []resource.TestStep {
8061
+ {
8062
+ PreConfig : setupTestingStoragePool_HyperdiskBalanced (t , storagePoolName ),
8063
+ Config : testAccComputeInstance_bootDisk_storagePoolSpecified (instanceName , storagePoolUrl , envvar .GetTestZoneFromEnv ()),
8064
+ Check : resource .ComposeTestCheckFunc (
8065
+ resource .TestCheckResourceAttr ("google_compute_instance.foobar" , "boot_disk.0.initialize_params.0.storage_pool" , storagePoolName ),
8066
+ ),
8067
+ },
8068
+ {
8069
+ ResourceName : "google_compute_instance.foobar" ,
8070
+ ImportState : true ,
8071
+ ImportStateVerify : true ,
8072
+ },
8073
+ },
8074
+ })
8075
+
8076
+ cleanupTestingStoragePool (t , storagePoolName )
8077
+ }
8078
+
8079
+ func setupTestingStoragePool_HyperdiskBalanced (t * testing.T , storagePoolName string ) func () {
8080
+ return func () {
8081
+ config := acctest .GoogleProviderConfig (t )
8082
+ headers := make (http.Header )
8083
+ project := envvar .GetTestProjectFromEnv ()
8084
+ zone := envvar .GetTestZoneFromEnv ()
8085
+ url := fmt .Sprintf ("%sprojects/%s/zones/%s/storagePools" , config .ComputeBasePath , project , zone )
8086
+ storagePoolTypeUrl := fmt .Sprintf ("/projects/%s/zones/%s/storagePoolTypes/hyperdisk-balanced" , project , zone )
8087
+ defaultTimeout := 20 * time .Minute
8088
+ obj := make (map [string ]interface {})
8089
+ obj ["name" ] = storagePoolName
8090
+ obj ["poolProvisionedCapacityGb" ] = 10240
8091
+ obj ["poolProvisionedIops" ] = 10000
8092
+ obj ["poolProvisionedThroughput" ] = 1024
8093
+ obj ["storagePoolType" ] = storagePoolTypeUrl
8094
+ obj ["capacityProvisioningType" ] = "ADVANCED"
8095
+
8096
+ res , err := transport_tpg .SendRequest (transport_tpg.SendRequestOptions {
8097
+ Config : config ,
8098
+ Method : "POST" ,
8099
+ Project : project ,
8100
+ RawURL : url ,
8101
+ UserAgent : config .UserAgent ,
8102
+ Body : obj ,
8103
+ Timeout : defaultTimeout ,
8104
+ Headers : headers ,
8105
+ })
8106
+ if err != nil {
8107
+ t .Errorf ("Error creating StoragePool: %s" , err )
8108
+ }
8109
+
8110
+ err = tpgcompute .ComputeOperationWaitTime (config , res , project , "Creating StoragePool" , config .UserAgent , defaultTimeout )
8111
+ if err != nil {
8112
+ t .Errorf ("Error waiting to create StoragePool: %s" , err )
8113
+ }
8114
+ }
8115
+ }
8116
+
8117
+ func testAccComputeInstance_bootDisk_storagePoolSpecified (instanceName , storagePoolUrl , zone string ) string {
8118
+ return fmt .Sprintf (`
8119
+ data "google_compute_image" "my_image" {
8120
+ family = "ubuntu-2204-lts"
8121
+ project = "ubuntu-os-cloud"
8122
+ }
8123
+
8124
+ data "google_project" "project" {}
8125
+
8126
+ resource "google_compute_instance" "foobar" {
8127
+ name = "%s"
8128
+ machine_type= "h3-standard-88"
8129
+ zone = "%s"
8130
+
8131
+ boot_disk {
8132
+ initialize_params {
8133
+ image = data.google_compute_image.my_image.self_link
8134
+ type = "hyperdisk-balanced"
8135
+ size = 500
8136
+ storage_pool = "%s"
8137
+ }
8138
+ }
8139
+
8140
+ network_interface {
8141
+ network = "default"
8142
+ }
8143
+ }
8144
+ ` , instanceName , zone , storagePoolUrl )
8145
+ }
0 commit comments