ui/lib/shared/addon/utils/amazon.js

723 lines
12 KiB
JavaScript

export const INSTANCE_TYPES = [
{
group: 'T2 - Burstable',
name: 't2.nano'
},
{
group: 'T2 - Burstable',
name: 't2.micro'
},
{
group: 'T2 - Burstable',
name: 't2.small'
},
{
group: 'T2 - Burstable',
name: 't2.medium'
},
{
group: 'T2 - Burstable',
name: 't2.large'
},
{
group: 'T2 - Burstable',
name: 't2.xlarge'
},
{
group: 'T2 - Burstable',
name: 't2.2xlarge'
},
{
group: 'T3 - Burstable',
name: 't3.nano'
},
{
group: 'T3 - Burstable',
name: 't3.micro'
},
{
group: 'T3 - Burstable',
name: 't3.small'
},
{
group: 'T3 - Burstable',
name: 't3.medium'
},
{
group: 'T3 - Burstable',
name: 't3.large'
},
{
group: 'T3 - Burstable',
name: 't3.xlarge'
},
{
group: 'T3 - Burstable',
name: 't3.2xlarge'
},
{
group: 'T3a - Burstable',
name: 't3a.nano'
},
{
group: 'T3a - Burstable',
name: 't3a.micro'
},
{
group: 'T3a - Burstable',
name: 't3a.small'
},
{
group: 'T3a - Burstable',
name: 't3a.medium'
},
{
group: 'T3a - Burstable',
name: 't3a.large'
},
{
group: 'T3a - Burstable',
name: 't3a.xlarge'
},
{
group: 'T3a - Burstable',
name: 't3a.2xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.large'
},
{
group: 'M5 - General Purpose',
name: 'm5.xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.2xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.4xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.8xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.12xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.16xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.24xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5.metal'
},
{
group: 'M5 - General Purpose',
name: 'm5d.large'
},
{
group: 'M5 - General Purpose',
name: 'm5d.xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.2xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.4xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.8xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.12xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.16xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.24xlarge'
},
{
group: 'M5 - General Purpose',
name: 'm5d.metal'
},
{
group: 'M5a - General Purpose',
name: 'm5a.large'
},
{
group: 'M5a - General Purpose',
name: 'm5a.xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5a.2xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5a.4xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5a.8xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5a.12xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5a.16xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5a.24xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5ad.large'
},
{
group: 'M5a - General Purpose',
name: 'm5ad.xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5ad.2xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5ad.4xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5ad.12xlarge'
},
{
group: 'M5a - General Purpose',
name: 'm5ad.24xlarge'
},
{
group: 'M4 - General Purpose',
name: 'm4.large'
},
{
group: 'M4 - General Purpose',
name: 'm4.xlarge'
},
{
group: 'M4 - General Purpose',
name: 'm4.2xlarge'
},
{
group: 'M4 - General Purpose',
name: 'm4.4xlarge'
},
{
group: 'M4 - General Purpose',
name: 'm4.10xlarge'
},
{
group: 'M4 - General Purpose',
name: 'm4.16xlarge'
},
{
group: 'M3 - General Purpose',
name: 'm3.medium'
},
{
group: 'M3 - General Purpose',
name: 'm3.large'
},
{
group: 'M3 - General Purpose',
name: 'm3.xlarge'
},
{
group: 'M3 - General Purpose',
name: 'm3.2xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.large'
},
{
group: 'C5 - High CPU',
name: 'c5.xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.2xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.4xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.9xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.12xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.18xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.24xlarge'
},
{
group: 'C5 - High CPU',
name: 'c5.metal'
},
{
group: 'C5a - High CPU',
name: 'c5a.large'
},
{
group: 'C5a - High CPU',
name: 'c5a.xlarge'
},
{
group: 'C5a - High CPU',
name: 'c5a.2xlarge'
},
{
group: 'C5a - High CPU',
name: 'c5a.4xlarge'
},
{
group: 'C5a - High CPU',
name: 'c5a.8xlarge'
},
{
group: 'C5a - High CPU',
name: 'c5a.12xlarge'
},
{
group: 'C5a - High CPU',
name: 'c5a.16xlarge'
},
{
group: 'C5a - High CPU',
name: 'c5a.24xlarge'
},
{
group: 'C5D - High CPU',
name: 'c5d.large'
},
{
group: 'C5D - High CPU',
name: 'c5d.xlarge'
},
{
group: 'C5D - High CPU',
name: 'c5d.2xlarge'
},
{
group: 'C5D - High CPU',
name: 'c5d.4xlarge'
},
{
group: 'C5D - High CPU',
name: 'c5d.9xlarge'
},
{
group: 'C5D - High CPU',
name: 'c5d.18xlarge'
},
{
group: 'C4 - High CPU',
name: 'c4.large'
},
{
group: 'C4 - High CPU',
name: 'c4.xlarge'
},
{
group: 'C4 - High CPU',
name: 'c4.2xlarge'
},
{
group: 'C4 - High CPU',
name: 'c4.4xlarge'
},
{
group: 'C4 - High CPU',
name: 'c4.8xlarge'
},
{
group: 'C3 - High CPU',
name: 'c3.large'
},
{
group: 'C3 - High CPU',
name: 'c3.xlarge'
},
{
group: 'C3 - High CPU',
name: 'c3.2xlarge'
},
{
group: 'C3 - High CPU',
name: 'c3.4xlarge'
},
{
group: 'C3 - High CPU',
name: 'c3.8xlarge'
},
{
group: 'R3 - High Memory',
name: 'r3.large'
},
{
group: 'R3 - High Memory',
name: 'r3.xlarge'
},
{
group: 'R3 - High Memory',
name: 'r3.2xlarge'
},
{
group: 'R3 - High Memory',
name: 'r3.4xlarge'
},
{
group: 'R3 - High Memory',
name: 'r3.8xlarge'
},
{
group: 'R4 - High Memory',
name: 'r4.large'
},
{
group: 'R4 - High Memory',
name: 'r4.xlarge'
},
{
group: 'R4 - High Memory',
name: 'r4.2xlarge'
},
{
group: 'R4 - High Memory',
name: 'r4.4xlarge'
},
{
group: 'R4 - High Memory',
name: 'r4.8xlarge'
},
{
group: 'R4 - High Memory',
name: 'r4.16xlarge'
},
{
group: 'R5 - High Memory Optimized',
name: 'r5.large'
},
{
group: 'R5 - High Memory Optimized',
name: 'r5.xlarge'
},
{
group: 'R5 - High Memory Optimized',
name: 'r5.2xlarge'
},
{
group: 'R5 - High Memory Optimized',
name: 'r5.4xlarge'
},
{
group: 'R5 - High Memory Optimized',
name: 'r5.12xlarge '
},
{
group: 'R5 - High Memory Optimized',
name: 'r5.24xlarge '
},
{
group: 'R5D - High Memory Optimized & Local Storage',
name: 'r5d.large'
},
{
group: 'R5D - High Memory Optimized & Local Storage',
name: 'r5d.xlarge'
},
{
group: 'R5D - High Memory Optimized & Local Storage',
name: 'r5d.2xlarge'
},
{
group: 'R5D - High Memory Optimized & Local Storage',
name: 'r5d.4xlarge'
},
{
group: 'R5D - High Memory Optimized & Local Storage',
name: 'r5d.12xlarge'
},
{
group: 'R5D - High Memory Optimized & Local Storage',
name: 'r5d.24xlarge'
},
{
group: 'D2 - High Density Storage',
name: 'd2.xlarge'
},
{
group: 'D2 - High Density Storage',
name: 'd2.2xlarge'
},
{
group: 'D2 - High Density Storage',
name: 'd2.4xlarge'
},
{
group: 'D2 - High Density Storage',
name: 'd2.8xlarge'
},
{
group: 'I3 - High I/O Storage',
name: 'i3.large'
},
{
group: 'I3 - High I/O Storage',
name: 'i3.xlarge'
},
{
group: 'I3 - High I/O Storage',
name: 'i3.2xlarge'
},
{
group: 'I3 - High I/O Storage',
name: 'i3.4xlarge'
},
{
group: 'I3 - High I/O Storage',
name: 'i3.8xlarge'
},
{
group: 'I3 - High I/O Storage',
name: 'i3.16xlarge'
},
{
group: 'F1 - FPGA',
name: 'f1.2xlarge'
},
{
group: 'F1 - FPGA',
name: 'f1.16xlarge'
},
{
group: 'G3 - GPU',
name: 'g3.4xlarge'
},
{
group: 'G3 - GPU',
name: 'g3.8xlarge'
},
{
group: 'G3 - GPU',
name: 'g3.16xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.2xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.4xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.8xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.12xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.16xlarge'
},
{
group: 'G4dn - GPU',
name: 'g4dn.metal'
},
{
group: 'P2 - GPU',
name: 'p2.xlarge'
},
{
group: 'P2 - GPU',
name: 'p2.8xlarge'
},
{
group: 'P2 - GPU',
name: 'p2.16xlarge'
},
{
group: 'P3 - GPU',
name: 'p3.2xlarge'
},
{
group: 'P3 - GPU',
name: 'p3.8xlarge'
},
{
group: 'P3 - GPU',
name: 'p3.16xlarge'
},
{
group: 'P3 - GPU',
name: 'p3dn.24xlarge'
},
{
group: 'X1 - Really High Memory',
name: 'x1.16xlarge'
},
{
group: 'X1 - Really High Memory',
name: 'x1.32xlarge'
},
];
// These need to match the supported list in docker-machine:
// https://github.com/docker/machine/blob/master/drivers/amazonec2/region.go
export const REGIONS = [
'af-south-1',
'ap-northeast-1',
'ap-northeast-2',
'ap-southeast-1',
'ap-southeast-2',
'ap-southeast-3',
'ap-east-1',
'ap-south-1',
'me-south-1',
'ca-central-1',
'cn-north-1',
'cn-northwest-1',
'eu-north-1',
'eu-west-1',
'eu-west-2',
'eu-west-3',
'eu-central-1',
'eu-south-1',
'sa-east-1',
'us-east-1',
'us-east-2',
'us-west-1',
'us-west-2',
'us-gov-west-1',
'us-gov-east-1',
];
export const EKS_REGIONS = [
'af-south-1',
'ap-northeast-1',
'ap-northeast-2',
'ap-southeast-1',
'ap-southeast-2',
'ap-southeast-3',
'ap-east-1',
'ap-south-1',
'me-south-1',
'ca-central-1',
'cn-north-1',
'cn-northwest-1',
'eu-north-1',
'eu-west-1',
'eu-west-2',
'eu-west-3',
'eu-central-1',
'eu-south-1',
'sa-east-1',
'us-east-1',
'us-east-2',
'us-west-1',
'us-west-2',
'us-gov-west-1',
'us-gov-east-1',
];
// from https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html
export const EKS_VERSIONS = ['1.24', '1.23']; // sort newest->oldest so we dont have to run any logic to sort like other provider versions
export const nameFromResource = function(r, idField) {
let id = r[idField];
let out = id;
if ( r && r.Tags && r.Tags.length ) {
let match = r.Tags.filterBy('Key', 'Name')[0];
if ( match ) {
out = `${ match.Value } (${ id })`;
}
}
return out;
}
export const tagsFromResource = function(r) {
let out = [];
if ( r && r.Tags && r.Tags.length ) {
r.Tags.forEach((tag) => {
if ( tag.Key !== 'Name' ) {
out.push(`${ tag.Key }=${ tag.Value }`)
}
})
}
return out;
}
export default {
instanceTypes: INSTANCE_TYPES,
nameFromResource,
tagsFromResource,
}