You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by qu...@apache.org on 2018/06/29 08:19:27 UTC

[03/10] libcloud git commit: Cleaned EC2 files and added constants

http://git-wip-us.apache.org/repos/asf/libcloud/blob/f803651e/libcloud/compute/drivers/ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index d7b6a56..00e3829 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -41,6 +41,7 @@ from libcloud.compute.base import NodeImage, StorageVolume, VolumeSnapshot
 from libcloud.compute.base import KeyPair
 from libcloud.compute.types import NodeState, KeyPairDoesNotExistError, \
     StorageVolumeState, VolumeSnapshotState
+from libcloud.compute.constants import INSTANCE_TYPES, REGION_DETAILS
 
 __all__ = [
     'API_VERSION',
@@ -88,2107 +89,19 @@ EUCA_NAMESPACE = 'http://msgs.eucalyptus.com/%s' % (DEFAULT_EUCA_API_VERSION)
 DEFAULT_OUTSCALE_API_VERSION = '2016-04-01'
 OUTSCALE_NAMESPACE = 'http://api.outscale.com/wsdl/fcuext/2014-04-15/'
 
-"""
-Sizes must be hardcoded, because Amazon doesn't provide an API to fetch them.
-From http://aws.amazon.com/ec2/instance-types/
-and <http://aws.amazon.com/ec2/previous-generation/>
-ram = [MiB], disk = [GB]
-"""
-
-
-def GiB(value):
-    return int(value * 1024)
-
-
-INSTANCE_TYPES = {
-    't1.micro': {
-        'id': 't1.micro',
-        'name': 'Micro Instance',
-        'ram': GiB(0.613),
-        'disk': 15,  # GB
-        'bandwidth': None
-    },
-    'm1.small': {
-        'id': 'm1.small',
-        'name': 'Small Instance',
-        'ram': GiB(1.7),
-        'disk': 160,  # GB
-        'bandwidth': None
-    },
-    'm1.medium': {
-        'id': 'm1.medium',
-        'name': 'Medium Instance',
-        'ram': GiB(3.75),
-        'disk': 410,  # GB
-        'bandwidth': None
-    },
-    'm1.large': {
-        'id': 'm1.large',
-        'name': 'Large Instance',
-        'ram': GiB(7.5),
-        'disk': 2 * 420,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'm1.xlarge': {
-        'id': 'm1.xlarge',
-        'name': 'Extra Large Instance',
-        'ram': GiB(15),
-        'disk': 4 * 420,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'c1.medium': {
-        'id': 'c1.medium',
-        'name': 'High-CPU Medium Instance',
-        'ram': GiB(1.7),
-        'disk': 350,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'c1.xlarge': {
-        'id': 'c1.xlarge',
-        'name': 'High-CPU Extra Large Instance',
-        'ram': GiB(7),
-        'disk': 4 * 420,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'm2.xlarge': {
-        'id': 'm2.xlarge',
-        'name': 'High-Memory Extra Large Instance',
-        'ram': GiB(17.1),
-        'disk': 420,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'm2.2xlarge': {
-        'id': 'm2.2xlarge',
-        'name': 'High-Memory Double Extra Large Instance',
-        'ram': GiB(34.2),
-        'disk': 850,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'm2.4xlarge': {
-        'id': 'm2.4xlarge',
-        'name': 'High-Memory Quadruple Extra Large Instance',
-        'ram': GiB(68.4),
-        'disk': 2 * 840,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'm3.medium': {
-        'id': 'm3.medium',
-        'name': 'Medium Instance',
-        'ram': GiB(3.75),
-        'disk': 4,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 1
-        }
-    },
-    'm3.large': {
-        'id': 'm3.large',
-        'name': 'Large Instance',
-        'ram': GiB(7.5),
-        'disk': 32,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'm3.xlarge': {
-        'id': 'm3.xlarge',
-        'name': 'Extra Large Instance',
-        'ram': GiB(15),
-        'disk': 2 * 40,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'm3.2xlarge': {
-        'id': 'm3.2xlarge',
-        'name': 'Double Extra Large Instance',
-        'ram': GiB(30),
-        'disk': 2 * 80,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'm4.large': {
-        'id': 'm4.large',
-        'name': 'Large Instance',
-        'ram': GiB(8),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'm4.xlarge': {
-        'id': 'm4.xlarge',
-        'name': 'Extra Large Instance',
-        'ram': GiB(16),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'm4.2xlarge': {
-        'id': 'm4.2xlarge',
-        'name': 'Double Extra Large Instance',
-        'ram': GiB(32),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'm4.4xlarge': {
-        'id': 'm4.4xlarge',
-        'name': 'Quadruple Extra Large Instance',
-        'ram': GiB(64),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'm4.10xlarge': {
-        'id': 'm4.10xlarge',
-        'name': '10 Extra Large Instance',
-        'ram': GiB(160),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 40
-        }
-    },
-    'm4.16xlarge': {
-        'id': 'm4.16xlarge',
-        'name': '16 Extra Large Instance',
-        'ram': GiB(256),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 64
-        }
-    },
-    'm5.large': {
-        'id': 'm5.large',
-        'name': 'Large Instance',
-        'ram': GiB(8),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'm5.xlarge': {
-        'id': 'm5.xlarge',
-        'name': 'Extra Large Instance',
-        'ram': GiB(16),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'm5.2xlarge': {
-        'id': 'm5.2xlarge',
-        'name': 'Double Extra Large Instance',
-        'ram': GiB(32),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'm5.4xlarge': {
-        'id': 'm5.4xlarge',
-        'name': 'Quadruple Extra Large Instance',
-        'ram': GiB(64),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'm5.12xlarge': {
-        'id': 'm5.12xlarge',
-        'name': '12 Extra Large Instance',
-        'ram': GiB(192),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 48
-        }
-    },
-    'm5.24xlarge': {
-        'id': 'm5.24xlarge',
-        'name': '24 Extra Large Instance',
-        'ram': GiB(384),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 96
-        }
-    },
-    'cg1.4xlarge': {
-        'id': 'cg1.4xlarge',
-        'name': 'Cluster GPU Quadruple Extra Large Instance',
-        'ram': GiB(22.5),
-        'disk': 2 * 840,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'g2.2xlarge': {
-        'id': 'g2.2xlarge',
-        'name': 'Cluster GPU G2 Double Extra Large Instance',
-        'ram': GiB(15),
-        'disk': 60,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'g2.8xlarge': {
-        'id': 'g2.8xlarge',
-        'name': 'Cluster GPU G2 Eight Extra Large Instance',
-        'ram': GiB(60),
-        'disk': 2 * 120,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'g3.4xlarge': {
-        'id': 'g3.4xlarge',
-        'name': 'Cluster GPU G3 Four Extra Large Instance',
-        'ram': GiB(122),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16,
-            'gpu': 1,
-            'gpu_ram': GiB(8)
-        }
-    },
-    'g3.8xlarge': {
-        'id': 'g3.8xlarge',
-        'name': 'Cluster GPU G3 Eight Extra Large Instance',
-        'ram': GiB(244),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32,
-            'gpu': 2,
-            'gpu_ram': GiB(16)
-        }
-    },
-    'g3.16xlarge': {
-        'id': 'g3.16xlarge',
-        'name': 'Cluster GPU G3 16 Extra Large Instance',
-        'ram': GiB(488),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 64,
-            'gpu': 4,
-            'gpu_ram': GiB(32)
-        }
-    },
-    'p2.xlarge': {
-        'id': 'p2.xlarge',
-        'name': 'Cluster GPU P2 Large Instance',
-        'ram': GiB(61),
-        'disk': 4,
-        'bandwidth': None
-    },
-    'p2.8xlarge': {
-        'id': 'p2.8xlarge',
-        'name': 'Cluster GPU P2 Large Instance',
-        'ram': GiB(488),
-        'disk': 32,
-        'bandwidth': None
-    },
-    'p2.16xlarge': {
-        'id': 'p2.16xlarge',
-        'name': 'Cluster GPU P2 Large Instance',
-        'ram': GiB(732),
-        'disk': 64,
-        'bandwidth': None
-    },
-    'cc1.4xlarge': {
-        'id': 'cc1.4xlarge',
-        'name': 'Cluster Compute Quadruple Extra Large Instance',
-        'ram': 23552,
-        'disk': 1690,
-        'bandwidth': None
-    },
-    'cc2.8xlarge': {
-        'id': 'cc2.8xlarge',
-        'name': 'Cluster Compute Eight Extra Large Instance',
-        'ram': GiB(60.5),
-        'disk': 4 * 840,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    # c3 instances have 2 SSDs of the specified disk size
-    'c3.large': {
-        'id': 'c3.large',
-        'name': 'Compute Optimized Large Instance',
-        'ram': GiB(3.75),
-        'disk': 2 * 16,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'c3.xlarge': {
-        'id': 'c3.xlarge',
-        'name': 'Compute Optimized Extra Large Instance',
-        'ram': GiB(7.5),
-        'disk': 2 * 40,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'c3.2xlarge': {
-        'id': 'c3.2xlarge',
-        'name': 'Compute Optimized Double Extra Large Instance',
-        'ram': GiB(15),
-        'disk': 2 * 80,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'c3.4xlarge': {
-        'id': 'c3.4xlarge',
-        'name': 'Compute Optimized Quadruple Extra Large Instance',
-        'ram': GiB(30),
-        'disk': 2 * 160,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'c3.8xlarge': {
-        'id': 'c3.8xlarge',
-        'name': 'Compute Optimized Eight Extra Large Instance',
-        'ram': GiB(60),
-        'disk': 2 * 320,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'c4.large': {
-        'id': 'c4.large',
-        'name': 'Compute Optimized Large Instance',
-        'ram': GiB(3.75),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'c4.xlarge': {
-        'id': 'c4.xlarge',
-        'name': 'Compute Optimized Extra Large Instance',
-        'ram': GiB(7.5),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'c4.2xlarge': {
-        'id': 'c4.2xlarge',
-        'name': 'Compute Optimized Double Large Instance',
-        'ram': GiB(15),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'c4.4xlarge': {
-        'id': 'c4.4xlarge',
-        'name': 'Compute Optimized Quadruple Extra Large Instance',
-        'ram': GiB(30),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'c4.8xlarge': {
-        'id': 'c4.8xlarge',
-        'name': 'Compute Optimized Eight Extra Large Instance',
-        'ram': GiB(60),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'c5.large': {
-        'id': 'c5.large',
-        'name': 'Compute Optimized Large Instance',
-        'ram': GiB(4),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'c5.xlarge': {
-        'id': 'c5.xlarge',
-        'name': 'Compute Optimized Extra Large Instance',
-        'ram': GiB(8),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'c5.2xlarge': {
-        'id': 'c5.2xlarge',
-        'name': 'Compute Optimized Double Extra Large Instance',
-        'ram': GiB(16),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'c5.4xlarge': {
-        'id': 'c5.4xlarge',
-        'name': 'Compute Optimized Quadruple Extra Large Instance',
-        'ram': GiB(32),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'c5.9xlarge': {
-        'id': 'c5.9xlarge',
-        'name': 'Compute Optimized Nonuple Extra Large Instance',
-        'ram': GiB(72),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 36
-        }
-    },
-    'c5.18xlarge': {
-        'id': 'c5.18xlarge',
-        'name': 'Compute Optimized Eighteen Extra Large Instance',
-        'ram': GiB(144),
-        'disk': 0,  # EBS only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 72
-        }
-    },
-    'cr1.8xlarge': {
-        'id': 'cr1.8xlarge',
-        'name': 'High Memory Cluster Eight Extra Large',
-        'ram': GiB(244),
-        'disk': 2 * 120,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'hs1.4xlarge': {
-        'id': 'hs1.4xlarge',
-        'name': 'High Storage Quadruple Extra Large Instance',
-        'ram': GiB(64),
-        'disk': 2 * 1024,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'hs1.8xlarge': {
-        'id': 'hs1.8xlarge',
-        'name': 'High Storage Eight Extra Large Instance',
-        'ram': GiB(117),
-        'disk': 24 * 2000,
-        'bandwidth': None,
-        'extra': {
-            'cpu': 17
-        }
-    },
-    # i2 instances have up to eight SSD drives
-    'i2.xlarge': {
-        'id': 'i2.xlarge',
-        'name': 'High I/O Storage Optimized Extra Large Instance',
-        'ram': GiB(30.5),
-        'disk': 800,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'i2.2xlarge': {
-        'id': 'i2.2xlarge',
-        'name': 'High I/O Storage Optimized Double Extra Large Instance',
-        'ram': GiB(61),
-        'disk': 2 * 800,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'i2.4xlarge': {
-        'id': 'i2.4xlarge',
-        'name': 'High I/O Storage Optimized Quadruple Large Instance',
-        'ram': GiB(122),
-        'disk': 4 * 800,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'i2.8xlarge': {
-        'id': 'i2.8xlarge',
-        'name': 'High I/O Storage Optimized Eight Extra Large Instance',
-        'ram': GiB(244),
-        'disk': 8 * 800,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'i3.large': {
-        'id': 'i3.large',
-        'name': 'High I/O Instances',
-        'ram': GiB(15.25),
-        'disk': 1 * 475,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'i3.xlarge': {
-        'id': 'i3.xlarge',
-        'name': 'High I/O Instances',
-        'ram': GiB(30.5),
-        'disk': 1 * 950,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'i3.2xlarge': {
-        'id': 'i3.2xlarge',
-        'name': 'High I/O Instances',
-        'ram': GiB(61),
-        'disk': 1 * 1900,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'i3.4xlarge': {
-        'id': 'i3.4xlarge',
-        'name': 'High I/O Instances',
-        'ram': GiB(122),
-        'disk': 2 * 1900,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'i3.8xlarge': {
-        'id': 'i3.8xlarge',
-        'name': 'High I/O Instances',
-        'ram': GiB(244),
-        'disk': 4 * 1900,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'i3.16xlarge': {
-        'id': 'i3.16xlarge',
-        'name': 'High I/O Instances',
-        'ram': GiB(488),
-        'disk': 8 * 1900,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 64
-        }
-    },
-    'd2.xlarge': {
-        'id': 'd2.xlarge',
-        'name': 'Dense Storage Optimized Extra Large Instance',
-        'ram': GiB(30.5),
-        'disk': 3 * 2000,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'd2.2xlarge': {
-        'id': 'd2.2xlarge',
-        'name': 'Dense Storage Optimized Double Extra Large Instance',
-        'ram': GiB(61),
-        'disk': 6 * 2000,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'd2.4xlarge': {
-        'id': 'd2.4xlarge',
-        'name': 'Dense Storage Optimized Quadruple Extra Large Instance',
-        'ram': GiB(122),
-        'disk': 12 * 2000,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'd2.8xlarge': {
-        'id': 'd2.8xlarge',
-        'name': 'Dense Storage Optimized Eight Extra Large Instance',
-        'ram': GiB(244),
-        'disk': 24 * 2000,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 36
-        }
-    },
-    # 1x SSD
-    'r3.large': {
-        'id': 'r3.large',
-        'name': 'Memory Optimized Large instance',
-        'ram': GiB(15.25),
-        'disk': 32,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'r3.xlarge': {
-        'id': 'r3.xlarge',
-        'name': 'Memory Optimized Extra Large instance',
-        'ram': GiB(30.5),
-        'disk': 80,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'r3.2xlarge': {
-        'id': 'r3.2xlarge',
-        'name': 'Memory Optimized Double Extra Large instance',
-        'ram': GiB(61),
-        'disk': 160,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'r3.4xlarge': {
-        'id': 'r3.4xlarge',
-        'name': 'Memory Optimized Quadruple Extra Large instance',
-        'ram': GiB(122),
-        'disk': 320,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'r3.8xlarge': {
-        'id': 'r3.8xlarge',
-        'name': 'Memory Optimized Eight Extra Large instance',
-        'ram': GiB(244),
-        'disk': 2 * 320,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'r4.large': {
-        'id': 'r4.large',
-        'name': 'Memory Optimized Large instance',
-        'ram': GiB(15.25),
-        'disk': 0,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    'r4.xlarge': {
-        'id': 'r4.xlarge',
-        'name': 'Memory Optimized Extra Large instance',
-        'ram': GiB(30.5),
-        'disk': 0,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    'r4.2xlarge': {
-        'id': 'r4.2xlarge',
-        'name': 'Memory Optimized Double Extra Large instance',
-        'ram': GiB(61),
-        'disk': 0,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'r4.4xlarge': {
-        'id': 'r4.4xlarge',
-        'name': 'Memory Optimized Quadruple Extra Large instance',
-        'ram': GiB(122),
-        'disk': 0,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 16
-        }
-    },
-    'r4.8xlarge': {
-        'id': 'r4.8xlarge',
-        'name': 'Memory Optimized Eight Extra Large instance',
-        'ram': GiB(244),
-        'disk': 0,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 32
-        }
-    },
-    'r4.16xlarge': {
-        'id': 'r4.16xlarge',
-        'name': 'Memory Optimized Sixteen Extra Large instance',
-        'ram': GiB(488),
-        'disk': 0,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 64
-        }
-    },
-    # Burstable Performance General Purpose
-    't2.nano': {
-        'id': 't2.nano',
-        'name': 'Burstable Performance Nano Instance',
-        'ram': 512,
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 1
-        }
-    },
-    't2.micro': {
-        'id': 't2.micro',
-        'name': 'Burstable Performance Micro Instance',
-        'ram': GiB(1),
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 1
-        }
-    },
-    't2.small': {
-        'id': 't2.small',
-        'name': 'Burstable Performance Small Instance',
-        'ram': GiB(2),
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 1
-        }
-    },
-    't2.medium': {
-        'id': 't2.medium',
-        'name': 'Burstable Performance Medium Instance',
-        'ram': GiB(4),
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    't2.large': {
-        'id': 't2.large',
-        'name': 'Burstable Performance Medium Instance',
-        'ram': GiB(8),
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 2
-        }
-    },
-    't2.xlarge': {
-        'id': 't2.xlarge',
-        'name': 'Burstable Performance Extra Large Instance',
-        'ram': GiB(16),
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 4
-        }
-    },
-    't2.2xlarge': {
-        'id': 't2.2xlarge',
-        'name': 'Burstable Performance Double Extra Large Instance',
-        'ram': GiB(32),
-        'disk': 0,  # EBS Only
-        'bandwidth': None,
-        'extra': {
-            'cpu': 8
-        }
-    },
-    'x1.16xlarge': {
-        'id': 'x1.16xlarge',
-        'name': 'Memory Optimized Sixteen Extra Large instance',
-        'ram': GiB(976),
-        'disk': 1920,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 64
-        }
-    },
-    'x1e.32xlarge': {
-        'id': 'x1e.32xlarge',
-        'name': 'Memory Optimized ThirtyTwo E Extra Large instance',
-        'ram': GiB(3904),
-        'disk': 2 * 1920,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 128
-        }
-    },
-    'x1.32xlarge': {
-        'id': 'x1.32xlarge',
-        'name': 'Memory Optimized ThirtyTwo Extra Large instance',
-        'ram': GiB(1952),
-        'disk': 2 * 1920,  # GB
-        'bandwidth': None,
-        'extra': {
-            'cpu': 128
-        }
-    }
-}
-
-#  From <https://aws.amazon.com/marketplace/help/200777880>
-REGION_DETAILS = {
-    # US East (Northern Virginia) Region
-    'us-east-1': {
-        'endpoint': 'ec2.us-east-1.amazonaws.com',
-        'api_name': 'ec2_us_east',
-        'country': 'USA',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'm5.large',
-            'm5.xlarge',
-            'm5.2xlarge',
-            'm5.4xlarge',
-            'm5.12xlarge',
-            'm5.24xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'cc2.8xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'c5.large',
-            'c5.xlarge',
-            'c5.2xlarge',
-            'c5.4xlarge',
-            'c5.9xlarge',
-            'c5.18xlarge',
-            'cg1.4xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'g3.4xlarge',
-            'g3.8xlarge',
-            'g3.16xlarge',
-            'cr1.8xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # US West (Northern California) Region
-    'us-west-1': {
-        'endpoint': 'ec2.us-west-1.amazonaws.com',
-        'api_name': 'ec2_us_west',
-        'country': 'USA',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'g3.4xlarge',
-            'g3.8xlarge',
-            'g3.16xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'c5.large',
-            'c5.xlarge',
-            'c5.2xlarge',
-            'c5.4xlarge',
-            'c5.9xlarge',
-            'c5.18xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large'
-        ]
-    },
-    # US East (Ohio) Region
-    'us-east-2': {
-        'endpoint': 'ec2.us-east-2.amazonaws.com',
-        'api_name': 'ec2_us_east_ohio',
-        'country': 'USA',
-        'signature_version': '4',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'cc2.8xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'cg1.4xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'g3.4xlarge',
-            'g3.8xlarge',
-            'g3.16xlarge',
-            'cr1.8xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # US West (Oregon) Region
-    'us-west-2': {
-        'endpoint': 'ec2.us-west-2.amazonaws.com',
-        'api_name': 'ec2_us_west_oregon',
-        'country': 'US',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'm5.large',
-            'm5.xlarge',
-            'm5.2xlarge',
-            'm5.4xlarge',
-            'm5.12xlarge',
-            'm5.24xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'g3.4xlarge',
-            'g3.8xlarge',
-            'g3.16xlarge',
-            'p2.xlarge',
-            'p2.8xlarge',
-            'p2.16xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'hs1.8xlarge',
-            'cc2.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # EU (Ireland) Region
-    'eu-west-1': {
-        'endpoint': 'ec2.eu-west-1.amazonaws.com',
-        'api_name': 'ec2_eu_west',
-        'country': 'Ireland',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'm5.large',
-            'm5.xlarge',
-            'm5.2xlarge',
-            'm5.4xlarge',
-            'm5.12xlarge',
-            'm5.24xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'g3.4xlarge',
-            'g3.8xlarge',
-            'g3.16xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'c5.large',
-            'c5.xlarge',
-            'c5.2xlarge',
-            'c5.4xlarge',
-            'c5.9xlarge',
-            'c5.18xlarge',
-            'hs1.8xlarge',
-            'cc2.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # EU (London) Region
-    'eu-west-2': {
-        'endpoint': 'ec2.eu-west-2.amazonaws.com',
-        'api_name': 'ec2_eu_west_london',
-        'country': 'United Kingdom',
-        'signature_version': '4',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'cc2.8xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'cg1.4xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'cr1.8xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # EU (Paris) Region
-    'eu-west-3': {
-        'endpoint': 'ec2.eu-west-3.amazonaws.com',
-        'api_name': 'ec2_eu_west_paris',
-        'country': 'France',
-        'signature_version': '4',
-        'instance_types': [
-            'c5.large',
-            'c5.xlarge',
-            'c5.2xlarge',
-            'c5.4xlarge',
-            'c5.9xlarge',
-            'c5.18xlarge',
-            'm5.large',
-            'm5.xlarge',
-            'm5.2xlarge',
-            'm5.4xlarge',
-            'm5.12xlarge',
-            'm5.24xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # EU (Frankfurt) Region
-    'eu-central-1': {
-        'endpoint': 'ec2.eu-central-1.amazonaws.com',
-        'api_name': 'ec2_eu_central',
-        'country': 'Frankfurt',
-        'signature_version': '4',
-        'instance_types': [
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c3.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # Asia Pacific (Mumbai, India) Region
-    'ap-south-1': {
-        'endpoint': 'ec2.ap-south-1.amazonaws.com',
-        'api_name': 'ec2_ap_south_1',
-        'country': 'India',
-        'signature_version': '4',
-        'instance_types': [
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge'
-        ]
-    },
-    # Asia Pacific (Singapore) Region
-    'ap-southeast-1': {
-        'endpoint': 'ec2.ap-southeast-1.amazonaws.com',
-        'api_name': 'ec2_ap_southeast',
-        'country': 'Singapore',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # Asia Pacific (Tokyo) Region
-    'ap-northeast-1': {
-        'endpoint': 'ec2.ap-northeast-1.amazonaws.com',
-        'api_name': 'ec2_ap_northeast',
-        'country': 'Japan',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'c1.medium',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'c1.xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # Asia Pacific (Seoul) Region
-    'ap-northeast-2': {
-        'endpoint': 'ec2.ap-northeast-2.amazonaws.com',
-        'api_name': 'ec2_ap_northeast',
-        'country': 'South Korea',
-        'signature_version': '4',
-        'instance_types': [
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # South America (Sao Paulo) Region
-    'sa-east-1': {
-        'endpoint': 'ec2.sa-east-1.amazonaws.com',
-        'api_name': 'ec2_sa_east',
-        'country': 'Brazil',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large'
-        ]
-    },
-    # Asia Pacific (Sydney) Region
-    'ap-southeast-2': {
-        'endpoint': 'ec2.ap-southeast-2.amazonaws.com',
-        'api_name': 'ec2_ap_southeast_2',
-        'country': 'Australia',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # Canada (Central) Region
-    'ca-central-1': {
-        'endpoint': 'ec2.ca-central-1.amazonaws.com',
-        'api_name': 'ec2_ca_central_1',
-        'country': 'Canada',
-        'signature_version': '4',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'cc2.8xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'cg1.4xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'cr1.8xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            'x1.16xlarge',
-            'x1.32xlarge',
-            'x1e.32xlarge',
-        ]
-    },
-    # GovCloud Region
-    'us-gov-west-1': {
-        'endpoint': 'ec2.us-gov-west-1.amazonaws.com',
-        'api_name': 'ec2_us_govwest',
-        'country': 'US',
-        'signature_version': '2',
-        'instance_types': [
-            't1.micro',
-            'm1.small',
-            'm1.medium',
-            'm1.large',
-            'm1.xlarge',
-            'm2.xlarge',
-            'm2.2xlarge',
-            'm2.4xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'c1.medium',
-            'c1.xlarge',
-            'g2.2xlarge',
-            'g2.8xlarge',
-            'g3.4xlarge',
-            'g3.8xlarge',
-            'g3.16xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'hs1.4xlarge',
-            'hs1.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            't2.nano',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large'
-        ]
-    },
-    # China (North) Region
-    'cn-north-1': {
-        'endpoint': 'ec2.cn-north-1.amazonaws.com.cn',
-        'api_name': 'ec2_cn_north',
-        'country': 'China',
-        'signature_version': '4',
-        'instance_types': [
-            't1.micro',
-            't2.micro',
-            't2.small',
-            't2.medium',
-            't2.large',
-            't2.xlarge',
-            't2.2xlarge',
-            'm4.large',
-            'm4.xlarge',
-            'm4.2xlarge',
-            'm4.4xlarge',
-            'm4.10xlarge',
-            'm4.16xlarge',
-            'm3.medium',
-            'm3.large',
-            'm3.xlarge',
-            'm3.2xlarge',
-            'm1.small',
-            'c4.large',
-            'c4.xlarge',
-            'c4.2xlarge',
-            'c4.4xlarge',
-            'c4.8xlarge',
-            'c3.large',
-            'c3.xlarge',
-            'c3.2xlarge',
-            'c3.4xlarge',
-            'c3.8xlarge',
-            'r4.large',
-            'r4.xlarge',
-            'r4.2xlarge',
-            'r4.4xlarge',
-            'r4.8xlarge',
-            'r4.16xlarge',
-            'r3.large',
-            'r3.xlarge',
-            'r3.2xlarge',
-            'r3.4xlarge',
-            'r3.8xlarge',
-            'd2.xlarge',
-            'd2.2xlarge',
-            'd2.4xlarge',
-            'd2.8xlarge',
-            'i2.xlarge',
-            'i2.2xlarge',
-            'i2.4xlarge',
-            'i2.8xlarge',
-            'i3.large',
-            'i3.xlarge',
-            'i3.2xlarge',
-            'i3.4xlarge',
-            'i3.8xlarge',
-            'i3.16xlarge',
-        ]
-    },
-    'nimbus': {
-        # Nimbus clouds have 3 EC2-style instance types but their particular
-        # RAM allocations are configured by the admin
-        'country': 'custom',
-        'signature_version': '2',
-        'instance_types': [
-            'm1.small',
-            'm1.large',
-            'm1.xlarge'
-        ]
-    }
+# Add Nimbus region
+REGION_DETAILS['nimbus'] = {
+    # Nimbus clouds have 3 EC2-style instance types but their particular
+    # RAM allocations are configured by the admin
+    'country': 'custom',
+    'signature_version': '2',
+    'instance_types': [
+        'm1.small',
+        'm1.large',
+        'm1.xlarge'
+    ]
 }
 
-
 """
 Sizes must be hardcoded because Outscale doesn't provide an API to fetch them.
 Outscale cloud instances share some names with EC2 but have different