github.com/dustinrc/deis@v1.10.1-0.20150917223407-0894a5fb979e/controller/api/urls.py (about) 1 """ 2 URL routing patterns for the Deis REST API. 3 """ 4 5 from __future__ import unicode_literals 6 7 from django.conf import settings 8 from django.conf.urls import include, patterns, url 9 10 from api import routers, views 11 12 13 router = routers.ApiRouter() 14 15 # Add the generated REST URLs and login/logout endpoint 16 urlpatterns = patterns( 17 '', 18 url(r'^', include(router.urls)), 19 # application release components 20 url(r"^apps/(?P<id>{})/config/?".format(settings.APP_URL_REGEX), 21 views.ConfigViewSet.as_view({'get': 'retrieve', 'post': 'create'})), 22 url(r"^apps/(?P<id>{})/builds/(?P<uuid>[-_\w]+)/?".format(settings.APP_URL_REGEX), 23 views.BuildViewSet.as_view({'get': 'retrieve'})), 24 url(r"^apps/(?P<id>{})/builds/?".format(settings.APP_URL_REGEX), 25 views.BuildViewSet.as_view({'get': 'list', 'post': 'create'})), 26 url(r"^apps/(?P<id>{})/releases/v(?P<version>[0-9]+)/?".format(settings.APP_URL_REGEX), 27 views.ReleaseViewSet.as_view({'get': 'retrieve'})), 28 url(r"^apps/(?P<id>{})/releases/rollback/?".format(settings.APP_URL_REGEX), 29 views.ReleaseViewSet.as_view({'post': 'rollback'})), 30 url(r"^apps/(?P<id>{})/releases/?".format(settings.APP_URL_REGEX), 31 views.ReleaseViewSet.as_view({'get': 'list'})), 32 # application infrastructure 33 url(r"^apps/(?P<id>{})/containers/restart/?".format(settings.APP_URL_REGEX), 34 views.ContainerViewSet.as_view({'post': 'restart'})), 35 url(r"^apps/(?P<id>{})/containers/(?P<type>[-_\w.]+)/restart/?".format(settings.APP_URL_REGEX), 36 views.ContainerViewSet.as_view({'post': 'restart'})), 37 url(r"^apps/(?P<id>{})/containers/(?P<type>[-_\w]+)/(?P<num>[-_\w]+)/restart/?".format( 38 settings.APP_URL_REGEX), 39 views.ContainerViewSet.as_view({'post': 'restart'})), 40 url(r"^apps/(?P<id>{})/containers/(?P<type>[-_\w]+)/(?P<num>[-_\w]+)/?".format( 41 settings.APP_URL_REGEX), 42 views.ContainerViewSet.as_view({'get': 'retrieve'})), 43 url(r"^apps/(?P<id>{})/containers/(?P<type>[-_\w.]+)/?".format(settings.APP_URL_REGEX), 44 views.ContainerViewSet.as_view({'get': 'list'})), 45 url(r"^apps/(?P<id>{})/containers/?".format(settings.APP_URL_REGEX), 46 views.ContainerViewSet.as_view({'get': 'list'})), 47 # application domains 48 url(r"^apps/(?P<id>{})/domains/(?P<domain>[-\._\w]+)/?".format(settings.APP_URL_REGEX), 49 views.DomainViewSet.as_view({'delete': 'destroy'})), 50 url(r"^apps/(?P<id>{})/domains/?".format(settings.APP_URL_REGEX), 51 views.DomainViewSet.as_view({'post': 'create', 'get': 'list'})), 52 # application actions 53 url(r"^apps/(?P<id>{})/scale/?".format(settings.APP_URL_REGEX), 54 views.AppViewSet.as_view({'post': 'scale'})), 55 url(r"^apps/(?P<id>{})/logs/?".format(settings.APP_URL_REGEX), 56 views.AppViewSet.as_view({'get': 'logs'})), 57 url(r"^apps/(?P<id>{})/run/?".format(settings.APP_URL_REGEX), 58 views.AppViewSet.as_view({'post': 'run'})), 59 # apps sharing 60 url(r"^apps/(?P<id>{})/perms/(?P<username>[-_\w]+)/?".format(settings.APP_URL_REGEX), 61 views.AppPermsViewSet.as_view({'delete': 'destroy'})), 62 url(r"^apps/(?P<id>{})/perms/?".format(settings.APP_URL_REGEX), 63 views.AppPermsViewSet.as_view({'get': 'list', 'post': 'create'})), 64 # apps base endpoint 65 url(r"^apps/(?P<id>{})/?".format(settings.APP_URL_REGEX), 66 views.AppViewSet.as_view({'get': 'retrieve', 'post': 'update', 'delete': 'destroy'})), 67 url(r'^apps/?', 68 views.AppViewSet.as_view({'get': 'list', 'post': 'create'})), 69 # key 70 url(r'^keys/(?P<id>.+)/?', 71 views.KeyViewSet.as_view({'get': 'retrieve', 'delete': 'destroy'})), 72 url(r'^keys/?', 73 views.KeyViewSet.as_view({'get': 'list', 'post': 'create'})), 74 # hooks 75 url(r'^hooks/push/?', 76 views.PushHookViewSet.as_view({'post': 'create'})), 77 url(r'^hooks/build/?', 78 views.BuildHookViewSet.as_view({'post': 'create'})), 79 url(r'^hooks/config/?', 80 views.ConfigHookViewSet.as_view({'post': 'create'})), 81 # authn / authz 82 url(r'^auth/register/?', 83 views.UserRegistrationViewSet.as_view({'post': 'create'})), 84 url(r'^auth/cancel/?', 85 views.UserManagementViewSet.as_view({'delete': 'destroy'})), 86 url(r'^auth/passwd/?', 87 views.UserManagementViewSet.as_view({'post': 'passwd'})), 88 url(r'^auth/login/', 89 'rest_framework.authtoken.views.obtain_auth_token'), 90 url(r'^auth/tokens/', 91 views.TokenManagementViewSet.as_view({'post': 'regenerate'})), 92 # admin sharing 93 url(r'^admin/perms/(?P<username>[-_\w]+)/?', 94 views.AdminPermsViewSet.as_view({'delete': 'destroy'})), 95 url(r'^admin/perms/?', 96 views.AdminPermsViewSet.as_view({'get': 'list', 'post': 'create'})), 97 url(r'^certs/(?P<common_name>[-_*.\w]+)/?', 98 views.CertificateViewSet.as_view({'get': 'retrieve', 'delete': 'destroy'})), 99 url(r'^certs/?', 100 views.CertificateViewSet.as_view({'get': 'list', 'post': 'create'})), 101 # list users 102 url(r'^users/', views.UserView.as_view({'get': 'list'})), 103 )