Revision 78fa9134 snf-cyclades-app/synnefo/plankton/views.py
b/snf-cyclades-app/synnefo/plankton/views.py | ||
---|---|---|
42 | 42 |
|
43 | 43 |
from snf_django.lib import api |
44 | 44 |
from snf_django.lib.api import faults |
45 |
from synnefo.lib.text import uenc |
|
45 | 46 |
from synnefo.plankton.utils import image_backend |
46 |
from synnefo.plankton.backend import split_url |
|
47 |
from synnefo.util.text import uenc |
|
47 |
from synnefo.plankton.backend import split_url, InvalidLocation
|
|
48 |
|
|
48 | 49 |
|
49 | 50 |
FILTERS = ('name', 'container_format', 'disk_format', 'status', 'size_min', |
50 | 51 |
'size_max') |
... | ... | |
139 | 140 |
params = _get_image_headers(request) |
140 | 141 |
log.debug('add_image %s', params) |
141 | 142 |
|
142 |
assert 'name' in params
|
|
143 |
assert set(params.keys()).issubset(set(ADD_FIELDS))
|
|
143 |
if not set(params.keys()).issubset(set(ADD_FIELDS)):
|
|
144 |
raise faults.BadRequest("Invalid parameters")
|
|
144 | 145 |
|
145 | 146 |
name = params.pop('name') |
146 |
|
|
147 |
if len(uenc(name)) < 1: |
|
147 |
if name is None: |
|
148 |
raise faults.BadRequest("Image 'name' parameter is required") |
|
149 |
elif len(uenc(name)) == 0: |
|
148 | 150 |
raise faults.BadRequest("Invalid image name") |
149 |
|
|
150 | 151 |
location = params.pop('location', None) |
152 |
if location is None: |
|
153 |
raise faults.BadRequest("'location' parameter is required") |
|
154 |
|
|
151 | 155 |
try: |
152 | 156 |
split_url(location) |
153 |
except AssertionError:
|
|
157 |
except InvalidLocation:
|
|
154 | 158 |
raise faults.BadRequest("Invalid location '%s'" % location) |
155 | 159 |
|
156 | 160 |
if location: |
... | ... | |
284 | 288 |
params.setdefault('sort_key', 'created_at') |
285 | 289 |
params.setdefault('sort_dir', 'desc') |
286 | 290 |
|
287 |
assert params['sort_key'] in SORT_KEY_OPTIONS |
|
288 |
assert params['sort_dir'] in SORT_DIR_OPTIONS |
|
291 |
if not params['sort_key'] in SORT_KEY_OPTIONS: |
|
292 |
raise faults.BadRequest("Invalid 'sort_key'") |
|
293 |
if not params['sort_dir'] in SORT_DIR_OPTIONS: |
|
294 |
raise faults.BadRequest("Invalid 'sort_dir'") |
|
289 | 295 |
|
290 | 296 |
if 'size_max' in filters: |
291 | 297 |
try: |
... | ... | |
367 | 373 |
meta = _get_image_headers(request) |
368 | 374 |
log.debug('update_image %s', meta) |
369 | 375 |
|
370 |
assert set(meta.keys()).issubset(set(UPDATE_FIELDS)) |
|
376 |
if not set(meta.keys()).issubset(set(UPDATE_FIELDS)): |
|
377 |
raise faults.BadRequest("Invalid metadata") |
|
371 | 378 |
|
372 | 379 |
with image_backend(request.user_uniq) as backend: |
373 | 380 |
image = backend.update_metadata(image_id, meta) |
Also available in: Unified diff