Kaynağa Gözat

InstanceTypes - added num_emphemeral_disks property and naming
improvements.

nuwan_ag 10 yıl önce
ebeveyn
işleme
0b1da96bc9

+ 10 - 2
cloudbridge/providers/aws/resources.py

@@ -151,17 +151,25 @@ class AWSInstanceType(BaseInstanceType):
         return self._inst_dict.get('memory')
 
     @property
-    def root_disk(self):
+    def size_root_disk(self):
         return 0
 
     @property
-    def ephemeral_disk(self):
+    def size_ephemeral_disks(self):
         storage = self._inst_dict.get('storage')
         if storage:
             return storage.get('size') * storage.get("devices")
         else:
             return 0
 
+    @property
+    def num_ephemeral_disks(self):
+        storage = self._inst_dict.get('storage')
+        if storage:
+            return storage.get("devices")
+        else:
+            return 0
+
     @property
     def extra_data(self):
         return {key: val for key, val in enumerate(self._inst_dict)

+ 3 - 3
cloudbridge/providers/base.py

@@ -156,8 +156,8 @@ class BaseObjectLifeCycleMixin(ObjectLifeCycleMixin):
 class BaseInstanceType(InstanceType):
 
     @property
-    def total_disk(self):
-        return self.root_disk + self.ephemeral_disk
+    def size_total_disk(self):
+        return self.size_root_disk + self.size_ephemeral_disks
 
     def __repr__(self):
         return "<CB-{0}: {1}>".format(self.__class__.__name__, self.name)
@@ -256,7 +256,7 @@ class BaseSecurityGroup(SecurityGroup):
         """
         return (isinstance(other, SecurityGroup) and
                 self._provider == other._provider and
-                len(self.rules) == len(other.rules) and  # Quick, hence included
+                len(self.rules) == len(other.rules) and  # Shortcut
                 set(self.rules) == set(other.rules))
 
     def __ne__(self, other):

+ 13 - 3
cloudbridge/providers/interfaces/resources.py

@@ -663,7 +663,7 @@ class InstanceType(object):
         pass
 
     @abstractproperty
-    def root_disk(self):
+    def size_root_disk(self):
         """
         The size of this instance types's root disk (in GB).
 
@@ -673,7 +673,7 @@ class InstanceType(object):
         pass
 
     @abstractproperty
-    def ephemeral_disk(self):
+    def size_ephemeral_disks(self):
         """
         The size of this instance types's total ephemeral storage (in GB).
 
@@ -683,7 +683,17 @@ class InstanceType(object):
         pass
 
     @abstractproperty
-    def total_disk(self):
+    def num_ephemeral_disks(self):
+        """
+        The total number of ephemeral disks on this instance type.
+
+        :rtype: int
+        :return: Number of ephemeral disks available.
+        """
+        pass
+
+    @abstractproperty
+    def size_total_disk(self):
         """
         The total disk space available on this instance type.
         (root_disk + ephemeral)

+ 6 - 2
cloudbridge/providers/openstack/resources.py

@@ -148,14 +148,18 @@ class OpenStackInstanceType(BaseInstanceType):
         return self._os_flavor.ram
 
     @property
-    def root_disk(self):
+    def size_root_disk(self):
         return self._os_flavor.disk
 
     @property
-    def ephemeral_disk(self):
+    def size_ephemeral_disks(self):
         return 0 if self._os_flavor.ephemeral == 'N/A' else \
             self._os_flavor.ephemeral
 
+    @property
+    def num_ephemeral_disks(self):
+        return 0 if self._os_flavor.ephemeral == 'N/A' else 1
+
     @property
     def extra_data(self):
         extras = self._os_flavor.get_keys()

+ 17 - 8
test/test_instance_types_service.py

@@ -32,17 +32,26 @@ class ProviderInstanceTypesServiceTestCase(ProviderTestBase):
                 inst_type.ram is None or inst_type.ram >= 0,
                 "InstanceType ram must be None or a positive number")
             self.assertTrue(
-                inst_type.root_disk is None or inst_type.root_disk >= 0,
-                "InstanceType root_disk must be None or a positive number but"
-                " is: {0}".format(inst_type.root_disk))
+                inst_type.size_root_disk is None or
+                inst_type.size_root_disk >= 0,
+                "InstanceType size_root_disk must be None or a positive number"
+                " but is: {0}".format(inst_type.size_root_disk))
             self.assertTrue(
-                inst_type.ephemeral_disk is None or
-                inst_type.ephemeral_disk >= 0,
-                "InstanceType ephemeral_disk must be None or a positive"
+                inst_type.size_ephemeral_disks is None or
+                inst_type.size_ephemeral_disks >= 0,
+                "InstanceType size_ephemeral_disk must be None or a positive"
                 " number")
             self.assertTrue(
-                inst_type.total_disk is None or inst_type.total_disk >= 0,
-                "InstanceType total_disk must be None or a positive number")
+                isinstance(inst_type.num_ephemeral_disks,
+                           six.integer_types) and
+                inst_type.num_ephemeral_disks >= 0,
+                "InstanceType num_ephemeral_disks must be None or a positive"
+                " number")
+            self.assertTrue(
+                inst_type.size_total_disk is None or
+                inst_type.size_total_disk >= 0,
+                "InstanceType size_total_disk must be None or a positive"
+                " number")
             self.assertTrue(
                 inst_type.extra_data is None or isinstance(
                     inst_type.extra_data, dict),