Revision cda71050 snf-cyclades-app/synnefo/api/images.py

b/snf-cyclades-app/synnefo/api/images.py
118 118
    #                       overLimit (413)
119 119

  
120 120
    log.debug('list_images detail=%s', detail)
121
    since = utils.isoparse(request.GET.get('changes-since'))
121 122
    with image_backend(request.user_uniq) as backend:
122
        since = utils.isoparse(request.GET.get('changes-since'))
123 123
        if since:
124 124
            images = []
125 125
            for image in backend.iter():
......
172 172
    #                       overLimit (413)
173 173

  
174 174
    log.debug('get_image_details %s', image_id)
175
    image = util.get_image(image_id, request.user_uniq)
175
    with image_backend(request.user_uniq) as backend:
176
        image = backend.get_image(image_id)
176 177
    reply = image_to_dict(image)
177 178

  
178 179
    if request.serialization == 'xml':
......
209 210
    #                       overLimit (413)
210 211

  
211 212
    log.debug('list_image_metadata %s', image_id)
212
    image = util.get_image(image_id, request.user_uniq)
213
    with image_backend(request.user_uniq) as backend:
214
        image = backend.get_image(image_id)
213 215
    metadata = image['properties']
214 216
    return util.render_metadata(request, metadata, use_values=True, status=200)
215 217

  
......
227 229

  
228 230
    req = utils.get_request_dict(request)
229 231
    log.info('update_image_metadata %s %s', image_id, req)
230
    image = util.get_image(image_id, request.user_uniq)
231
    try:
232
        metadata = req['metadata']
233
        assert isinstance(metadata, dict)
234
    except (KeyError, AssertionError):
235
        raise faults.BadRequest('Malformed request.')
232
    with image_backend(request.user_uniq) as backend:
233
        image = backend.get_image(image_id)
234
        try:
235
            metadata = req['metadata']
236
            assert isinstance(metadata, dict)
237
        except (KeyError, AssertionError):
238
            raise faults.BadRequest('Malformed request.')
236 239

  
237
    properties = image['properties']
238
    properties.update(metadata)
240
        properties = image['properties']
241
        properties.update(metadata)
239 242

  
240
    with image_backend(request.user_uniq) as backend:
241
        backend.update(image_id, dict(properties=properties))
243
        backend.update_metadata(image_id, dict(properties=properties))
242 244

  
243 245
    return util.render_metadata(request, properties, status=201)
244 246

  
......
254 256
    #                       overLimit (413)
255 257

  
256 258
    log.debug('get_image_metadata_item %s %s', image_id, key)
257
    image = util.get_image(image_id, request.user_uniq)
259
    with image_backend(request.user_uniq) as backend:
260
        image = backend.get_image(image_id)
258 261
    val = image['properties'].get(key)
259 262
    if val is None:
260 263
        raise faults.ItemNotFound('Metadata key not found.')
......
284 287
        raise faults.BadRequest('Malformed request.')
285 288

  
286 289
    val = metadict[key]
287
    image = util.get_image(image_id, request.user_uniq)
288
    properties = image['properties']
289
    properties[key] = val
290

  
291 290
    with image_backend(request.user_uniq) as backend:
292
        backend.update(image_id, dict(properties=properties))
291
        image = backend.get_image(image_id)
292
        properties = image['properties']
293
        properties[key] = val
294

  
295
        backend.update_metadata(image_id, dict(properties=properties))
293 296

  
294 297
    return util.render_meta(request, {key: val}, status=201)
295 298

  
......
307 310
    #                       overLimit (413),
308 311

  
309 312
    log.info('delete_image_metadata_item %s %s', image_id, key)
310
    image = util.get_image(image_id, request.user_uniq)
311
    properties = image['properties']
312
    properties.pop(key, None)
313

  
314 313
    with image_backend(request.user_uniq) as backend:
315
        backend.update(image_id, dict(properties=properties))
314
        image = backend.get_image(image_id)
315
        properties = image['properties']
316
        properties.pop(key, None)
317

  
318
        backend.update_metadata(image_id, dict(properties=properties))
316 319

  
317 320
    return HttpResponse(status=204)

Also available in: Unified diff