Revision 0efb43cd

b/snf-cyclades-app/synnefo/plankton/backend.py
74 74
PLANKTON_META = ('container_format', 'disk_format', 'name',
75 75
                 'status', 'created_at')
76 76

  
77
MAX_META_KEY_LENGTH = 128 - len(PLANKTON_DOMAIN) - len(PROPERTY_PREFIX)
78
MAX_META_VALUE_LENGTH = 256
79

  
77 80
from pithos.backends.util import PithosBackendPool
78 81
_pithos_backend_pool = \
79 82
    PithosBackendPool(
......
206 209
                    if k in PLANKTON_META or k.startswith(PROPERTY_PREFIX)]
207 210
        prefixed = dict(prefixed)
208 211

  
212
        for k, v in prefixed.items():
213
            if len(k) > 128:
214
                raise InvalidMetadata('Metadata keys should be less than %s '
215
                                      'characters' % MAX_META_KEY_LENGTH)
216
            if len(v) > 256:
217
                raise InvalidMetadata('Metadata values should be less than %s '
218
                                      'characters.' % MAX_META_VALUE_LENGTH)
219

  
209 220
        self.backend.update_object_meta(self.user, account, container, name,
210 221
                                        PLANKTON_DOMAIN, prefixed, replace)
211 222
        logger.debug("User '%s' updated image '%s', meta: '%s'", self.user,
......
469 480
    pass
470 481

  
471 482

  
483
class InvalidMetadata(ImageBackendError):
484
    pass
485

  
486

  
472 487
def image_to_dict(image_url, meta, permissions):
473 488
    """Render an image to a dictionary"""
474 489
    account, container, name = split_url(image_url)
b/snf-cyclades-app/synnefo/plankton/utils.py
48 48
    image_backend = backend.get_backend()(user_id)
49 49
    try:
50 50
        yield image_backend
51
    except backend.Forbidden:
51
    except backend.Forbidden as e:
52 52
        raise faults.Forbidden
53 53
    except backend.ImageNotFound:
54 54
        raise faults.ItemNotFound
55
    except backend.InvalidMetadata as e:
56
        raise faults.BadRequest(str(e))
55 57
    finally:
56 58
        image_backend.close()

Also available in: Unified diff