Revision 9f135224 snf-pithos-app/pithos/api/util.py
b/snf-pithos-app/pithos/api/util.py | ||
---|---|---|
1084 | 1084 |
# Add a PithosBackend as attribute of the request object |
1085 | 1085 |
request.backend = get_backend() |
1086 | 1086 |
request.backend.lock_container_path = lock_container_path |
1087 |
request.backend.wrapper.execute() |
|
1088 |
request.backend.serials = [] |
|
1089 |
request.backend.messages = [] |
|
1090 |
|
|
1087 | 1091 |
# Many API method expect thet X-Auth-Token in request,token |
1088 | 1092 |
request.token = request.x_auth_token |
1089 | 1093 |
update_request_headers(request) |
1090 | 1094 |
response = func(request, *args, **kwargs) |
1091 | 1095 |
update_response_headers(request, response) |
1096 |
|
|
1097 |
# send messages produced |
|
1098 |
for m in request.backend.messages: |
|
1099 |
request.backend.queue.send(*m) |
|
1100 |
|
|
1101 |
# register serials |
|
1102 |
if request.backend.serials: |
|
1103 |
request.backend.commission_serials.insert_many( |
|
1104 |
request.backend.serials) |
|
1105 |
|
|
1106 |
# commit to ensure that the serials are registered |
|
1107 |
# even if resolve commission fails |
|
1108 |
request.backend.wrapper.commit() |
|
1109 |
|
|
1110 |
# start new transaction |
|
1111 |
request.backend.wrapper.execute() |
|
1112 |
|
|
1113 |
r = request.backend.astakosclient.resolve_commissions( |
|
1114 |
token=request.backend.service_token, |
|
1115 |
accept_serials=request.backend.serials, |
|
1116 |
reject_serials=[]) |
|
1117 |
request.backend.commission_serials.delete_many( |
|
1118 |
r['accepted']) |
|
1119 |
|
|
1120 |
request.backend.wrapper.commit() |
|
1092 | 1121 |
return response |
1122 |
except: |
|
1123 |
if request.backend.serials: |
|
1124 |
request.backend.astakosclient.resolve_commissions( |
|
1125 |
token=request.backend.service_token, |
|
1126 |
accept_serials=[], |
|
1127 |
reject_serials=request.backend.serials) |
|
1128 |
request.backend.wrapper.rollback() |
|
1129 |
raise |
|
1093 | 1130 |
finally: |
1094 | 1131 |
# Always close PithosBackend connection |
1095 | 1132 |
if getattr(request, "backend", None) is not None: |
Also available in: Unified diff