Просмотр исходного кода

To better adhear to the defined interface, make a number of methods/fields properties. As part of this, renamed image and volume fields into images and volumes

Enis Afgan 10 лет назад
Родитель
Сommit
c8efe200e5

+ 30 - 5
cloudbridge/providers/aws/impl.py

@@ -36,11 +36,36 @@ class AWSCloudProviderV1(BaseCloudProvider):
         self.ec2_conn = self._connect_ec2()
 
         # Initialize provider services
-        self.compute = AWSComputeService(self)
-        self.images = AWSImageService(self)
-        self.security = AWSSecurityService(self)
-        self.block_store = None  # AWSBlockStore(self)
-        self.object_store = None  # AWSObjectStore(self)
+        self._compute = AWSComputeService(self)
+        self._images = AWSImageService(self)
+        self._security = AWSSecurityService(self)
+        self._block_store = None  # AWSBlockStore(self)
+        self._object_store = None  # AWSObjectStore(self)
+        self._volumes = None  # AWSVolumeService(self)
+
+    @property
+    def compute(self):
+        return self._compute
+
+    @property
+    def images(self):
+        return self._images
+
+    @property
+    def security(self):
+        return self._security
+
+    @property
+    def block_store(self):
+        return self._block_store
+
+    @property
+    def object_store(self):
+        return self._object_store
+
+    @property
+    def volumes(self):
+        return self._volumes
 
     def _connect_ec2(self):
         """

+ 8 - 0
cloudbridge/providers/base.py

@@ -24,6 +24,14 @@ class BaseCloudProvider(CloudProvider):
     def __init__(self, config):
         self.config = config
 
+    @property
+    def config(self):
+        return self._config
+
+    @config.setter
+    def config(self, config):
+        self._config = config
+
     @property
     def name(self):
         return str(self.__class__.__name__)

+ 11 - 4
cloudbridge/providers/interfaces/impl.py

@@ -25,6 +25,7 @@ class CloudProvider(object):
         raise NotImplementedError(
             '__init__ not implemented by this provider')
 
+    @property
     def config(self):
         """
         Returns the config object associated with this provider.
@@ -48,6 +49,7 @@ class CloudProvider(object):
         raise NotImplementedError(
             'CloudProvider.has_service not implemented by this provider')
 
+    @property
     def account(self):
         """
         Provides access to all user account related services in this provider.
@@ -59,6 +61,7 @@ class CloudProvider(object):
         raise NotImplementedError(
             'CloudProvider.Compute not implemented by this provider')
 
+    @property
     def compute(self):
         """
         Provides access to all compute related services in this provider.
@@ -69,7 +72,8 @@ class CloudProvider(object):
         raise NotImplementedError(
             'CloudProvider.compute not implemented by this provider')
 
-    def image(self):
+    @property
+    def images(self):
         """
         Provides access to all Image related services in this provider.
         (e.g. Glance in Openstack)
@@ -78,8 +82,9 @@ class CloudProvider(object):
         :return: an ImageService object
         """
         raise NotImplementedError(
-            'CloudProvider.image not implemented by this provider')
+            'CloudProvider.images not implemented by this provider')
 
+    @property
     def security(self):
         """
         Provides access to keypair management and firewall control
@@ -90,7 +95,8 @@ class CloudProvider(object):
         raise NotImplementedError(
             'CloudProvider.security not implemented by this provider')
 
-    def volume(self):
+    @property
+    def volumes(self):
         """
         Provides access to the volume/elastic block store services in this
         provider.
@@ -99,8 +105,9 @@ class CloudProvider(object):
         :return: a VolumeService object
         """
         raise NotImplementedError(
-            'CloudProvider.volume not implemented by this provider')
+            'CloudProvider.volumes not implemented by this provider')
 
+    @property
     def object_store(self):
         """
         Provides access to object storage services in this provider.

+ 30 - 5
cloudbridge/providers/openstack/impl.py

@@ -36,11 +36,36 @@ class OpenStackCloudProviderV1(BaseCloudProvider):
         self.nova = self._connect_nova()
         self.keystone = self._connect_keystone()
 
-        self.compute = OpenStackComputeService(self)
-        self.images = OpenStackImageService(self)
-        self.security = OpenStackSecurityService(self)
-        # self.block_store = EC2BlockStore(self)
-        # self.object_store = EC2ObjectStore(self)
+        self._compute = OpenStackComputeService(self)
+        self._images = OpenStackImageService(self)
+        self._security = OpenStackSecurityService(self)
+        self._block_store = None  # OpenStackBlockStore(self)
+        self._object_store = None  # OpenStackObjectStore(self)
+        self._volumes = None  # OpenStackVolumeService(self)
+
+    @property
+    def compute(self):
+        return self._compute
+
+    @property
+    def images(self):
+        return self._images
+
+    @property
+    def security(self):
+        return self._security
+
+    @property
+    def block_store(self):
+        return self._block_store
+
+    @property
+    def object_store(self):
+        return self._object_store
+
+    @property
+    def volumes(self):
+        return self._volumes
 
     def _connect_nova(self):
         """