Revision 40777cc8 api/servers.py

b/api/servers.py
13 13
from synnefo.api.common import method_not_allowed
14 14
from synnefo.api.faults import BadRequest, ItemNotFound, ServiceUnavailable
15 15
from synnefo.api.util import (isoformat, isoparse, random_password,
16
                                get_user, get_vm, get_vm_meta, get_image, get_flavor,
16
                                get_vm, get_vm_meta, get_image, get_flavor,
17 17
                                get_request_dict, render_metadata, render_meta, api_method)
18 18
from synnefo.db.models import VirtualMachine, VirtualMachineMetadata
19 19
from synnefo.logic.backend import create_instance, delete_instance
......
115 115
    #                       badRequest (400),
116 116
    #                       overLimit (413)
117 117
    
118
    owner = get_user()
119 118
    since = isoparse(request.GET.get('changes-since'))
120 119
    
121 120
    if since:
122
        user_vms = VirtualMachine.objects.filter(updated__gte=since)
121
        user_vms = VirtualMachine.objects.filter(owner=request.user, updated__gte=since)
123 122
        if not user_vms:
124 123
            return HttpResponse(status=304)
125 124
    else:
126
        user_vms = VirtualMachine.objects.filter(owner=owner, deleted=False)
125
        user_vms = VirtualMachine.objects.filter(owner=request.user, deleted=False)
127 126
    servers = [vm_to_dict(server, detail) for server in user_vms]
128 127
    
129 128
    if request.serialization == 'xml':
......
157 156
    except (KeyError, AssertionError):
158 157
        raise BadRequest('Malformed request.')
159 158
    
160
    image = get_image(image_id)
159
    image = get_image(image_id, request.user)
161 160
    flavor = get_flavor(flavor_id)
162 161
    
163 162
    # We must save the VM instance now, so that it gets a valid vm.backend_id.
164 163
    vm = VirtualMachine.objects.create(
165 164
        name=name,
166
        owner=get_user(),
165
        owner=request.user,
167 166
        sourceimage=image,
168 167
        ipfour='0.0.0.0',
169 168
        ipsix='::1',
......
198 197
    #                       itemNotFound (404),
199 198
    #                       overLimit (413)
200 199
    
201
    vm = get_vm(server_id)
200
    vm = get_vm(server_id, request.user)
202 201
    server = vm_to_dict(vm, detail=True)
203 202
    return render_server(request, server)
204 203

  
......
221 220
    except (TypeError, KeyError):
222 221
        raise BadRequest('Malformed request.')
223 222
    
224
    vm = get_vm(server_id)
223
    vm = get_vm(server_id, request.user)
225 224
    vm.name = name
226 225
    vm.save()
227 226
    
......
238 237
    #                       buildInProgress (409),
239 238
    #                       overLimit (413)
240 239
    
241
    vm = get_vm(server_id)
240
    vm = get_vm(server_id, request.user)
242 241
    delete_instance(vm)
243 242
    return HttpResponse(status=204)
244 243

  
245 244
@api_method('POST')
246 245
def server_action(request, server_id):
247
    vm = get_vm(server_id)
246
    vm = get_vm(server_id, request.user)
248 247
    req = get_request_dict(request)
249 248
    if len(req) != 1:
250 249
        raise BadRequest('Malformed request.')
......
269 268
    #                       badRequest (400),
270 269
    #                       overLimit (413)
271 270
    
272
    vm = get_vm(server_id)
271
    vm = get_vm(server_id, request.user)
273 272
    addresses = [address_to_dict(vm.ipfour, vm.ipsix)]
274 273
    
275 274
    if request.serialization == 'xml':
......
289 288
    #                       itemNotFound (404),
290 289
    #                       overLimit (413)
291 290
    
292
    vm = get_vm(server_id)
291
    vm = get_vm(server_id, request.user)
293 292
    if network_id != 'public':
294 293
        raise ItemNotFound('Unknown network.')
295 294
    
......
311 310
    #                       badRequest (400),
312 311
    #                       overLimit (413)
313 312

  
314
    vm = get_vm(server_id)
313
    vm = get_vm(server_id, request.user)
315 314
    metadata = metadata_to_dict(vm)
316 315
    return render_metadata(request, metadata, use_values=True, status=200)
317 316

  
......
326 325
    #                       badMediaType(415),
327 326
    #                       overLimit (413)
328 327

  
329
    vm = get_vm(server_id)
328
    vm = get_vm(server_id, request.user)
330 329
    req = get_request_dict(request)
331 330
    try:
332 331
        metadata = req['metadata']
......
356 355
    #                       itemNotFound (404),
357 356
    #                       badRequest (400),
358 357
    #                       overLimit (413)
359

  
360
    meta = get_vm_meta(server_id, key)
358
    
359
    vm = get_vm(server_id, request.user)
360
    meta = get_vm_meta(vm, key)
361 361
    return render_meta(request, meta, status=200)
362 362

  
363 363
@api_method('PUT')
......
372 372
    #                       badMediaType(415),
373 373
    #                       overLimit (413)
374 374

  
375
    vm = get_vm(server_id)
375
    vm = get_vm(server_id, request.user)
376 376
    req = get_request_dict(request)
377 377
    try:
378 378
        metadict = req['meta']
......
398 398
    #                       buildInProgress (409),
399 399
    #                       badMediaType(415),
400 400
    #                       overLimit (413),
401

  
402
    meta = get_vm_meta(server_id, key)
401
    
402
    vm = get_vm(server_id, request.user)
403
    meta = get_vm_meta(vm, key)
403 404
    meta.delete()
404 405
    return HttpResponse(status=204)

Also available in: Unified diff