Revision fac5f6be snf-pithos-app/pithos/api/util.py
b/snf-pithos-app/pithos/api/util.py | ||
---|---|---|
72 | 72 |
from pithos.api.resources import resources |
73 | 73 |
from pithos.backends import connect_backend |
74 | 74 |
from pithos.backends.base import (NotAllowedError, QuotaError, ItemNotExists, |
75 |
VersionNotExists) |
|
75 |
VersionNotExists, IllegalOperationError)
|
|
76 | 76 |
|
77 | 77 |
from synnefo.lib import join_urls |
78 | 78 |
from synnefo.util import text |
... | ... | |
967 | 967 |
bo = offset % request.backend.block_size |
968 | 968 |
bl = min(len(data), request.backend.block_size - bo) |
969 | 969 |
if bi < len(hashmap): |
970 |
hashmap[bi] = request.backend.update_block(hashmap[bi], data[:bl], bo) |
|
970 |
try: |
|
971 |
hashmap[bi] = request.backend.update_block(hashmap[bi], |
|
972 |
data[:bl], bo) |
|
973 |
except IllegalOperationError, e: |
|
974 |
raise faults.Forbidden(e) |
|
971 | 975 |
else: |
972 | 976 |
hashmap.append(request.backend.put_block(('\x00' * bo) + data[:bl])) |
973 | 977 |
return bl # Return ammount of data written. |
Also available in: Unified diff