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
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)
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)