1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package gamelift 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/gamelift/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Retrieves core fleet-wide properties, including the computing hardware and 16// deployment configuration for all instances in the fleet. This operation can be 17// used in the following ways: 18// 19// * To get attributes for one or more specific 20// fleets, provide a list of fleet IDs or fleet ARNs. 21// 22// * To get attributes for all 23// fleets, do not provide a fleet identifier. 24// 25// When requesting attributes for 26// multiple fleets, use the pagination parameters to retrieve results as a set of 27// sequential pages. If successful, a FleetAttributes object is returned for each 28// fleet requested, unless the fleet identifier is not found. Some API operations 29// limit the number of fleet IDs that allowed in one request. If a request exceeds 30// this limit, the request fails and the error message contains the maximum allowed 31// number. Learn more Setting up GameLift fleets 32// (https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html) 33// Related actions ListFleets | DescribeEC2InstanceLimits | DescribeFleetAttributes 34// | DescribeFleetCapacity | DescribeFleetEvents | DescribeFleetLocationAttributes 35// | DescribeFleetPortSettings | DescribeFleetUtilization | 36// DescribeRuntimeConfiguration | DescribeScalingPolicies | All APIs by task 37// (https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-awssdk.html#reference-awssdk-resources-fleets) 38func (c *Client) DescribeFleetAttributes(ctx context.Context, params *DescribeFleetAttributesInput, optFns ...func(*Options)) (*DescribeFleetAttributesOutput, error) { 39 if params == nil { 40 params = &DescribeFleetAttributesInput{} 41 } 42 43 result, metadata, err := c.invokeOperation(ctx, "DescribeFleetAttributes", params, optFns, addOperationDescribeFleetAttributesMiddlewares) 44 if err != nil { 45 return nil, err 46 } 47 48 out := result.(*DescribeFleetAttributesOutput) 49 out.ResultMetadata = metadata 50 return out, nil 51} 52 53// Represents the input for a request operation. 54type DescribeFleetAttributesInput struct { 55 56 // A list of unique fleet identifiers to retrieve attributes for. You can use 57 // either the fleet ID or ARN value. To retrieve attributes for all current fleets, 58 // do not include this parameter. 59 FleetIds []string 60 61 // The maximum number of results to return. Use this parameter with NextToken to 62 // get results as a set of sequential pages. This parameter is ignored when the 63 // request specifies one or a list of fleet IDs. 64 Limit *int32 65 66 // A token that indicates the start of the next sequential page of results. Use the 67 // token that is returned with a previous call to this operation. To start at the 68 // beginning of the result set, do not specify a value. This parameter is ignored 69 // when the request specifies one or a list of fleet IDs. 70 NextToken *string 71} 72 73// Represents the returned data in response to a request operation. 74type DescribeFleetAttributesOutput struct { 75 76 // A collection of objects containing attribute metadata for each requested fleet 77 // ID. Attribute objects are returned only for fleets that currently exist. 78 FleetAttributes []types.FleetAttributes 79 80 // A token that indicates where to resume retrieving results on the next call to 81 // this operation. If no token is returned, these results represent the end of the 82 // list. 83 NextToken *string 84 85 // Metadata pertaining to the operation's result. 86 ResultMetadata middleware.Metadata 87} 88 89func addOperationDescribeFleetAttributesMiddlewares(stack *middleware.Stack, options Options) (err error) { 90 err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeFleetAttributes{}, middleware.After) 91 if err != nil { 92 return err 93 } 94 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeFleetAttributes{}, middleware.After) 95 if err != nil { 96 return err 97 } 98 if err = addSetLoggerMiddleware(stack, options); err != nil { 99 return err 100 } 101 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 102 return err 103 } 104 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 105 return err 106 } 107 if err = addResolveEndpointMiddleware(stack, options); err != nil { 108 return err 109 } 110 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 111 return err 112 } 113 if err = addRetryMiddlewares(stack, options); err != nil { 114 return err 115 } 116 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 117 return err 118 } 119 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 120 return err 121 } 122 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 123 return err 124 } 125 if err = addClientUserAgent(stack); err != nil { 126 return err 127 } 128 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 129 return err 130 } 131 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 132 return err 133 } 134 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeFleetAttributes(options.Region), middleware.Before); err != nil { 135 return err 136 } 137 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 138 return err 139 } 140 if err = addResponseErrorMiddleware(stack); err != nil { 141 return err 142 } 143 if err = addRequestResponseLogging(stack, options); err != nil { 144 return err 145 } 146 return nil 147} 148 149// DescribeFleetAttributesAPIClient is a client that implements the 150// DescribeFleetAttributes operation. 151type DescribeFleetAttributesAPIClient interface { 152 DescribeFleetAttributes(context.Context, *DescribeFleetAttributesInput, ...func(*Options)) (*DescribeFleetAttributesOutput, error) 153} 154 155var _ DescribeFleetAttributesAPIClient = (*Client)(nil) 156 157// DescribeFleetAttributesPaginatorOptions is the paginator options for 158// DescribeFleetAttributes 159type DescribeFleetAttributesPaginatorOptions struct { 160 // The maximum number of results to return. Use this parameter with NextToken to 161 // get results as a set of sequential pages. This parameter is ignored when the 162 // request specifies one or a list of fleet IDs. 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// DescribeFleetAttributesPaginator is a paginator for DescribeFleetAttributes 171type DescribeFleetAttributesPaginator struct { 172 options DescribeFleetAttributesPaginatorOptions 173 client DescribeFleetAttributesAPIClient 174 params *DescribeFleetAttributesInput 175 nextToken *string 176 firstPage bool 177} 178 179// NewDescribeFleetAttributesPaginator returns a new 180// DescribeFleetAttributesPaginator 181func NewDescribeFleetAttributesPaginator(client DescribeFleetAttributesAPIClient, params *DescribeFleetAttributesInput, optFns ...func(*DescribeFleetAttributesPaginatorOptions)) *DescribeFleetAttributesPaginator { 182 if params == nil { 183 params = &DescribeFleetAttributesInput{} 184 } 185 186 options := DescribeFleetAttributesPaginatorOptions{} 187 if params.Limit != nil { 188 options.Limit = *params.Limit 189 } 190 191 for _, fn := range optFns { 192 fn(&options) 193 } 194 195 return &DescribeFleetAttributesPaginator{ 196 options: options, 197 client: client, 198 params: params, 199 firstPage: true, 200 } 201} 202 203// HasMorePages returns a boolean indicating whether more pages are available 204func (p *DescribeFleetAttributesPaginator) HasMorePages() bool { 205 return p.firstPage || p.nextToken != nil 206} 207 208// NextPage retrieves the next DescribeFleetAttributes page. 209func (p *DescribeFleetAttributesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*DescribeFleetAttributesOutput, error) { 210 if !p.HasMorePages() { 211 return nil, fmt.Errorf("no more pages available") 212 } 213 214 params := *p.params 215 params.NextToken = p.nextToken 216 217 var limit *int32 218 if p.options.Limit > 0 { 219 limit = &p.options.Limit 220 } 221 params.Limit = limit 222 223 result, err := p.client.DescribeFleetAttributes(ctx, ¶ms, optFns...) 224 if err != nil { 225 return nil, err 226 } 227 p.firstPage = false 228 229 prevToken := p.nextToken 230 p.nextToken = result.NextToken 231 232 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 233 p.nextToken = nil 234 } 235 236 return result, nil 237} 238 239func newServiceMetadataMiddleware_opDescribeFleetAttributes(region string) *awsmiddleware.RegisterServiceMetadata { 240 return &awsmiddleware.RegisterServiceMetadata{ 241 Region: region, 242 ServiceID: ServiceID, 243 SigningName: "gamelift", 244 OperationName: "DescribeFleetAttributes", 245 } 246} 247