# or implied, of GRNET S.A.
import os
+import types
from hashmap import HashMap
from binascii import hexlify, unhexlify
from client import Fault
-def upload(client, file, container, prefix):
+def upload(client, file, container, prefix, name=None):
meta = client.retrieve_container_metadata(container)
blocksize = int(meta['x-container-block-size'])
hashes.load(file)
map = {'bytes': size, 'hashes': [hexlify(x) for x in hashes]}
- object = prefix + os.path.split(file)[-1]
+ objectname = name if name else os.path.split(file)[-1]
+ object = prefix + objectname
try:
client.create_object_by_hashmap(container, object, map)
except Fault, fault:
else:
return
- missing = fault.data.split('\n')
+ if type(fault.data) == types.StringType:
+ missing = fault.data.split('\n')
+ elif type(fault.data) == types.ListType:
+ missing = fault.data
+
if '' in missing:
del missing[missing.index(''):]
offset = hashes.index(unhexlify(hash)) * blocksize
fp.seek(offset)
block = fp.read(blocksize)
- client.create_object(container, '.upload', StringIO(block))
+ client.update_container_data(container, StringIO(block))
client.create_object_by_hashmap(container, object, map)