Revision ad71a0ce
b/pithos/lib/client.py | ||
---|---|---|
270 | 270 |
blocksize=1024) |
271 | 271 |
|
272 | 272 |
def _change_obj_location(self, src_container, src_object, dst_container, |
273 |
dst_object, remove=False): |
|
273 |
dst_object, remove=False, headers=None):
|
|
274 | 274 |
path = '/%s/%s' % (dst_container, dst_object) |
275 |
headers = {} |
|
275 |
if not headers: |
|
276 |
headers = {} |
|
276 | 277 |
if remove: |
277 | 278 |
headers['X-Move-From'] = '/%s/%s' % (src_container, src_object) |
278 | 279 |
else: |
... | ... | |
281 | 282 |
self.put(path, headers=headers) |
282 | 283 |
|
283 | 284 |
def copy_object(self, src_container, src_object, dst_container, |
284 |
dst_object): |
|
285 |
dst_object, headers=None):
|
|
285 | 286 |
self._change_obj_location(src_container, src_object, |
286 |
dst_container, dst_object) |
|
287 |
dst_container, dst_object, headers)
|
|
287 | 288 |
|
288 | 289 |
def move_object(self, src_container, src_object, dst_container, |
289 |
dst_object): |
|
290 |
dst_object, headers=None):
|
|
290 | 291 |
self._change_obj_location(src_container, src_object, |
291 |
dst_container, dst_object, True) |
|
292 |
dst_container, dst_object, True, headers)
|
|
292 | 293 |
|
293 | 294 |
def delete_object(self, container, object): |
294 | 295 |
self.delete('/%s/%s' % (container, object)) |
b/tools/store | ||
---|---|---|
223 | 223 |
dest='file', default=None, |
224 | 224 |
help='save output in file') |
225 | 225 |
parser.add_option('--version', action='store', type='str', |
226 |
dest='version', default='list',
|
|
226 |
dest='version', default=None,
|
|
227 | 227 |
help='if \'list\' and in detailed mode get object\'s \ |
228 | 228 |
full version list otherwise get the specific \ |
229 | 229 |
version') |
... | ... | |
306 | 306 |
syntax = '<src container>/<src object> [<dst container>/]<dst object>' |
307 | 307 |
description = 'copies an object to a different location' |
308 | 308 |
|
309 |
def add_options(self, parser): |
|
310 |
parser.add_option('--version', action='store', |
|
311 |
dest='version', default=False, |
|
312 |
help='copy specific version') |
|
313 |
|
|
309 | 314 |
def execute(self, src, dst): |
310 | 315 |
src_container, sep, src_object = src.partition('/') |
311 | 316 |
dst_container, sep, dst_object = dst.partition('/') |
312 | 317 |
if not sep: |
313 | 318 |
dst_container = src_container |
314 | 319 |
dst_object = dst |
320 |
version = getattr(self, 'version') |
|
321 |
if version: |
|
322 |
headers = {} |
|
323 |
headers['SOURCE_VERSION'] = version |
|
315 | 324 |
self.client.copy_object(src_container, src_object, dst_container, |
316 | 325 |
dst_object) |
317 | 326 |
|
... | ... | |
397 | 406 |
syntax = '<src container>/<src object> [<dst container>/]<dst object>' |
398 | 407 |
description = 'moves an object to a different location' |
399 | 408 |
|
409 |
def add_options(self, parser): |
|
410 |
parser.add_option('--version', action='store', |
|
411 |
dest='version', default=False, |
|
412 |
help='move specific version') |
|
413 |
|
|
400 | 414 |
def execute(self, src, dst): |
401 | 415 |
src_container, sep, src_object = src.partition('/') |
402 | 416 |
dst_container, sep, dst_object = dst.partition('/') |
Also available in: Unified diff