From: Sofia Papagiannaki Date: Tue, 21 Jun 2011 13:54:52 +0000 (+0300) Subject: bug fixing update/delete metadata X-Git-Tag: pithos/v0.7.8~262 X-Git-Url: https://code.grnet.gr/git/pithos/commitdiff_plain/961f2fbe90a7c662327d8aa362db6f20295795a0 bug fixing update/delete metadata (sends back to the server only the user defined meta) also bug fixing in client account unset (check for no path provided) Fixes #576 --- diff --git a/pithos/lib/client.py b/pithos/lib/client.py index 0762a0b..811fd4c 100644 --- a/pithos/lib/client.py +++ b/pithos/lib/client.py @@ -217,27 +217,29 @@ class Client(object): """ adds new and updates the values of previously set metadata """ - for key, val in meta.items(): - meta.pop(key) - meta['X-%s-Meta-%s' %(entity.capitalize(), key.capitalize())] = val - prev_meta = self._get_metadata(path) + prefix = 'x-%s-meta-' % entity + prev_meta = self._get_metadata(path, prefix) prev_meta.update(meta) headers = {} for key, val in prev_meta.items(): - headers[key.capitalize()] = val + key = '%s%s' % (prefix, key) + key = '-'.join(elem.capitalize() for elem in key.split('-')) + headers[key] = val self.post(path, headers=headers) def _delete_metadata(self, path, entity, meta=[]): """ delete previously set metadata """ - prev_meta = self._get_metadata(path) + prefix = 'x-%s-meta-' % entity + prev_meta = self._get_metadata(path, prefix) headers = {} for key, val in prev_meta.items(): - if key.split('-')[-1] in meta: + if key in meta: continue - http_key = key.capitalize() - headers[http_key] = val + key = '%s%s' % (prefix, key) + key = '-'.join(elem.capitalize() for elem in key.split('-')) + headers[key] = val self.post(path, headers=headers) # Storage Account Services @@ -402,7 +404,7 @@ class Client(object): def restore_object(self, container, object): """ restores a trashed object - actualy just resets all object metadata except trash + actualy removes trash object metadata info """ self.delete_object_metadata(container, object, ['trash']) diff --git a/tools/store b/tools/store index 2fa6873..582a4ac 100755 --- a/tools/store +++ b/tools/store @@ -314,9 +314,12 @@ class PutObject(Command): parser.add_option('--content-disposition', action='store', type='str', dest='content-disposition', default=None, help='provide the presentation style of the object') - parser.add_option('--manifest', action='store', type='str', - dest='manifest', default=None, + parser.add_option('-S', action='store', + dest='segment-size', default=False, help='use for large file support') + parser.add_option('--manifest', action='store_true', + dest='manifest', default=None, + help='upload a manifestation file') parser.add_option('--type', action='store', dest='content-type', default=False, help='create object with specific content type') @@ -494,7 +497,7 @@ class TrashObject(Command): def execute(self, path, *args): #in case of account fix the args - if path.find('=') != -1: + if len(args) == 0: args = list(args) args.append(path) args = tuple(args)