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

Moved bucket objects under bucket container

Nuwan Goonasekera 8 лет назад
Родитель
Сommit
9f802052f8
1 измененных файлов с 39 добавлено и 28 удалено
  1. 39 28
      cloudbridge/cloud/providers/azure/resources.py

+ 39 - 28
cloudbridge/cloud/providers/azure/resources.py

@@ -11,11 +11,11 @@ from azure.common import AzureException
 from azure.mgmt.network.models import NetworkSecurityGroup
 
 from cloudbridge.cloud.base.resources import BaseAttachmentInfo, \
-    BaseBucket, BaseBucketObject, BaseFloatingIP, BaseInstance, \
-    BaseInternetGateway, BaseKeyPair, BaseLaunchConfig, BaseMachineImage, \
-    BaseNetwork, BasePlacementZone, BaseRegion, BaseRouter, BaseSnapshot, \
-    BaseSubnet, BaseVMFirewall, BaseVMFirewallRule, BaseVMType, BaseVolume, \
-    ClientPagedResultList
+    BaseBucket, BaseBucketContainer, BaseBucketObject, BaseFloatingIP, \
+    BaseInstance, BaseInternetGateway, BaseKeyPair, BaseLaunchConfig, \
+    BaseMachineImage, BaseNetwork, BasePlacementZone, BaseRegion, BaseRouter, \
+    BaseSnapshot, BaseSubnet, BaseVMFirewall, BaseVMFirewallRule, BaseVMType, \
+    BaseVolume, ClientPagedResultList
 from cloudbridge.cloud.interfaces import InstanceState, VolumeState
 from cloudbridge.cloud.interfaces.resources import Instance, \
     MachineImageState, NetworkState, RouterState, \
@@ -367,6 +367,7 @@ class AzureBucket(BaseBucket):
     def __init__(self, provider, bucket):
         super(AzureBucket, self).__init__(provider)
         self._bucket = bucket
+        self._object_container = AzureBucketContainer(provider, self)
 
     @property
     def id(self):
@@ -379,13 +380,40 @@ class AzureBucket(BaseBucket):
         """
         return self._bucket.name
 
+    def delete(self, delete_contents=True):
+        """
+        Delete this bucket.
+        """
+        try:
+            self._provider.azure_client.delete_container(self.name)
+            return True
+        except AzureException as azureEx:
+            log.exception(azureEx)
+            return False
+
+    def exists(self, name):
+        """
+        Determine if an object with given name exists in this bucket.
+        """
+        return True if self.get(name) else False
+
+    @property
+    def objects(self):
+        return self._object_container
+
+
+class AzureBucketContainer(BaseBucketContainer):
+
+    def __init__(self, provider, bucket):
+        super(AzureBucketContainer, self).__init__(provider, bucket)
+
     def get(self, key):
         """
         Retrieve a given object from this bucket.
         """
         try:
-            obj = self._provider.azure_client.get_blob(self.name, key)
-            return AzureBucketObject(self._provider, self, obj)
+            obj = self._provider.azure_client.get_blob(self.bucket.name, key)
+            return AzureBucketObject(self._provider, self.bucket, obj)
         except AzureException as azureEx:
             log.exception(azureEx)
             return None
@@ -397,10 +425,10 @@ class AzureBucket(BaseBucket):
         :rtype: BucketObject
         :return: List of all available BucketObjects within this bucket.
         """
-        objects = [AzureBucketObject(self._provider, self, obj)
+        objects = [AzureBucketObject(self._provider, self.bucket, obj)
                    for obj in
                    self._provider.azure_client.list_blobs(
-                       self.name, prefix=prefix)]
+                       self.bucket.name, prefix=prefix)]
         return ClientPagedResultList(self._provider, objects,
                                      limit=limit, marker=marker)
 
@@ -409,28 +437,11 @@ class AzureBucket(BaseBucket):
         return ClientPagedResultList(self._provider, objects,
                                      limit=limit, marker=marker)
 
-    def delete(self, delete_contents=True):
-        """
-        Delete this bucket.
-        """
-        try:
-            self._provider.azure_client.delete_container(self.name)
-            return True
-        except AzureException as azureEx:
-            log.exception(azureEx)
-            return False
-
-    def create_object(self, name):
+    def create(self, name):
         self._provider.azure_client.create_blob_from_text(
-            self.name, name, '')
+            self.bucket.name, name, '')
         return self.get(name)
 
-    def exists(self, name):
-        """
-        Determine if an object with given name exists in this bucket.
-        """
-        return True if self.get(name) else False
-
 
 class AzureVolume(BaseVolume):
     VOLUME_STATE_MAP = {