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