Skip to content

Commit ffc4642

Browse files
chrismldEC2 Default User
andauthored
Update instance types supported by EMR (#143)
* Updated EMR instance types list * Updated EMR instance types list #135 Co-authored-by: EC2 Default User <ec2-user@ip-172-31-2-34.eu-west-1.compute.internal>
1 parent 0154f4b commit ffc4642

File tree

2 files changed

+116
-35
lines changed

2 files changed

+116
-35
lines changed

pkg/selector/emr.go

Lines changed: 98 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,20 @@ func (e EMR) getEMRInstanceTypes(version semver.Version) ([]string, error) {
5656
instanceTypes := []string{}
5757

5858
for _, instanceType := range e.getAllEMRInstanceTypes() {
59-
if semver.MustParseRange(">=5.25.0")(version) {
59+
if semver.MustParseRange(">=5.33.0")(version) {
60+
instanceTypes = append(instanceTypes, instanceType)
61+
} else if semver.MustParseRange(">=5.25.0 <5.33.0")(version) {
62+
if e.isOnlyEMR_5_33_0_plus(instanceType) {
63+
continue
64+
}
6065
instanceTypes = append(instanceTypes, instanceType)
6166
} else if semver.MustParseRange(">=5.20.0 <5.25.0")(version) {
6267
if e.isOnlyEMR_5_25_0_plus(instanceType) {
6368
continue
6469
}
70+
if e.isOnlyEMR_5_33_0_plus(instanceType) {
71+
continue
72+
}
6573
instanceTypes = append(instanceTypes, instanceType)
6674
} else if semver.MustParseRange(">=5.15.0 <5.20.0")(version) {
6775
if instanceType == "c1.medium" {
@@ -73,6 +81,9 @@ func (e EMR) getEMRInstanceTypes(version semver.Version) ([]string, error) {
7381
if e.isOnlyEMR_5_25_0_plus(instanceType) {
7482
continue
7583
}
84+
if e.isOnlyEMR_5_33_0_plus(instanceType) {
85+
continue
86+
}
7687
instanceTypes = append(instanceTypes, instanceType)
7788
} else if semver.MustParseRange(">=5.13.0 <5.15.0")(version) {
7889
if e.isOnlyEMR_5_20_0_plus(instanceType) {
@@ -81,6 +92,9 @@ func (e EMR) getEMRInstanceTypes(version semver.Version) ([]string, error) {
8192
if e.isOnlyEMR_5_25_0_plus(instanceType) {
8293
continue
8394
}
95+
if e.isOnlyEMR_5_33_0_plus(instanceType) {
96+
continue
97+
}
8498
instanceTypes = append(instanceTypes, instanceType)
8599
} else if semver.MustParseRange(">=5.9.0 <5.13.0")(version) {
86100
if e.isEMR_5_13_0_plus(instanceType) {
@@ -92,6 +106,9 @@ func (e EMR) getEMRInstanceTypes(version semver.Version) ([]string, error) {
92106
if e.isOnlyEMR_5_25_0_plus(instanceType) {
93107
continue
94108
}
109+
if e.isOnlyEMR_5_33_0_plus(instanceType) {
110+
continue
111+
}
95112
instanceTypes = append(instanceTypes, instanceType)
96113
} else {
97114
if e.isEMR_5_13_0_plus(instanceType) {
@@ -103,6 +120,9 @@ func (e EMR) getEMRInstanceTypes(version semver.Version) ([]string, error) {
103120
if e.isOnlyEMR_5_25_0_plus(instanceType) {
104121
continue
105122
}
123+
if e.isOnlyEMR_5_33_0_plus(instanceType) {
124+
continue
125+
}
106126
if strings.HasPrefix(instanceType, "i3") {
107127
continue
108128
}
@@ -155,6 +175,21 @@ func (EMR) isOnlyEMR_5_25_0_plus(instanceType string) bool {
155175
return false
156176
}
157177

178+
func (EMR) isOnlyEMR_5_33_0_plus(instanceType string) bool {
179+
prefixes := []string{
180+
"m5zn.",
181+
"m6gd",
182+
"r5b",
183+
"r6gd",
184+
}
185+
for _, prefix := range prefixes {
186+
if strings.HasPrefix(instanceType, prefix) {
187+
return true
188+
}
189+
}
190+
return false
191+
}
192+
158193
func (EMR) getAllEMRInstanceTypes() []string {
159194
return []string{
160195
"c1.medium",
@@ -177,11 +212,17 @@ func (EMR) getAllEMRInstanceTypes() []string {
177212
"c5.xlarge",
178213
"c5a.12xlarge",
179214
"c5a.16xlarge",
180-
"c5a.24xlarge",
181215
"c5a.2xlarge",
182216
"c5a.4xlarge",
183217
"c5a.8xlarge",
184218
"c5a.xlarge",
219+
"c5ad.12xlarge",
220+
"c5ad.16xlarge",
221+
"c5ad.24xlarge",
222+
"c5ad.2xlarge",
223+
"c5ad.4xlarge",
224+
"c5ad.8xlarge",
225+
"c5ad.xlarge",
185226
"c5d.12xlarge",
186227
"c5d.18xlarge",
187228
"c5d.24xlarge",
@@ -200,11 +241,34 @@ func (EMR) getAllEMRInstanceTypes() []string {
200241
"c6g.4xlarge",
201242
"c6g.8xlarge",
202243
"c6g.xlarge",
244+
"c6gd.12xlarge",
245+
"c6gd.16xlarge",
246+
"c6gd.2xlarge",
247+
"c6gd.4xlarge",
248+
"c6gd.8xlarge",
249+
"c6gd.xlarge",
250+
"c6gn.12xlarge",
251+
"c6gn.16xlarge",
252+
"c6gn.2xlarge",
253+
"c6gn.4xlarge",
254+
"c6gn.8xlarge",
255+
"c6gn.xlarge",
203256
"cc2.8xlarge",
257+
"cr1.8xlarge",
204258
"d2.2xlarge",
205259
"d2.4xlarge",
206260
"d2.8xlarge",
207261
"d2.xlarge",
262+
"d3.2xlarge",
263+
"d3.4xlarge",
264+
"d3.8xlarge",
265+
"d3.xlarge",
266+
"d3en.2xlarge",
267+
"d3en.4xlarge",
268+
"d3en.6xlarge",
269+
"d3en.8xlarge",
270+
"d3en.12xlarge",
271+
"d3en.xlarge",
208272
"g2.2xlarge",
209273
"g3.16xlarge",
210274
"g3.4xlarge",
@@ -220,6 +284,7 @@ func (EMR) getAllEMRInstanceTypes() []string {
220284
"h1.2xlarge",
221285
"h1.4xlarge",
222286
"h1.8xlarge",
287+
"hs1.8xlarge",
223288
"i2.2xlarge",
224289
"i2.4xlarge",
225290
"i2.8xlarge",
@@ -256,7 +321,6 @@ func (EMR) getAllEMRInstanceTypes() []string {
256321
"m5.2xlarge",
257322
"m5.4xlarge",
258323
"m5.8xlarge",
259-
"m5.metal",
260324
"m5.xlarge",
261325
"m5a.12xlarge",
262326
"m5a.16xlarge",
@@ -265,42 +329,30 @@ func (EMR) getAllEMRInstanceTypes() []string {
265329
"m5a.4xlarge",
266330
"m5a.8xlarge",
267331
"m5a.xlarge",
268-
"m5ad.12xlarge",
269-
"m5ad.16xlarge",
270-
"m5ad.24xlarge",
271-
"m5ad.2xlarge",
272-
"m5ad.4xlarge",
273-
"m5ad.8xlarge",
274-
"m5ad.xlarge",
275332
"m5d.12xlarge",
276333
"m5d.16xlarge",
277334
"m5d.24xlarge",
278335
"m5d.2xlarge",
279336
"m5d.4xlarge",
280337
"m5d.8xlarge",
281-
"m5d.metal",
282338
"m5d.xlarge",
283-
"m5dn.12xlarge",
284-
"m5dn.16xlarge",
285-
"m5dn.24xlarge",
286-
"m5dn.2xlarge",
287-
"m5dn.4xlarge",
288-
"m5dn.8xlarge",
289-
"m5dn.xlarge",
290-
"m5n.12xlarge",
291-
"m5n.16xlarge",
292-
"m5n.24xlarge",
293-
"m5n.2xlarge",
294-
"m5n.4xlarge",
295-
"m5n.8xlarge",
296-
"m5n.xlarge",
339+
"m5zn.12xlarge",
340+
"m5zn.2xlarge",
341+
"m5zn.3xlarge",
342+
"m5zn.6xlarge",
343+
"m5zn.xlarge",
297344
"m6g.12xlarge",
298345
"m6g.16xlarge",
299346
"m6g.2xlarge",
300347
"m6g.4xlarge",
301348
"m6g.8xlarge",
302349
"m6g.xlarge",
303-
"mac1.metal",
350+
"m6gd.12xlarge",
351+
"m6gd.16xlarge",
352+
"m6gd.2xlarge",
353+
"m6gd.4xlarge",
354+
"m6gd.8xlarge",
355+
"m6gd.xlarge",
304356
"p2.16xlarge",
305357
"p2.8xlarge",
306358
"p2.xlarge",
@@ -323,7 +375,6 @@ func (EMR) getAllEMRInstanceTypes() []string {
323375
"r5.2xlarge",
324376
"r5.4xlarge",
325377
"r5.8xlarge",
326-
"r5.metal",
327378
"r5.xlarge",
328379
"r5a.12xlarge",
329380
"r5a.16xlarge",
@@ -332,27 +383,39 @@ func (EMR) getAllEMRInstanceTypes() []string {
332383
"r5a.4xlarge",
333384
"r5a.8xlarge",
334385
"r5a.xlarge",
386+
"r5b.12xlarge",
387+
"r5b.16xlarge",
388+
"r5b.24xlarge",
389+
"r5b.2xlarge",
390+
"r5b.4xlarge",
391+
"r5b.8xlarge",
392+
"r5b.xlarge",
335393
"r5d.12xlarge",
336394
"r5d.16xlarge",
337395
"r5d.24xlarge",
338396
"r5d.2xlarge",
339397
"r5d.4xlarge",
340398
"r5d.8xlarge",
341-
"r5d.metal",
342399
"r5d.xlarge",
343-
"r5n.12xlarge",
344-
"r5n.16xlarge",
345-
"r5n.24xlarge",
346-
"r5n.2xlarge",
347-
"r5n.4xlarge",
348-
"r5n.8xlarge",
349-
"r5n.xlarge",
400+
"r5dn.12xlarge",
401+
"r5dn.16xlarge",
402+
"r5dn.24xlarge",
403+
"r5dn.2xlarge",
404+
"r5dn.4xlarge",
405+
"r5dn.8xlarge",
406+
"r5dn.xlarge",
350407
"r6g.12xlarge",
351408
"r6g.16xlarge",
352409
"r6g.2xlarge",
353410
"r6g.4xlarge",
354411
"r6g.8xlarge",
355412
"r6g.xlarge",
413+
"r6gd.12xlarge",
414+
"r6gd.16xlarge",
415+
"r6gd.2xlarge",
416+
"r6gd.4xlarge",
417+
"r6gd.8xlarge",
418+
"r6gd.xlarge",
356419
"x1.32xlarge",
357420
"z1d.12xlarge",
358421
"z1d.2xlarge",

pkg/selector/emr_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,24 @@ func TestEMRDefaultService(t *testing.T) {
4646
h.Assert(t, *transformedFilters.VirtualizationType == "hvm", "emr should only support hvm")
4747
}
4848

49+
func TestFilters_Version5_33_0(t *testing.T) {
50+
registry := selector.NewRegistry()
51+
registry.Register("emr", &selector.EMR{})
52+
53+
filters := selector.Filters{
54+
Service: &emr,
55+
}
56+
57+
emrWithVersion := "emr-" + "5.33.0"
58+
filters.Service = &emrWithVersion
59+
transformedFilters, err := registry.ExecuteTransforms(filters)
60+
h.Ok(t, err)
61+
h.Assert(t, transformedFilters != filters, " Filters should have been modified")
62+
h.Assert(t, *transformedFilters.RootDeviceType == "ebs", "emr should only supports ebs")
63+
h.Assert(t, *transformedFilters.VirtualizationType == "hvm", "emr should only support hvm")
64+
h.Assert(t, contains(*transformedFilters.InstanceTypes, "m6gd.xlarge"), "emr version 5.33.0 should include m6gd.xlarge")
65+
}
66+
4967
func TestFilters_Version5_25_0(t *testing.T) {
5068
registry := selector.NewRegistry()
5169
registry.Register("emr", &selector.EMR{})

0 commit comments

Comments
 (0)