1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package ec2 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/ec2/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Describes the credit option for CPU usage of the specified burstable performance 16// instances. The credit options are standard and unlimited. If you do not specify 17// an instance ID, Amazon EC2 returns burstable performance instances with the 18// unlimited credit option, as well as instances that were previously configured as 19// T2, T3, and T3a with the unlimited credit option. For example, if you resize a 20// T2 instance, while it is configured as unlimited, to an M4 instance, Amazon EC2 21// returns the M4 instance. If you specify one or more instance IDs, Amazon EC2 22// returns the credit option (standard or unlimited) of those instances. If you 23// specify an instance ID that is not valid, such as an instance that is not a 24// burstable performance instance, an error is returned. Recently terminated 25// instances might appear in the returned results. This interval is usually less 26// than one hour. If an Availability Zone is experiencing a service disruption and 27// you specify instance IDs in the affected zone, or do not specify any instance 28// IDs at all, the call fails. If you specify only instance IDs in an unaffected 29// zone, the call works normally. For more information, see Burstable performance 30// instances 31// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) 32// in the Amazon EC2 User Guide. 33func (c *Client) DescribeInstanceCreditSpecifications(ctx context.Context, params *DescribeInstanceCreditSpecificationsInput, optFns ...func(*Options)) (*DescribeInstanceCreditSpecificationsOutput, error) { 34 if params == nil { 35 params = &DescribeInstanceCreditSpecificationsInput{} 36 } 37 38 result, metadata, err := c.invokeOperation(ctx, "DescribeInstanceCreditSpecifications", params, optFns, addOperationDescribeInstanceCreditSpecificationsMiddlewares) 39 if err != nil { 40 return nil, err 41 } 42 43 out := result.(*DescribeInstanceCreditSpecificationsOutput) 44 out.ResultMetadata = metadata 45 return out, nil 46} 47 48type DescribeInstanceCreditSpecificationsInput struct { 49 50 // Checks whether you have the required permissions for the action, without 51 // actually making the request, and provides an error response. If you have the 52 // required permissions, the error response is DryRunOperation. Otherwise, it is 53 // UnauthorizedOperation. 54 DryRun *bool 55 56 // The filters. 57 // 58 // * instance-id - The ID of the instance. 59 Filters []types.Filter 60 61 // The instance IDs. Default: Describes all your instances. Constraints: Maximum 62 // 1000 explicitly specified instance IDs. 63 InstanceIds []string 64 65 // The maximum number of results to return in a single call. To retrieve the 66 // remaining results, make another call with the returned NextToken value. This 67 // value can be between 5 and 1000. You cannot specify this parameter and the 68 // instance IDs parameter in the same call. 69 MaxResults *int32 70 71 // The token to retrieve the next page of results. 72 NextToken *string 73} 74 75type DescribeInstanceCreditSpecificationsOutput struct { 76 77 // Information about the credit option for CPU usage of an instance. 78 InstanceCreditSpecifications []types.InstanceCreditSpecification 79 80 // The token to use to retrieve the next page of results. This value is null when 81 // there are no more results to return. 82 NextToken *string 83 84 // Metadata pertaining to the operation's result. 85 ResultMetadata middleware.Metadata 86} 87 88func addOperationDescribeInstanceCreditSpecificationsMiddlewares(stack *middleware.Stack, options Options) (err error) { 89 err = stack.Serialize.Add(&awsEc2query_serializeOpDescribeInstanceCreditSpecifications{}, middleware.After) 90 if err != nil { 91 return err 92 } 93 err = stack.Deserialize.Add(&awsEc2query_deserializeOpDescribeInstanceCreditSpecifications{}, middleware.After) 94 if err != nil { 95 return err 96 } 97 if err = addSetLoggerMiddleware(stack, options); err != nil { 98 return err 99 } 100 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 101 return err 102 } 103 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 104 return err 105 } 106 if err = addResolveEndpointMiddleware(stack, options); err != nil { 107 return err 108 } 109 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 110 return err 111 } 112 if err = addRetryMiddlewares(stack, options); err != nil { 113 return err 114 } 115 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 116 return err 117 } 118 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 119 return err 120 } 121 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 122 return err 123 } 124 if err = addClientUserAgent(stack); err != nil { 125 return err 126 } 127 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 128 return err 129 } 130 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 131 return err 132 } 133 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeInstanceCreditSpecifications(options.Region), middleware.Before); err != nil { 134 return err 135 } 136 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 137 return err 138 } 139 if err = addResponseErrorMiddleware(stack); err != nil { 140 return err 141 } 142 if err = addRequestResponseLogging(stack, options); err != nil { 143 return err 144 } 145 return nil 146} 147 148// DescribeInstanceCreditSpecificationsAPIClient is a client that implements the 149// DescribeInstanceCreditSpecifications operation. 150type DescribeInstanceCreditSpecificationsAPIClient interface { 151 DescribeInstanceCreditSpecifications(context.Context, *DescribeInstanceCreditSpecificationsInput, ...func(*Options)) (*DescribeInstanceCreditSpecificationsOutput, error) 152} 153 154var _ DescribeInstanceCreditSpecificationsAPIClient = (*Client)(nil) 155 156// DescribeInstanceCreditSpecificationsPaginatorOptions is the paginator options 157// for DescribeInstanceCreditSpecifications 158type DescribeInstanceCreditSpecificationsPaginatorOptions struct { 159 // The maximum number of results to return in a single call. To retrieve the 160 // remaining results, make another call with the returned NextToken value. This 161 // value can be between 5 and 1000. You cannot specify this parameter and the 162 // instance IDs parameter in the same call. 163 Limit int32 164 165 // Set to true if pagination should stop if the service returns a pagination token 166 // that matches the most recent token provided to the service. 167 StopOnDuplicateToken bool 168} 169 170// DescribeInstanceCreditSpecificationsPaginator is a paginator for 171// DescribeInstanceCreditSpecifications 172type DescribeInstanceCreditSpecificationsPaginator struct { 173 options DescribeInstanceCreditSpecificationsPaginatorOptions 174 client DescribeInstanceCreditSpecificationsAPIClient 175 params *DescribeInstanceCreditSpecificationsInput 176 nextToken *string 177 firstPage bool 178} 179 180// NewDescribeInstanceCreditSpecificationsPaginator returns a new 181// DescribeInstanceCreditSpecificationsPaginator 182func NewDescribeInstanceCreditSpecificationsPaginator(client DescribeInstanceCreditSpecificationsAPIClient, params *DescribeInstanceCreditSpecificationsInput, optFns ...func(*DescribeInstanceCreditSpecificationsPaginatorOptions)) *DescribeInstanceCreditSpecificationsPaginator { 183 if params == nil { 184 params = &DescribeInstanceCreditSpecificationsInput{} 185 } 186 187 options := DescribeInstanceCreditSpecificationsPaginatorOptions{} 188 if params.MaxResults != nil { 189 options.Limit = *params.MaxResults 190 } 191 192 for _, fn := range optFns { 193 fn(&options) 194 } 195 196 return &DescribeInstanceCreditSpecificationsPaginator{ 197 options: options, 198 client: client, 199 params: params, 200 firstPage: true, 201 } 202} 203 204// HasMorePages returns a boolean indicating whether more pages are available 205func (p *DescribeInstanceCreditSpecificationsPaginator) HasMorePages() bool { 206 return p.firstPage || p.nextToken != nil 207} 208 209// NextPage retrieves the next DescribeInstanceCreditSpecifications page. 210func (p *DescribeInstanceCreditSpecificationsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*DescribeInstanceCreditSpecificationsOutput, error) { 211 if !p.HasMorePages() { 212 return nil, fmt.Errorf("no more pages available") 213 } 214 215 params := *p.params 216 params.NextToken = p.nextToken 217 218 var limit *int32 219 if p.options.Limit > 0 { 220 limit = &p.options.Limit 221 } 222 params.MaxResults = limit 223 224 result, err := p.client.DescribeInstanceCreditSpecifications(ctx, ¶ms, optFns...) 225 if err != nil { 226 return nil, err 227 } 228 p.firstPage = false 229 230 prevToken := p.nextToken 231 p.nextToken = result.NextToken 232 233 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 234 p.nextToken = nil 235 } 236 237 return result, nil 238} 239 240func newServiceMetadataMiddleware_opDescribeInstanceCreditSpecifications(region string) *awsmiddleware.RegisterServiceMetadata { 241 return &awsmiddleware.RegisterServiceMetadata{ 242 Region: region, 243 ServiceID: ServiceID, 244 SigningName: "ec2", 245 OperationName: "DescribeInstanceCreditSpecifications", 246 } 247} 248