mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-07-05 17:52:38 +00:00
Catch bad state in common and compute operations (#2931)
<!-- This change is generated by MagicModules. --> /cc @chrisst
This commit is contained in:
parent
6779f4dbf4
commit
b2bcc2f255
|
@ -42,6 +42,10 @@ type CommonOperationWaiter struct {
|
|||
}
|
||||
|
||||
func (w *CommonOperationWaiter) State() string {
|
||||
if w == nil {
|
||||
return fmt.Sprintf("Operation is nil!")
|
||||
}
|
||||
|
||||
return fmt.Sprintf("done: %v", w.Op.Done)
|
||||
}
|
||||
|
||||
|
@ -60,6 +64,10 @@ func (w *CommonOperationWaiter) SetOp(op interface{}) error {
|
|||
}
|
||||
|
||||
func (w *CommonOperationWaiter) OpName() string {
|
||||
if w == nil {
|
||||
return "<nil>"
|
||||
}
|
||||
|
||||
return w.Op.Name
|
||||
}
|
||||
|
||||
|
@ -86,14 +94,19 @@ func CommonRefreshFunc(w Waiter) resource.StateRefreshFunc {
|
|||
op, err := w.QueryOp()
|
||||
|
||||
// If we got a non-retryable error, return it.
|
||||
if err != nil && !isRetryableError(err) {
|
||||
return nil, "", err
|
||||
if err != nil {
|
||||
if !isRetryableError(err) {
|
||||
return nil, "", fmt.Errorf("Not retriable error: %s", err)
|
||||
}
|
||||
if op == nil {
|
||||
return nil, "", fmt.Errorf("Cannot continue, Operation is nil. %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Try to set the operation (so we can check it's Error/State),
|
||||
// and fail if we can't.
|
||||
if err = w.SetOp(op); err != nil {
|
||||
return nil, "", err
|
||||
return nil, "", fmt.Errorf("Cannot continue %s", err)
|
||||
}
|
||||
|
||||
// Fail if the operation object contains an error.
|
||||
|
|
|
@ -2,6 +2,7 @@ package google
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
computeBeta "google.golang.org/api/compute/v0.beta"
|
||||
"google.golang.org/api/compute/v1"
|
||||
|
@ -14,18 +15,26 @@ type ComputeOperationWaiter struct {
|
|||
}
|
||||
|
||||
func (w *ComputeOperationWaiter) State() string {
|
||||
if w == nil || w.Op == nil {
|
||||
return fmt.Sprintf("Operation is nil!")
|
||||
}
|
||||
|
||||
return w.Op.Status
|
||||
}
|
||||
|
||||
func (w *ComputeOperationWaiter) Error() error {
|
||||
if w.Op.Error != nil {
|
||||
if w != nil && w.Op != nil && w.Op.Error != nil {
|
||||
return ComputeOperationError(*w.Op.Error)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *ComputeOperationWaiter) SetOp(op interface{}) error {
|
||||
w.Op = op.(*compute.Operation)
|
||||
var ok bool
|
||||
w.Op, ok = op.(*compute.Operation)
|
||||
if !ok {
|
||||
return fmt.Errorf("Unable to set operation. Bad type!")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -41,6 +50,10 @@ func (w *ComputeOperationWaiter) QueryOp() (interface{}, error) {
|
|||
}
|
||||
|
||||
func (w *ComputeOperationWaiter) OpName() string {
|
||||
if w == nil || w.Op == nil {
|
||||
return "<nil> Compute Op"
|
||||
}
|
||||
|
||||
return w.Op.Name
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user