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()