-
Notifications
You must be signed in to change notification settings - Fork 597
/
api_op_RequestSpotFleet.go
150 lines (135 loc) · 5.32 KB
/
api_op_RequestSpotFleet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
// Code generated by smithy-go-codegen DO NOT EDIT.
package ec2
import (
"context"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/service/ec2/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Creates a Spot Fleet request. The Spot Fleet request specifies the total target
// capacity and the On-Demand target capacity. Amazon EC2 calculates the difference
// between the total capacity and On-Demand capacity, and launches the difference
// as Spot capacity. You can submit a single request that includes multiple launch
// specifications that vary by instance type, AMI, Availability Zone, or subnet. By
// default, the Spot Fleet requests Spot Instances in the Spot Instance pool where
// the price per unit is the lowest. Each launch specification can include its own
// instance weighting that reflects the value of the instance type to your
// application workload. Alternatively, you can specify that the Spot Fleet
// distribute the target capacity across the Spot pools included in its launch
// specifications. By ensuring that the Spot Instances in your Spot Fleet are in
// different Spot pools, you can improve the availability of your fleet. You can
// specify tags for the Spot Fleet request and instances launched by the fleet. You
// cannot tag other resource types in a Spot Fleet request because only the
// spot-fleet-request and instance resource types are supported. For more
// information, see Spot Fleet requests
// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html)
// in the Amazon EC2 User Guide. We strongly discourage using the RequestSpotFleet
// API because it is a legacy API with no planned investment. For options for
// requesting Spot Instances, see Which is the best Spot request method to use?
// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-best-practices.html#which-spot-request-method-to-use)
// in the Amazon EC2 User Guide.
func (c *Client) RequestSpotFleet(ctx context.Context, params *RequestSpotFleetInput, optFns ...func(*Options)) (*RequestSpotFleetOutput, error) {
if params == nil {
params = &RequestSpotFleetInput{}
}
result, metadata, err := c.invokeOperation(ctx, "RequestSpotFleet", params, optFns, c.addOperationRequestSpotFleetMiddlewares)
if err != nil {
return nil, err
}
out := result.(*RequestSpotFleetOutput)
out.ResultMetadata = metadata
return out, nil
}
// Contains the parameters for RequestSpotFleet.
type RequestSpotFleetInput struct {
// The configuration for the Spot Fleet request.
//
// This member is required.
SpotFleetRequestConfig *types.SpotFleetRequestConfigData
// Checks whether you have the required permissions for the action, without
// actually making the request, and provides an error response. If you have the
// required permissions, the error response is DryRunOperation. Otherwise, it is
// UnauthorizedOperation.
DryRun *bool
noSmithyDocumentSerde
}
// Contains the output of RequestSpotFleet.
type RequestSpotFleetOutput struct {
// The ID of the Spot Fleet request.
SpotFleetRequestId *string
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationRequestSpotFleetMiddlewares(stack *middleware.Stack, options Options) (err error) {
err = stack.Serialize.Add(&awsEc2query_serializeOpRequestSpotFleet{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsEc2query_deserializeOpRequestSpotFleet{}, middleware.After)
if err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
return err
}
if err = addRetryMiddlewares(stack, options); err != nil {
return err
}
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
return err
}
if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addOpRequestSpotFleetValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRequestSpotFleet(options.Region), middleware.Before); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opRequestSpotFleet(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
SigningName: "ec2",
OperationName: "RequestSpotFleet",
}
}