1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package redshift 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/redshift/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Returns a list of orderable cluster options. Before you create a new cluster you 16// can use this operation to find what options are available, such as the EC2 17// Availability Zones (AZ) in the specific AWS Region that you can specify, and the 18// node types you can request. The node types differ by available storage, memory, 19// CPU and price. With the cost involved you might want to obtain a list of cluster 20// options in the specific region and specify values when creating a cluster. For 21// more information about managing clusters, go to Amazon Redshift Clusters 22// (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) in 23// the Amazon Redshift Cluster Management Guide. 24func (c *Client) DescribeOrderableClusterOptions(ctx context.Context, params *DescribeOrderableClusterOptionsInput, optFns ...func(*Options)) (*DescribeOrderableClusterOptionsOutput, error) { 25 if params == nil { 26 params = &DescribeOrderableClusterOptionsInput{} 27 } 28 29 result, metadata, err := c.invokeOperation(ctx, "DescribeOrderableClusterOptions", params, optFns, addOperationDescribeOrderableClusterOptionsMiddlewares) 30 if err != nil { 31 return nil, err 32 } 33 34 out := result.(*DescribeOrderableClusterOptionsOutput) 35 out.ResultMetadata = metadata 36 return out, nil 37} 38 39// 40type DescribeOrderableClusterOptionsInput struct { 41 42 // The version filter value. Specify this parameter to show only the available 43 // offerings matching the specified version. Default: All versions. Constraints: 44 // Must be one of the version returned from DescribeClusterVersions. 45 ClusterVersion *string 46 47 // An optional parameter that specifies the starting point to return a set of 48 // response records. When the results of a DescribeOrderableClusterOptions request 49 // exceed the value specified in MaxRecords, AWS returns a value in the Marker 50 // field of the response. You can retrieve the next set of response records by 51 // providing the returned marker value in the Marker parameter and retrying the 52 // request. 53 Marker *string 54 55 // The maximum number of response records to return in each call. If the number of 56 // remaining response records exceeds the specified MaxRecords value, a value is 57 // returned in a marker field of the response. You can retrieve the next set of 58 // records by retrying the command with the returned marker value. Default: 100 59 // Constraints: minimum 20, maximum 100. 60 MaxRecords *int32 61 62 // The node type filter value. Specify this parameter to show only the available 63 // offerings matching the specified node type. 64 NodeType *string 65} 66 67// Contains the output from the DescribeOrderableClusterOptions action. 68type DescribeOrderableClusterOptionsOutput struct { 69 70 // A value that indicates the starting point for the next set of response records 71 // in a subsequent request. If a value is returned in a response, you can retrieve 72 // the next set of records by providing this returned marker value in the Marker 73 // parameter and retrying the command. If the Marker field is empty, all response 74 // records have been retrieved for the request. 75 Marker *string 76 77 // An OrderableClusterOption structure containing information about orderable 78 // options for the cluster. 79 OrderableClusterOptions []types.OrderableClusterOption 80 81 // Metadata pertaining to the operation's result. 82 ResultMetadata middleware.Metadata 83} 84 85func addOperationDescribeOrderableClusterOptionsMiddlewares(stack *middleware.Stack, options Options) (err error) { 86 err = stack.Serialize.Add(&awsAwsquery_serializeOpDescribeOrderableClusterOptions{}, middleware.After) 87 if err != nil { 88 return err 89 } 90 err = stack.Deserialize.Add(&awsAwsquery_deserializeOpDescribeOrderableClusterOptions{}, middleware.After) 91 if err != nil { 92 return err 93 } 94 if err = addSetLoggerMiddleware(stack, options); err != nil { 95 return err 96 } 97 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 98 return err 99 } 100 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 101 return err 102 } 103 if err = addResolveEndpointMiddleware(stack, options); err != nil { 104 return err 105 } 106 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 107 return err 108 } 109 if err = addRetryMiddlewares(stack, options); err != nil { 110 return err 111 } 112 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 113 return err 114 } 115 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 116 return err 117 } 118 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 119 return err 120 } 121 if err = addClientUserAgent(stack); err != nil { 122 return err 123 } 124 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 125 return err 126 } 127 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 128 return err 129 } 130 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeOrderableClusterOptions(options.Region), middleware.Before); err != nil { 131 return err 132 } 133 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 134 return err 135 } 136 if err = addResponseErrorMiddleware(stack); err != nil { 137 return err 138 } 139 if err = addRequestResponseLogging(stack, options); err != nil { 140 return err 141 } 142 return nil 143} 144 145// DescribeOrderableClusterOptionsAPIClient is a client that implements the 146// DescribeOrderableClusterOptions operation. 147type DescribeOrderableClusterOptionsAPIClient interface { 148 DescribeOrderableClusterOptions(context.Context, *DescribeOrderableClusterOptionsInput, ...func(*Options)) (*DescribeOrderableClusterOptionsOutput, error) 149} 150 151var _ DescribeOrderableClusterOptionsAPIClient = (*Client)(nil) 152 153// DescribeOrderableClusterOptionsPaginatorOptions is the paginator options for 154// DescribeOrderableClusterOptions 155type DescribeOrderableClusterOptionsPaginatorOptions struct { 156 // The maximum number of response records to return in each call. If the number of 157 // remaining response records exceeds the specified MaxRecords value, a value is 158 // returned in a marker field of the response. You can retrieve the next set of 159 // records by retrying the command with the returned marker value. Default: 100 160 // Constraints: minimum 20, maximum 100. 161 Limit int32 162 163 // Set to true if pagination should stop if the service returns a pagination token 164 // that matches the most recent token provided to the service. 165 StopOnDuplicateToken bool 166} 167 168// DescribeOrderableClusterOptionsPaginator is a paginator for 169// DescribeOrderableClusterOptions 170type DescribeOrderableClusterOptionsPaginator struct { 171 options DescribeOrderableClusterOptionsPaginatorOptions 172 client DescribeOrderableClusterOptionsAPIClient 173 params *DescribeOrderableClusterOptionsInput 174 nextToken *string 175 firstPage bool 176} 177 178// NewDescribeOrderableClusterOptionsPaginator returns a new 179// DescribeOrderableClusterOptionsPaginator 180func NewDescribeOrderableClusterOptionsPaginator(client DescribeOrderableClusterOptionsAPIClient, params *DescribeOrderableClusterOptionsInput, optFns ...func(*DescribeOrderableClusterOptionsPaginatorOptions)) *DescribeOrderableClusterOptionsPaginator { 181 if params == nil { 182 params = &DescribeOrderableClusterOptionsInput{} 183 } 184 185 options := DescribeOrderableClusterOptionsPaginatorOptions{} 186 if params.MaxRecords != nil { 187 options.Limit = *params.MaxRecords 188 } 189 190 for _, fn := range optFns { 191 fn(&options) 192 } 193 194 return &DescribeOrderableClusterOptionsPaginator{ 195 options: options, 196 client: client, 197 params: params, 198 firstPage: true, 199 } 200} 201 202// HasMorePages returns a boolean indicating whether more pages are available 203func (p *DescribeOrderableClusterOptionsPaginator) HasMorePages() bool { 204 return p.firstPage || p.nextToken != nil 205} 206 207// NextPage retrieves the next DescribeOrderableClusterOptions page. 208func (p *DescribeOrderableClusterOptionsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*DescribeOrderableClusterOptionsOutput, error) { 209 if !p.HasMorePages() { 210 return nil, fmt.Errorf("no more pages available") 211 } 212 213 params := *p.params 214 params.Marker = p.nextToken 215 216 var limit *int32 217 if p.options.Limit > 0 { 218 limit = &p.options.Limit 219 } 220 params.MaxRecords = limit 221 222 result, err := p.client.DescribeOrderableClusterOptions(ctx, ¶ms, optFns...) 223 if err != nil { 224 return nil, err 225 } 226 p.firstPage = false 227 228 prevToken := p.nextToken 229 p.nextToken = result.Marker 230 231 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 232 p.nextToken = nil 233 } 234 235 return result, nil 236} 237 238func newServiceMetadataMiddleware_opDescribeOrderableClusterOptions(region string) *awsmiddleware.RegisterServiceMetadata { 239 return &awsmiddleware.RegisterServiceMetadata{ 240 Region: region, 241 ServiceID: ServiceID, 242 SigningName: "redshift", 243 OperationName: "DescribeOrderableClusterOptions", 244 } 245} 246