Add label support to google_compute_snapshot (#570)

* Add label support to google_compute_snapshot
* Refactor operation polling code to use client directly
This commit is contained in:
Joe Selman 2017-10-13 15:36:03 -07:00 committed by GitHub
parent 8a115cc499
commit 2765290724
47 changed files with 303 additions and 167 deletions

View File

@ -65,13 +65,13 @@ func (e ComputeOperationError) Error() string {
return buf.String()
}
func computeOperationWait(config *Config, op *compute.Operation, project, activity string) error {
return computeOperationWaitTime(config, op, project, activity, 4)
func computeOperationWait(client *compute.Service, op *compute.Operation, project, activity string) error {
return computeOperationWaitTime(client, op, project, activity, 4)
}
func computeOperationWaitTime(config *Config, op *compute.Operation, project, activity string, timeoutMin int) error {
func computeOperationWaitTime(client *compute.Service, op *compute.Operation, project, activity string, timeoutMin int) error {
w := &ComputeOperationWaiter{
Service: config.clientCompute,
Service: client,
Op: op,
Project: project,
}
@ -93,12 +93,12 @@ func computeOperationWaitTime(config *Config, op *compute.Operation, project, ac
return nil
}
func computeBetaOperationWaitTime(config *Config, op *computeBeta.Operation, project, activity string, timeoutMin int) error {
func computeBetaOperationWaitTime(client *compute.Service, op *computeBeta.Operation, project, activity string, timeoutMin int) error {
opV1 := &compute.Operation{}
err := Convert(op, opV1)
if err != nil {
return err
}
return computeOperationWaitTime(config, opV1, project, activity, timeoutMin)
return computeOperationWaitTime(client, opV1, project, activity, timeoutMin)
}

View File

@ -5,20 +5,20 @@ import (
"google.golang.org/api/compute/v1"
)
func computeSharedOperationWait(config *Config, op interface{}, project string, activity string) error {
return computeSharedOperationWaitTime(config, op, project, 4, activity)
func computeSharedOperationWait(client *compute.Service, op interface{}, project string, activity string) error {
return computeSharedOperationWaitTime(client, op, project, 4, activity)
}
func computeSharedOperationWaitTime(config *Config, op interface{}, project string, minutes int, activity string) error {
func computeSharedOperationWaitTime(client *compute.Service, op interface{}, project string, minutes int, activity string) error {
if op == nil {
panic("Attempted to wait on an Operation that was nil.")
}
switch op.(type) {
case *compute.Operation:
return computeOperationWaitTime(config, op.(*compute.Operation), project, activity, minutes)
return computeOperationWaitTime(client, op.(*compute.Operation), project, activity, minutes)
case *computeBeta.Operation:
return computeBetaOperationWaitTime(config, op.(*computeBeta.Operation), project, activity, minutes)
return computeBetaOperationWaitTime(client, op.(*computeBeta.Operation), project, activity, minutes)
default:
panic("Attempted to wait on an Operation of unknown type.")
}

View File

@ -88,7 +88,7 @@ func resourceComputeAddressCreate(d *schema.ResourceData, meta interface{}) erro
Name: addr.Name,
}.canonicalId())
err = computeOperationWait(config, op, project, "Creating Address")
err = computeOperationWait(config.clientCompute, op, project, "Creating Address")
if err != nil {
return err
}
@ -134,7 +134,7 @@ func resourceComputeAddressDelete(d *schema.ResourceData, meta interface{}) erro
return fmt.Errorf("Error deleting address: %s", err)
}
err = computeOperationWait(config, op, addressId.Project, "Deleting Address")
err = computeOperationWait(config.clientCompute, op, addressId.Project, "Deleting Address")
if err != nil {
return err
}

View File

@ -232,7 +232,7 @@ func resourceComputeAutoscalerCreate(d *schema.ResourceData, meta interface{}) e
// It probably maybe worked, so store the ID now
d.SetId(scaler.Name)
err = computeOperationWait(config, op, project, "Creating Autoscaler")
err = computeOperationWait(config.clientCompute, op, project, "Creating Autoscaler")
if err != nil {
return err
}
@ -352,7 +352,7 @@ func resourceComputeAutoscalerUpdate(d *schema.ResourceData, meta interface{}) e
// It probably maybe worked, so store the ID now
d.SetId(scaler.Name)
err = computeOperationWait(config, op, project, "Updating Autoscaler")
err = computeOperationWait(config.clientCompute, op, project, "Updating Autoscaler")
if err != nil {
return err
}
@ -375,7 +375,7 @@ func resourceComputeAutoscalerDelete(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error deleting autoscaler: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Autoscaler")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Autoscaler")
if err != nil {
return err
}

View File

@ -87,7 +87,7 @@ func resourceComputeBackendBucketCreate(d *schema.ResourceData, meta interface{}
d.SetId(bucket.Name)
// Wait for the operation to complete
waitErr := computeOperationWait(config, op, project, "Creating Backend Bucket")
waitErr := computeOperationWait(config.clientCompute, op, project, "Creating Backend Bucket")
if waitErr != nil {
// The resource didn't actually create
d.SetId("")
@ -150,7 +150,7 @@ func resourceComputeBackendBucketUpdate(d *schema.ResourceData, meta interface{}
d.SetId(bucket.Name)
err = computeOperationWait(config, op, project, "Updating Backend Bucket")
err = computeOperationWait(config.clientCompute, op, project, "Updating Backend Bucket")
if err != nil {
return err
}
@ -173,7 +173,7 @@ func resourceComputeBackendBucketDelete(d *schema.ResourceData, meta interface{}
return fmt.Errorf("Error deleting backend bucket: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Backend Bucket")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Backend Bucket")
if err != nil {
return err
}

View File

@ -174,7 +174,7 @@ func resourceComputeBackendServiceCreate(d *schema.ResourceData, meta interface{
d.SetId(service.Name)
// Wait for the operation to complete
waitErr := computeOperationWait(config, op, project, "Creating Backend Service")
waitErr := computeOperationWait(config.clientCompute, op, project, "Creating Backend Service")
if waitErr != nil {
// The resource didn't actually create
d.SetId("")
@ -238,7 +238,7 @@ func resourceComputeBackendServiceUpdate(d *schema.ResourceData, meta interface{
d.SetId(service.Name)
err = computeOperationWait(config, op, project, "Updating Backend Service")
err = computeOperationWait(config.clientCompute, op, project, "Updating Backend Service")
if err != nil {
return err
}
@ -261,7 +261,7 @@ func resourceComputeBackendServiceDelete(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error deleting backend service: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Backend Service")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Backend Service")
if err != nil {
return err
}

View File

@ -199,7 +199,7 @@ func resourceComputeDiskCreate(d *schema.ResourceData, meta interface{}) error {
// It probably maybe worked, so store the ID now
d.SetId(disk.Name)
err = computeOperationWait(config, op, project, "Creating Disk")
err = computeOperationWait(config.clientCompute, op, project, "Creating Disk")
if err != nil {
return err
}
@ -225,7 +225,7 @@ func resourceComputeDiskUpdate(d *schema.ResourceData, meta interface{}) error {
}
d.SetPartial("size")
err = computeOperationWait(config, op, project, "Resizing Disk")
err = computeOperationWait(config.clientCompute, op, project, "Resizing Disk")
if err != nil {
return err
}
@ -243,7 +243,7 @@ func resourceComputeDiskUpdate(d *schema.ResourceData, meta interface{}) error {
}
d.SetPartial("labels")
err = computeOperationWait(config, op, project, "Setting labels on disk")
err = computeOperationWait(config.clientCompute, op, project, "Setting labels on disk")
if err != nil {
return err
}
@ -357,7 +357,7 @@ func resourceComputeDiskDelete(d *schema.ResourceData, meta interface{}) error {
return fmt.Errorf("Error detaching disk %s from instance %s/%s/%s: %s", call.deviceName, call.project,
call.zone, call.instance, err.Error())
}
err = computeOperationWait(config, op, call.project,
err = computeOperationWait(config.clientCompute, op, call.project,
fmt.Sprintf("Detaching disk from %s/%s/%s", call.project, call.zone, call.instance))
if err != nil {
return err
@ -378,7 +378,7 @@ func resourceComputeDiskDelete(d *schema.ResourceData, meta interface{}) error {
return fmt.Errorf("Error deleting disk: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Disk")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Disk")
if err != nil {
return err
}

View File

@ -225,7 +225,7 @@ func resourceComputeFirewallCreate(d *schema.ResourceData, meta interface{}) err
// It probably maybe worked, so store the ID now
d.SetId(firewall.Name)
err = computeSharedOperationWait(config, op, project, "Creating Firewall")
err = computeSharedOperationWait(config.clientCompute, op, project, "Creating Firewall")
if err != nil {
return err
}
@ -359,7 +359,7 @@ func resourceComputeFirewallUpdate(d *schema.ResourceData, meta interface{}) err
}
}
err = computeSharedOperationWait(config, op, project, "Updating Firewall")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating Firewall")
if err != nil {
return err
}
@ -393,7 +393,7 @@ func resourceComputeFirewallDelete(d *schema.ResourceData, meta interface{}) err
}
}
err = computeSharedOperationWait(config, op, project, "Deleting Firewall")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting Firewall")
if err != nil {
return err
}

View File

@ -170,7 +170,7 @@ func resourceComputeForwardingRuleCreate(d *schema.ResourceData, meta interface{
// It probably maybe worked, so store the ID now
d.SetId(frule.Name)
err = computeOperationWait(config, op, project, "Creating Fowarding Rule")
err = computeOperationWait(config.clientCompute, op, project, "Creating Fowarding Rule")
if err != nil {
return err
}
@ -202,7 +202,7 @@ func resourceComputeForwardingRuleUpdate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error updating target: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Forwarding Rule")
err = computeOperationWait(config.clientCompute, op, project, "Updating Forwarding Rule")
if err != nil {
return err
}
@ -272,7 +272,7 @@ func resourceComputeForwardingRuleDelete(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error deleting ForwardingRule: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Forwarding Rule")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Forwarding Rule")
if err != nil {
return err
}

View File

@ -74,7 +74,7 @@ func resourceComputeGlobalAddressCreate(d *schema.ResourceData, meta interface{}
// It probably maybe worked, so store the ID now
d.SetId(addr.Name)
err = computeSharedOperationWait(config, op, project, "Creating Global Address")
err = computeSharedOperationWait(config.clientCompute, op, project, "Creating Global Address")
if err != nil {
return err
}
@ -118,7 +118,7 @@ func resourceComputeGlobalAddressDelete(d *schema.ResourceData, meta interface{}
return fmt.Errorf("Error deleting address: %s", err)
}
err = computeSharedOperationWait(config, op, project, "Deleting Global Address")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting Global Address")
if err != nil {
return err
}

View File

@ -150,7 +150,7 @@ func resourceComputeGlobalForwardingRuleCreate(d *schema.ResourceData, meta inte
// It probably maybe worked, so store the ID now
d.SetId(frule.Name)
err = computeSharedOperationWait(config, op, project, "Creating Global Fowarding Rule")
err = computeSharedOperationWait(config.clientCompute, op, project, "Creating Global Fowarding Rule")
if err != nil {
return err
}
@ -216,7 +216,7 @@ func resourceComputeGlobalForwardingRuleUpdate(d *schema.ResourceData, meta inte
}
}
err = computeSharedOperationWait(config, op, project, "Updating Global Forwarding Rule")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating Global Forwarding Rule")
if err != nil {
return err
}
@ -308,7 +308,7 @@ func resourceComputeGlobalForwardingRuleDelete(d *schema.ResourceData, meta inte
}
}
err = computeSharedOperationWait(config, op, project, "Deleting GlobalForwarding Rule")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting GlobalForwarding Rule")
if err != nil {
return err
}
@ -358,7 +358,7 @@ func resourceComputeGlobalForwardingRuleSetLabels(config *Config, computeApiVers
computeApiVersion)
}
err = computeSharedOperationWait(config, op, project, "Setting labels on Global Forwarding Rule")
err = computeSharedOperationWait(config.clientCompute, op, project, "Setting labels on Global Forwarding Rule")
if err != nil {
return err
}

View File

@ -302,7 +302,7 @@ func resourceComputeHealthCheckCreate(d *schema.ResourceData, meta interface{})
// It probably maybe worked, so store the ID now
d.SetId(hchk.Name)
err = computeOperationWait(config, op, project, "Creating Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Creating Health Check")
if err != nil {
return err
}
@ -422,7 +422,7 @@ func resourceComputeHealthCheckUpdate(d *schema.ResourceData, meta interface{})
// It probably maybe worked, so store the ID now
d.SetId(hchk.Name)
err = computeOperationWait(config, op, project, "Updating Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Updating Health Check")
if err != nil {
return err
}
@ -475,7 +475,7 @@ func resourceComputeHealthCheckDelete(d *schema.ResourceData, meta interface{})
return fmt.Errorf("Error deleting HealthCheck: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Health Check")
if err != nil {
return err
}

View File

@ -134,7 +134,7 @@ func resourceComputeHttpHealthCheckCreate(d *schema.ResourceData, meta interface
// It probably maybe worked, so store the ID now
d.SetId(hchk.Name)
err = computeOperationWait(config, op, project, "Creating Http Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Creating Http Health Check")
if err != nil {
return err
}
@ -190,7 +190,7 @@ func resourceComputeHttpHealthCheckUpdate(d *schema.ResourceData, meta interface
// It probably maybe worked, so store the ID now
d.SetId(hchk.Name)
err = computeOperationWait(config, op, project, "Updating Http Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Updating Http Health Check")
if err != nil {
return err
}
@ -242,7 +242,7 @@ func resourceComputeHttpHealthCheckDelete(d *schema.ResourceData, meta interface
return fmt.Errorf("Error deleting HttpHealthCheck: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Http Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Http Health Check")
if err != nil {
return err
}

View File

@ -133,7 +133,7 @@ func resourceComputeHttpsHealthCheckCreate(d *schema.ResourceData, meta interfac
// It probably maybe worked, so store the ID now
d.SetId(hchk.Name)
err = computeOperationWait(config, op, project, "Creating Https Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Creating Https Health Check")
if err != nil {
return err
}
@ -189,7 +189,7 @@ func resourceComputeHttpsHealthCheckUpdate(d *schema.ResourceData, meta interfac
// It probably maybe worked, so store the ID now
d.SetId(hchk.Name)
err = computeOperationWait(config, op, project, "Updating Https Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Updating Https Health Check")
if err != nil {
return err
}
@ -240,7 +240,7 @@ func resourceComputeHttpsHealthCheckDelete(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error deleting HttpsHealthCheck: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Https Health Check")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Https Health Check")
if err != nil {
return err
}

View File

@ -166,7 +166,7 @@ func resourceComputeImageCreate(d *schema.ResourceData, meta interface{}) error
// Store the ID
d.SetId(image.Name)
err = computeOperationWaitTime(config, op, project, "Creating Image", createTimeout)
err = computeOperationWaitTime(config.clientCompute, op, project, "Creating Image", createTimeout)
if err != nil {
return err
}
@ -235,7 +235,7 @@ func resourceComputeImageUpdate(d *schema.ResourceData, meta interface{}) error
d.SetPartial("labels")
err = computeOperationWaitTime(config, op, project, "Setting labels", 4)
err = computeOperationWaitTime(config.clientCompute, op, project, "Setting labels", 4)
if err != nil {
return err
}
@ -268,7 +268,7 @@ func resourceComputeImageDelete(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error deleting image: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting image")
err = computeOperationWait(config.clientCompute, op, project, "Deleting image")
if err != nil {
return err
}

View File

@ -790,7 +790,7 @@ func resourceComputeInstanceCreate(d *schema.ResourceData, meta interface{}) err
d.SetId(instance.Name)
// Wait for the operation to complete
waitErr := computeSharedOperationWaitTime(config, op, project, createTimeout, "instance to create")
waitErr := computeSharedOperationWaitTime(config.clientCompute, op, project, createTimeout, "instance to create")
if waitErr != nil {
// The resource didn't actually create
d.SetId("")
@ -1052,7 +1052,7 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err
return fmt.Errorf("Error updating metadata: %s", err)
}
opErr := computeOperationWait(config, op, project, "metadata to update")
opErr := computeOperationWait(config.clientCompute, op, project, "metadata to update")
if opErr != nil {
return opErr
}
@ -1072,7 +1072,7 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err
return fmt.Errorf("Error updating tags: %s", err)
}
opErr := computeOperationWait(config, op, project, "tags to update")
opErr := computeOperationWait(config.clientCompute, op, project, "tags to update")
if opErr != nil {
return opErr
}
@ -1090,7 +1090,7 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err
return fmt.Errorf("Error updating labels: %s", err)
}
opErr := computeOperationWait(config, op, project, "labels to update")
opErr := computeOperationWait(config.clientCompute, op, project, "labels to update")
if opErr != nil {
return opErr
}
@ -1120,7 +1120,7 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err
return fmt.Errorf("Error updating scheduling policy: %s", err)
}
opErr := computeOperationWait(config, op, project, "scheduling policy update")
opErr := computeOperationWait(config.clientCompute, op, project, "scheduling policy update")
if opErr != nil {
return opErr
}
@ -1160,7 +1160,7 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err
if err != nil {
return fmt.Errorf("Error deleting old access_config: %s", err)
}
opErr := computeOperationWait(config, op, project, "old access_config to delete")
opErr := computeOperationWait(config.clientCompute, op, project, "old access_config to delete")
if opErr != nil {
return opErr
}
@ -1179,7 +1179,7 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err
if err != nil {
return fmt.Errorf("Error adding new access_config: %s", err)
}
opErr := computeOperationWait(config, op, project, "new access_config to add")
opErr := computeOperationWait(config.clientCompute, op, project, "new access_config to add")
if opErr != nil {
return opErr
}
@ -1209,7 +1209,7 @@ func resourceComputeInstanceDelete(d *schema.ResourceData, meta interface{}) err
}
// Wait for the operation to complete
opErr := computeOperationWait(config, op, project, "instance to delete")
opErr := computeOperationWait(config.clientCompute, op, project, "instance to delete")
if opErr != nil {
return opErr
}

View File

@ -153,7 +153,7 @@ func resourceComputeInstanceGroupCreate(d *schema.ResourceData, meta interface{}
d.SetId(fmt.Sprintf("%s/%s", zone, name))
// Wait for the operation to complete
err = computeOperationWait(config, op, project, "Creating InstanceGroup")
err = computeOperationWait(config.clientCompute, op, project, "Creating InstanceGroup")
if err != nil {
d.SetId("")
return err
@ -177,7 +177,7 @@ func resourceComputeInstanceGroupCreate(d *schema.ResourceData, meta interface{}
}
// Wait for the operation to complete
err = computeOperationWait(config, op, project, "Adding instances to InstanceGroup")
err = computeOperationWait(config.clientCompute, op, project, "Adding instances to InstanceGroup")
if err != nil {
return err
}
@ -281,7 +281,7 @@ func resourceComputeInstanceGroupUpdate(d *schema.ResourceData, meta interface{}
}
} else {
// Wait for the operation to complete
err = computeOperationWait(config, removeOp, project, "Updating InstanceGroup")
err = computeOperationWait(config.clientCompute, removeOp, project, "Updating InstanceGroup")
if err != nil {
return err
}
@ -302,7 +302,7 @@ func resourceComputeInstanceGroupUpdate(d *schema.ResourceData, meta interface{}
}
// Wait for the operation to complete
err = computeOperationWait(config, addOp, project, "Updating InstanceGroup")
err = computeOperationWait(config.clientCompute, addOp, project, "Updating InstanceGroup")
if err != nil {
return err
}
@ -325,7 +325,7 @@ func resourceComputeInstanceGroupUpdate(d *schema.ResourceData, meta interface{}
return fmt.Errorf("Error updating named ports for InstanceGroup: %s", err)
}
err = computeOperationWait(config, op, project, "Updating InstanceGroup")
err = computeOperationWait(config.clientCompute, op, project, "Updating InstanceGroup")
if err != nil {
return err
}
@ -352,7 +352,7 @@ func resourceComputeInstanceGroupDelete(d *schema.ResourceData, meta interface{}
return fmt.Errorf("Error deleting InstanceGroup: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting InstanceGroup")
err = computeOperationWait(config.clientCompute, op, project, "Deleting InstanceGroup")
if err != nil {
return err
}

View File

@ -225,7 +225,7 @@ func resourceComputeInstanceGroupManagerCreate(d *schema.ResourceData, meta inte
d.SetId(manager.Name)
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Creating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Creating InstanceGroupManager")
if err != nil {
return err
}
@ -406,7 +406,7 @@ func resourceComputeInstanceGroupManagerUpdate(d *schema.ResourceData, meta inte
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating InstanceGroupManager")
if err != nil {
return err
}
@ -448,7 +448,7 @@ func resourceComputeInstanceGroupManagerUpdate(d *schema.ResourceData, meta inte
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating InstanceGroupManager")
if err != nil {
return err
}
@ -519,7 +519,7 @@ func resourceComputeInstanceGroupManagerUpdate(d *schema.ResourceData, meta inte
}
// Wait for the operation to complete
err = computeSharedOperationWaitTime(config, op, project, managedInstanceCount*4, "Restarting InstanceGroupManagers instances")
err = computeSharedOperationWaitTime(config.clientCompute, op, project, managedInstanceCount*4, "Restarting InstanceGroupManagers instances")
if err != nil {
return err
}
@ -565,7 +565,7 @@ func resourceComputeInstanceGroupManagerUpdate(d *schema.ResourceData, meta inte
}
// Wait for the operation to complete:
err = computeSharedOperationWait(config, op, project, "Updating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating InstanceGroupManager")
if err != nil {
return err
}
@ -590,7 +590,7 @@ func resourceComputeInstanceGroupManagerUpdate(d *schema.ResourceData, meta inte
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating InstanceGroupManager")
if err != nil {
return err
}
@ -613,7 +613,7 @@ func resourceComputeInstanceGroupManagerUpdate(d *schema.ResourceData, meta inte
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating AutoHealingPolicies")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating AutoHealingPolicies")
if err != nil {
return err
}
@ -664,7 +664,7 @@ func resourceComputeInstanceGroupManagerDelete(d *schema.ResourceData, meta inte
currentSize := int64(d.Get("target_size").(int))
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Deleting InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting InstanceGroupManager")
for err != nil && currentSize > 0 {
if !strings.Contains(err.Error(), "timeout") {
@ -697,7 +697,7 @@ func resourceComputeInstanceGroupManagerDelete(d *schema.ResourceData, meta inte
log.Printf("[INFO] timeout occured, but instance group is shrinking (%d < %d)", instanceGroupSize, currentSize)
currentSize = instanceGroupSize
err = computeSharedOperationWait(config, op, project, "Deleting InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting InstanceGroupManager")
}
d.SetId("")

View File

@ -131,7 +131,7 @@ func TestAccComputeInstanceMigrateState_bootDisk(t *testing.T) {
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -195,7 +195,7 @@ func TestAccComputeInstanceMigrateState_v4FixBootDisk(t *testing.T) {
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -245,7 +245,7 @@ func TestAccComputeInstanceMigrateState_attachedDiskFromSource(t *testing.T) {
if err != nil {
t.Fatalf("Error creating disk: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "disk to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "disk to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -276,7 +276,7 @@ func TestAccComputeInstanceMigrateState_attachedDiskFromSource(t *testing.T) {
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr = computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr = computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -325,7 +325,7 @@ func TestAccComputeInstanceMigrateState_v4FixAttachedDiskFromSource(t *testing.T
if err != nil {
t.Fatalf("Error creating disk: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "disk to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "disk to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -356,7 +356,7 @@ func TestAccComputeInstanceMigrateState_v4FixAttachedDiskFromSource(t *testing.T
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr = computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr = computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -424,7 +424,7 @@ func TestAccComputeInstanceMigrateState_attachedDiskFromEncryptionKey(t *testing
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -492,7 +492,7 @@ func TestAccComputeInstanceMigrateState_v4FixAttachedDiskFromEncryptionKey(t *te
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -562,7 +562,7 @@ func TestAccComputeInstanceMigrateState_attachedDiskFromAutoDeleteAndImage(t *te
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -634,7 +634,7 @@ func TestAccComputeInstanceMigrateState_v4FixAttachedDiskFromAutoDeleteAndImage(
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -701,7 +701,7 @@ func TestAccComputeInstanceMigrateState_scratchDisk(t *testing.T) {
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -765,7 +765,7 @@ func TestAccComputeInstanceMigrateState_v4FixScratchDisk(t *testing.T) {
if err != nil {
t.Fatalf("Error creating instance: %s", err)
}
waitErr := computeSharedOperationWait(config, op, config.Project, "instance to create")
waitErr := computeSharedOperationWait(config.clientCompute, op, config.Project, "instance to create")
if waitErr != nil {
t.Fatal(waitErr)
}
@ -824,7 +824,7 @@ func cleanUpInstance(config *Config, instanceName, zone string) {
}
// Wait for the operation to complete
opErr := computeOperationWait(config, op, config.Project, "instance to delete")
opErr := computeOperationWait(config.clientCompute, op, config.Project, "instance to delete")
if opErr != nil {
log.Printf("[WARNING] Error deleting instance %q, dangling resources may exist: %s", instanceName, opErr)
}
@ -838,7 +838,7 @@ func cleanUpDisk(config *Config, diskName, zone string) {
}
// Wait for the operation to complete
opErr := computeOperationWait(config, op, config.Project, "disk to delete")
opErr := computeOperationWait(config.clientCompute, op, config.Project, "disk to delete")
if opErr != nil {
log.Printf("[WARNING] Error deleting disk %q, dangling resources may exist: %s", diskName, opErr)
}

View File

@ -612,7 +612,7 @@ func resourceComputeInstanceTemplateCreate(d *schema.ResourceData, meta interfac
// Store the ID now
d.SetId(instanceTemplate.Name)
err = computeOperationWait(config, op, project, "Creating Instance Template")
err = computeOperationWait(config.clientCompute, op, project, "Creating Instance Template")
if err != nil {
return err
}
@ -831,7 +831,7 @@ func resourceComputeInstanceTemplateDelete(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error deleting instance template: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Instance Template")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Instance Template")
if err != nil {
return err
}

View File

@ -750,7 +750,7 @@ func testAccCheckComputeInstanceUpdateMachineType(n string) resource.TestCheckFu
if err != nil {
return fmt.Errorf("Could not stop instance: %s", err)
}
err = computeOperationWait(config, op, config.Project, "Waiting on stop")
err = computeOperationWait(config.clientCompute, op, config.Project, "Waiting on stop")
if err != nil {
return fmt.Errorf("Could not stop instance: %s", err)
}
@ -764,7 +764,7 @@ func testAccCheckComputeInstanceUpdateMachineType(n string) resource.TestCheckFu
if err != nil {
return fmt.Errorf("Could not change machine type: %s", err)
}
err = computeOperationWait(config, op, config.Project, "Waiting machine type change")
err = computeOperationWait(config.clientCompute, op, config.Project, "Waiting machine type change")
if err != nil {
return fmt.Errorf("Could not change machine type: %s", err)
}

View File

@ -91,7 +91,7 @@ func resourceComputeNetworkCreate(d *schema.ResourceData, meta interface{}) erro
// It probably maybe worked, so store the ID now
d.SetId(network.Name)
err = computeOperationWait(config, op, project, "Creating Network")
err = computeOperationWait(config.clientCompute, op, project, "Creating Network")
if err != nil {
return err
}
@ -136,7 +136,7 @@ func resourceComputeNetworkDelete(d *schema.ResourceData, meta interface{}) erro
return fmt.Errorf("Error deleting network: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Network")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Network")
if err != nil {
return err
}

View File

@ -75,7 +75,7 @@ func resourceComputeNetworkPeeringCreate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error adding network peering: %s", err)
}
err = computeOperationWait(config, addOp, networkFieldValue.Project, "Adding Network Peering")
err = computeOperationWait(config.clientCompute, addOp, networkFieldValue.Project, "Adding Network Peering")
if err != nil {
return err
}
@ -145,7 +145,7 @@ func resourceComputeNetworkPeeringDelete(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error removing peering `%s` from network `%s`: %s", name, networkFieldValue.Name, err)
}
} else {
err = computeOperationWait(config, removeOp, networkFieldValue.Project, "Removing Network Peering")
err = computeOperationWait(config.clientCompute, removeOp, networkFieldValue.Project, "Removing Network Peering")
if err != nil {
return err
}

View File

@ -76,7 +76,7 @@ func resourceComputeProjectMetadataCreate(d *schema.ResourceData, meta interface
log.Printf("[DEBUG] SetCommonMetadata: %d (%s)", op.Id, op.SelfLink)
return computeOperationWait(config, op, project.Name, "SetCommonMetadata")
return computeOperationWait(config.clientCompute, op, project.Name, "SetCommonMetadata")
}
err = MetadataRetryWrapper(createMD)
@ -154,7 +154,7 @@ func resourceComputeProjectMetadataUpdate(d *schema.ResourceData, meta interface
// Optimistic locking requires the fingerprint received to match
// the fingerprint we send the server, if there is a mismatch then we
// are working on old data, and must retry
return computeOperationWait(config, op, project.Name, "SetCommonMetadata")
return computeOperationWait(config.clientCompute, op, project.Name, "SetCommonMetadata")
}
err := MetadataRetryWrapper(updateMD)
@ -196,7 +196,7 @@ func resourceComputeProjectMetadataDelete(d *schema.ResourceData, meta interface
log.Printf("[DEBUG] SetCommonMetadata: %d (%s)", op.Id, op.SelfLink)
err = computeOperationWait(config, op, project.Name, "SetCommonMetadata")
err = computeOperationWait(config.clientCompute, op, project.Name, "SetCommonMetadata")
if err != nil {
return err
}

View File

@ -171,7 +171,7 @@ func updateComputeCommonInstanceMetadata(config *Config, projectID string, key s
log.Printf("[DEBUG] SetCommonInstanceMetadata: %d (%s)", op.Id, op.SelfLink)
return computeOperationWait(config, op, project.Name, "SetCommonInstanceMetadata")
return computeOperationWait(config.clientCompute, op, project.Name, "SetCommonInstanceMetadata")
}
return MetadataRetryWrapper(updateMD)

View File

@ -87,7 +87,7 @@ func resourceComputeRegionAutoscalerCreate(d *schema.ResourceData, meta interfac
// It probably maybe worked, so store the ID now
d.SetId(scaler.Name)
err = computeOperationWait(config, op, project, "Creating Autoscaler")
err = computeOperationWait(config.clientCompute, op, project, "Creating Autoscaler")
if err != nil {
return err
}
@ -156,7 +156,7 @@ func resourceComputeRegionAutoscalerUpdate(d *schema.ResourceData, meta interfac
// It probably maybe worked, so store the ID now
d.SetId(scaler.Name)
err = computeOperationWait(config, op, project, "Updating Autoscaler")
err = computeOperationWait(config.clientCompute, op, project, "Updating Autoscaler")
if err != nil {
return err
}
@ -179,7 +179,7 @@ func resourceComputeRegionAutoscalerDelete(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error deleting autoscaler: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Autoscaler")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Autoscaler")
if err != nil {
return err
}

View File

@ -175,7 +175,7 @@ func resourceComputeRegionBackendServiceCreate(d *schema.ResourceData, meta inte
d.SetId(service.Name)
err = computeOperationWait(config, op, project, "Creating Region Backend Service")
err = computeOperationWait(config.clientCompute, op, project, "Creating Region Backend Service")
if err != nil {
return err
}
@ -278,7 +278,7 @@ func resourceComputeRegionBackendServiceUpdate(d *schema.ResourceData, meta inte
d.SetId(service.Name)
err = computeOperationWait(config, op, project, "Updating Backend Service")
err = computeOperationWait(config.clientCompute, op, project, "Updating Backend Service")
if err != nil {
return err
}
@ -306,7 +306,7 @@ func resourceComputeRegionBackendServiceDelete(d *schema.ResourceData, meta inte
return fmt.Errorf("Error deleting backend service: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Backend Service")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Backend Service")
if err != nil {
return err
}

View File

@ -177,7 +177,7 @@ func resourceComputeRegionInstanceGroupManagerCreate(d *schema.ResourceData, met
d.SetId(manager.Name)
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Creating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Creating InstanceGroupManager")
if err != nil {
return err
}
@ -279,7 +279,7 @@ func resourceComputeRegionInstanceGroupManagerUpdate(d *schema.ResourceData, met
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating RegionInstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating RegionInstanceGroupManager")
if err != nil {
return err
}
@ -320,7 +320,7 @@ func resourceComputeRegionInstanceGroupManagerUpdate(d *schema.ResourceData, met
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating InstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating InstanceGroupManager")
if err != nil {
return err
}
@ -363,7 +363,7 @@ func resourceComputeRegionInstanceGroupManagerUpdate(d *schema.ResourceData, met
}
// Wait for the operation to complete:
err = computeSharedOperationWait(config, op, project, "Updating RegionInstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating RegionInstanceGroupManager")
if err != nil {
return err
}
@ -388,7 +388,7 @@ func resourceComputeRegionInstanceGroupManagerUpdate(d *schema.ResourceData, met
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Resizing RegionInstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Resizing RegionInstanceGroupManager")
if err != nil {
return err
}
@ -410,7 +410,7 @@ func resourceComputeRegionInstanceGroupManagerUpdate(d *schema.ResourceData, met
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Updating AutoHealingPolicies")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating AutoHealingPolicies")
if err != nil {
return err
}
@ -447,7 +447,7 @@ func resourceComputeRegionInstanceGroupManagerDelete(d *schema.ResourceData, met
}
// Wait for the operation to complete
err = computeSharedOperationWait(config, op, project, "Deleting RegionInstanceGroupManager")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting RegionInstanceGroupManager")
d.SetId("")
return nil

View File

@ -178,7 +178,7 @@ func resourceComputeRouteCreate(d *schema.ResourceData, meta interface{}) error
// It probably maybe worked, so store the ID now
d.SetId(route.Name)
err = computeOperationWait(config, op, project, "Creating Route")
err = computeOperationWait(config.clientCompute, op, project, "Creating Route")
if err != nil {
return err
}
@ -236,7 +236,7 @@ func resourceComputeRouteDelete(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error deleting route: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Route")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Route")
if err != nil {
return err
}

View File

@ -131,7 +131,7 @@ func resourceComputeRouterCreate(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error Inserting Router %s into network %s: %s", name, network.Name, err)
}
d.SetId(fmt.Sprintf("%s/%s", region, name))
err = computeOperationWait(config, op, project, "Inserting Router")
err = computeOperationWait(config.clientCompute, op, project, "Inserting Router")
if err != nil {
d.SetId("")
return fmt.Errorf("Error Waiting to Insert Router %s into network %s: %s", name, network.Name, err)
@ -209,7 +209,7 @@ func resourceComputeRouterDelete(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error Reading Router %s: %s", name, err)
}
err = computeOperationWait(config, op, project, "Deleting Router")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Router")
if err != nil {
return fmt.Errorf("Error Waiting to Delete Router %s: %s", name, err)
}

View File

@ -126,7 +126,7 @@ func resourceComputeRouterInterfaceCreate(d *schema.ResourceData, meta interface
return fmt.Errorf("Error patching router %s/%s: %s", region, routerName, err)
}
d.SetId(fmt.Sprintf("%s/%s/%s", region, routerName, ifaceName))
err = computeOperationWait(config, op, project, "Patching router")
err = computeOperationWait(config.clientCompute, op, project, "Patching router")
if err != nil {
d.SetId("")
return fmt.Errorf("Error waiting to patch router %s/%s: %s", region, routerName, err)
@ -246,7 +246,7 @@ func resourceComputeRouterInterfaceDelete(d *schema.ResourceData, meta interface
return fmt.Errorf("Error patching router %s/%s: %s", region, routerName, err)
}
err = computeOperationWait(config, op, project, "Patching router")
err = computeOperationWait(config.clientCompute, op, project, "Patching router")
if err != nil {
return fmt.Errorf("Error waiting to patch router %s/%s: %s", region, routerName, err)
}

View File

@ -148,7 +148,7 @@ func resourceComputeRouterPeerCreate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error patching router %s/%s: %s", region, routerName, err)
}
d.SetId(fmt.Sprintf("%s/%s/%s", region, routerName, peerName))
err = computeOperationWait(config, op, project, "Patching router")
err = computeOperationWait(config.clientCompute, op, project, "Patching router")
if err != nil {
d.SetId("")
return fmt.Errorf("Error waiting to patch router %s/%s: %s", region, routerName, err)
@ -267,7 +267,7 @@ func resourceComputeRouterPeerDelete(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error patching router %s/%s: %s", region, routerName, err)
}
err = computeOperationWait(config, op, project, "Patching router")
err = computeOperationWait(config.clientCompute, op, project, "Patching router")
if err != nil {
return fmt.Errorf("Error waiting to patch router %s/%s: %s", region, routerName, err)
}

View File

@ -34,7 +34,7 @@ func resourceComputeSharedVpcHostProjectCreate(d *schema.ResourceData, meta inte
d.SetId(hostProject)
err = computeOperationWait(config, op, hostProject, "Enabling Shared VPC Host")
err = computeOperationWait(config.clientCompute, op, hostProject, "Enabling Shared VPC Host")
if err != nil {
d.SetId("")
return err
@ -70,7 +70,7 @@ func resourceComputeSharedVpcHostProjectDelete(d *schema.ResourceData, meta inte
return fmt.Errorf("Error disabling Shared VPC Host %q: %s", hostProject, err)
}
err = computeOperationWait(config, op, hostProject, "Disabling Shared VPC Host")
err = computeOperationWait(config.clientCompute, op, hostProject, "Disabling Shared VPC Host")
if err != nil {
return err
}

View File

@ -47,7 +47,7 @@ func resourceComputeSharedVpcServiceProjectCreate(d *schema.ResourceData, meta i
if err != nil {
return err
}
if err = computeOperationWait(config, op, hostProject, "Enabling Shared VPC Resource"); err != nil {
if err = computeOperationWait(config.clientCompute, op, hostProject, "Enabling Shared VPC Resource"); err != nil {
return err
}
@ -105,7 +105,7 @@ func disableXpnResource(config *Config, hostProject, project string) error {
if err != nil {
return err
}
if err = computeOperationWait(config, op, hostProject, "Disabling Shared VPC Resource"); err != nil {
if err = computeOperationWait(config.clientCompute, op, hostProject, "Disabling Shared VPC Resource"); err != nil {
return err
}
return nil

View File

@ -15,6 +15,7 @@ func resourceComputeSnapshot() *schema.Resource {
Read: resourceComputeSnapshotRead,
Delete: resourceComputeSnapshotDelete,
Exists: resourceComputeSnapshotExists,
Update: resourceComputeSnapshotUpdate,
Schema: map[string]*schema.Schema{
"name": &schema.Schema{
@ -74,6 +75,18 @@ func resourceComputeSnapshot() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"labels": &schema.Schema{
Type: schema.TypeMap,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Set: schema.HashString,
},
"label_fingerprint": &schema.Schema{
Type: schema.TypeString,
Computed: true,
},
},
}
}
@ -112,10 +125,24 @@ func resourceComputeSnapshotCreate(d *schema.ResourceData, meta interface{}) err
// It probably maybe worked, so store the ID now
d.SetId(snapshot.Name)
err = computeOperationWait(config, op, project, "Creating Snapshot")
err = computeOperationWait(config.clientCompute, op, project, "Creating Snapshot")
if err != nil {
return err
}
// Now if labels are set, go ahead and apply them
if labels := expandLabels(d); len(labels) > 0 {
// First, read the remote resource in order to find the fingerprint
apiSnapshot, err := config.clientCompute.Snapshots.Get(project, d.Id()).Do()
if err != nil {
return fmt.Errorf("Eror when reading snapshot for label update: %s", err)
}
err = updateLabels(config.clientCompute, project, d.Id(), labels, apiSnapshot.LabelFingerprint)
if err != nil {
return err
}
}
return resourceComputeSnapshotRead(d, meta)
}
@ -145,9 +172,36 @@ func resourceComputeSnapshotRead(d *schema.ResourceData, meta interface{}) error
d.Set("source_disk_encryption_key_sha256", snapshot.SourceDiskEncryptionKey.Sha256)
}
d.Set("labels", snapshot.Labels)
d.Set("label_fingerprint", snapshot.LabelFingerprint)
return nil
}
func resourceComputeSnapshotUpdate(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
project, err := getProject(d, config)
if err != nil {
return err
}
d.Partial(true)
if d.HasChange("labels") {
err = updateLabels(config.clientCompute, project, d.Id(), expandLabels(d), d.Get("label_fingerprint").(string))
if err != nil {
return err
}
d.SetPartial("labels")
}
d.Partial(false)
return resourceComputeSnapshotRead(d, meta)
}
func resourceComputeSnapshotDelete(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
@ -169,7 +223,7 @@ func resourceComputeSnapshotDelete(d *schema.ResourceData, meta interface{}) err
return fmt.Errorf("Error deleting snapshot: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Snapshot")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Snapshot")
if err != nil {
return err
}
@ -200,3 +254,16 @@ func resourceComputeSnapshotExists(d *schema.ResourceData, meta interface{}) (bo
}
return true, nil
}
func updateLabels(client *compute.Service, project string, resourceId string, labels map[string]string, labelFingerprint string) error {
setLabelsReq := compute.GlobalSetLabelsRequest{
Labels: labels,
LabelFingerprint: labelFingerprint,
}
op, err := client.Snapshots.SetLabels(project, resourceId, &setLabelsReq).Do()
if err != nil {
return err
}
return computeOperationWait(client, op, project, "Setting labels on snapshot")
}

View File

@ -4,6 +4,9 @@ import (
"fmt"
"testing"
"reflect"
"strings"
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
@ -24,7 +27,37 @@ func TestAccComputeSnapshot_basic(t *testing.T) {
CheckDestroy: testAccCheckComputeSnapshotDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccComputeSnapshot_basic(snapshotName, diskName),
Config: testAccComputeSnapshot_basic(snapshotName, diskName, "my-value"),
Check: resource.ComposeTestCheckFunc(
testAccCheckComputeSnapshotExists(
"google_compute_snapshot.foobar", &snapshot),
),
},
},
})
}
func TestAccComputeSnapshot_update(t *testing.T) {
t.Parallel()
snapshotName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
var snapshot compute.Snapshot
diskName := fmt.Sprintf("tf-test-%s", acctest.RandString(10))
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckComputeSnapshotDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccComputeSnapshot_basic(snapshotName, diskName, "my-value"),
Check: resource.ComposeTestCheckFunc(
testAccCheckComputeSnapshotExists(
"google_compute_snapshot.foobar", &snapshot),
),
},
resource.TestStep{
Config: testAccComputeSnapshot_basic(snapshotName, diskName, "my-updated-value"),
Check: resource.ComposeTestCheckFunc(
testAccCheckComputeSnapshotExists(
"google_compute_snapshot.foobar", &snapshot),
@ -144,13 +177,38 @@ func testAccCheckComputeSnapshotExists(n string, snapshot *compute.Snapshot) res
n, attr, found.SelfLink)
}
// We should have a map
attr, ok = rs.Primary.Attributes["labels.%"]
if !ok {
return fmt.Errorf("Snapshot %s has no labels map in attributes", n)
}
// Parse out our map
attrMap := make(map[string]string)
for k, v := range rs.Primary.Attributes {
if !strings.HasPrefix(k, "labels.") || k == "labels.%" {
continue
}
key := k[len("labels."):]
attrMap[key] = v
}
if (len(attrMap) != 0 || len(found.Labels) != 0) && !reflect.DeepEqual(attrMap, found.Labels) {
return fmt.Errorf("Snapshot %s has mismatched labels.\nTF State: %+v\nGCP State: %+v",
n, attrMap, found.Labels)
}
attr = rs.Primary.Attributes["label_fingerprint"]
if found.LabelFingerprint != attr {
return fmt.Errorf("Snapshot %s has mismatched label fingerprint\nTF State: %+v.\nGCP State: %+v",
n, attr, found.LabelFingerprint)
}
*snapshot = *found
return nil
}
}
func testAccComputeSnapshot_basic(snapshotName string, diskName string) string {
func testAccComputeSnapshot_basic(snapshotName, diskName, labelValue string) string {
return fmt.Sprintf(`
resource "google_compute_disk" "foobar" {
name = "%s"
@ -164,7 +222,10 @@ resource "google_compute_snapshot" "foobar" {
name = "%s"
source_disk = "${google_compute_disk.foobar.name}"
zone = "us-central1-a"
}`, diskName, snapshotName)
labels = {
my_label = "%s"
}
}`, diskName, snapshotName, labelValue)
}
func testAccComputeSnapshot_encryption(snapshotName string, diskName string) string {

View File

@ -115,7 +115,7 @@ func resourceComputeSslCertificateCreate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error creating ssl certificate: %s", err)
}
err = computeOperationWait(config, op, project, "Creating SslCertificate")
err = computeOperationWait(config.clientCompute, op, project, "Creating SslCertificate")
if err != nil {
return err
}
@ -159,7 +159,7 @@ func resourceComputeSslCertificateDelete(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error deleting ssl certificate: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting SslCertificate")
err = computeOperationWait(config.clientCompute, op, project, "Deleting SslCertificate")
if err != nil {
return err
}

View File

@ -140,7 +140,7 @@ func resourceComputeSubnetworkCreate(d *schema.ResourceData, meta interface{}) e
subnetwork.Region = region
d.SetId(createSubnetID(subnetwork))
err = computeSharedOperationWait(config, op, project, "Creating Subnetwork")
err = computeSharedOperationWait(config.clientCompute, op, project, "Creating Subnetwork")
if err != nil {
return err
}
@ -209,7 +209,7 @@ func resourceComputeSubnetworkUpdate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error updating subnetwork PrivateIpGoogleAccess: %s", err)
}
err = computeSharedOperationWait(config, op, project, "Updating Subnetwork PrivateIpGoogleAccess")
err = computeSharedOperationWait(config.clientCompute, op, project, "Updating Subnetwork PrivateIpGoogleAccess")
if err != nil {
return err
}
@ -242,7 +242,7 @@ func resourceComputeSubnetworkDelete(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error deleting subnetwork: %s", err)
}
err = computeSharedOperationWait(config, op, project, "Deleting Subnetwork")
err = computeSharedOperationWait(config.clientCompute, op, project, "Deleting Subnetwork")
if err != nil {
return err
}

View File

@ -77,7 +77,7 @@ func resourceComputeTargetHttpProxyCreate(d *schema.ResourceData, meta interface
return fmt.Errorf("Error creating TargetHttpProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Creating Target Http Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Creating Target Http Proxy")
if err != nil {
return err
}
@ -106,7 +106,7 @@ func resourceComputeTargetHttpProxyUpdate(d *schema.ResourceData, meta interface
return fmt.Errorf("Error updating target: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Http Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Http Proxy")
if err != nil {
return err
}
@ -155,7 +155,7 @@ func resourceComputeTargetHttpProxyDelete(d *schema.ResourceData, meta interface
return fmt.Errorf("Error deleting TargetHttpProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Target Http Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Target Http Proxy")
if err != nil {
return err
}

View File

@ -101,7 +101,7 @@ func resourceComputeTargetHttpsProxyCreate(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error creating TargetHttpsProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Creating Target Https Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Creating Target Https Proxy")
if err != nil {
return err
}
@ -130,7 +130,7 @@ func resourceComputeTargetHttpsProxyUpdate(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error updating Target HTTPS proxy URL map: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Https Proxy URL Map")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Https Proxy URL Map")
if err != nil {
return err
}
@ -149,7 +149,7 @@ func resourceComputeTargetHttpsProxyUpdate(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error updating Target Https Proxy SSL Certificates: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Https Proxy SSL certificates")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Https Proxy SSL certificates")
if err != nil {
return err
}
@ -199,7 +199,7 @@ func resourceComputeTargetHttpsProxyDelete(d *schema.ResourceData, meta interfac
return fmt.Errorf("Error deleting TargetHttpsProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Target Https Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Target Https Proxy")
if err != nil {
return err
}

View File

@ -170,7 +170,7 @@ func resourceComputeTargetPoolCreate(d *schema.ResourceData, meta interface{}) e
// It probably maybe worked, so store the ID now
d.SetId(tpool.Name)
err = computeOperationWait(config, op, project, "Creating Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Creating Target Pool")
if err != nil {
return err
}
@ -249,7 +249,7 @@ func resourceComputeTargetPoolUpdate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error updating health_check: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Pool")
if err != nil {
return err
}
@ -265,7 +265,7 @@ func resourceComputeTargetPoolUpdate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error updating health_check: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Pool")
if err != nil {
return err
}
@ -299,7 +299,7 @@ func resourceComputeTargetPoolUpdate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error updating instances: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Pool")
if err != nil {
return err
}
@ -314,7 +314,7 @@ func resourceComputeTargetPoolUpdate(d *schema.ResourceData, meta interface{}) e
if err != nil {
return fmt.Errorf("Error updating instances: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Pool")
if err != nil {
return err
}
@ -332,7 +332,7 @@ func resourceComputeTargetPoolUpdate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error updating backup_pool: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Pool")
if err != nil {
return err
}
@ -425,7 +425,7 @@ func resourceComputeTargetPoolDelete(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error deleting TargetPool: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Target Pool")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Target Pool")
if err != nil {
return err
}

View File

@ -101,7 +101,7 @@ func resourceComputeTargetSslProxyCreate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error creating TargetSslProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Creating Target Ssl Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Creating Target Ssl Proxy")
if err != nil {
return err
}
@ -132,7 +132,7 @@ func resourceComputeTargetSslProxyUpdate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error updating proxy_header: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target SSL Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target SSL Proxy")
if err != nil {
return err
}
@ -149,7 +149,7 @@ func resourceComputeTargetSslProxyUpdate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error updating backend_service: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target SSL Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target SSL Proxy")
if err != nil {
return err
}
@ -171,7 +171,7 @@ func resourceComputeTargetSslProxyUpdate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error updating backend_service: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target SSL Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target SSL Proxy")
if err != nil {
return err
}
@ -223,7 +223,7 @@ func resourceComputeTargetSslProxyDelete(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error deleting TargetSslProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Target SSL Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Target SSL Proxy")
if err != nil {
return err
}

View File

@ -85,7 +85,7 @@ func resourceComputeTargetTcpProxyCreate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error creating TargetTcpProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Creating Target Tcp Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Creating Target Tcp Proxy")
if err != nil {
return err
}
@ -116,7 +116,7 @@ func resourceComputeTargetTcpProxyUpdate(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error updating target: %s", err)
}
err = computeOperationWait(config, op, project, "Updating Target Tcp Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Updating Target Tcp Proxy")
if err != nil {
return err
}
@ -169,7 +169,7 @@ func resourceComputeTargetTcpProxyDelete(d *schema.ResourceData, meta interface{
return fmt.Errorf("Error deleting TargetTcpProxy: %s", err)
}
err = computeOperationWait(config, op, project, "Deleting Target Tcp Proxy")
err = computeOperationWait(config.clientCompute, op, project, "Deleting Target Tcp Proxy")
if err != nil {
return err
}

View File

@ -288,7 +288,7 @@ func resourceComputeUrlMapCreate(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error, failed to insert Url Map %s: %s", name, err)
}
err = computeOperationWait(config, op, project, "Insert Url Map")
err = computeOperationWait(config.clientCompute, op, project, "Insert Url Map")
if err != nil {
return fmt.Errorf("Error, failed waitng to insert Url Map %s: %s", name, err)
@ -642,7 +642,7 @@ func resourceComputeUrlMapUpdate(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error, failed to update Url Map %s: %s", name, err)
}
err = computeOperationWait(config, op, project, "Update Url Map")
err = computeOperationWait(config.clientCompute, op, project, "Update Url Map")
if err != nil {
return fmt.Errorf("Error, failed waitng to update Url Map %s: %s", name, err)
@ -667,7 +667,7 @@ func resourceComputeUrlMapDelete(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error, failed to delete Url Map %s: %s", name, err)
}
err = computeOperationWait(config, op, project, "Delete Url Map")
err = computeOperationWait(config.clientCompute, op, project, "Delete Url Map")
if err != nil {
return fmt.Errorf("Error, failed waitng to delete Url Map %s: %s", name, err)

View File

@ -91,7 +91,7 @@ func resourceComputeVpnGatewayCreate(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error Inserting VPN Gateway %s into network %s: %s", name, network.Name, err)
}
err = computeOperationWait(config, op, project, "Inserting VPN Gateway")
err = computeOperationWait(config.clientCompute, op, project, "Inserting VPN Gateway")
if err != nil {
return fmt.Errorf("Error Waiting to Insert VPN Gateway %s into network %s: %s", name, network.Name, err)
}
@ -152,7 +152,7 @@ func resourceComputeVpnGatewayDelete(d *schema.ResourceData, meta interface{}) e
return fmt.Errorf("Error Reading VPN Gateway %s: %s", name, err)
}
err = computeOperationWait(config, op, project, "Deleting VPN Gateway")
err = computeOperationWait(config.clientCompute, op, project, "Deleting VPN Gateway")
if err != nil {
return fmt.Errorf("Error Waiting to Delete VPN Gateway %s: %s", name, err)
}

View File

@ -177,7 +177,7 @@ func resourceComputeVpnTunnelCreate(d *schema.ResourceData, meta interface{}) er
return fmt.Errorf("Error Inserting VPN Tunnel %s : %s", name, err)
}
err = computeOperationWait(config, op, project, "Inserting VPN Tunnel")
err = computeOperationWait(config.clientCompute, op, project, "Inserting VPN Tunnel")
if err != nil {
return fmt.Errorf("Error Waiting to Insert VPN Tunnel %s: %s", name, err)
}
@ -249,7 +249,7 @@ func resourceComputeVpnTunnelDelete(d *schema.ResourceData, meta interface{}) er
return fmt.Errorf("Error Reading VPN Tunnel %s: %s", name, err)
}
err = computeOperationWait(config, op, project, "Deleting VPN Tunnel")
err = computeOperationWait(config.clientCompute, op, project, "Deleting VPN Tunnel")
if err != nil {
return fmt.Errorf("Error Waiting to Delete VPN Tunnel %s: %s", name, err)
}

View File

@ -17,9 +17,13 @@ and
```js
resource "google_compute_snapshot" "default" {
name = "test-snapshot"
source_disk = "test-disk"
zone = "us-central1-a"
name = "test-snapshot"
source_disk = "test-disk"
zone = "us-central1-a"
labels {
my-label = "my-label-value"
}
}
```
@ -49,6 +53,8 @@ The following arguments are supported:
* `project` - (Optional) The project in which the resource belongs. If it
is not provided, the provider project is used.
* `labels` - (Optional) A set of key/value label pairs to assign to the snapshot.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are
@ -67,3 +73,5 @@ exported:
* `source_disk_link` - The URI of the source disk.
* `self_link` - The URI of the created resource.
* `label_fingerprint` - The unique fingerprint of the labels.