def __init__(self, devices=None, commands=None, creds=None, incremental=None, max_conns=10, verbose=False, timeout=DEFAULT_TIMEOUT, production_only=True, allow_fallback=True, force_cli=False): if devices is None: raise exceptions.ImproperlyConfigured( 'You must specify some ``devices`` to interact with!') self.devices = devices self.commands = self.commands or (commands or [] ) # Always fallback to [] self.creds = creds self.incremental = incremental self.max_conns = max_conns self.verbose = verbose self.timeout = timeout if timeout != self.timeout else self.timeout # In seconds self.nd = NetDevices(production_only=production_only) self.allow_fallback = allow_fallback self.force_cli = force_cli self.curr_conns = 0 self.jobs = [] self.errors = {} self.results = self.results or {} # Always fallback to {} #self.deferrals = [] self.supported_platforms = self._validate_platforms() self._setup_jobs()
def test_os(self): self.nd = NetDevices() self.device = self.nd[DEVICE_NAME] self.device.vendor = "cisco" self.device.operatingSystem = "NXOS" self.nodename = self.device.nodeName self.assertEquals("cisco_nxos", self.device.os)
def _setup_aclsdb(nd, device_name=DEVICE_NAME, acl=ACL_NAME): """Add an explicit ACL to the dummy AclsDB""" #print 'Setting up ACLsdb: %s => %s' % (acl, device_name) dev = nd.find(device_name) if acl not in dev.acls: adb.add_acl(dev, acl) NetDevices._Singleton = None nd = NetDevices()
def setUp(self): data = cStringIO.StringIO(text_fsm_data) self.re_table = textfsm.TextFSM(data) self.assertTrue(isinstance(self.re_table, textfsm.textfsm.TextFSM)) self.nd = NetDevices() self.device = self.nd[DEVICE_NAME] self.device.vendor = "cisco" self.device.operatingSystem = "ios"
def setUp(self): self.nd = NetDevices() _setup_aclsdb(self.nd) self.q = queue.Queue(verbose=False) self.acl = ACL_NAME self.acl_list = [self.acl] self.device = self.nd.find(DEVICE_NAME) self.device_name = DEVICE_NAME self.device_list = [self.device_name] self.user = USERNAME
def main(): """A simple syntax check and dump of all we see and know!""" print 'Syntax ok.' if len(sys.argv) > 1: from trigger.netdevices import NetDevices nd = NetDevices() names = sorted(nd) for name in names: dev = nd[name] if dev.deviceType not in ('ROUTER', 'SWITCH'): continue acls = sorted(dev.acls) print '%-39s %s' % (name, ' '.join(acls))
def test_trigger(): from twisted.internet import reactor nd = NetDevices() dev = nd.find('fortinet') d = defer.Deferred() creds = tacacsrc.get_device_password(dev.nodeName) factory = TriggerSSHPtyClientFactory(d, Interactor(), creds, display_banner=None, init_commands=None, device=dev) reactor.connectTCP(dev.nodeName, 22, factory) d.addCallback(lambda x: stop_reactor()) cli.setup_tty_for_pty(reactor.run)
def __init__(self, devices=None, commands=None, creds=None, incremental=None, max_conns=10, verbose=False, timeout=DEFAULT_TIMEOUT, production_only=True, allow_fallback=True, with_errors=True, force_cli=False, with_acls=False, command_interval=0, stop_reactor=True): if devices is None: raise exceptions.ImproperlyConfigured( 'You must specify some `devices` to interact with!') self.devices = devices self.commands = self.commands or (commands or [] ) # Always fallback to [] self.creds = creds self.incremental = incremental self.max_conns = max_conns self.verbose = verbose self.timeout = timeout if timeout != self.timeout else self.timeout self.nd = NetDevices(production_only=production_only, with_acls=with_acls) self.allow_fallback = allow_fallback self.with_errors = with_errors self.force_cli = force_cli self.command_interval = command_interval self.stop_reactor = self.stop_reactor or stop_reactor self.curr_conns = 0 self.jobs = [] # Always fallback to {} for these self.errors = self.errors if self.errors is not None else {} self.results = self.results if self.results is not None else {} self.parsed_results = self.parsed_results if self.parsed_results is not None else collections.defaultdict( dict) #self.deferrals = [] self.supported_platforms = self._validate_platforms() self._setup_jobs()
def get_bulk_acls(): """ Returns a dict of acls with an applied count over settings.AUTOLOAD_BULK_THRESH """ from trigger.netdevices import NetDevices nd = NetDevices() all_acls = defaultdict(int) for dev in nd.all(): for acl in dev.acls: all_acls[acl] += 1 bulk_acls = {} for acl, count in all_acls.items(): if count >= settings.AUTOLOAD_BULK_THRESH and acl != '': bulk_acls[acl] = count return bulk_acls
from trigger.acl.models import create_tables from trigger.acl.db import AclsDB from trigger.netdevices import NetDevices from trigger.utils import get_user from trigger import exceptions import unittest # Globals DEVICE_NAME = 'test1-abc.net.aol.com' ACL_NAME = 'foo' USERNAME = get_user() # Setup create_tables() adb = AclsDB() nd = NetDevices() # These must happen after we populate the dummy AclsDB def _setup_aclsdb(nd, device_name=DEVICE_NAME, acl=ACL_NAME): """Add an explicit ACL to the dummy AclsDB""" #print 'Setting up ACLsdb: %s => %s' % (acl, device_name) dev = nd.find(device_name) if acl not in dev.acls: adb.add_acl(dev, acl) NetDevices._Singleton = None nd = NetDevices() class TestAclQueue(unittest.TestCase): def setUp(self): self.nd = NetDevices() _setup_aclsdb(self.nd)
def setUp(self): self.nd = NetDevices() self.device = self.nd[DEVICE_NAME] self.device2 = self.nd[DEVICE2_NAME] self.nodename = self.device.nodeName self.device.explicit_acls = set(['test1-abc-only'])
#!/usr/bin/env python # -*- coding: utf-8 -*- """ tests/trigger_acceptance_test.py - Acceptance test suite that verifies trigger functionality in very brief """ from trigger.netdevices import NetDevices netdevices = NetDevices(with_acls=False) nd=NetDevices(with_acls=False) print nd.values() __author__ = 'Murat Ezbiderli' __maintainer__ = 'Salesforce' __copyright__ = 'Copyright 2012-2013 Salesforce Inc.' __version__ = '2.1' import os import unittest from trigger.netdevices import NetDevices class NetDevicesTest(unittest.TestCase): def setUp(self): self.nd = NetDevices(with_acls=False) print self.nd.values() self.nodename = self.nd.keys()[0] self.nodeobj = self.nd.values()[0] def testBasics(self):
def setUp(self): self.nd = NetDevices() self.device = self.nd[DEVICE_NAME] self.nodename = self.device.nodeName
def setUp(self): self.nd = NetDevices(with_acls=False) self.nodename = self.nd.keys()[0] self.device = self.nd.values()[0]
else: #Appending the content to the master report file. report_file.seek(0) master_report.write('\n\n*** Device: ' + each_device + ' ***\n\n') master_report.write(report_file.read()) #Defining the list of devices to monitor. These are my Cisco 2691 / Juniper SRX100H / Arista vEOS devices. Replace with your own. devices = ['172.16.1.2', '172.16.1.100', '172.16.1.101'] #Extracting the running config to a file, depending on the device vendor (Cisco, Juniper or Arista). for each_device in devices: lab = NetDevices() device = lab.find(each_device) #Using Trigger to check for the device vendor. if str(device.vendor) == 'cisco': diff_function('cisco_ios', 'cisco', 'mihai', 'python', 'show running') #Using Trigger to check for the device vendor. elif str(device.vendor) == 'juniper': diff_function('juniper', 'juniper', 'mihai1', 'python1', 'show configuration') #Using Trigger to check for the device vendor. elif str(device.vendor) == 'arista': diff_function('arista_eos', 'arista', 'mihai', 'python', 'show running') else:
quickly. For example:: """ import os from trigger import tacacsrc from trigger.conf import settings from trigger.netdevices import NetDevices from trigger.contrib.commando.plugins import gather_info settings.NETDEVICES_SOURCE = os.path.abspath('het-netdevices.json') settings.DEFAULT_REALM = 'het' os.environ['TRIGGER_ENABLEPW'] = \ tacacsrc.get_device_password(settings.DEFAULT_REALM).password device_list = NetDevices() gi = GatherInfo(devices=device_list) gi.run() print(gi.results) gi = GatherInfo(devices='hsc-hmg-uu-gw') gi.run() print(gi.results) from trigger.netdevices import NetDevices from trigger.contrib.commando.plugins import gather_info nd = NetDevices() device_list = [] devs = [nd.find('hsc-hmg-uu-gw'), nd.find('hsc-hmg-vz-gw1')]
def __init__(self, verbose=True): self.nd = NetDevices() self.verbose = verbose self.login = get_user()
def setUp(self): self.router = NetDevices()['iwg1-r3.router.aol.com'] self.when = datetime(2006, 7, 24, 20, tzinfo=UTC)
def setUp(self): self.router = NetDevices()['test1-abc.net.aol.com'] self.when = datetime(2006, 7, 24, 20, tzinfo=UTC)
def __init__(self, verbose=True): self.dbconn = self._get_firewall_db_conn() self.cursor = self.dbconn.cursor() self.nd = NetDevices() self.verbose = verbose
def setUp(self): self.nd = NetDevices() self.nodename = self.nd.keys()[0] self.device = self.nd.values()[0]
def setUp(self): self.nd = NetDevices() self.nodename = self.nd.keys()[0] self.device = self.nd.values()[0] self.device.explicit_acls = set(['test1-abc-only'])
def get_netdevices(production_only=True, with_acls=True): """Shortcut to import, instantiate, and return a NetDevices instance.""" from trigger.netdevices import NetDevices return NetDevices(production_only=production_only, with_acls=with_acls)
def setUp(self): self.nd = NetDevices() self.acl = ACL_NAME self.device = self.nd.find(DEVICE_NAME) self.implicit_acls = set(['115j', 'router-protect.core'])