Added .send method to cloudfiles storage object
authorJoar Wandborg <joar@wandborg.se>
Sat, 2 Mar 2013 23:11:34 +0000 (00:11 +0100)
committerJoar Wandborg <joar@wandborg.se>
Sat, 2 Mar 2013 23:11:34 +0000 (00:11 +0100)
.. wrapper. Also added some logging - A .warn() for the legacy .write()
method and a .debug() for the new copy_local_to_storage()

mediagoblin/storage/cloudfiles.py

index e6d21726bd2cb33ef8955f4614d35431c4c8d39a..b6e57c911f73d64a89ae60d762fc1f2cc6d4913f 100644 (file)
@@ -162,6 +162,7 @@ class CloudFilesStorage(StorageInterface):
         # and bandwidth usage. So, override this method and use the
         # Cloudfile's "send" interface instead.
         # TODO: Fixing write() still seems worthwhile though.
+        _log.debug('Sending {0} to cloudfiles...'.format(filepath))
         with self.get_file(filepath, 'wb') as dest_file:
             with file(filename, 'rb') as source_file:
                 # Copy to storage system in 4096 byte chunks
@@ -196,6 +197,10 @@ class CloudFilesStorageObjectWrapper():
         Currently this method does not support any write modes except "append".
         However if we should need it it would be easy implement.
         """
+        _log.warn(
+            '{0}.write() has bad performance! Use .send instead for now'\
+            .format(self.__class__.__name__))
+
         if self.storage_object.size and type(data) == str:
             _log.debug('{0} is > 0 in size, appending data'.format(
                 self.storage_object.name))
@@ -205,9 +210,12 @@ class CloudFilesStorageObjectWrapper():
             self.storage_object.name))
         self.storage_object.write(data, *args, **kwargs)
 
+    def send(self, *args, **kw):
+        self.storage_object.send(*args, **kw)
+
     def close(self):
         """
-        Not implemented.
+        Not sure we need anything here.
         """
         pass