root / api / handlers.py @ 427a9220
History | View | Annotate | Download (3.5 kB)
1 |
# vim: ts=4 sts=4 et ai sw=4 fileencoding=utf-8
|
---|---|
2 |
#
|
3 |
# Copyright © 2010 Greek Research and Technology Network
|
4 |
#
|
5 |
|
6 |
from piston.handler import BaseHandler, AnonymousBaseHandler |
7 |
from synnefo.api.faults import fault, noContent, accepted |
8 |
|
9 |
VERSIONS = [ |
10 |
{ |
11 |
"status": "CURRENT", |
12 |
"id": "v1.0", |
13 |
"docURL" : "http://docs.rackspacecloud.com/servers/api/v1.0/cs-devguide-20090714.pdf ", |
14 |
"wadl" : "http://docs.rackspacecloud.com/servers/api/v1.0/application.wadl" |
15 |
}, |
16 |
] |
17 |
|
18 |
class VersionHandler(AnonymousBaseHandler): |
19 |
allowed_methods = ('GET',)
|
20 |
|
21 |
def read(self, request, number=None): |
22 |
if number is None: |
23 |
versions = map(lambda v: { |
24 |
"status": v["status"], |
25 |
"id": v["id"], |
26 |
}, VERSIONS) |
27 |
return { "versions": versions } |
28 |
else:
|
29 |
for version in VERSIONS: |
30 |
if version["id"] == number: |
31 |
return { "version": version } |
32 |
return fault.itemNotFound
|
33 |
|
34 |
|
35 |
# XXX: incomplete
|
36 |
class ServerHandler(BaseHandler): |
37 |
def read(self, request, id=None): |
38 |
if id is None: |
39 |
return self.read_all(request) |
40 |
elif id is "detail": |
41 |
return self.read_all(request, detail=True) |
42 |
else:
|
43 |
return self.read_one(request, id) |
44 |
|
45 |
def read_one(self, request, id): |
46 |
print ("server info %s" % id) |
47 |
return {}
|
48 |
|
49 |
def read_all(self, request, detail=False): |
50 |
if not detail: |
51 |
print "server info all" |
52 |
else:
|
53 |
print "server info all detail" |
54 |
return {}
|
55 |
|
56 |
def create(self, request): |
57 |
return accepted
|
58 |
|
59 |
def update(self, request, id): |
60 |
return noContent
|
61 |
|
62 |
def delete(self, request, id): |
63 |
return accepted
|
64 |
|
65 |
|
66 |
class ServerAddressHandler(BaseHandler): |
67 |
allowed_methods = ('GET', 'PUT', 'DELETE') |
68 |
|
69 |
def read(self, request, id, type=None): |
70 |
"""List IP addresses for a server"""
|
71 |
if type is None: |
72 |
pass
|
73 |
elif type == "private": |
74 |
pass
|
75 |
elif type == "public": |
76 |
pass
|
77 |
return {}
|
78 |
|
79 |
def update(self, request, id, address): |
80 |
"""Share an IP address to another in the group"""
|
81 |
return accepted
|
82 |
|
83 |
def delete(self, request, id, address): |
84 |
"""Unshare an IP address"""
|
85 |
return accepted
|
86 |
|
87 |
|
88 |
class ServerActionHandler(BaseHandler): |
89 |
allowed_methods = ('POST',)
|
90 |
|
91 |
def create(self, request, id): |
92 |
"""Reboot, rebuild, resize, confirm resized, revert resized"""
|
93 |
print ("server action %s" % id) |
94 |
return accepted
|
95 |
|
96 |
|
97 |
class FlavorHandler(BaseHandler): |
98 |
allowed_methods = ('GET',)
|
99 |
flavors = [ |
100 |
{ |
101 |
"id" : 1, |
102 |
"name" : "256 MB Server", |
103 |
"ram" : 256, |
104 |
"disk" : 10 |
105 |
}, |
106 |
{ |
107 |
"id" : 2, |
108 |
"name" : "512 MB Server", |
109 |
"ram" : 512, |
110 |
"disk" : 20 |
111 |
} |
112 |
] |
113 |
|
114 |
def read(self, request, id=None): |
115 |
"""List flavors
|
116 |
|
117 |
Returns: OK
|
118 |
Faults: cloudServersFault, serviceUnavailable, unauthorized, badRequest
|
119 |
"""
|
120 |
if id is None: |
121 |
simple = map(lambda v: { |
122 |
"id": v["id"], |
123 |
"name": v["name"], |
124 |
}, self.flavors)
|
125 |
return { "flavors": simple } |
126 |
elif id == "detail": |
127 |
return { "flavors": self.flavors } |
128 |
else:
|
129 |
for flavor in self.flavors: |
130 |
if str(flavor["id"]) == id: |
131 |
return { "flavor": flavor } |
132 |
return fault.itemNotFound
|