186 |
186 |
|
187 |
187 |
self.queue = NoQueue()
|
188 |
188 |
|
189 |
|
self.quotaholder = QuotaholderHTTP('http://127.0.0.1/api/quotaholder/v')
|
|
189 |
self.quotaholder_url = quotaholder_url
|
|
190 |
self.quotaholder = QuotaholderHTTP(quotaholder_url)
|
|
191 |
self.serials = []
|
190 |
192 |
|
191 |
193 |
def close(self):
|
192 |
194 |
self.wrapper.close()
|
... | ... | |
493 |
495 |
self.store.map_delete(h)
|
494 |
496 |
self.node.node_purge_children(node, until, CLUSTER_DELETED)
|
495 |
497 |
self._report_size_change(user, account, -size,
|
496 |
|
{'action':'container purge', 'path': path,
|
497 |
|
'versions': ','.join(str(i) for i in serials)})
|
|
498 |
{'action':'container purge', 'path': path,
|
|
499 |
'versions': serials})
|
498 |
500 |
return
|
499 |
501 |
|
500 |
502 |
if not delimiter:
|
... | ... | |
507 |
509 |
self.node.node_purge_children(node, inf, CLUSTER_DELETED)
|
508 |
510 |
self.node.node_remove(node)
|
509 |
511 |
self._report_size_change(user, account, -size,
|
510 |
|
{'action': 'container delete',
|
511 |
|
'path': path,
|
512 |
|
'versions': ','.join(str(i) for i in serials)})
|
|
512 |
{'action': 'container delete',
|
|
513 |
'path': path,
|
|
514 |
'versions': serials})
|
513 |
515 |
else:
|
514 |
516 |
# remove only contents
|
515 |
517 |
src_names = self._list_objects_no_limit(user, account, container, prefix='', delimiter=None, virtual=False, domain=None, keys=[], shared=False, until=None, size_range=None, all_props=True, public=False)
|
... | ... | |
522 |
524 |
account, container, src_version_id)
|
523 |
525 |
if del_size:
|
524 |
526 |
self._report_size_change(user, account, -del_size,
|
525 |
|
{'action': 'object delete',
|
526 |
|
'path': path,
|
527 |
|
'versions': ','.join([str(dest_version_id)])})
|
|
527 |
{'action': 'object delete',
|
|
528 |
'path': path, 'versions': [dest_version_id]})
|
528 |
529 |
self._report_object_change(
|
529 |
530 |
user, account, path, details={'action': 'object delete'})
|
530 |
531 |
paths.append(path)
|
... | ... | |
815 |
816 |
# This must be executed in a transaction, so the version is never created if it fails.
|
816 |
817 |
raise QuotaError
|
817 |
818 |
self._report_size_change(user, account, size_delta,
|
818 |
|
{'action': 'object update', 'path': path,
|
819 |
|
'versions': ','.join([str(dest_version_id)])})
|
|
819 |
{'action': 'object update', 'path': path,
|
|
820 |
'versions': [dest_version_id]})
|
820 |
821 |
|
821 |
822 |
if permissions is not None:
|
822 |
823 |
self.permissions.access_set(path, permissions)
|
... | ... | |
947 |
948 |
except NameError:
|
948 |
949 |
self.permissions.access_clear(path)
|
949 |
950 |
self._report_size_change(user, account, -size,
|
950 |
|
{'action': 'object purge', 'path': path,
|
951 |
|
'versions': ','.join(str(i) for i in serials)})
|
|
951 |
{'action': 'object purge', 'path': path,
|
|
952 |
'versions': serials})
|
952 |
953 |
return
|
953 |
954 |
|
954 |
955 |
path, node = self._lookup_object(account, container, name)
|
... | ... | |
956 |
957 |
del_size = self._apply_versioning(account, container, src_version_id)
|
957 |
958 |
if del_size:
|
958 |
959 |
self._report_size_change(user, account, -del_size,
|
959 |
|
{'action': 'object delete', 'path': path,
|
960 |
|
'versions': ','.join([str(dest_version_id)])})
|
|
960 |
{'action': 'object delete', 'path': path,
|
|
961 |
'versions': [dest_version_id]})
|
961 |
962 |
self._report_object_change(
|
962 |
963 |
user, account, path, details={'action': 'object delete'})
|
963 |
964 |
self.permissions.access_clear(path)
|
... | ... | |
974 |
975 |
account, container, src_version_id)
|
975 |
976 |
if del_size:
|
976 |
977 |
self._report_size_change(user, account, -del_size,
|
977 |
|
{'action': 'object delete',
|
978 |
|
'path': path,
|
979 |
|
'versions': ','.join([str(dest_version_id)])})
|
|
978 |
{'action': 'object delete',
|
|
979 |
'path': path,
|
|
980 |
'versions': [dest_version_id]})
|
980 |
981 |
self._report_object_change(
|
981 |
982 |
user, account, path, details={'action': 'object delete'})
|
982 |
983 |
paths.append(path)
|
... | ... | |
1234 |
1235 |
logger.debug(
|
1235 |
1236 |
"_report_size_change: %s %s %s %s", user, account, size, details)
|
1236 |
1237 |
self.messages.append((QUEUE_MESSAGE_KEY_PREFIX % ('resource.diskspace',),
|
1237 |
|
account, QUEUE_INSTANCE_ID, 'diskspace',
|
1238 |
|
float(size), details))
|
1239 |
|
|
1240 |
|
serial = self.quotaholder.issue_provision()
|
1241 |
|
self.serial.append(serial)
|
|
1238 |
account, QUEUE_INSTANCE_ID, 'diskspace',
|
|
1239 |
float(size), details))
|
|
1240 |
|
|
1241 |
serial = self.quotaholder.issue_commission(
|
|
1242 |
context = {},
|
|
1243 |
target = account,
|
|
1244 |
key = '1',
|
|
1245 |
clientkey = 'pithos',
|
|
1246 |
ownerkey = '',
|
|
1247 |
provisions = ()
|
|
1248 |
)
|
|
1249 |
self.serials.append(serial)
|
1242 |
1250 |
|
1243 |
1251 |
def _report_object_change(self, user, account, path, details={}):
|
1244 |
1252 |
details.update({'user': user})
|