You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2011/01/24 11:46:54 UTC
svn commit: r1062725 - in /incubator/libcloud/trunk: libcloud/drivers/ec2.py
test/test_ec2.py
Author: tomaz
Date: Mon Jan 24 10:46:54 2011
New Revision: 1062725
URL: http://svn.apache.org/viewvc?rev=1062725&view=rev
Log:
Add cluster instances to EC2 driver.
Modified:
incubator/libcloud/trunk/libcloud/drivers/ec2.py
incubator/libcloud/trunk/test/test_ec2.py
Modified: incubator/libcloud/trunk/libcloud/drivers/ec2.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/drivers/ec2.py?rev=1062725&r1=1062724&r2=1062725&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/drivers/ec2.py (original)
+++ incubator/libcloud/trunk/libcloud/drivers/ec2.py Mon Jan 24 10:46:54 2011
@@ -105,8 +105,24 @@ EC2_INSTANCE_TYPES = {
'disk': 1690,
'bandwidth': None
},
+ 'cg1.4xlarge': {
+ 'id': 'cg1.4xlarge',
+ 'name': 'Cluster GPU Quadruple Extra Large Instance',
+ 'ram': 22528,
+ 'disk': 1690,
+ 'bandwidth': None
+ },
+ 'cc1.4xlarge': {
+ 'id': 'cc1.4xlarge',
+ 'name': 'Cluster Compute Quadruple Extra Large Instance',
+ 'ram': 23552,
+ 'disk': 1690,
+ 'bandwidth': None
+ },
}
+CLUSTER_INSTANCES_IDS = [ 'cg1.4xlarge', 'cc1.4xlarge' ]
+
EC2_US_EAST_INSTANCE_TYPES = dict(EC2_INSTANCE_TYPES)
EC2_US_WEST_INSTANCE_TYPES = dict(EC2_INSTANCE_TYPES)
EC2_EU_WEST_INSTANCE_TYPES = dict(EC2_INSTANCE_TYPES)
@@ -125,6 +141,8 @@ EC2_US_EAST_INSTANCE_TYPES['c1.xlarge'][
EC2_US_EAST_INSTANCE_TYPES['m2.xlarge']['price'] = '.50'
EC2_US_EAST_INSTANCE_TYPES['m2.2xlarge']['price'] = '1.2'
EC2_US_EAST_INSTANCE_TYPES['m2.4xlarge']['price'] = '2.4'
+EC2_US_EAST_INSTANCE_TYPES['cg1.4xlarge']['price'] = '2.1'
+EC2_US_EAST_INSTANCE_TYPES['cc1.4xlarge']['price'] = '1.6'
EC2_US_WEST_INSTANCE_TYPES['t1.micro']['price'] = '.025'
EC2_US_WEST_INSTANCE_TYPES['m1.small']['price'] = '.095'
@@ -383,8 +401,21 @@ class EC2NodeDriver(NodeDriver):
return nodes
def list_sizes(self, location=None):
- return [ NodeSize(driver=self.connection.driver, **i)
- for i in self._instance_types.values() ]
+ # Cluster instances are currently only available in the US - N. Virginia Region
+ include_cluser_instances = self.region_name == 'us-east-1'
+ sizes = self._get_sizes(include_cluser_instances =
+ include_cluser_instances)
+
+ return sizes
+
+ def _get_sizes(self, include_cluser_instances=False):
+ sizes = [ NodeSize(driver=self.connection.driver, **i)
+ for i in self._instance_types.values() ]
+
+ if not include_cluser_instances:
+ sizes = [ size for size in sizes if \
+ size.id not in CLUSTER_INSTANCES_IDS]
+ return sizes
def list_images(self, location=None):
params = {'Action': 'DescribeImages'}
Modified: incubator/libcloud/trunk/test/test_ec2.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/test/test_ec2.py?rev=1062725&r1=1062724&r2=1062725&view=diff
==============================================================================
--- incubator/libcloud/trunk/test/test_ec2.py (original)
+++ incubator/libcloud/trunk/test/test_ec2.py Mon Jan 24 10:46:54 2011
@@ -110,19 +110,32 @@ class EC2Tests(unittest.TestCase, TestCa
self.assertTrue(ret)
def test_list_sizes(self):
- sizes = self.driver.list_sizes()
- self.assertEqual(len(sizes), 9)
+ region_old = self.driver.region_name
- ids = [s.id for s in sizes]
- self.assertTrue('t1.micro' in ids)
- self.assertTrue('m1.small' in ids)
- self.assertTrue('m1.large' in ids)
- self.assertTrue('m1.xlarge' in ids)
- self.assertTrue('c1.medium' in ids)
- self.assertTrue('c1.xlarge' in ids)
- self.assertTrue('m2.xlarge' in ids)
- self.assertTrue('m2.2xlarge' in ids)
- self.assertTrue('m2.4xlarge' in ids)
+ for region_name in [ 'us-east-1', 'us-west-1', 'eu-west-1',
+ 'ap-southeast-1' ]:
+ self.driver.region_name = region_name
+ sizes = self.driver.list_sizes()
+
+ ids = [s.id for s in sizes]
+ self.assertTrue('t1.micro' in ids)
+ self.assertTrue('m1.small' in ids)
+ self.assertTrue('m1.large' in ids)
+ self.assertTrue('m1.xlarge' in ids)
+ self.assertTrue('c1.medium' in ids)
+ self.assertTrue('c1.xlarge' in ids)
+ self.assertTrue('m2.xlarge' in ids)
+ self.assertTrue('m2.2xlarge' in ids)
+ self.assertTrue('m2.4xlarge' in ids)
+
+ if region_name == 'us-east-1':
+ self.assertEqual(len(sizes), 11)
+ self.assertTrue('cg1.4xlarge' in ids)
+ self.assertTrue('cc1.4xlarge' in ids)
+ else:
+ self.assertEqual(len(sizes), 9)
+
+ self.driver.region_name = region_old
def test_list_images(self):
images = self.driver.list_images()