Ehsan Chiniforooshan 9 лет назад
Родитель
Сommit
d9cbb61bd8
2 измененных файлов с 18 добавлено и 10 удалено
  1. 17 8
      cloudbridge/cloud/providers/gce/resources.py
  2. 1 2
      cloudbridge/cloud/providers/gce/services.py

+ 17 - 8
cloudbridge/cloud/providers/gce/resources.py

@@ -3,6 +3,7 @@ DataTypes used by this provider
 """
 """
 import hashlib
 import hashlib
 import inspect
 import inspect
+import io
 import json
 import json
 import re
 import re
 import uuid
 import uuid
@@ -1775,22 +1776,22 @@ class GCSBucket(BaseBucket):
         """
         """
         List all objects within this bucket.
         List all objects within this bucket.
         """
         """
-        body = {}
-        if prefix:
-            body['prefix'] = prefix
         try:
         try:
             response = (self._provider
             response = (self._provider
                             .gcp_storage
                             .gcp_storage
                             .objects()
                             .objects()
-                            .list(bucket=self.name, body=body)
+                            .list(bucket=self.name,
+                                  prefix=prefix if prefix else '')
                             .execute())
                             .execute())
             if 'error' in response or 'items' not in response:
             if 'error' in response or 'items' not in response:
-                return None
+                cb.log.warning('response: %s', response)
+                return []
             objects = [GCSObject(self._provider, obj)
             objects = [GCSObject(self._provider, obj)
                        for obj in response['items']]
                        for obj in response['items']]
             return ClientPagedResultList(self._provider, objects, limit=limit,
             return ClientPagedResultList(self._provider, objects, limit=limit,
                                          marker=marker)
                                          marker=marker)
-        except:
+        except Exception as e:
+            cb.log.warning('error: %s', e)
             return []
             return []
 
 
     def delete(self, delete_contents=False):
     def delete(self, delete_contents=False):
@@ -1804,14 +1805,22 @@ class GCSBucket(BaseBucket):
              .execute())
              .execute())
 
 
     def create_object(self, name):
     def create_object(self, name):
+        """
+        Create an empty plain text object.
+        """
         try:
         try:
+            media_body = googleapiclient.http.MediaIoBaseUpload(
+                    io.BytesIO(''), mimetype='plain/text')
             response = (self._provider
             response = (self._provider
                             .gcp_storage
                             .gcp_storage
                             .objects()
                             .objects()
-                            .insert(bucket=self.name, body={'name': name})
+                            .insert(bucket=self.name,
+                                    body={'name': name},
+                                    media_body=media_body)
                             .execute())
                             .execute())
             if 'error' in response:
             if 'error' in response:
                 return None
                 return None
             return GCSObject(self._provider, response)
             return GCSObject(self._provider, response)
-        except:
+        except Exception as e:
+            cb.log.warning('error: %s', e)
             return None
             return None

+ 1 - 2
cloudbridge/cloud/providers/gce/services.py

@@ -1082,7 +1082,7 @@ class GCSObjectStoreService(BaseObjectStoreService):
         """
         """
         Create a new bucket and returns it. Returns None if creation fails.
         Create a new bucket and returns it. Returns None if creation fails.
         """
         """
-        body = {}
+        body = {'name': name}
         if location:
         if location:
             body['location'] = location
             body['location'] = location
         try:
         try:
@@ -1090,7 +1090,6 @@ class GCSObjectStoreService(BaseObjectStoreService):
                             .gcp_storage
                             .gcp_storage
                             .buckets()
                             .buckets()
                             .insert(project=self.provider.project_name,
                             .insert(project=self.provider.project_name,
-                                    name=name,
                                     body=body)
                                     body=body)
                             .execute())
                             .execute())
             if 'error' in response:
             if 'error' in response: