Statistics
| Branch: | Tag: | Revision:

root / api / urls.py @ b016b476

History | View | Annotate | Download (5.8 kB)

1 00b4f1be Faidon Liambotis
# vim: ts=4 sts=4 et ai sw=4 fileencoding=utf-8
2 00b4f1be Faidon Liambotis
#
3 60023e66 Constantinos Venetsanopoulos
# Copyright © 2010 Greek Research and Technology Network
4 00b4f1be Faidon Liambotis
#
5 00b4f1be Faidon Liambotis
6 00b4f1be Faidon Liambotis
from django.conf.urls.defaults import *
7 5c812d1b Faidon Liambotis
from synnefo.helpers import url_with_format
8 5c812d1b Faidon Liambotis
from synnefo.api.resource import Resource
9 00b4f1be Faidon Liambotis
from synnefo.api.handlers import *
10 00b4f1be Faidon Liambotis
from synnefo.api.authentication import TokenAuthentication
11 0be1a55e Faidon Liambotis
from synnefo.api.faults import fault
12 00b4f1be Faidon Liambotis
13 00b4f1be Faidon Liambotis
auth = TokenAuthentication()
14 00b4f1be Faidon Liambotis
15 0be1a55e Faidon Liambotis
def notFound(request):
16 0be1a55e Faidon Liambotis
    return fault.itemNotFound.response
17 0be1a55e Faidon Liambotis
18 beb79c95 Faidon Liambotis
limit_handler = Resource(LimitHandler, auth)
19 00b4f1be Faidon Liambotis
server_handler = Resource(ServerHandler, auth)
20 00b4f1be Faidon Liambotis
server_address_handler = Resource(ServerAddressHandler, auth)
21 00b4f1be Faidon Liambotis
server_actions_handler = Resource(ServerActionHandler, auth)
22 c99adc90 Faidon Liambotis
server_backup_handler = Resource(ServerBackupHandler, auth)
23 60023e66 Constantinos Venetsanopoulos
server_metadata_handler = Resource(ServerMetadataHandler, auth)
24 427a9220 Faidon Liambotis
flavor_handler = Resource(FlavorHandler, auth)
25 dcc6a862 Faidon Liambotis
image_handler = Resource(ImageHandler, auth)
26 60023e66 Constantinos Venetsanopoulos
image_metadata_handler = Resource(ImageMetadataHandler, auth)
27 ed66d976 Faidon Liambotis
shared_ip_group_handler = Resource(SharedIPGroupHandler, auth)
28 a31ff6cb Markos Gogoulos
virtual_machine_group_handler = Resource(VirtualMachineGroupHandler, auth)
29 9071888e Constantinos Venetsanopoulos
disk_handler = Resource(DiskHandler, auth)
30 00b4f1be Faidon Liambotis
31 c3e8f508 Faidon Liambotis
def url_with_format(regex, *args, **kwargs):
32 c3e8f508 Faidon Liambotis
    if regex[-1] == '$':
33 c3e8f508 Faidon Liambotis
        regex = regex[:-1]
34 c3e8f508 Faidon Liambotis
    regex = regex + r'(\.(?P<emitter_format>json|xml))?$'
35 c3e8f508 Faidon Liambotis
    return url(regex, *args, **kwargs)
36 c3e8f508 Faidon Liambotis
37 60023e66 Constantinos Venetsanopoulos
# The Rackspace Cloud Servers API v1.0
38 00b4f1be Faidon Liambotis
v10patterns = patterns('',
39 c3e8f508 Faidon Liambotis
    url_with_format(r'^limits$', limit_handler),
40 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers$', server_handler),
41 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
42 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
43 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
44 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/private$', server_address_handler),
45 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/public/(?P<address>[^/]+)$', server_address_handler),
46 c3e8f508 Faidon Liambotis
    url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
47 c3e8f508 Faidon Liambotis
    url_with_format(r'^flavors$', flavor_handler),
48 c3e8f508 Faidon Liambotis
    url_with_format(r'^flavors/(?P<id>[^/]+)$', flavor_handler),
49 c3e8f508 Faidon Liambotis
    url_with_format(r'^images$', image_handler),
50 c3e8f508 Faidon Liambotis
    url_with_format(r'^images/(?P<id>[^/]+)$', image_handler),
51 c3e8f508 Faidon Liambotis
    url_with_format(r'^shared_ip_groups$', shared_ip_group_handler),
52 c3e8f508 Faidon Liambotis
    url_with_format(r'^shared_ip_groups/(?P<id>[^/]+)$', shared_ip_group_handler),
53 d7710a26 Markos Gogoulos
    url_with_format(r'^groups$', virtual_machine_group_handler),
54 d7710a26 Markos Gogoulos
    url_with_format(r'^groups/(?P<id>[^/]+)$', virtual_machine_group_handler),
55 c3e8f508 Faidon Liambotis
    url(r'^.+', notFound), # catch-all
56 00b4f1be Faidon Liambotis
)
57 00b4f1be Faidon Liambotis
58 60023e66 Constantinos Venetsanopoulos
# The OpenStack Compute API v1.1
59 60023e66 Constantinos Venetsanopoulos
v11patterns = patterns('',
60 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^limits$', limit_handler),
61 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers$', server_handler),
62 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
63 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
64 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
65 d73d59e4 Markos Gogoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/(?P<networkID>[^/]+)$', server_address_handler),
66 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
67 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/meta$', server_metadata_handler),
68 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/meta/(?P<key>[^/]+)$', server_metadata_handler),
69 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^flavors$', flavor_handler),
70 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^flavors/(?P<id>[^/]+)$', flavor_handler),
71 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^images$', image_handler),
72 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^images/(?P<id>[^/]+)$', image_handler),
73 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^images/(?P<id>[^/]+)/meta$', image_metadata_handler),
74 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^images/(?P<id>[^/]+)/meta/(?P<key>[^/]+)$', image_metadata_handler),
75 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^shared_ip_groups$', shared_ip_group_handler),
76 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^shared_ip_groups/(?P<id>[^/]+)$', shared_ip_group_handler),
77 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^groups$', virtual_machine_group_handler),
78 60023e66 Constantinos Venetsanopoulos
    url_with_format(r'^groups/(?P<id>[^/]+)$', virtual_machine_group_handler),
79 60023e66 Constantinos Venetsanopoulos
    url(r'^.+', notFound), # catch-all
80 60023e66 Constantinos Venetsanopoulos
)
81 60023e66 Constantinos Venetsanopoulos
82 60023e66 Constantinos Venetsanopoulos
# The Rackspace Cloud Servers API v1.0 + GRNET v1.0 extension
83 9071888e Constantinos Venetsanopoulos
v10grnet10patterns = patterns('',
84 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^limits$', limit_handler),
85 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^servers$', server_handler),
86 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
87 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
88 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
89 76c8e33d Markos Gogoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/(?P<networkID>[^/]+)$', server_address_handler),
90 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
91 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^flavors$', flavor_handler),
92 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^flavors/(?P<id>[^/]+)$', flavor_handler),
93 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^images$', image_handler),
94 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^images/(?P<id>[^/]+)$', image_handler),
95 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^shared_ip_groups$', shared_ip_group_handler),
96 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^shared_ip_groups/(?P<id>[^/]+)$', shared_ip_group_handler),
97 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^groups$', virtual_machine_group_handler),
98 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^disks$', disk_handler),
99 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^disks/(?P<id>[^/]+)$', disk_handler),
100 9071888e Constantinos Venetsanopoulos
    url_with_format(r'^groups/(?P<id>[^/]+)$', virtual_machine_group_handler),
101 9071888e Constantinos Venetsanopoulos
    url(r'^.+', notFound), # catch-all
102 9071888e Constantinos Venetsanopoulos
)
103 9071888e Constantinos Venetsanopoulos
104 7e2f9d4b Giorgos Verigakis
# The OpenStack Compute API v1.1 (REDUX)
105 7e2f9d4b Giorgos Verigakis
v11redux_patterns = patterns('',
106 7e2f9d4b Giorgos Verigakis
    (r'^servers', include('synnefo.api.servers')),
107 c36934a7 Giorgos Verigakis
    (r'^flavors', include('synnefo.api.flavors')),
108 c36934a7 Giorgos Verigakis
    (r'^images', include('synnefo.api.images')),
109 7e2f9d4b Giorgos Verigakis
    (r'^.+', notFound), # catch-all
110 7e2f9d4b Giorgos Verigakis
)
111 7e2f9d4b Giorgos Verigakis
112 00b4f1be Faidon Liambotis
version_handler = Resource(VersionHandler)
113 00b4f1be Faidon Liambotis
114 00b4f1be Faidon Liambotis
urlpatterns = patterns('',
115 c3e8f508 Faidon Liambotis
    url_with_format(r'^(?P<number>[^/]+)/?$', version_handler),
116 04accb0f Faidon Liambotis
    url(r'^$', version_handler),
117 c3e8f508 Faidon Liambotis
    url(r'^v1.0/', include(v10patterns)),
118 60023e66 Constantinos Venetsanopoulos
    url(r'^v1.1/', include(v11patterns)),
119 9071888e Constantinos Venetsanopoulos
    url(r'^v1.0grnet1/', include(v10grnet10patterns)),
120 7e2f9d4b Giorgos Verigakis
    url(r'^v1.1redux/', include(v11redux_patterns)),
121 c3e8f508 Faidon Liambotis
    url(r'^.+', notFound), # catch-all
122 00b4f1be Faidon Liambotis
)