Network Slice Templates
[osm/LW-UI.git] / netslicehandler / views.py
1 # Copyright 2018 EveryUP Srl
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 import yaml
16 import json
17 import logging
18 from sf_t3d.decorators import login_required
19 from django.http import HttpResponse
20 from django.shortcuts import render, redirect
21
22 from lib.util import Util
23 import authosm.utils as osmutils
24 from lib.osm.osmclient.clientv2 import Client
25
26 logging.basicConfig(level=logging.DEBUG)
27 log = logging.getLogger('instancehandler/view.py')
28
29 @login_required
30 def list(request):
31 user = osmutils.get_user(request)
32 client = Client()
33 result = {}
34 result_client = client.nst_list(user.get_token())
35
36 result['templates'] = result_client['data'] if result_client and result_client['error'] is False else []
37
38 return __response_handler(request, result, 'nst_list.html')
39
40 @login_required
41 def create_template(request, template_id=None):
42 return
43
44 @login_required
45 def edit(request, template_id=None):
46 user = osmutils.get_user(request)
47 client = Client()
48 if request.method == 'GET':
49 page = 'nst_edit.html'
50 result = client.nst_content(user.get_token(), template_id)
51 if result['error']:
52 return __response_handler(request, result, url=page, status=500)
53 else:
54 return __response_handler(request, {'template': {'template_id': str(template_id), 'data': result['data']}}, url=page, status=200)
55 elif request.method == 'POST':
56 result = client.nst_content_update(user.get_token(), template_id, request.POST.get('text'))
57 if result['error'] == True:
58 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
59 else:
60 return __response_handler(request, {}, url=None, status=200)
61
62
63 @login_required
64 def details(request, template_id=None):
65 user = osmutils.get_user(request)
66 client = Client()
67 result = client.nst_details(user.get_token(), template_id)
68 if result['error']:
69 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
70 else:
71 return __response_handler(request, result, url=None, status=200)
72
73 @login_required
74 def delete_template(request, template_id=None):
75 user = osmutils.get_user(request)
76
77 client = Client()
78 result = client.nst_delete(user.get_token(), template_id)
79
80 if result['error']:
81 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
82 else:
83 return __response_handler(request, {}, url=None, status=200)
84
85
86 @login_required
87 def download_template(request, package_id=None):
88 return
89
90 @login_required
91 def onboard_template(request):
92 user = osmutils.get_user(request)
93 if request.method == 'POST':
94 data_type = request.POST.get('type')
95 if data_type == "file":
96 file_uploaded = request.FILES['file']
97 try:
98 client = Client()
99 result = client.nst_onboard(user.get_token(), file_uploaded)
100 except Exception as e:
101 log.exception(e)
102 result = {'error': True, 'data': str(e)}
103 else:
104 result = {'error': True, 'data': 'Create descriptor: Unknown data type'}
105
106 if result['error']:
107 return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
108 else:
109 return __response_handler(request, {}, url=None, status=200)
110
111
112 def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):
113 raw_content_types = request.META.get('HTTP_ACCEPT', '*/*').split(',')
114 if not to_redirect and ('application/json' in raw_content_types or url is None):
115 return HttpResponse(json.dumps(data_res), content_type="application/json", *args, **kwargs)
116 elif to_redirect:
117 return redirect(url, *args, **kwargs)
118 else:
119 return render(request, url, data_res)