1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package rds
4
5import (
6	"context"
7	"fmt"
8	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
9	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
10	"github.com/aws/aws-sdk-go-v2/service/rds/types"
11	"github.com/aws/smithy-go/middleware"
12	smithyhttp "github.com/aws/smithy-go/transport/http"
13)
14
15// Returns a list of resources (for example, DB instances) that have at least one
16// pending maintenance action.
17func (c *Client) DescribePendingMaintenanceActions(ctx context.Context, params *DescribePendingMaintenanceActionsInput, optFns ...func(*Options)) (*DescribePendingMaintenanceActionsOutput, error) {
18	if params == nil {
19		params = &DescribePendingMaintenanceActionsInput{}
20	}
21
22	result, metadata, err := c.invokeOperation(ctx, "DescribePendingMaintenanceActions", params, optFns, addOperationDescribePendingMaintenanceActionsMiddlewares)
23	if err != nil {
24		return nil, err
25	}
26
27	out := result.(*DescribePendingMaintenanceActionsOutput)
28	out.ResultMetadata = metadata
29	return out, nil
30}
31
32//
33type DescribePendingMaintenanceActionsInput struct {
34
35	// A filter that specifies one or more resources to return pending maintenance
36	// actions for. Supported filters:
37	//
38	// * db-cluster-id - Accepts DB cluster
39	// identifiers and DB cluster Amazon Resource Names (ARNs). The results list will
40	// only include pending maintenance actions for the DB clusters identified by these
41	// ARNs.
42	//
43	// * db-instance-id - Accepts DB instance identifiers and DB instance ARNs.
44	// The results list will only include pending maintenance actions for the DB
45	// instances identified by these ARNs.
46	Filters []types.Filter
47
48	// An optional pagination token provided by a previous
49	// DescribePendingMaintenanceActions request. If this parameter is specified, the
50	// response includes only records beyond the marker, up to a number of records
51	// specified by MaxRecords.
52	Marker *string
53
54	// The maximum number of records to include in the response. If more records exist
55	// than the specified MaxRecords value, a pagination token called a marker is
56	// included in the response so that you can retrieve the remaining results.
57	// Default: 100 Constraints: Minimum 20, maximum 100.
58	MaxRecords *int32
59
60	// The ARN of a resource to return pending maintenance actions for.
61	ResourceIdentifier *string
62}
63
64// Data returned from the DescribePendingMaintenanceActions action.
65type DescribePendingMaintenanceActionsOutput struct {
66
67	// An optional pagination token provided by a previous
68	// DescribePendingMaintenanceActions request. If this parameter is specified, the
69	// response includes only records beyond the marker, up to a number of records
70	// specified by MaxRecords.
71	Marker *string
72
73	// A list of the pending maintenance actions for the resource.
74	PendingMaintenanceActions []types.ResourcePendingMaintenanceActions
75
76	// Metadata pertaining to the operation's result.
77	ResultMetadata middleware.Metadata
78}
79
80func addOperationDescribePendingMaintenanceActionsMiddlewares(stack *middleware.Stack, options Options) (err error) {
81	err = stack.Serialize.Add(&awsAwsquery_serializeOpDescribePendingMaintenanceActions{}, middleware.After)
82	if err != nil {
83		return err
84	}
85	err = stack.Deserialize.Add(&awsAwsquery_deserializeOpDescribePendingMaintenanceActions{}, middleware.After)
86	if err != nil {
87		return err
88	}
89	if err = addSetLoggerMiddleware(stack, options); err != nil {
90		return err
91	}
92	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
93		return err
94	}
95	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
96		return err
97	}
98	if err = addResolveEndpointMiddleware(stack, options); err != nil {
99		return err
100	}
101	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
102		return err
103	}
104	if err = addRetryMiddlewares(stack, options); err != nil {
105		return err
106	}
107	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
108		return err
109	}
110	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
111		return err
112	}
113	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
114		return err
115	}
116	if err = addClientUserAgent(stack); err != nil {
117		return err
118	}
119	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
120		return err
121	}
122	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
123		return err
124	}
125	if err = addOpDescribePendingMaintenanceActionsValidationMiddleware(stack); err != nil {
126		return err
127	}
128	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribePendingMaintenanceActions(options.Region), middleware.Before); err != nil {
129		return err
130	}
131	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
132		return err
133	}
134	if err = addResponseErrorMiddleware(stack); err != nil {
135		return err
136	}
137	if err = addRequestResponseLogging(stack, options); err != nil {
138		return err
139	}
140	return nil
141}
142
143// DescribePendingMaintenanceActionsAPIClient is a client that implements the
144// DescribePendingMaintenanceActions operation.
145type DescribePendingMaintenanceActionsAPIClient interface {
146	DescribePendingMaintenanceActions(context.Context, *DescribePendingMaintenanceActionsInput, ...func(*Options)) (*DescribePendingMaintenanceActionsOutput, error)
147}
148
149var _ DescribePendingMaintenanceActionsAPIClient = (*Client)(nil)
150
151// DescribePendingMaintenanceActionsPaginatorOptions is the paginator options for
152// DescribePendingMaintenanceActions
153type DescribePendingMaintenanceActionsPaginatorOptions struct {
154	// The maximum number of records to include in the response. If more records exist
155	// than the specified MaxRecords value, a pagination token called a marker is
156	// included in the response so that you can retrieve the remaining results.
157	// Default: 100 Constraints: Minimum 20, maximum 100.
158	Limit int32
159
160	// Set to true if pagination should stop if the service returns a pagination token
161	// that matches the most recent token provided to the service.
162	StopOnDuplicateToken bool
163}
164
165// DescribePendingMaintenanceActionsPaginator is a paginator for
166// DescribePendingMaintenanceActions
167type DescribePendingMaintenanceActionsPaginator struct {
168	options   DescribePendingMaintenanceActionsPaginatorOptions
169	client    DescribePendingMaintenanceActionsAPIClient
170	params    *DescribePendingMaintenanceActionsInput
171	nextToken *string
172	firstPage bool
173}
174
175// NewDescribePendingMaintenanceActionsPaginator returns a new
176// DescribePendingMaintenanceActionsPaginator
177func NewDescribePendingMaintenanceActionsPaginator(client DescribePendingMaintenanceActionsAPIClient, params *DescribePendingMaintenanceActionsInput, optFns ...func(*DescribePendingMaintenanceActionsPaginatorOptions)) *DescribePendingMaintenanceActionsPaginator {
178	if params == nil {
179		params = &DescribePendingMaintenanceActionsInput{}
180	}
181
182	options := DescribePendingMaintenanceActionsPaginatorOptions{}
183	if params.MaxRecords != nil {
184		options.Limit = *params.MaxRecords
185	}
186
187	for _, fn := range optFns {
188		fn(&options)
189	}
190
191	return &DescribePendingMaintenanceActionsPaginator{
192		options:   options,
193		client:    client,
194		params:    params,
195		firstPage: true,
196	}
197}
198
199// HasMorePages returns a boolean indicating whether more pages are available
200func (p *DescribePendingMaintenanceActionsPaginator) HasMorePages() bool {
201	return p.firstPage || p.nextToken != nil
202}
203
204// NextPage retrieves the next DescribePendingMaintenanceActions page.
205func (p *DescribePendingMaintenanceActionsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*DescribePendingMaintenanceActionsOutput, error) {
206	if !p.HasMorePages() {
207		return nil, fmt.Errorf("no more pages available")
208	}
209
210	params := *p.params
211	params.Marker = p.nextToken
212
213	var limit *int32
214	if p.options.Limit > 0 {
215		limit = &p.options.Limit
216	}
217	params.MaxRecords = limit
218
219	result, err := p.client.DescribePendingMaintenanceActions(ctx, &params, optFns...)
220	if err != nil {
221		return nil, err
222	}
223	p.firstPage = false
224
225	prevToken := p.nextToken
226	p.nextToken = result.Marker
227
228	if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken {
229		p.nextToken = nil
230	}
231
232	return result, nil
233}
234
235func newServiceMetadataMiddleware_opDescribePendingMaintenanceActions(region string) *awsmiddleware.RegisterServiceMetadata {
236	return &awsmiddleware.RegisterServiceMetadata{
237		Region:        region,
238		ServiceID:     ServiceID,
239		SigningName:   "rds",
240		OperationName: "DescribePendingMaintenanceActions",
241	}
242}
243