X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=sdnctrlhandler%2Fviews.py;fp=sdnctrlhandler%2Fviews.py;h=0cd66929315e41c89a1ed60727319dfbcca65783;hb=a03da5e2aab552daa3e7ced70b3e90466c7c8b82;hp=0000000000000000000000000000000000000000;hpb=e5476c0177144dccef48642129ad29c860d3cf7e;p=osm%2FLW-UI.git diff --git a/sdnctrlhandler/views.py b/sdnctrlhandler/views.py new file mode 100644 index 0000000..0cd6692 --- /dev/null +++ b/sdnctrlhandler/views.py @@ -0,0 +1,89 @@ +# +# Copyright 2018 CNIT - Consorzio Nazionale Interuniversitario per le Telecomunicazioni +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from django.shortcuts import render, redirect +from django.contrib.auth.decorators import login_required +from django.http import JsonResponse +from lib.osm.osmclient.client import Client +import logging + +logging.basicConfig(level=logging.DEBUG) +log = logging.getLogger('view.py') + + +@login_required +def list(request, project_id): + client = Client() + result = client.sdn_list() + + result = { + 'project_id': project_id, + 'sdns': result + } + return __response_handler(request, result, 'sdn_list.html') + + +@login_required +def create(request, project_id): + result = {'project_id': project_id} + if request.method == 'GET': + return __response_handler(request, result, 'sdn_create.html') + else: + new_sdn_dict = request.POST.dict() + client = Client() + keys = ["name", + "type", + "version", + "dpid", + "ip", + "port", + "user", + "password"] + sdn_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, new_sdn_dict.items())) + sdn_data['port'] = int(sdn_data['port']) + + result = client.sdn_create(sdn_data) + + return __response_handler(request, result, 'projects:sdns:list', to_redirect=True, project_id=project_id) + + +@login_required +def delete(request, project_id, sdn_id=None): + try: + client = Client() + del_res = client.sdn_delete(sdn_id) + except Exception as e: + log.exception(e) + return __response_handler(request, {}, 'projects:sdns:list', to_redirect=True, project_id=project_id) + + +@login_required +def show(request, project_id, sdn_id=None): + client = Client() + datacenter = client.sdn_get(sdn_id) + return __response_handler(request, { + "sdn": datacenter + }, project_id=project_id) + + +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: + return JsonResponse(data_res) + elif to_redirect: + return redirect(url, *args, **kwargs) + else: + return render(request, url, data_res)