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

Add refresh method for bucket object

Enis Afgan 7 лет назад
Родитель
Сommit
98959fc870

+ 2 - 0
.gitignore

@@ -63,3 +63,5 @@ bootstrap.py
 ISB-*
 launch.json
 settings.json
+run_nose.py
+*ipynb*

+ 9 - 1
cloudbridge/cloud/interfaces/resources.py

@@ -188,7 +188,7 @@ class ObjectLifeCycleMixin(object):
     @abstractmethod
     def refresh(self):
         """
-        Refreshs this object's state and synchronize it with the underlying
+        Refresh this object's state and synchronize it with the underlying
         service provider.
         """
         pass
@@ -2203,6 +2203,14 @@ class BucketObject(CloudResource):
         """
         pass
 
+    @abstractmethod
+    def refresh(self):
+        """
+        Refresh this object's state and synchronize it with the underlying
+        service provider.
+        """
+        pass
+
 
 class Bucket(CloudResource):
 

+ 3 - 1
cloudbridge/cloud/providers/aws/resources.py

@@ -792,12 +792,14 @@ class AWSBucketObject(BaseBucketObject):
         self._obj.delete()
 
     def generate_url(self, expires_in):
-
         return self._provider.s3_conn.meta.client.generate_presigned_url(
             'get_object',
             Params={'Bucket': self._obj.bucket_name, 'Key': self.id},
             ExpiresIn=expires_in)
 
+    def refresh(self):
+        self._obj.load()
+
 
 class AWSBucket(BaseBucket):
 

+ 4 - 0
cloudbridge/cloud/providers/azure/resources.py

@@ -314,6 +314,10 @@ class AzureBucketObject(BaseBucketObject):
         return self._provider.azure_client.get_blob_url(
             self._container.name, self.name, expires_in)
 
+    def refresh(self):
+        self._key = self._provider.azure_client.get_blob(
+            self._container.name, self._key.name)
+
 
 class AzureBucket(BaseBucket):
     def __init__(self, provider, bucket):

+ 3 - 0
cloudbridge/cloud/providers/openstack/resources.py

@@ -1403,6 +1403,9 @@ class OpenStackBucketObject(BaseBucketObject):
         return urljoin(access_point, generate_temp_url(url_path, expires_in,
                                                        temp_url_key, 'GET'))
 
+    def refresh(self):
+        self._obj = self.cbcontainer.objects.get(self.id)._obj
+
 
 class OpenStackBucket(BaseBucket):