func (c *ElastiCache) WaitUntilReplicationGroupDeleted(input *DescribeReplicationGroupsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeReplicationGroups", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "ReplicationGroups[].Status", Expected: "deleted", }, { State: "failure", Matcher: "pathAny", Argument: "ReplicationGroups[].Status", Expected: "available", }, { State: "success", Matcher: "error", Argument: "", Expected: "ReplicationGroupNotFoundFault", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *CloudFormation) WaitUntilStackCreateComplete(input *DescribeStacksInput) error { waiterCfg := waiter.Config{ Operation: "DescribeStacks", Delay: 30, MaxAttempts: 50, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "Stacks[].StackStatus", Expected: "CREATE_COMPLETE", }, { State: "failure", Matcher: "pathAny", Argument: "Stacks[].StackStatus", Expected: "CREATE_FAILED", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *S3) WaitUntilBucketExists(input *HeadBucketInput) error { waiterCfg := waiter.Config{ Operation: "HeadBucket", Delay: 5, MaxAttempts: 20, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 200, }, { State: "success", Matcher: "status", Argument: "", Expected: 403, }, { State: "retry", Matcher: "status", Argument: "", Expected: 404, }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilKeyPairExists(input *DescribeKeyPairsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeKeyPairs", Delay: 5, MaxAttempts: 6, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "length(KeyPairs[].KeyName) > `0`", Expected: true, }, { State: "retry", Matcher: "error", Argument: "", Expected: "InvalidKeyPairNotFound", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilInstanceTerminated(input *DescribeInstancesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeInstances", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "Reservations[].Instances[].State.Name", Expected: "terminated", }, { State: "failure", Matcher: "pathAny", Argument: "Reservations[].Instances[].State.Name", Expected: "pending", }, { State: "failure", Matcher: "pathAny", Argument: "Reservations[].Instances[].State.Name", Expected: "stopping", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilNetworkInterfaceAvailable(input *DescribeNetworkInterfacesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeNetworkInterfaces", Delay: 20, MaxAttempts: 10, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "NetworkInterfaces[].Status", Expected: "available", }, { State: "failure", Matcher: "error", Argument: "", Expected: "InvalidNetworkInterfaceIDNotFound", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilInstanceExists(input *DescribeInstancesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeInstances", Delay: 5, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 200, }, { State: "retry", Matcher: "error", Argument: "", Expected: "InvalidInstanceIDNotFound", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *Redshift) WaitUntilClusterAvailable(input *DescribeClustersInput) error { waiterCfg := waiter.Config{ Operation: "DescribeClusters", Delay: 60, MaxAttempts: 30, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "Clusters[].ClusterStatus", Expected: "available", }, { State: "failure", Matcher: "pathAny", Argument: "Clusters[].ClusterStatus", Expected: "deleting", }, { State: "retry", Matcher: "error", Argument: "", Expected: "ClusterNotFound", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *IAM) WaitUntilInstanceProfileExists(input *GetInstanceProfileInput) error { waiterCfg := waiter.Config{ Operation: "GetInstanceProfile", Delay: 1, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 200, }, { State: "retry", Matcher: "status", Argument: "", Expected: 404, }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *ElasticTranscoder) WaitUntilJobComplete(input *ReadJobInput) error { waiterCfg := waiter.Config{ Operation: "ReadJob", Delay: 30, MaxAttempts: 120, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "path", Argument: "Job.Status", Expected: "Complete", }, { State: "failure", Matcher: "path", Argument: "Job.Status", Expected: "Canceled", }, { State: "failure", Matcher: "path", Argument: "Job.Status", Expected: "Error", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *ECS) WaitUntilServicesInactive(input *DescribeServicesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeServices", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "failure", Matcher: "pathAny", Argument: "failures[].reason", Expected: "MISSING", }, { State: "success", Matcher: "pathAny", Argument: "services[].status", Expected: "INACTIVE", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *IAM) WaitUntilUserExists(input *GetUserInput) error { waiterCfg := waiter.Config{ Operation: "GetUser", Delay: 1, MaxAttempts: 20, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 200, }, { State: "retry", Matcher: "error", Argument: "", Expected: "NoSuchEntity", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *OpsWorks) WaitUntilAppExists(input *DescribeAppsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeApps", Delay: 1, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 200, }, { State: "failure", Matcher: "status", Argument: "", Expected: 400, }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *ECS) WaitUntilTasksRunning(input *DescribeTasksInput) error { waiterCfg := waiter.Config{ Operation: "DescribeTasks", Delay: 6, MaxAttempts: 100, Acceptors: []waiter.WaitAcceptor{ { State: "failure", Matcher: "pathAny", Argument: "tasks[].lastStatus", Expected: "STOPPED", }, { State: "failure", Matcher: "pathAny", Argument: "failures[].reason", Expected: "MISSING", }, { State: "success", Matcher: "pathAll", Argument: "tasks[].lastStatus", Expected: "RUNNING", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilCustomerGatewayAvailable(input *DescribeCustomerGatewaysInput) error { waiterCfg := waiter.Config{ Operation: "DescribeCustomerGateways", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "CustomerGateways[].State", Expected: "available", }, { State: "failure", Matcher: "pathAny", Argument: "CustomerGateways[].State", Expected: "deleted", }, { State: "failure", Matcher: "pathAny", Argument: "CustomerGateways[].State", Expected: "deleting", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *DynamoDB) WaitUntilTableExists(input *DescribeTableInput) error { waiterCfg := waiter.Config{ Operation: "DescribeTable", Delay: 20, MaxAttempts: 25, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "path", Argument: "Table.TableStatus", Expected: "ACTIVE", }, { State: "retry", Matcher: "error", Argument: "", Expected: "ResourceNotFoundException", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EMR) WaitUntilStepComplete(input *DescribeStepInput) error { waiterCfg := waiter.Config{ Operation: "DescribeStep", Delay: 30, MaxAttempts: 60, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "path", Argument: "Step.Status.State", Expected: "COMPLETED", }, { State: "failure", Matcher: "path", Argument: "Step.Status.State", Expected: "FAILED", }, { State: "failure", Matcher: "path", Argument: "Step.Status.State", Expected: "CANCELLED", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *OpsWorks) WaitUntilDeploymentSuccessful(input *DescribeDeploymentsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeDeployments", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "Deployments[].Status", Expected: "successful", }, { State: "failure", Matcher: "pathAny", Argument: "Deployments[].Status", Expected: "failed", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *Glacier) WaitUntilVaultExists(input *DescribeVaultInput) error { waiterCfg := waiter.Config{ Operation: "DescribeVault", Delay: 3, MaxAttempts: 15, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 200, }, { State: "retry", Matcher: "error", Argument: "", Expected: "ResourceNotFoundException", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *Redshift) WaitUntilSnapshotAvailable(input *DescribeClusterSnapshotsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeClusterSnapshots", Delay: 15, MaxAttempts: 20, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "Snapshots[].Status", Expected: "available", }, { State: "failure", Matcher: "pathAny", Argument: "Snapshots[].Status", Expected: "failed", }, { State: "failure", Matcher: "pathAny", Argument: "Snapshots[].Status", Expected: "deleted", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilBundleTaskComplete(input *DescribeBundleTasksInput) error { waiterCfg := waiter.Config{ Operation: "DescribeBundleTasks", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "BundleTasks[].State", Expected: "complete", }, { State: "failure", Matcher: "pathAny", Argument: "BundleTasks[].State", Expected: "failed", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilVpnConnectionDeleted(input *DescribeVpnConnectionsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeVpnConnections", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "VpnConnections[].State", Expected: "deleted", }, { State: "failure", Matcher: "pathAny", Argument: "VpnConnections[].State", Expected: "pending", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilVolumeDeleted(input *DescribeVolumesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeVolumes", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "Volumes[].State", Expected: "deleted", }, { State: "success", Matcher: "error", Argument: "", Expected: "InvalidVolumeNotFound", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *RDS) WaitUntilDBInstanceAvailable(input *DescribeDBInstancesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeDBInstances", Delay: 30, MaxAttempts: 60, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "DBInstances[].DBInstanceStatus", Expected: "available", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "deleted", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "deleting", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "failed", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "incompatible-restore", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "incompatible-parameters", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "incompatible-restore", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *RDS) WaitUntilDBInstanceDeleted(input *DescribeDBInstancesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeDBInstances", Delay: 30, MaxAttempts: 60, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "DBInstances[].DBInstanceStatus", Expected: "deleted", }, { State: "success", Matcher: "error", Argument: "", Expected: "DBInstanceNotFound", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "creating", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "modifying", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "rebooting", }, { State: "failure", Matcher: "pathAny", Argument: "DBInstances[].DBInstanceStatus", Expected: "resetting-master-credentials", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func TestWaiterStatus(t *testing.T) { svc := &mockClient{Client: awstesting.NewClient(&aws.Config{ Region: aws.String("mock-region"), })} svc.Handlers.Send.Clear() // mock sending svc.Handlers.Unmarshal.Clear() svc.Handlers.UnmarshalMeta.Clear() svc.Handlers.ValidateResponse.Clear() reqNum := 0 svc.Handlers.Build.PushBack(func(r *request.Request) { reqNum++ }) svc.Handlers.Send.PushBack(func(r *request.Request) { code := 200 if reqNum == 3 { code = 404 r.Error = awserr.New("NotFound", "Not Found", nil) } r.HTTPResponse = &http.Response{ StatusCode: code, Status: http.StatusText(code), Body: ioutil.NopCloser(bytes.NewReader([]byte{})), } }) waiterCfg := waiter.Config{ Operation: "Mock", Delay: 0, MaxAttempts: 10, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "status", Argument: "", Expected: 404, }, }, } w := waiter.Waiter{ Client: svc, Input: &MockInput{}, Config: waiterCfg, } err := w.Wait() assert.NoError(t, err) assert.Equal(t, 3, reqNum) }
func (c *ElastiCache) WaitUntilCacheClusterAvailable(input *DescribeCacheClustersInput) error { waiterCfg := waiter.Config{ Operation: "DescribeCacheClusters", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "CacheClusters[].CacheClusterStatus", Expected: "available", }, { State: "failure", Matcher: "pathAny", Argument: "CacheClusters[].CacheClusterStatus", Expected: "deleted", }, { State: "failure", Matcher: "pathAny", Argument: "CacheClusters[].CacheClusterStatus", Expected: "deleting", }, { State: "failure", Matcher: "pathAny", Argument: "CacheClusters[].CacheClusterStatus", Expected: "incompatible-network", }, { State: "failure", Matcher: "pathAny", Argument: "CacheClusters[].CacheClusterStatus", Expected: "restore-failed", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EMR) WaitUntilClusterRunning(input *DescribeClusterInput) error { waiterCfg := waiter.Config{ Operation: "DescribeCluster", Delay: 30, MaxAttempts: 60, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "path", Argument: "Cluster.Status.State", Expected: "RUNNING", }, { State: "success", Matcher: "path", Argument: "Cluster.Status.State", Expected: "WAITING", }, { State: "failure", Matcher: "path", Argument: "Cluster.Status.State", Expected: "TERMINATING", }, { State: "failure", Matcher: "path", Argument: "Cluster.Status.State", Expected: "TERMINATED", }, { State: "failure", Matcher: "path", Argument: "Cluster.Status.State", Expected: "TERMINATED_WITH_ERRORS", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *EC2) WaitUntilSpotInstanceRequestFulfilled(input *DescribeSpotInstanceRequestsInput) error { waiterCfg := waiter.Config{ Operation: "DescribeSpotInstanceRequests", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "success", Matcher: "pathAll", Argument: "SpotInstanceRequests[].Status.Code", Expected: "fulfilled", }, { State: "failure", Matcher: "pathAny", Argument: "SpotInstanceRequests[].Status.Code", Expected: "schedule-expired", }, { State: "failure", Matcher: "pathAny", Argument: "SpotInstanceRequests[].Status.Code", Expected: "canceled-before-fulfillment", }, { State: "failure", Matcher: "pathAny", Argument: "SpotInstanceRequests[].Status.Code", Expected: "bad-parameters", }, { State: "failure", Matcher: "pathAny", Argument: "SpotInstanceRequests[].Status.Code", Expected: "system-error", }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }
func (c *ECS) WaitUntilServicesStable(input *DescribeServicesInput) error { waiterCfg := waiter.Config{ Operation: "DescribeServices", Delay: 15, MaxAttempts: 40, Acceptors: []waiter.WaitAcceptor{ { State: "failure", Matcher: "pathAny", Argument: "failures[].reason", Expected: "MISSING", }, { State: "failure", Matcher: "pathAny", Argument: "services[].status", Expected: "DRAINING", }, { State: "failure", Matcher: "pathAny", Argument: "services[].status", Expected: "INACTIVE", }, { State: "success", Matcher: "path", Argument: "services | [@[?length(deployments)!=`1`], @[?desiredCount!=runningCount]][] | length(@) == `0`", Expected: true, }, }, } w := waiter.Waiter{ Client: c, Input: input, Config: waiterCfg, } return w.Wait() }