aboutsummaryrefslogtreecommitdiffstats
path: root/src/account/urls.py
blob: 97d8c7740d16096c6009cb239a96fb01a79b61ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
##############################################################################
# Copyright (c) 2016 Max Breitenfeldt and others.
# Copyright (c) 2018 Parker Berberian, Sawyer Bergeron, and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################


"""
laas_dashboard URL Configuration.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.urls import path

from account.views import (
    AccountSettingsView,
    JiraAuthenticatedView,
    JiraLoginView,
    OIDCLoginView,
    JiraLogoutView,
    UserListView,
    account_resource_view,
    account_booking_view,
    account_images_view,
    account_configuration_view,
    account_detail_view,
    resource_delete_view,
    booking_cancel_view,
    image_delete_view,
    configuration_delete_view
)

from laas_dashboard import settings


def get_login_view():
    if (settings.AUTH_SETTING == 'LFID'):
        return OIDCLoginView.as_view()
    else:
        return JiraLoginView.as_view()


app_name = "account"
urlpatterns = [
    url(r'^settings/', AccountSettingsView.as_view(), name='settings'),
    url(r'^authenticated/$', JiraAuthenticatedView.as_view(), name='authenticated'),
    url(r'^login/$', get_login_view(), name='login'),
    url(r'^logout/$', JiraLogoutView.as_view(), name='logout'),
    url(r'^users/$', UserListView.as_view(), name='users'),
    url(r'^my/resources/$', account_resource_view, name="my-resources"),
    path('my/resources/delete/<int:resource_id>', resource_delete_view),
    url(r'^my/bookings/$', account_booking_view, name="my-bookings"),
    path('my/bookings/cancel/<int:booking_id>', booking_cancel_view),
    url(r'^my/images/$', account_images_view, name="my-images"),
    path('my/images/delete/<int:image_id>', image_delete_view),
    url(r'^my/configurations/$', account_configuration_view, name="my-configurations"),
    path('my/configurations/delete/<int:config_id>', configuration_delete_view),
    url(r'^my/$', account_detail_view, name="my-account"),
]
span class="o">.json() res.raise_for_status() def http_post(self, command, config): url = self.url + '/' + command res = requests.post(url, json=config) if res.ok: return res.json() res.raise_for_status() def echo_config(self, config, timeout=100): """Send an echo event to the nfvbench server with some dummy config and expect the config to be sent back right away. Args: config: some dummy configuration - must be a valid dict timeout: how long to wait in seconds or 0 to return immediately, defaults to 100 seconds Returns: The config as passed as a dict or None if timeout passed is 0 Raises: NfvbenchException: the execution of the passed configuration failed, the body of the exception containes the description of the failure. TimeOutException: the request timed out (and might still being executed by the server) """ if self.use_socketio: return self.socketio_send('echo', 'echo', config, timeout) return self.http_get('echo', config) def run_config(self, config, timeout=300, poll_interval=5): """Request an nfvbench configuration to be executed by the nfvbench server. This function will block the caller until the request completes or the request times out. It can return immediately if timeout is set to 0. Note that running a configuration may take a while depending on the amount of work requested - so set the timeout value to an appropriate value. Args: config: the nfvbench configuration to execute - must be a valid dict with valid nfvbench attributes timeout: how long to wait in seconds or 0 to return immediately, defaults to 300 seconds poll_interval: seconds between polling (http only) - defaults to every 5 seconds Returns: The result of the nfvbench execution or None if timeout passed is 0 The function will return as soon as the request is completed or when the timeout occurs (whichever is first). Raises: NfvbenchException: the execution of the passed configuration failed, the body of the exception contains the description of the failure. TimeOutException: the request timed out but will still be executed by the server. """ if self.use_socketio: return self.socketio_send('start_run', 'run_end', config, timeout) res = self.http_post('start_run', config) if res['status'] != 'PENDING': raise NfvbenchException(res['error_message']) # poll until request completes elapsed = 0 while True: time.sleep(poll_interval) result = self.http_get('status', config) if result['status'] != 'PENDING': return result elapsed += poll_interval if elapsed >= timeout: raise TimeOutException()