Bläddra i källkod

Go back to s3.ObjectSummary and s3.Object with an internal check

Fixes comments from https://github.com/CloudVE/cloudbridge/commit/eb997c0b37483170e3dd6626422b831980669064
Enis Afgan 7 år sedan
förälder
incheckning
94a63d357e
2 ändrade filer med 12 tillägg och 2 borttagningar
  1. 5 2
      cloudbridge/cloud/providers/aws/resources.py
  2. 7 0
      test/test_object_store_service.py

+ 5 - 2
cloudbridge/cloud/providers/aws/resources.py

@@ -764,7 +764,10 @@ class AWSBucketObject(BaseBucketObject):
 
     @property
     def size(self):
-        return self._obj.content_length
+        try:
+            return self._obj.content_length
+        except AttributeError:  # we're dealing with s3.ObjectSummary
+            return self._obj.size
 
     @property
     def last_modified(self):
@@ -834,7 +837,7 @@ class AWSBucketContainer(BaseBucketContainer):
         else:
             # pylint:disable=protected-access
             boto_objs = self.bucket._bucket.objects.all()
-        objects = [self.get(obj.key) for obj in boto_objs]
+        objects = [AWSBucketObject(self._provider, obj) for obj in boto_objs]
         return ClientPagedResultList(self._provider, objects,
                                      limit=limit, marker=marker)
 

+ 7 - 0
test/test_object_store_service.py

@@ -110,6 +110,13 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
                     isinstance(objs[0].size, int),
                     "Object size property needs to be a int, not {0}".format(
                         type(objs[0].size)))
+                # GET an object as the size property implementation differs
+                # for objects returned by LIST and GET.
+                obj = test_bucket.objects.get(objs[0].id)
+                self.assertTrue(
+                    isinstance(objs[0].size, int),
+                    "Object size property needs to be an int, not {0}".format(
+                        type(obj.size)))
                 self.assertTrue(
                     datetime.strptime(objs[0].last_modified[:23],
                                       "%Y-%m-%dT%H:%M:%S.%f"),