X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FLW-UI.git;a=blobdiff_plain;f=projecthandler%2Fviews.py;h=144aa5b9082165b09350efcf37cec8d800ab009d;hp=0d50e109265fc9e5f6b91b965139ca765714d63f;hb=99f922f1dc8623a444930a621ce3696802d619c0;hpb=480be48e0f8582486e2e55b79a6075039f79da8e diff --git a/projecthandler/views.py b/projecthandler/views.py index 0d50e10..144aa5b 100644 --- a/projecthandler/views.py +++ b/projecthandler/views.py @@ -20,11 +20,12 @@ import logging import yaml from django.contrib.auth.decorators import login_required from django.http import HttpResponse, JsonResponse -from django.middleware.csrf import get_token from django.shortcuts import render, redirect + +from authosm.exceptions import OSMAuthException from lib.util import Util -from projecthandler.osm_model import OsmProject from lib.osm.osmclient.clientv2 import Client +import authosm.utils as osmutils logging.basicConfig(level=logging.DEBUG) @@ -39,11 +40,12 @@ def home(request): @login_required def create_new_project(request): if request.method == 'POST': + user = osmutils.get_user(request) client = Client() new_project_dict = request.POST.dict() keys = ["name"] project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, new_project_dict.items())) - result = client.project_create(request.session['token'], project_data) + result = client.project_create(user.get_token(), project_data) if isinstance(result, dict) and 'error' in result and result['error']: print result return __response_handler(request, result['data'], url=None, @@ -54,23 +56,208 @@ def create_new_project(request): @login_required def user_projects(request): + user = osmutils.get_user(request) client = Client() - result = client.project_list(request.session['token']) + result = client.project_list(user.get_token()) return render(request, 'projectlist.html', { 'projects': result['data'] if result and result['error'] is False else [], }) +def open_composer(request): + user = osmutils.get_user(request) + project_id = user.project_id + result = {'project_id': project_id, + 'vertices': [ + {"info": {"type": "vnf", "property": {"custom_label": ""}, + "group": []}, "id": "vm"}, + {"info": {"type": "vnf", "property": {"custom_label": ""}, + "group": []}, "id": "vlan"}, + {"info": {"type": "vnf", "property": {"custom_label": ""}, + "group": []}, "id": "firewall"}, + {"info": {"type": "vnf", "property": {"custom_label": ""}, + "group": []}, "id": "ping"}, + + {"info": {"type": "ns_vl", "property": {"custom_label": ""}, + "group": []}, "id": "vl1"}, + {"info": {"type": "ns_vl", "property": {"custom_label": ""}, + "group": []}, "id": "vl2"}, + {"info": {"type": "ns_vl", "property": {"custom_label": ""}, + "group": []}, "id": "vl3"}, + ], + 'edges': [ + {"source": "vm", "group": [], "target": "vl3", "view": "ns"}, + {"source": "vlan", "group": [], "target": "vl3", "view": "ns"}, + {"source": "vlan", "group": [], "target": "vl1", "view": "ns"}, + {"source": "firewall", "group": [], "target": "vl1", "view": "ns"}, + {"source": "firewall", "group": [], "target": "vl2", "view": "ns"}, + {"source": "ping", "group": [], "target": "vl2", "view": "ns"}, + ], + 'model': { + "layer": { + + "ns": { + "nodes": { + "vnf": { + "addable": { + "callback": "addNode" + }, + "removable": { + "callback": "removeNode" + }, + "expands": "vnf" + }, + "ns_vl": { + "addable": { + "callback": "addNode" + }, + "removable": { + "callback": "removeNode" + } + }, + + }, + "allowed_edges": { + "ns_vl": { + "destination": { + "vnf": { + "callback": "addLink", + "direct_edge": False, + "removable": { + "callback": "removeLink" + } + } + } + }, + "vnf": { + "destination": { + "ns_vl": { + "callback": "addLink", + "direct_edge": False, + "removable": { + "callback": "removeLink" + } + }, + + } + } + + } + }, + "vnf": { + "nodes": { + "vdu": { + "addable": { + "callback": "addNode" + }, + "removable": { + "callback": "removeNode" + } + }, + "cp": { + "addable": { + "callback": "addNode" + }, + "removable": { + "callback": "removeNode" + } + }, + + }, + "allowed_edges": { + "vdu": { + "destination": { + "cp": { + "callback": "addLink", + "direct_edge": False, + "removable": { + "callback": "removeLink" + } + } + } + }, + "cp": { + "destination": { + "vdu": { + "callback": "addLink", + "direct_edge": False, + "removable": { + "callback": "removeLink" + } + } + } + } + } + }, + "name": "OSM", + "version": 1, + "nodes": { + "vnf": { + "label": "vnf" + }, + "ns_vl": { + "label": "vl" + }, + "cp": { + "label": "cp" + }, + "vdu": { + "label": "vdu" + } + }, + "description": "osm", + "callback": { + "addNode": { + "file": "osm_controller.js", + "class": "OsmController" + }, + "removeNode": { + "file": "osm_controller.js", + "class": "OsmController" + }, + "addLink": { + "file": "osm_controller.js", + "class": "OsmController" + }, + "removeLink": { + "file": "osm_controller.js", + "class": "OsmController" + } + } + + } + }} + return __response_handler(request, result, 'project_graph_base.html') + + +def get_available_nodes(request): + + params = request.GET.dict() + nodes = { + 'ns': [{"types": [{"name": "Generic", "id": "vnf"}, + {"name": "ping", "id": "vnf"}, + {"name": "pong", "id": "vnf"}, + {"name": "hackfest1-vm", "id": "vnf"}], "category_name": "Vnf"}, + {"types": [{"name": "VL", "id": "ns_vl"}], "category_name": "VirtualLink"}], + 'vnf': [{"types": [{"name": "VDU", "id": "vdu"}], "category_name": "Vdu"}, + {"types": [{"name": "CP", "id": "cp"}], "category_name": "CP"}] + } + + return __response_handler(request, nodes[params['layer']]) + + @login_required -def open_project(request, project_id=None): +def open_project(request): + user = osmutils.get_user(request) + project_id = user.project_id try: - user = request.user + client = Client() ##TODO change with adhoc api call - nsd = client.nsd_list(request.session['token']) - vnfd = client.vnfd_list(request.session['token']) - ns = client.ns_list(request.session['token']) - vnf = client.vnf_list(request.session['token']) + nsd = client.nsd_list(user.get_token()) + vnfd = client.vnfd_list(user.get_token()) + ns = client.ns_list(user.get_token()) + vnf = client.vnf_list(user.get_token()) project_overview = { 'owner': user.username, 'name': project_id, @@ -92,9 +279,11 @@ def open_project(request, project_id=None): @login_required -def delete_project(request, project_id=None): +def delete_project(request): + user = osmutils.get_user(request) + project_id = user.project_id client = Client() - result = client.project_delete(request.session['token'], project_id) + result = client.project_delete(user.get_token(), project_id) if isinstance(result, dict) and 'error' in result and result['error']: print result return __response_handler(request, result['data'], url=None, @@ -104,14 +293,23 @@ def delete_project(request, project_id=None): @login_required -def show_descriptors(request, project_id=None, descriptor_type=None): +def switch_project(request, project_id): + user = osmutils.get_user(request) + user.switch_project(project_id) + return redirect('projects:open_project') + + +@login_required +def show_descriptors(request, descriptor_type=None): + user = osmutils.get_user(request) + project_id = user.project_id client = Client() print request.GET.dict() try: if descriptor_type == 'nsd': - descriptors = client.nsd_list(request.session['token']) + descriptors = client.nsd_list(user.get_token()) elif descriptor_type == 'vnfd': - descriptors = client.vnfd_list(request.session['token']) + descriptors = client.vnfd_list(user.get_token()) except Exception as e: log.exception(e) descriptors = [] @@ -126,14 +324,15 @@ def show_descriptors(request, project_id=None, descriptor_type=None): @login_required -def delete_descriptor(request, project_id=None, descriptor_type=None, descriptor_id=None): - +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(request.session['token'], descriptor_id) + result = client.nsd_delete(user.get_token(), descriptor_id) elif descriptor_type == 'vnfd': - result = client.vnfd_delete(request.session['token'], descriptor_id) + result = client.vnfd_delete(user.get_token(), descriptor_id) except Exception as e: log.exception(e) result = {'error': True, 'data': str(e)} @@ -142,9 +341,9 @@ def delete_descriptor(request, project_id=None, descriptor_type=None, descriptor descriptors = {} try: if descriptor_type == 'nsd': - descriptors = client.nsd_list(request.session['token']) + descriptors = client.nsd_list(user.get_token()) elif descriptor_type == 'vnfd': - descriptors = client.vnfd_list(request.session['token']) + descriptors = client.vnfd_list(user.get_token()) except Exception as e: log.exception(e) @@ -161,8 +360,9 @@ def delete_descriptor(request, project_id=None, descriptor_type=None, descriptor @login_required -def new_descriptor(request, project_id=None, descriptor_type=None): - +def new_descriptor(request, descriptor_type=None): + user = osmutils.get_user(request) + project_id = user.project_id page = 'osm/descriptor/descriptor_new.html' if request.method == 'GET': request_id = request.GET.get('id', '') @@ -181,9 +381,9 @@ def new_descriptor(request, project_id=None, descriptor_type=None): try: client = Client() if descriptor_type == 'nsd': - result = client.nsd_onboard(request.session['token'], file_uploaded) + result = client.nsd_onboard(user.get_token(), file_uploaded) elif descriptor_type == 'vnfd': - result = client.vnfd_onboard(request.session['token'], file_uploaded) + 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'} @@ -202,7 +402,9 @@ def new_descriptor(request, project_id=None, descriptor_type=None): @login_required -def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_type=None): +def edit_descriptor(request, descriptor_id=None, descriptor_type=None): + user = osmutils.get_user(request) + project_id = user.project_id if request.method == 'POST': print "edit_descriptor" new_data = request.POST.get('text'), @@ -216,14 +418,14 @@ def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_typ elif data_type == 'json': new_data = json.loads(request.POST.get('text')) print new_data - result = client.nsd_update(request.session['token'], descriptor_id, new_data) + result = client.nsd_update(user.get_token(), descriptor_id, new_data) elif descriptor_type == 'vnfd': if data_type == 'yaml': new_data = yaml.load(request.POST.get('text')) elif data_type == 'json': new_data = json.loads(request.POST.get('text')) print new_data - result = client.vnfd_update(request.session['token'], descriptor_id, new_data) + result = client.vnfd_update(user.get_token(), descriptor_id, new_data) else: log.debug('Update descriptor: Unknown data type') @@ -244,10 +446,10 @@ def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_typ try: client = Client() if descriptor_type == 'nsd': - result = client.nsd_get(request.session['token'], descriptor_id) + result = client.nsd_get(user.get_token(), descriptor_id) print result elif descriptor_type == 'vnfd': - result = client.vnfd_get(request.session['token'], descriptor_id) + result = client.vnfd_get(user.get_token(), descriptor_id) print result except Exception as e: @@ -269,14 +471,14 @@ def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_typ @login_required -def get_package_files_list(request, project_id, descriptor_id, descriptor_type): - files_list = [] +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(request.session['token'], descriptor_id) + artifacts_res = client.nsd_artifacts(user.get_token(), descriptor_id) elif descriptor_type == 'vnfd': - artifacts_res = client.vnf_packages_artifacts(request.session['token'], descriptor_id) + artifacts_res = client.vnf_packages_artifacts(user.get_token(), descriptor_id) else: return False @@ -289,15 +491,16 @@ def get_package_files_list(request, project_id, descriptor_id, descriptor_type): return __response_handler(request, result) @login_required -def download_pkg(request, project_id, descriptor_id, descriptor_type): +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(request.session['token'], descriptor_id) + tar_pkg = client.get_nsd_pkg(user.get_token(), descriptor_id) elif descriptor_type == 'vnfd': - tar_pkg = client.get_vnfd_pkg(request.session['token'], descriptor_id) + tar_pkg = client.get_vnfd_pkg(user.get_token(), descriptor_id) except Exception as e: log.exception(e) @@ -309,10 +512,10 @@ def download_pkg(request, project_id, descriptor_id, descriptor_type): @login_required -def custom_action(request, project_id=None, descriptor_id=None, descriptor_type=None, action_name=None): +def custom_action(request, descriptor_id=None, descriptor_type=None, action_name=None): if request.method == 'GET': print "Custom action: " + action_name - return globals()[action_name](request, project_id, descriptor_id, descriptor_type) + return globals()[action_name](request, descriptor_id, descriptor_type) def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):