-
Notifications
You must be signed in to change notification settings - Fork 155
/
fleet.ts
244 lines (235 loc) · 11.3 KB
/
fleet.ts
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as utilities from "../utilities";
/**
* Provides a resource to manage EC2 Fleets.
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
*
* const example = new aws.ec2.Fleet("example", {
* launchTemplateConfig: {
* launchTemplateSpecification: {
* launchTemplateId: aws_launch_template_example.id,
* version: aws_launch_template_example.latestVersion,
* },
* },
* targetCapacitySpecification: {
* defaultTargetCapacityType: "spot",
* totalTargetCapacity: 5,
* },
* });
* ```
*
* > This content is derived from https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/ec2_fleet.html.markdown.
*/
export class Fleet extends pulumi.CustomResource {
/**
* Get an existing Fleet resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
*/
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: FleetState, opts?: pulumi.CustomResourceOptions): Fleet {
return new Fleet(name, <any>state, { ...opts, id: id });
}
/** @internal */
public static readonly __pulumiType = 'aws:ec2/fleet:Fleet';
/**
* Returns true if the given object is an instance of Fleet. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
public static isInstance(obj: any): obj is Fleet {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Fleet.__pulumiType;
}
/**
* Whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2. Valid values: `no-termination`, `termination`. Defaults to `termination`.
*/
public readonly excessCapacityTerminationPolicy!: pulumi.Output<string | undefined>;
/**
* Nested argument containing EC2 Launch Template configurations. Defined below.
*/
public readonly launchTemplateConfig!: pulumi.Output<outputs.ec2.FleetLaunchTemplateConfig>;
/**
* Nested argument containing On-Demand configurations. Defined below.
*/
public readonly onDemandOptions!: pulumi.Output<outputs.ec2.FleetOnDemandOptions | undefined>;
/**
* Whether EC2 Fleet should replace unhealthy instances. Defaults to `false`.
*/
public readonly replaceUnhealthyInstances!: pulumi.Output<boolean | undefined>;
/**
* Nested argument containing Spot configurations. Defined below.
*/
public readonly spotOptions!: pulumi.Output<outputs.ec2.FleetSpotOptions | undefined>;
/**
* Map of Fleet tags. To tag instances at launch, specify the tags in the Launch Template.
*/
public readonly tags!: pulumi.Output<{[key: string]: any} | undefined>;
/**
* Nested argument containing target capacity configurations. Defined below.
*/
public readonly targetCapacitySpecification!: pulumi.Output<outputs.ec2.FleetTargetCapacitySpecification>;
/**
* Whether to terminate instances for an EC2 Fleet if it is deleted successfully. Defaults to `false`.
*/
public readonly terminateInstances!: pulumi.Output<boolean | undefined>;
/**
* Whether running instances should be terminated when the EC2 Fleet expires. Defaults to `false`.
*/
public readonly terminateInstancesWithExpiration!: pulumi.Output<boolean | undefined>;
/**
* The type of request. Indicates whether the EC2 Fleet only requests the target capacity, or also attempts to maintain it. Valid values: `maintain`, `request`. Defaults to `maintain`.
*/
public readonly type!: pulumi.Output<string | undefined>;
/**
* Create a Fleet resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: FleetArgs, opts?: pulumi.CustomResourceOptions)
constructor(name: string, argsOrState?: FleetArgs | FleetState, opts?: pulumi.CustomResourceOptions) {
let inputs: pulumi.Inputs = {};
if (opts && opts.id) {
const state = argsOrState as FleetState | undefined;
inputs["excessCapacityTerminationPolicy"] = state ? state.excessCapacityTerminationPolicy : undefined;
inputs["launchTemplateConfig"] = state ? state.launchTemplateConfig : undefined;
inputs["onDemandOptions"] = state ? state.onDemandOptions : undefined;
inputs["replaceUnhealthyInstances"] = state ? state.replaceUnhealthyInstances : undefined;
inputs["spotOptions"] = state ? state.spotOptions : undefined;
inputs["tags"] = state ? state.tags : undefined;
inputs["targetCapacitySpecification"] = state ? state.targetCapacitySpecification : undefined;
inputs["terminateInstances"] = state ? state.terminateInstances : undefined;
inputs["terminateInstancesWithExpiration"] = state ? state.terminateInstancesWithExpiration : undefined;
inputs["type"] = state ? state.type : undefined;
} else {
const args = argsOrState as FleetArgs | undefined;
if (!args || args.launchTemplateConfig === undefined) {
throw new Error("Missing required property 'launchTemplateConfig'");
}
if (!args || args.targetCapacitySpecification === undefined) {
throw new Error("Missing required property 'targetCapacitySpecification'");
}
inputs["excessCapacityTerminationPolicy"] = args ? args.excessCapacityTerminationPolicy : undefined;
inputs["launchTemplateConfig"] = args ? args.launchTemplateConfig : undefined;
inputs["onDemandOptions"] = args ? args.onDemandOptions : undefined;
inputs["replaceUnhealthyInstances"] = args ? args.replaceUnhealthyInstances : undefined;
inputs["spotOptions"] = args ? args.spotOptions : undefined;
inputs["tags"] = args ? args.tags : undefined;
inputs["targetCapacitySpecification"] = args ? args.targetCapacitySpecification : undefined;
inputs["terminateInstances"] = args ? args.terminateInstances : undefined;
inputs["terminateInstancesWithExpiration"] = args ? args.terminateInstancesWithExpiration : undefined;
inputs["type"] = args ? args.type : undefined;
}
if (!opts) {
opts = {}
}
if (!opts.version) {
opts.version = utilities.getVersion();
}
super(Fleet.__pulumiType, name, inputs, opts);
}
}
/**
* Input properties used for looking up and filtering Fleet resources.
*/
export interface FleetState {
/**
* Whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2. Valid values: `no-termination`, `termination`. Defaults to `termination`.
*/
readonly excessCapacityTerminationPolicy?: pulumi.Input<string>;
/**
* Nested argument containing EC2 Launch Template configurations. Defined below.
*/
readonly launchTemplateConfig?: pulumi.Input<inputs.ec2.FleetLaunchTemplateConfig>;
/**
* Nested argument containing On-Demand configurations. Defined below.
*/
readonly onDemandOptions?: pulumi.Input<inputs.ec2.FleetOnDemandOptions>;
/**
* Whether EC2 Fleet should replace unhealthy instances. Defaults to `false`.
*/
readonly replaceUnhealthyInstances?: pulumi.Input<boolean>;
/**
* Nested argument containing Spot configurations. Defined below.
*/
readonly spotOptions?: pulumi.Input<inputs.ec2.FleetSpotOptions>;
/**
* Map of Fleet tags. To tag instances at launch, specify the tags in the Launch Template.
*/
readonly tags?: pulumi.Input<{[key: string]: any}>;
/**
* Nested argument containing target capacity configurations. Defined below.
*/
readonly targetCapacitySpecification?: pulumi.Input<inputs.ec2.FleetTargetCapacitySpecification>;
/**
* Whether to terminate instances for an EC2 Fleet if it is deleted successfully. Defaults to `false`.
*/
readonly terminateInstances?: pulumi.Input<boolean>;
/**
* Whether running instances should be terminated when the EC2 Fleet expires. Defaults to `false`.
*/
readonly terminateInstancesWithExpiration?: pulumi.Input<boolean>;
/**
* The type of request. Indicates whether the EC2 Fleet only requests the target capacity, or also attempts to maintain it. Valid values: `maintain`, `request`. Defaults to `maintain`.
*/
readonly type?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Fleet resource.
*/
export interface FleetArgs {
/**
* Whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2. Valid values: `no-termination`, `termination`. Defaults to `termination`.
*/
readonly excessCapacityTerminationPolicy?: pulumi.Input<string>;
/**
* Nested argument containing EC2 Launch Template configurations. Defined below.
*/
readonly launchTemplateConfig: pulumi.Input<inputs.ec2.FleetLaunchTemplateConfig>;
/**
* Nested argument containing On-Demand configurations. Defined below.
*/
readonly onDemandOptions?: pulumi.Input<inputs.ec2.FleetOnDemandOptions>;
/**
* Whether EC2 Fleet should replace unhealthy instances. Defaults to `false`.
*/
readonly replaceUnhealthyInstances?: pulumi.Input<boolean>;
/**
* Nested argument containing Spot configurations. Defined below.
*/
readonly spotOptions?: pulumi.Input<inputs.ec2.FleetSpotOptions>;
/**
* Map of Fleet tags. To tag instances at launch, specify the tags in the Launch Template.
*/
readonly tags?: pulumi.Input<{[key: string]: any}>;
/**
* Nested argument containing target capacity configurations. Defined below.
*/
readonly targetCapacitySpecification: pulumi.Input<inputs.ec2.FleetTargetCapacitySpecification>;
/**
* Whether to terminate instances for an EC2 Fleet if it is deleted successfully. Defaults to `false`.
*/
readonly terminateInstances?: pulumi.Input<boolean>;
/**
* Whether running instances should be terminated when the EC2 Fleet expires. Defaults to `false`.
*/
readonly terminateInstancesWithExpiration?: pulumi.Input<boolean>;
/**
* The type of request. Indicates whether the EC2 Fleet only requests the target capacity, or also attempts to maintain it. Valid values: `maintain`, `request`. Defaults to `maintain`.
*/
readonly type?: pulumi.Input<string>;
}