Statistics
| Branch: | Tag: | Revision:

root / api / urls.py @ d73d59e4

History | View | Annotate | Download (5.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 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
version_handler = Resource(VersionHandler)
105

    
106
urlpatterns = patterns('',
107
    url_with_format(r'^(?P<number>[^/]+)/?$', version_handler),
108
    url(r'^$', version_handler),
109
    url(r'^v1.0/', include(v10patterns)),
110
    url(r'^v1.1/', include(v11patterns)),
111
    url(r'^v1.0grnet1/', include(v10grnet10patterns)),
112
    url(r'^.+', notFound), # catch-all
113
)