almahmoud 7 лет назад
Родитель
Сommit
6b4b5c9047

+ 2 - 0
cloudbridge/cloud/base/resources.py

@@ -758,6 +758,8 @@ class BaseBucket(BaseCloudResource, Bucket):
         """
         self._provider.storage.buckets.delete(self.id)
 
+    # TODO: Discuss creating `create_object` method, or change docs
+
 
 class BaseBucketContainer(BasePageableObjectMixin, BucketContainer):
 

+ 10 - 4
cloudbridge/cloud/providers/gce/resources.py

@@ -2149,8 +2149,11 @@ class GCSObject(BaseBucketObject):
             data = data.encode()
         media_body = googleapiclient.http.MediaIoBaseUpload(
                 io.BytesIO(data), mimetype='plain/text')
-        response = self._bucket.create_object_with_media_body(self.name,
-                                                              media_body)
+        response = (self._provider
+                        .storage.bucket_objects
+                        ._create_object_with_media_body(self._bucket,
+                                                        self.name,
+                                                        media_body))
         if response:
             self._obj = response
 
@@ -2161,8 +2164,11 @@ class GCSObject(BaseBucketObject):
         with open(path, 'rb') as f:
             media_body = googleapiclient.http.MediaIoBaseUpload(
                     f, 'application/octet-stream')
-            response = self._bucket.create_object_with_media_body(self.name,
-                                                                  media_body)
+            response = (self._provider
+                        .storage.bucket_objects
+                        ._create_object_with_media_body(self._bucket,
+                                                        self.name,
+                                                        media_body))
             if response:
                 self._obj = response
 

+ 17 - 15
cloudbridge/cloud/providers/gce/services.py

@@ -1285,20 +1285,22 @@ class GCSBucketObjectService(BaseBucketObjectService):
         return ClientPagedResultList(self._provider, list(matches),
                                      limit=None, marker=None)
 
-    def create(self, bucket, name):
-        def _create_object_with_media_body(name, media_body):
-            response = (self.provider
-                        .gcs_storage
-                        .objects()
-                        .insert(bucket=bucket.name,
-                                body={'name': name},
-                                media_body=media_body)
-                        .execute())
-            return response
+    def _create_object_with_media_body(self, bucket, name, media_body):
+        response = (self.provider
+                    .gcs_storage
+                    .objects()
+                    .insert(bucket=bucket.name,
+                            body={'name': name},
+                            media_body=media_body)
+                    .execute())
+        return response
 
-        response = _create_object_with_media_body(
-            name,
-            googleapiclient.http.MediaIoBaseUpload(
-                io.BytesIO(b''), mimetype='plain/text'))
-        return GCSObject(self._provider, self,
+    def create(self, bucket, name):
+        response = self._create_object_with_media_body(
+                            bucket,
+                            name,
+                            googleapiclient.http.MediaIoBaseUpload(
+                                io.BytesIO(b''), mimetype='plain/text'))
+        return GCSObject(self._provider,
+                         bucket,
                          response) if response else None