41 |
41 |
from functools import wraps, partial
|
42 |
42 |
from traceback import format_exc
|
43 |
43 |
|
|
44 |
from pithos.workers import glue
|
|
45 |
from archipelago.common import Segment, Xseg_ctx
|
|
46 |
from objpool import ObjectPool
|
|
47 |
|
|
48 |
|
44 |
49 |
try:
|
45 |
50 |
from astakosclient import AstakosClient
|
46 |
51 |
except ImportError:
|
... | ... | |
110 |
115 |
'abcdefghijklmnopqrstuvwxyz'
|
111 |
116 |
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
|
112 |
117 |
DEFAULT_PUBLIC_URL_SECURITY = 16
|
|
118 |
DEFAULT_ARCHIPELAGO_CONF_FILE = '/etc/archipelago/archipelago.conf'
|
113 |
119 |
|
114 |
120 |
QUEUE_MESSAGE_KEY_PREFIX = 'pithos.%s'
|
115 |
121 |
QUEUE_CLIENT_ID = 'pithos'
|
... | ... | |
230 |
236 |
public_url_alphabet=None,
|
231 |
237 |
account_quota_policy=None,
|
232 |
238 |
container_quota_policy=None,
|
233 |
|
container_versioning_policy=None):
|
|
239 |
container_versioning_policy=None,
|
|
240 |
archipelago_conf_file=None,
|
|
241 |
xseg_pool_size=8):
|
234 |
242 |
db_module = db_module or DEFAULT_DB_MODULE
|
235 |
243 |
db_connection = db_connection or DEFAULT_DB_CONNECTION
|
236 |
244 |
block_module = block_module or DEFAULT_BLOCK_MODULE
|
... | ... | |
245 |
253 |
or DEFAULT_CONTAINER_QUOTA
|
246 |
254 |
container_versioning_policy = container_versioning_policy \
|
247 |
255 |
or DEFAULT_CONTAINER_VERSIONING
|
|
256 |
archipelago_conf_file = archipelago_conf_file \
|
|
257 |
or DEFAULT_ARCHIPELAGO_CONF_FILE
|
248 |
258 |
|
249 |
259 |
self.default_account_policy = {'quota': account_quota_policy}
|
250 |
260 |
self.default_container_policy = {
|
... | ... | |
283 |
293 |
|
284 |
294 |
self.ALLOWED = ['read', 'write']
|
285 |
295 |
|
|
296 |
glue.WorkerGlue.setupXsegPool(ObjectPool, Segment, Xseg_ctx,
|
|
297 |
cfile=archipelago_conf_file,
|
|
298 |
pool_size=xseg_pool_size)
|
286 |
299 |
self.block_module = load_module(block_module)
|
287 |
300 |
self.block_params = block_params
|
288 |
301 |
params = {'path': block_path,
|