root / api / urls.py @ b9a77976
History | View | Annotate | Download (5.8 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 django.conf.urls.defaults import * |
7 |
from synnefo.helpers import url_with_format |
8 |
from synnefo.api.resource import Resource |
9 |
from synnefo.api.handlers import * |
10 |
from synnefo.api.authentication import TokenAuthentication |
11 |
from synnefo.api.faults import fault |
12 |
|
13 |
auth = TokenAuthentication() |
14 |
|
15 |
def notFound(request): |
16 |
return fault.itemNotFound.response
|
17 |
|
18 |
limit_handler = Resource(LimitHandler, auth) |
19 |
server_handler = Resource(ServerHandler, auth) |
20 |
server_address_handler = Resource(ServerAddressHandler, auth) |
21 |
server_actions_handler = Resource(ServerActionHandler, auth) |
22 |
server_backup_handler = Resource(ServerBackupHandler, auth) |
23 |
server_metadata_handler = Resource(ServerMetadataHandler, auth) |
24 |
flavor_handler = Resource(FlavorHandler, auth) |
25 |
image_handler = Resource(ImageHandler, auth) |
26 |
image_metadata_handler = Resource(ImageMetadataHandler, auth) |
27 |
shared_ip_group_handler = Resource(SharedIPGroupHandler, auth) |
28 |
virtual_machine_group_handler = Resource(VirtualMachineGroupHandler, auth) |
29 |
disk_handler = Resource(DiskHandler, auth) |
30 |
|
31 |
def url_with_format(regex, *args, **kwargs): |
32 |
if regex[-1] == '$': |
33 |
regex = regex[:-1]
|
34 |
regex = regex + r'(\.(?P<emitter_format>json|xml))?$'
|
35 |
return url(regex, *args, **kwargs)
|
36 |
|
37 |
# The Rackspace Cloud Servers API v1.0
|
38 |
v10patterns = patterns('',
|
39 |
url_with_format(r'^limits$', limit_handler),
|
40 |
url_with_format(r'^servers$', server_handler),
|
41 |
url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
|
42 |
url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
|
43 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
|
44 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips/private$', server_address_handler),
|
45 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips/public/(?P<address>[^/]+)$', server_address_handler),
|
46 |
url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
|
47 |
url_with_format(r'^flavors$', flavor_handler),
|
48 |
url_with_format(r'^flavors/(?P<id>[^/]+)$', flavor_handler),
|
49 |
url_with_format(r'^images$', image_handler),
|
50 |
url_with_format(r'^images/(?P<id>[^/]+)$', image_handler),
|
51 |
url_with_format(r'^shared_ip_groups$', shared_ip_group_handler),
|
52 |
url_with_format(r'^shared_ip_groups/(?P<id>[^/]+)$', shared_ip_group_handler),
|
53 |
url_with_format(r'^groups$', virtual_machine_group_handler),
|
54 |
url_with_format(r'^groups/(?P<id>[^/]+)$', virtual_machine_group_handler),
|
55 |
url(r'^.+', notFound), # catch-all |
56 |
) |
57 |
|
58 |
# The OpenStack Compute API v1.1
|
59 |
v11patterns = patterns('',
|
60 |
url_with_format(r'^limits$', limit_handler),
|
61 |
url_with_format(r'^servers$', server_handler),
|
62 |
url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
|
63 |
url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
|
64 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
|
65 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips/(?P<networkID>[^/]+)$', server_address_handler),
|
66 |
url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
|
67 |
url_with_format(r'^servers/(?P<id>[^/]+)/meta$', server_metadata_handler),
|
68 |
url_with_format(r'^servers/(?P<id>[^/]+)/meta/(?P<key>[^/]+)$', server_metadata_handler),
|
69 |
url_with_format(r'^flavors$', flavor_handler),
|
70 |
url_with_format(r'^flavors/(?P<id>[^/]+)$', flavor_handler),
|
71 |
url_with_format(r'^images$', image_handler),
|
72 |
url_with_format(r'^images/(?P<id>[^/]+)$', image_handler),
|
73 |
url_with_format(r'^images/(?P<id>[^/]+)/meta$', image_metadata_handler),
|
74 |
url_with_format(r'^images/(?P<id>[^/]+)/meta/(?P<key>[^/]+)$', image_metadata_handler),
|
75 |
url_with_format(r'^shared_ip_groups$', shared_ip_group_handler),
|
76 |
url_with_format(r'^shared_ip_groups/(?P<id>[^/]+)$', shared_ip_group_handler),
|
77 |
url_with_format(r'^groups$', virtual_machine_group_handler),
|
78 |
url_with_format(r'^groups/(?P<id>[^/]+)$', virtual_machine_group_handler),
|
79 |
url(r'^.+', notFound), # catch-all |
80 |
) |
81 |
|
82 |
# The Rackspace Cloud Servers API v1.0 + GRNET v1.0 extension
|
83 |
v10grnet10patterns = patterns('',
|
84 |
url_with_format(r'^limits$', limit_handler),
|
85 |
url_with_format(r'^servers$', server_handler),
|
86 |
url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
|
87 |
url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
|
88 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
|
89 |
url_with_format(r'^servers/(?P<id>[^/]+)/ips/(?P<networkID>[^/]+)$', server_address_handler),
|
90 |
url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
|
91 |
url_with_format(r'^flavors$', flavor_handler),
|
92 |
url_with_format(r'^flavors/(?P<id>[^/]+)$', flavor_handler),
|
93 |
url_with_format(r'^images$', image_handler),
|
94 |
url_with_format(r'^images/(?P<id>[^/]+)$', image_handler),
|
95 |
url_with_format(r'^shared_ip_groups$', shared_ip_group_handler),
|
96 |
url_with_format(r'^shared_ip_groups/(?P<id>[^/]+)$', shared_ip_group_handler),
|
97 |
url_with_format(r'^groups$', virtual_machine_group_handler),
|
98 |
url_with_format(r'^disks$', disk_handler),
|
99 |
url_with_format(r'^disks/(?P<id>[^/]+)$', disk_handler),
|
100 |
url_with_format(r'^groups/(?P<id>[^/]+)$', virtual_machine_group_handler),
|
101 |
url(r'^.+', notFound), # catch-all |
102 |
) |
103 |
|
104 |
# The OpenStack Compute API v1.1 (REDUX)
|
105 |
v11redux_patterns = patterns('',
|
106 |
(r'^servers', include('synnefo.api.servers')), |
107 |
(r'^flavors', include('synnefo.api.flavors')), |
108 |
(r'^images', include('synnefo.api.images')), |
109 |
(r'^.+', notFound), # catch-all |
110 |
) |
111 |
|
112 |
version_handler = Resource(VersionHandler) |
113 |
|
114 |
urlpatterns = patterns('',
|
115 |
url_with_format(r'^(?P<number>[^/]+)/?$', version_handler),
|
116 |
url(r'^$', version_handler),
|
117 |
url(r'^v1.0/', include(v10patterns)),
|
118 |
url(r'^v1.1/', include(v11patterns)),
|
119 |
url(r'^v1.0grnet1/', include(v10grnet10patterns)),
|
120 |
url(r'^v1.1redux/', include(v11redux_patterns)),
|
121 |
url(r'^.+', notFound), # catch-all |
122 |
) |