From: Sofia Papagiannaki Date: Tue, 19 Jul 2011 10:56:09 +0000 (+0300) Subject: new methods for reseting metadata X-Git-Tag: pithos/v0.7.8~186^2 X-Git-Url: https://code.grnet.gr/git/pithos/commitdiff_plain/b9ca81a0f24027388473bea13b32f4e231e3c91c new methods for reseting metadata fix content-type --- diff --git a/pithos/lib/client.py b/pithos/lib/client.py index fa2e10c..0e55d1e 100644 --- a/pithos/lib/client.py +++ b/pithos/lib/client.py @@ -94,8 +94,6 @@ class Client(object): kwargs['headers']['X-Auth-Token'] = self.token if body: kwargs['body'] = body - elif 'content-type' not in kwargs['headers']: - kwargs['headers']['content-type'] = '' kwargs['headers'].setdefault('content-length', len(body) if body else 0) kwargs['headers'].setdefault('content-type', 'application/octet-stream') try: @@ -194,6 +192,17 @@ class OOS_Client(Client): headers[k] = v return self.post(path, headers=headers, params=params) + def _reset_metadata(self, path, entity, **meta): + """ + overwrites all user defined metadata + """ + headers = {} + prefix = 'x-%s-meta-' % entity + for k,v in meta.items(): + k = '%s%s' % (prefix, k) + headers[k] = v + return self.post(path, headers=headers) + def _delete_metadata(self, path, entity, meta=[]): """delete previously set metadata""" ex_meta = self.retrieve_account_metadata(restricted=True) @@ -227,6 +236,10 @@ class OOS_Client(Client): """deletes the account metadata""" return self._delete_metadata('', 'account', meta) + def reset_account_metadata(self, **meta): + """resets account metadata""" + return self._reset_metadata('', 'account', **meta) + # Storage Container Services def _filter_trashed(self, l): @@ -502,6 +515,20 @@ class Pithos_Client(OOS_Client): params = {'update':None} return self.post('', headers=headers, params=params) + def retrieve_account_groups(self): + """returns the account groups""" + meta = self.retrieve_account_metadata() + prefix = 'x-account-group-' + prefixlen = len(prefix) + groups = {} + for key, val in meta.items(): + if prefix and not key.startswith(prefix): + continue + elif prefix and key.startswith(prefix): + key = key[prefixlen:] + groups[key] = val + return groups + def unset_account_groups(self, groups=[]): """delete account groups""" headers = {}