40 |
40 |
from functools import wraps, partial
|
41 |
41 |
from traceback import format_exc
|
42 |
42 |
|
|
43 |
from pithos.workers import glue
|
|
44 |
from archipelago.common import Segment, Xseg_ctx
|
|
45 |
from objpool import ObjectPool
|
|
46 |
|
|
47 |
|
43 |
48 |
try:
|
44 |
49 |
from astakosclient import AstakosClient
|
45 |
50 |
except ImportError:
|
... | ... | |
109 |
114 |
'abcdefghijklmnopqrstuvwxyz'
|
110 |
115 |
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
|
111 |
116 |
DEFAULT_PUBLIC_URL_SECURITY = 16
|
|
117 |
DEFAULT_ARCHIPELAGO_CONF_FILE = '/etc/archipelago/archipelago.conf'
|
112 |
118 |
|
113 |
119 |
QUEUE_MESSAGE_KEY_PREFIX = 'pithos.%s'
|
114 |
120 |
QUEUE_CLIENT_ID = 'pithos'
|
... | ... | |
193 |
199 |
public_url_alphabet=None,
|
194 |
200 |
account_quota_policy=None,
|
195 |
201 |
container_quota_policy=None,
|
196 |
|
container_versioning_policy=None):
|
|
202 |
container_versioning_policy=None,
|
|
203 |
archipelago_conf_file=None,
|
|
204 |
xseg_pool_size=8):
|
197 |
205 |
db_module = db_module or DEFAULT_DB_MODULE
|
198 |
206 |
db_connection = db_connection or DEFAULT_DB_CONNECTION
|
199 |
207 |
block_module = block_module or DEFAULT_BLOCK_MODULE
|
... | ... | |
208 |
216 |
or DEFAULT_CONTAINER_QUOTA
|
209 |
217 |
container_versioning_policy = container_versioning_policy \
|
210 |
218 |
or DEFAULT_CONTAINER_VERSIONING
|
|
219 |
archipelago_conf_file = archipelago_conf_file \
|
|
220 |
or DEFAULT_ARCHIPELAGO_CONF_FILE
|
211 |
221 |
|
212 |
222 |
self.default_account_policy = {'quota': account_quota_policy}
|
213 |
223 |
self.default_container_policy = {
|
... | ... | |
246 |
256 |
|
247 |
257 |
self.ALLOWED = ['read', 'write']
|
248 |
258 |
|
|
259 |
glue.WorkerGlue.setupXsegPool(ObjectPool, Segment, Xseg_ctx,
|
|
260 |
cfile=archipelago_conf_file,
|
|
261 |
pool_size=xseg_pool_size)
|
249 |
262 |
self.block_module = load_module(block_module)
|
250 |
263 |
self.block_params = block_params
|
251 |
264 |
params = {'path': block_path,
|