1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package rds
4
5import (
6	"time"
7
8	"github.com/aws/aws-sdk-go/aws"
9	"github.com/aws/aws-sdk-go/aws/request"
10)
11
12// WaitUntilDBInstanceAvailable uses the Amazon RDS API operation
13// DescribeDBInstances to wait for a condition to be met before returning.
14// If the condition is not met within the max attempt window, an error will
15// be returned.
16func (c *RDS) WaitUntilDBInstanceAvailable(input *DescribeDBInstancesInput) error {
17	return c.WaitUntilDBInstanceAvailableWithContext(aws.BackgroundContext(), input)
18}
19
20// WaitUntilDBInstanceAvailableWithContext is an extended version of WaitUntilDBInstanceAvailable.
21// With the support for passing in a context and options to configure the
22// Waiter and the underlying request options.
23//
24// The context must be non-nil and will be used for request cancellation. If
25// the context is nil a panic will occur. In the future the SDK may create
26// sub-contexts for http.Requests. See https://golang.org/pkg/context/
27// for more information on using Contexts.
28func (c *RDS) WaitUntilDBInstanceAvailableWithContext(ctx aws.Context, input *DescribeDBInstancesInput, opts ...request.WaiterOption) error {
29	w := request.Waiter{
30		Name:        "WaitUntilDBInstanceAvailable",
31		MaxAttempts: 60,
32		Delay:       request.ConstantWaiterDelay(30 * time.Second),
33		Acceptors: []request.WaiterAcceptor{
34			{
35				State:   request.SuccessWaiterState,
36				Matcher: request.PathAllWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
37				Expected: "available",
38			},
39			{
40				State:   request.FailureWaiterState,
41				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
42				Expected: "deleted",
43			},
44			{
45				State:   request.FailureWaiterState,
46				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
47				Expected: "deleting",
48			},
49			{
50				State:   request.FailureWaiterState,
51				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
52				Expected: "failed",
53			},
54			{
55				State:   request.FailureWaiterState,
56				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
57				Expected: "incompatible-restore",
58			},
59			{
60				State:   request.FailureWaiterState,
61				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
62				Expected: "incompatible-parameters",
63			},
64		},
65		Logger: c.Config.Logger,
66		NewRequest: func(opts []request.Option) (*request.Request, error) {
67			var inCpy *DescribeDBInstancesInput
68			if input != nil {
69				tmp := *input
70				inCpy = &tmp
71			}
72			req, _ := c.DescribeDBInstancesRequest(inCpy)
73			req.SetContext(ctx)
74			req.ApplyOptions(opts...)
75			return req, nil
76		},
77	}
78	w.ApplyOptions(opts...)
79
80	return w.WaitWithContext(ctx)
81}
82
83// WaitUntilDBInstanceDeleted uses the Amazon RDS API operation
84// DescribeDBInstances to wait for a condition to be met before returning.
85// If the condition is not met within the max attempt window, an error will
86// be returned.
87func (c *RDS) WaitUntilDBInstanceDeleted(input *DescribeDBInstancesInput) error {
88	return c.WaitUntilDBInstanceDeletedWithContext(aws.BackgroundContext(), input)
89}
90
91// WaitUntilDBInstanceDeletedWithContext is an extended version of WaitUntilDBInstanceDeleted.
92// With the support for passing in a context and options to configure the
93// Waiter and the underlying request options.
94//
95// The context must be non-nil and will be used for request cancellation. If
96// the context is nil a panic will occur. In the future the SDK may create
97// sub-contexts for http.Requests. See https://golang.org/pkg/context/
98// for more information on using Contexts.
99func (c *RDS) WaitUntilDBInstanceDeletedWithContext(ctx aws.Context, input *DescribeDBInstancesInput, opts ...request.WaiterOption) error {
100	w := request.Waiter{
101		Name:        "WaitUntilDBInstanceDeleted",
102		MaxAttempts: 60,
103		Delay:       request.ConstantWaiterDelay(30 * time.Second),
104		Acceptors: []request.WaiterAcceptor{
105			{
106				State:   request.SuccessWaiterState,
107				Matcher: request.PathAllWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
108				Expected: "deleted",
109			},
110			{
111				State:    request.SuccessWaiterState,
112				Matcher:  request.ErrorWaiterMatch,
113				Expected: "DBInstanceNotFound",
114			},
115			{
116				State:   request.FailureWaiterState,
117				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
118				Expected: "creating",
119			},
120			{
121				State:   request.FailureWaiterState,
122				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
123				Expected: "modifying",
124			},
125			{
126				State:   request.FailureWaiterState,
127				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
128				Expected: "rebooting",
129			},
130			{
131				State:   request.FailureWaiterState,
132				Matcher: request.PathAnyWaiterMatch, Argument: "DBInstances[].DBInstanceStatus",
133				Expected: "resetting-master-credentials",
134			},
135		},
136		Logger: c.Config.Logger,
137		NewRequest: func(opts []request.Option) (*request.Request, error) {
138			var inCpy *DescribeDBInstancesInput
139			if input != nil {
140				tmp := *input
141				inCpy = &tmp
142			}
143			req, _ := c.DescribeDBInstancesRequest(inCpy)
144			req.SetContext(ctx)
145			req.ApplyOptions(opts...)
146			return req, nil
147		},
148	}
149	w.ApplyOptions(opts...)
150
151	return w.WaitWithContext(ctx)
152}
153