root / api / flavors.py @ aa197ee4
History | View | Annotate | Download (2.1 kB)
1 | c36934a7 | Giorgos Verigakis | #
|
---|---|---|---|
2 | c36934a7 | Giorgos Verigakis | # Copyright (c) 2010 Greek Research and Technology Network
|
3 | c36934a7 | Giorgos Verigakis | #
|
4 | c36934a7 | Giorgos Verigakis | |
5 | d8e50a39 | Giorgos Verigakis | from django.conf.urls.defaults import patterns |
6 | c36934a7 | Giorgos Verigakis | from django.http import HttpResponse |
7 | c36934a7 | Giorgos Verigakis | from django.template.loader import render_to_string |
8 | 29a59bc1 | Giorgos Verigakis | from django.utils import simplejson as json |
9 | c36934a7 | Giorgos Verigakis | |
10 | 529178b1 | Giorgos Verigakis | from synnefo.api.util import get_flavor, api_method |
11 | d8e50a39 | Giorgos Verigakis | from synnefo.db.models import Flavor |
12 | d8e50a39 | Giorgos Verigakis | |
13 | c36934a7 | Giorgos Verigakis | |
14 | c36934a7 | Giorgos Verigakis | urlpatterns = patterns('synnefo.api.flavors',
|
15 | c36934a7 | Giorgos Verigakis | (r'^(?:/|.json|.xml)?$', 'list_flavors'), |
16 | c36934a7 | Giorgos Verigakis | (r'^/detail(?:.json|.xml)?$', 'list_flavors', {'detail': True}), |
17 | c36934a7 | Giorgos Verigakis | (r'^/(\d+)(?:.json|.xml)?$', 'get_flavor_details'), |
18 | c36934a7 | Giorgos Verigakis | ) |
19 | c36934a7 | Giorgos Verigakis | |
20 | c36934a7 | Giorgos Verigakis | |
21 | c36934a7 | Giorgos Verigakis | def flavor_to_dict(flavor, detail=True): |
22 | c36934a7 | Giorgos Verigakis | d = {'id': flavor.id, 'name': flavor.name} |
23 | c36934a7 | Giorgos Verigakis | if detail:
|
24 | c36934a7 | Giorgos Verigakis | d['ram'] = flavor.ram
|
25 | c36934a7 | Giorgos Verigakis | d['disk'] = flavor.disk
|
26 | f1641e4d | Markos Gogoulos | d['cpu'] = flavor.cpu
|
27 | c36934a7 | Giorgos Verigakis | return d
|
28 | c36934a7 | Giorgos Verigakis | |
29 | c36934a7 | Giorgos Verigakis | |
30 | c36934a7 | Giorgos Verigakis | @api_method('GET') |
31 | c36934a7 | Giorgos Verigakis | def list_flavors(request, detail=False): |
32 | c36934a7 | Giorgos Verigakis | # Normal Response Codes: 200, 203
|
33 | c36934a7 | Giorgos Verigakis | # Error Response Codes: computeFault (400, 500),
|
34 | c36934a7 | Giorgos Verigakis | # serviceUnavailable (503),
|
35 | c36934a7 | Giorgos Verigakis | # unauthorized (401),
|
36 | c36934a7 | Giorgos Verigakis | # badRequest (400),
|
37 | c36934a7 | Giorgos Verigakis | # overLimit (413)
|
38 | aa197ee4 | Vangelis Koukis | |
39 | c36934a7 | Giorgos Verigakis | all_flavors = Flavor.objects.all() |
40 | c36934a7 | Giorgos Verigakis | flavors = [flavor_to_dict(flavor, detail) for flavor in all_flavors] |
41 | aa197ee4 | Vangelis Koukis | |
42 | d8e50a39 | Giorgos Verigakis | if request.serialization == 'xml': |
43 | c36934a7 | Giorgos Verigakis | data = render_to_string('list_flavors.xml', {'flavors': flavors, 'detail': detail}) |
44 | c36934a7 | Giorgos Verigakis | else:
|
45 | c36934a7 | Giorgos Verigakis | data = json.dumps({'flavors': {'values': flavors}}) |
46 | aa197ee4 | Vangelis Koukis | |
47 | d8e50a39 | Giorgos Verigakis | return HttpResponse(data, status=200) |
48 | c36934a7 | Giorgos Verigakis | |
49 | c36934a7 | Giorgos Verigakis | @api_method('GET') |
50 | c36934a7 | Giorgos Verigakis | def get_flavor_details(request, flavor_id): |
51 | c36934a7 | Giorgos Verigakis | # Normal Response Codes: 200, 203
|
52 | c36934a7 | Giorgos Verigakis | # Error Response Codes: computeFault (400, 500),
|
53 | c36934a7 | Giorgos Verigakis | # serviceUnavailable (503),
|
54 | c36934a7 | Giorgos Verigakis | # unauthorized (401),
|
55 | c36934a7 | Giorgos Verigakis | # badRequest (400),
|
56 | c36934a7 | Giorgos Verigakis | # itemNotFound (404),
|
57 | c36934a7 | Giorgos Verigakis | # overLimit (413)
|
58 | aa197ee4 | Vangelis Koukis | |
59 | 529178b1 | Giorgos Verigakis | flavor = get_flavor(flavor_id) |
60 | 529178b1 | Giorgos Verigakis | flavordict = flavor_to_dict(flavor, detail=True)
|
61 | aa197ee4 | Vangelis Koukis | |
62 | d8e50a39 | Giorgos Verigakis | if request.serialization == 'xml': |
63 | 529178b1 | Giorgos Verigakis | data = render_to_string('flavor.xml', {'flavor': flavordict}) |
64 | c36934a7 | Giorgos Verigakis | else:
|
65 | 529178b1 | Giorgos Verigakis | data = json.dumps({'flavor': flavordict})
|
66 | aa197ee4 | Vangelis Koukis | |
67 | c36934a7 | Giorgos Verigakis | return HttpResponse(data, status=200) |