コード例 #1
0
ファイル: nso_sync.py プロジェクト: kazaia/nso-service-ui
def sync():
    print "Getting package definitions from NSO:"
    nso_packages_controller = ApiPackagesNSO(envs.get_nso_server_user(), envs.get_nso_server_password(),
                                             envs.get_nso_ip())

    for ned in db_controller.get_neds():
        ned.delete()

    data = nso_packages_controller.get_packages()

    print "Services loaded:"
    print data
コード例 #2
0
ファイル: views.py プロジェクト: kazaia/nso-service-ui
def api_services(request):
    """
        GET:
            List all cache services from NSO
        POST:
            Refresh cache getting all services from NSO
        :param request:
        :return:
        """
    # Check credentials
    if 'HTTP_AUTHORIZATION' in request.META:
        if is_token_valid(request.META['HTTP_AUTHORIZATION'].split(' ')[1]):
            if request.method == 'GET':
                try:
                    # Create a new api controller
                    nso_packages_controller = ApiPackagesNSO(envs.get_nso_server_user(), envs.get_nso_server_password(),
                                                             envs.get_nso_ip())

                    nso_services = nso_packages_controller.get_services_cache()

                    return JSONResponse(nso_services)
                except Exception as e:
                    print traceback.print_exc()
                    # return the error to web client
                    return JSONResponse({'error': e.__class__.__name__, 'message': str(e)}, status=500)

            elif request.method == 'POST':
                try:
                    for thread in threading.enumerate():
                        if thread.name == 'NSO_sync':
                            if thread.isAlive():
                                return JSONResponse('Sync is in process')
                    print "*** Launching daemon to refresh NSO data Cache ***"
                    threading.Thread(
                        name=str("NSO_sync"),
                        target=nso_sync.sync
                    ).start()
                    return JSONResponse('ok')
                except Exception as e:
                    print traceback.print_exc()
                    # return the error to web client
                    return JSONResponse({'error': e.__class__.__name__, 'message': str(e)}, status=500)

            else:
                return JSONResponse("Bad request. " + request.method + " is not supported", status=400)

        else:
            return JSONResponse("Invalid Token", status=401)
    else:
        return JSONResponse("Bad request. HTTP_AUTHORIZATION header is required", status=400)
コード例 #3
0
ファイル: views.py プロジェクト: ghoshatlht/service-launcher
def api_running_services(request, ):
    """
        GET:
            List all running services from NSO
        POST:
            Creates a new service
    :param request:
    :return:
    """
    # Check credentials
    if 'HTTP_AUTHORIZATION' in request.META:
        if is_token_valid(request.META['HTTP_AUTHORIZATION'].split(' ')[1]):
            if request.method == 'GET':
                try:

                    # Create a new api controller
                    nso_packages_controller = ApiPackagesNSO(
                        envs.get_nso_server_user(),
                        envs.get_nso_server_password(), envs.get_nso_ip())

                    # Get Services definition

                    nso_services = nso_packages_controller.get_services_cache()

                    # Create a new netconf nso controller
                    nso_controller = ApiRestNSO(
                        user=envs.get_nso_user(),
                        password=envs.get_nso_password(),
                        ip=envs.get_nso_ip(),
                        port=envs.get_nso_rest_port())
                    nso_running_services = []
                    # Assembly response
                    for service_definition in nso_services:
                        running_services = nso_controller.get_running_services(
                            service_name=service_definition['module']['name'])
                        for running_service in running_services:
                            running_service[
                                'service_key'] = service_definition['module'][
                                    'augment']['list']['key']['value']
                        nso_running_services.append({
                            'data':
                            running_services,
                            'name':
                            service_definition['module']['name']
                        })

                    return JSONResponse(nso_running_services)
                except Exception as e:
                    print traceback.print_exc()
                    # return the error to web client
                    return JSONResponse(
                        {
                            'error': e.__class__.__name__,
                            'message': str(e)
                        },
                        status=500)

            elif request.method == 'POST':
                try:
                    # Parse the json service
                    payload = json.loads(request.body)

                    # Create a new netconf nso controller
                    nso_controller = APINetconfNso(
                        user=envs.get_nso_user(),
                        password=envs.get_nso_password(),
                        ip=envs.get_nso_ip(),
                        port=envs.get_nso_netconf_port())

                    # Creates the xml from the request payload
                    service_xml = parser.json_to_nso_service_xml(payload)

                    # Send service request to NSO
                    nso_controller.send_service(service_xml)

                    return JSONResponse('ok')
                except Exception as e:
                    print traceback.print_exc()
                    # return the error to web client
                    return JSONResponse(
                        {
                            'error': e.__class__.__name__,
                            'message': str(e)
                        },
                        status=500)

            else:
                return JSONResponse("Bad request. " + request.method +
                                    " is not supported",
                                    status=400)

        else:
            return JSONResponse("Invalid Token", status=401)
    else:
        return JSONResponse(
            "Bad request. HTTP_AUTHORIZATION header is required", status=400)