Skip to content
Snippets Groups Projects
Commit 915a2428 authored by Erik Reid's avatar Erik Reid
Browse files

moved juniper to vendors.juniper

parent 440b149f
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,8 @@ import click ...@@ -8,7 +8,8 @@ import click
import jsonschema import jsonschema
from lxml import etree from lxml import etree
from brian_polling_manager.interface_stats import config, brian, errors, juniper from brian_polling_manager.interface_stats import config, brian, errors
from brian_polling_manager.interface_stats.vendors import juniper
from brian_polling_manager import influx, inventory from brian_polling_manager import influx, inventory
......
...@@ -2,63 +2,17 @@ ...@@ -2,63 +2,17 @@
# rpc: 'get-interface-information' (child elem: <extensive />) # rpc: 'get-interface-information' (child elem: <extensive />)
# cli: 'show interfaces extensive' # cli: 'show interfaces extensive'
""" """
import contextlib
import logging import logging
import time
from lxml import etree from lxml import etree
import ncclient.manager
from ncclient.devices.junos import JunosDeviceHandler
from ncclient.xml_ import NCElement
from brian_polling_manager.interface_stats.vendors import netconf
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def _remove_ns(rpc_response):
junos_dev_handler = JunosDeviceHandler(
device_params={'name': 'junos', 'local': False})
return NCElement(rpc_response, junos_dev_handler.transform_reply()) \
.remove_namespaces(rpc_response.xml)
def nc_connection(hostname, ssh_config, host_verify=True):
conn = ncclient.manager.connect(
host=hostname,
port=830,
ssh_config=ssh_config,
hostkey_verify=host_verify
# device_params={'name': 'junos'}
)
conn.async_mode = True
return conn
def rpc(router, command):
obj = router.rpc(command)
logger.info(f'sent rpc command: {etree.tostring(command)}')
# just wait for the result
while not obj.event.is_set():
logging.info('waiting for rpc reply ...')
time.sleep(.3)
return obj.reply
def netconf_rpc(router_name, ssh_config, command, host_verify=True):
with contextlib.closing(nc_connection(
hostname=router_name,
ssh_config=ssh_config,
host_verify=host_verify)) as router:
reply = rpc(router, command)
return _remove_ns(reply)
def get_interface_info_ncrpc(router_name, ssh_config, host_verify=False): def get_interface_info_ncrpc(router_name, ssh_config, host_verify=False):
request = etree.Element('get-interface-information') request = etree.Element('get-interface-information')
request.append(etree.Element('extensive')) request.append(etree.Element('extensive'))
return netconf_rpc( return netconf.netconf_rpc(
router_name=router_name, router_name=router_name,
ssh_config=ssh_config, ssh_config=ssh_config,
command=request, command=request,
......
import contextlib
import logging
import time
from lxml import etree
import ncclient.manager
from ncclient.devices.junos import JunosDeviceHandler
from ncclient.xml_ import NCElement
logger = logging.getLogger(__name__)
def _remove_ns(rpc_response):
junos_dev_handler = JunosDeviceHandler(
device_params={'name': 'junos', 'local': False})
return NCElement(rpc_response, junos_dev_handler.transform_reply()) \
.remove_namespaces(rpc_response.xml)
def _connection(hostname, ssh_config, host_verify=True):
conn = ncclient.manager.connect(
host=hostname,
port=830,
ssh_config=ssh_config,
hostkey_verify=host_verify
# device_params={'name': 'junos'}
)
conn.async_mode = True
return conn
def _rpc_response(router, command):
obj = router.rpc(command)
logger.info(f'sent rpc command: {etree.tostring(command)}')
# just wait for the result
while not obj.event.is_set():
logging.info('waiting for rpc reply ...')
time.sleep(.3)
return obj.reply
def rpc(router_name, ssh_config, command, host_verify=True):
with contextlib.closing(_connection(
hostname=router_name,
ssh_config=ssh_config,
host_verify=host_verify)) as router:
reply = _rpc_response(router, command)
return _remove_ns(reply)
import concurrent.futures import concurrent.futures
import os import os
from lxml import etree from lxml import etree
from brian_polling_manager.interface_stats import juniper from brian_polling_manager.interface_stats.vendors import juniper
ROUTERS = [ ROUTERS = [
# snapshot of https://prod-ne-sot01.geant.net/ne-sot/all_dashboard_devices.txt # snapshot of https://prod-ne-sot01.geant.net/ne-sot/all_dashboard_devices.txt
......
...@@ -19,7 +19,8 @@ from lxml import etree ...@@ -19,7 +19,8 @@ from lxml import etree
import pytest import pytest
import yaml import yaml
from brian_polling_manager.interface_stats import brian, errors, juniper, cli from brian_polling_manager.interface_stats import brian, errors, cli
from brian_polling_manager.interface_stats.vendors import juniper
from brian_polling_manager import influx, interface_stats from brian_polling_manager import influx, interface_stats
DATA_DIRNAME = os.path.join(os.path.dirname(__file__), 'data', 'interface-info-snapshots') DATA_DIRNAME = os.path.join(os.path.dirname(__file__), 'data', 'interface-info-snapshots')
...@@ -55,7 +56,7 @@ def ifc_netconf_rpc(): ...@@ -55,7 +56,7 @@ def ifc_netconf_rpc():
with open(data_filename) as f: with open(data_filename) as f:
return etree.parse(f) return etree.parse(f)
with patch('brian_polling_manager.interface_stats.juniper.netconf_rpc') as rpc: with patch('brian_polling_manager.interface_stats.vendors.juniper.netconf_rpc') as rpc:
rpc.side_effect = _mocked_netconf_rpc rpc.side_effect = _mocked_netconf_rpc
yield yield
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment