1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package ec2
4
5import (
6	"context"
7	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
8	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
9	"github.com/aws/aws-sdk-go-v2/service/ec2/types"
10	"github.com/aws/smithy-go/middleware"
11	smithyhttp "github.com/aws/smithy-go/transport/http"
12	"time"
13)
14
15// Modifies a Capacity Reservation's capacity and the conditions under which it is
16// to be released. You cannot change a Capacity Reservation's instance type, EBS
17// optimization, instance store settings, platform, Availability Zone, or instance
18// eligibility. If you need to modify any of these attributes, we recommend that
19// you cancel the Capacity Reservation, and then create a new one with the required
20// attributes.
21func (c *Client) ModifyCapacityReservation(ctx context.Context, params *ModifyCapacityReservationInput, optFns ...func(*Options)) (*ModifyCapacityReservationOutput, error) {
22	if params == nil {
23		params = &ModifyCapacityReservationInput{}
24	}
25
26	result, metadata, err := c.invokeOperation(ctx, "ModifyCapacityReservation", params, optFns, addOperationModifyCapacityReservationMiddlewares)
27	if err != nil {
28		return nil, err
29	}
30
31	out := result.(*ModifyCapacityReservationOutput)
32	out.ResultMetadata = metadata
33	return out, nil
34}
35
36type ModifyCapacityReservationInput struct {
37
38	// The ID of the Capacity Reservation.
39	//
40	// This member is required.
41	CapacityReservationId *string
42
43	// Reserved. Capacity Reservations you have created are accepted by default.
44	Accept bool
45
46	// Checks whether you have the required permissions for the action, without
47	// actually making the request, and provides an error response. If you have the
48	// required permissions, the error response is DryRunOperation. Otherwise, it is
49	// UnauthorizedOperation.
50	DryRun bool
51
52	// The date and time at which the Capacity Reservation expires. When a Capacity
53	// Reservation expires, the reserved capacity is released and you can no longer
54	// launch instances into it. The Capacity Reservation's state changes to expired
55	// when it reaches its end date and time. The Capacity Reservation is cancelled
56	// within an hour from the specified time. For example, if you specify 5/31/2019,
57	// 13:30:55, the Capacity Reservation is guaranteed to end between 13:30:55 and
58	// 14:30:55 on 5/31/2019. You must provide an EndDate value if EndDateType is
59	// limited. Omit EndDate if EndDateType is unlimited.
60	EndDate *time.Time
61
62	// Indicates the way in which the Capacity Reservation ends. A Capacity Reservation
63	// can have one of the following end types:
64	//
65	// * unlimited - The Capacity Reservation
66	// remains active until you explicitly cancel it. Do not provide an EndDate value
67	// if EndDateType is unlimited.
68	//
69	// * limited - The Capacity Reservation expires
70	// automatically at a specified date and time. You must provide an EndDate value if
71	// EndDateType is limited.
72	EndDateType types.EndDateType
73
74	// The number of instances for which to reserve capacity.
75	InstanceCount int32
76}
77
78type ModifyCapacityReservationOutput struct {
79
80	// Returns true if the request succeeds; otherwise, it returns an error.
81	Return bool
82
83	// Metadata pertaining to the operation's result.
84	ResultMetadata middleware.Metadata
85}
86
87func addOperationModifyCapacityReservationMiddlewares(stack *middleware.Stack, options Options) (err error) {
88	err = stack.Serialize.Add(&awsEc2query_serializeOpModifyCapacityReservation{}, middleware.After)
89	if err != nil {
90		return err
91	}
92	err = stack.Deserialize.Add(&awsEc2query_deserializeOpModifyCapacityReservation{}, middleware.After)
93	if err != nil {
94		return err
95	}
96	if err = addSetLoggerMiddleware(stack, options); err != nil {
97		return err
98	}
99	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
100		return err
101	}
102	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
103		return err
104	}
105	if err = addResolveEndpointMiddleware(stack, options); err != nil {
106		return err
107	}
108	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
109		return err
110	}
111	if err = addRetryMiddlewares(stack, options); err != nil {
112		return err
113	}
114	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
115		return err
116	}
117	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
118		return err
119	}
120	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
121		return err
122	}
123	if err = addClientUserAgent(stack); err != nil {
124		return err
125	}
126	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
127		return err
128	}
129	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
130		return err
131	}
132	if err = addOpModifyCapacityReservationValidationMiddleware(stack); err != nil {
133		return err
134	}
135	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opModifyCapacityReservation(options.Region), middleware.Before); err != nil {
136		return err
137	}
138	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
139		return err
140	}
141	if err = addResponseErrorMiddleware(stack); err != nil {
142		return err
143	}
144	if err = addRequestResponseLogging(stack, options); err != nil {
145		return err
146	}
147	return nil
148}
149
150func newServiceMetadataMiddleware_opModifyCapacityReservation(region string) *awsmiddleware.RegisterServiceMetadata {
151	return &awsmiddleware.RegisterServiceMetadata{
152		Region:        region,
153		ServiceID:     ServiceID,
154		SigningName:   "ec2",
155		OperationName: "ModifyCapacityReservation",
156	}
157}
158