X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=descriptorhandler%2Fviews.py;h=4e22a5df0e6d749e9e8c0ef2bc888e586d123c61;hb=HEAD;hp=1bdb9b4def007d88246bc4d6fa98c07518f420ce;hpb=e428af7f429a3e42379c42c633ded0651ea2f0cf;p=osm%2FLW-UI.git diff --git a/descriptorhandler/views.py b/descriptorhandler/views.py index 1bdb9b4..4e22a5d 100644 --- a/descriptorhandler/views.py +++ b/descriptorhandler/views.py @@ -22,7 +22,6 @@ from sf_t3d.decorators import login_required from django.http import HttpResponse from django.shortcuts import render, redirect - from lib.util import Util from lib.osm.osmclient.clientv2 import Client from lib.osm.osm_rdcl_parser import OsmParser @@ -33,92 +32,9 @@ logging.basicConfig(level=logging.DEBUG) log = logging.getLogger('descriptorhandler/view.py') -@login_required -def show_descriptors(request, descriptor_type=None): - user = osmutils.get_user(request) - project_id = user.project_id - client = Client() - try: - if descriptor_type == 'nsd': - descriptors = client.nsd_list(user.get_token()) - elif descriptor_type == 'vnfd': - descriptors = client.vnfd_list(user.get_token()) - except Exception as e: - log.exception(e) - descriptors = [] - - url = 'osm/osm_project_descriptors.html' - return __response_handler(request, { - 'descriptors': descriptors['data'] if descriptors and descriptors['error'] is False else [], - 'project_id': project_id, - 'project_type': 'osm', - 'descriptor_type': descriptor_type - }, url) - - -@login_required -def delete_descriptor(request, descriptor_type=None, descriptor_id=None): - user = osmutils.get_user(request) - project_id = user.project_id - try: - client = Client() - if descriptor_type == 'nsd': - result = client.nsd_delete(user.get_token(), descriptor_id) - elif descriptor_type == 'vnfd': - result = client.vnfd_delete(user.get_token(), descriptor_id) - except Exception as e: - log.exception(e) - result = {'error': True, 'data': str(e)} - - url = 'osm/osm_project_descriptors.html' - descriptors = {} - try: - if descriptor_type == 'nsd': - descriptors = client.nsd_list(user.get_token()) - elif descriptor_type == 'vnfd': - descriptors = client.vnfd_list(user.get_token()) - except Exception as e: - log.exception(e) - - return __response_handler(request, { - 'descriptors': descriptors['data'] if descriptors and descriptors['error'] is False else [], - 'project_id': project_id, - 'project_type': 'osm', - 'descriptor_type': descriptor_type, - 'alert_message': { - 'success': False if result['error'] is True else True, - 'message': 'An error occurred while processing your request.' if result and result['error'] is True else "Record deleted successfully"} - }, url) - - -@login_required -def clone_descriptor(request, descriptor_type=None, descriptor_id=None): - user = osmutils.get_user(request) - project_id = user.project_id - - try: - client = Client() - if descriptor_type == 'nsd': - result = client.nsd_clone(user.get_token(), descriptor_id) - elif descriptor_type == 'vnfd': - result = client.vnfd_clone(user.get_token(), descriptor_id) - else: - log.debug('Update descriptor: Unknown data type') - result = {'error': True, 'data': 'Update descriptor: Unknown data type'} - except Exception as e: - log.exception(e) - result = {'error': True, 'data': str(e)} - if result['error'] == True: - return __response_handler(request, result['data'], url=None, - status=result['data']['status'] if 'status' in result['data'] else 500) - - else: - return __response_handler(request, {}, url=None, status=200) - @login_required def addElement(request, descriptor_type=None, descriptor_id=None, element_type=None): user = osmutils.get_user(request) - project_id = user.project_id client = Client() if descriptor_type == 'nsd': descriptor_result = client.nsd_get(user.get_token(), descriptor_id) @@ -137,10 +53,27 @@ def addElement(request, descriptor_type=None, descriptor_id=None, element_type=N return __response_handler(request, result_graph, url=None, status=200) + elif descriptor_type == 'vnfd': + descriptor_result = client.vnfd_get(user.get_token(), descriptor_id) + element_id = request.POST.get('id', '') + util = OsmUtil() + descriptor_updated = util.add_base_node('vnfd', descriptor_result, element_type, element_id, request.POST.dict()) + result = client.vnfd_update(user.get_token(), descriptor_id, descriptor_updated) + if result['error'] == True: + return __response_handler(request, result['data'], url=None, + status=result['data']['status'] if 'status' in result['data'] else 500) + else: + parser = OsmParser() + # print nsr_object + if descriptor_type == 'vnfd': + result_graph = parser.vnfd_to_graph(descriptor_updated) + + return __response_handler(request, result_graph, url=None, status=200) + + @login_required def removeElement(request, descriptor_type=None, descriptor_id=None, element_type=None): user = osmutils.get_user(request) - project_id = user.project_id client = Client() if descriptor_type == 'nsd': descriptor_result = client.nsd_get(user.get_token(), descriptor_id) @@ -159,75 +92,63 @@ def removeElement(request, descriptor_type=None, descriptor_id=None, element_typ return __response_handler(request, result_graph, url=None, status=200) -@login_required -def updateElement(request, descriptor_type=None, descriptor_id=None, element_type=None): - user = osmutils.get_user(request) - project_id = user.project_id - client = Client() - if descriptor_type == 'nsd': - descriptor_result = client.nsd_get(user.get_token(), descriptor_id) + elif descriptor_type == 'vnfd': + descriptor_result = client.vnfd_get(user.get_token(), descriptor_id) + element_id = request.POST.get('id', '') util = OsmUtil() - payload = request.POST.dict() - if element_type == 'graph_params': - descriptor_updated = util.update_graph_params('nsd', descriptor_result, json.loads(payload['update'])) - else: - descriptor_updated = util.update_node('nsd', descriptor_result, element_type, json.loads(payload['old']), json.loads(payload['update'])) - result = client.nsd_update(user.get_token(), descriptor_id, descriptor_updated) + descriptor_updated = util.remove_node('vnfd', descriptor_result, element_type, element_id, request.POST.dict()) + result = client.vnfd_update(user.get_token(), descriptor_id, descriptor_updated) if result['error'] == True: return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500) else: parser = OsmParser() # print nsr_object - if descriptor_type == 'nsd': - result_graph = parser.nsd_to_graph(descriptor_updated) + if descriptor_type == 'vnfd': + result_graph = parser.vnfd_to_graph(descriptor_updated) + + return __response_handler(request, result_graph, url=None, status=200) - return __response_handler(request, result_graph, url=None, status=200) @login_required -def new_descriptor(request, descriptor_type=None): +def updateElement(request, descriptor_type=None, descriptor_id=None, element_type=None): user = osmutils.get_user(request) - project_id = user.project_id - page = 'descriptor_new.html' - if request.method == 'GET': - request_id = request.GET.get('id', '') + client = Client() + payload = request.POST.dict() + util = OsmUtil() - return __response_handler(request, { - 'project_id': project_id, - 'descriptor_type': descriptor_type, - 'descriptor_id': request_id, - }, page) - elif request.method == 'POST': - data_type = request.POST.get('type') - if data_type == "file": - file_uploaded = request.FILES['file'] - - try: - client = Client() - if descriptor_type == 'nsd': - result = client.nsd_onboard(user.get_token(), file_uploaded) - elif descriptor_type == 'vnfd': - result = client.vnfd_onboard(user.get_token(), file_uploaded) - else: - log.debug('Create descriptor: Unknown data type') - result = {'error': True, 'data': 'Create descriptor: Unknown data type'} - - except Exception as e: - log.exception(e) - result = {'error': True, 'data': str(e)} - else: - result = {'error': True, 'data': 'Create descriptor: Unknown data type'} + if descriptor_type == 'nsd': + descriptor_result = client.nsd_get(user.get_token(), descriptor_id) + elif descriptor_type == 'vnfd': + descriptor_result = client.vnfd_get(user.get_token(), descriptor_id) + + if element_type == 'graph_params': + descriptor_updated = util.update_graph_params(descriptor_type, descriptor_result, json.loads(payload['update'])) + else: + descriptor_updated = util.update_node(descriptor_type, descriptor_result, element_type, json.loads(payload['old']), json.loads(payload['update'])) + + if descriptor_type == 'nsd': + result = client.nsd_update(user.get_token(), descriptor_id, descriptor_updated) + elif descriptor_type == 'vnfd': + result = client.vnfd_update(user.get_token(), descriptor_id, descriptor_updated) + if result['error'] == True: + return __response_handler(request, result['data'], url=None, + status=result['data']['status'] if 'status' in result['data'] else 500) + else: + parser = OsmParser() + if descriptor_type == 'vnfd': + result_graph = parser.vnfd_to_graph(descriptor_updated) + elif descriptor_type == 'nsd': + result_graph = parser.nsd_to_graph(descriptor_updated) + return __response_handler(request, result_graph, url=None, status=200) - if result['error']: - return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500) - else: - return __response_handler(request, {}, url=None, status=200) @login_required def edit_descriptor(request, descriptor_id=None, descriptor_type=None): user = osmutils.get_user(request) project_id = user.project_id + project_name = user.project_name if request.method == 'POST': new_data = request.POST.get('text'), data_type = request.POST.get('type') @@ -255,7 +176,6 @@ def edit_descriptor(request, descriptor_id=None, descriptor_type=None): result = {'error': True, 'data': str(e)} if result['error'] == True: return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500) - else: return __response_handler(request, {}, url=None, status=200) @@ -268,7 +188,6 @@ def edit_descriptor(request, descriptor_id=None, descriptor_type=None): result = client.nsd_get(user.get_token(), descriptor_id) elif descriptor_type == 'vnfd': result = client.vnfd_get(user.get_token(), descriptor_id) - except Exception as e: log.exception(e) result = {'error': True, 'data': str(e)} @@ -281,57 +200,15 @@ def edit_descriptor(request, descriptor_id=None, descriptor_type=None): # print descriptor return render(request, page, { 'project_id': project_id, + 'project_name': project_name, 'descriptor_id': descriptor_id, 'descriptor_type': descriptor_type, 'descriptor_strings': {'descriptor_string_yaml': descriptor_string_yaml, 'descriptor_string_json': descriptor_string_json}}) - -@login_required -def get_package_files_list(request, descriptor_id, descriptor_type): - user = osmutils.get_user(request) - try: - client = Client() - if descriptor_type == 'nsd': - artifacts_res = client.nsd_artifacts(user.get_token(), descriptor_id) - elif descriptor_type == 'vnfd': - artifacts_res = client.vnf_packages_artifacts(user.get_token(), descriptor_id) - else: - return False - - files_list = yaml.load(artifacts_res['data'] if artifacts_res and artifacts_res['error'] is False else []) - result = {'files': files_list} - except Exception as e: - log.exception(e) - url = 'error.html' - result = {'error_msg': 'Unknown error.'} - return __response_handler(request, result) - - -@login_required -def download_pkg(request, descriptor_id, descriptor_type): - user = osmutils.get_user(request) - file_name = "osm_export.tar.gz" - tar_pkg = None - try: - client = Client() - if descriptor_type == 'nsd': - tar_pkg = client.get_nsd_pkg(user.get_token(), descriptor_id) - elif descriptor_type == 'vnfd': - tar_pkg = client.get_vnfd_pkg(user.get_token(), descriptor_id) - - except Exception as e: - log.exception(e) - - response = HttpResponse(content_type="application/tgz") - response["Content-Disposition"] = "attachment; filename="+ file_name - response.write(tar_pkg.getvalue()) - return response - @login_required def open_composer(request): user = osmutils.get_user(request) - project_id = user.project_id descriptor_id = request.GET.get('id') descriptor_type = request.GET.get('type') result = {} @@ -362,7 +239,6 @@ def open_composer(request): return __response_handler(request, result, 'composer.html') - def get_available_nodes(request): user = osmutils.get_user(request) params = request.GET.dict() @@ -381,13 +257,11 @@ def get_available_nodes(request): return __response_handler(request, {'descriptors': result}) - @login_required def custom_action(request, descriptor_id=None, descriptor_type=None, action_name=None): if request.method == 'GET': return globals()[action_name](request, descriptor_id, descriptor_type) - def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs): raw_content_types = request.META.get('HTTP_ACCEPT', '*/*').split(',') if 'application/json' in raw_content_types or url is None: