示例#1
0
def main():
    nr = InitNornir(config_file="nornir_config.yaml", core={'num_workers': 10})
    # register the ncclient connection plugin so that host-connections have access to it
    Connections.register("ncclient", Ncclient)

    nr2 = nr.filter(name='sr1.lab')

    print_title("Loading Service Intents")
    results = nr.run(task=load_service_intents,
                     name="Load Service Intents",
                     directory="intent2/services/eline/vars")
    print_result(results, vars="stdout")

    print_title("Updating inventory host data (partial)")
    resources_to_load = set()
    for _, host in nr.inventory.hosts.items():
        resources_needed = host.get("rsc_to_populate", None)
        if resources_needed:
            for rsc in resources_needed:
                resources_to_load.add(rsc)
    results = nr.run(task=download_configs,
                     name="Load relevant configs into Inventory",
                     resources=resources_to_load)
    print_result(results, vars="stdout")

    print_title("Ensuring Service Intents")
    results = nr.run(task=ensure_services, intent_dir="intent2/services")
    print_result(results, vars="diff")
示例#2
0
def register_connections():
    """
    register nornir connection plugins
    """
    from nornir.core.connections import Connections
    from netnir.core.connection.netmiko import Netmiko
    from netnir.core.connection.netconf import Netconf

    Connections.deregister_all()
    Connections.register(name="netconf", plugin=Netconf)
    Connections.register(name="netmiko", plugin=Netmiko)
示例#3
0
def register() -> None:
    """
    Register scrapli connection plugin to nornir

    Args:
        N/A

    Returns:
        N/A

    Raises:
        N/A

    """
    if CONNECTION_NAME not in Connections.available:
        Connections.register(CONNECTION_NAME, Scrapli)
示例#4
0
def main():
    nr = InitNornir(
        config_file="nornir_config.yaml",
        core={
            'num_workers':10
        }
    )
    # register the ncclient connection plugin so that host-connections have access to it
    Connections.register("ncclient", Ncclient)

    nr2 = nr.filter(name='sr1.lab')

    results = nr.run(task=validate_intent, intent_dir="intents")
#    results = nr2.run(task=validate_intent, intent_dir="intents")

    print_title("Runbook to push intent")
    print_result(results, vars = "diff")
示例#5
0
def register_default_connection_plugins() -> None:
    Connections.register("napalm", Napalm)
    Connections.register("netmiko", Netmiko)
    Connections.register("paramiko", Paramiko)
示例#6
0
 def setup_class(cls):
     Connections.deregister_all()
     Connections.register("dummy", DummyConnectionPlugin)
     Connections.register("dummy2", DummyConnectionPlugin)
     Connections.register("dummy_no_overrides", DummyConnectionPlugin)
示例#7
0
 def test_register_already_registered_new(self):
     with pytest.raises(ConnectionPluginAlreadyRegistered):
         Connections.register("dummy", AnotherDummyConnectionPlugin)
示例#8
0
 def test_register_already_registered_same(self):
     Connections.register("dummy", DummyConnectionPlugin)
     assert Connections.available["dummy"] == DummyConnectionPlugin
示例#9
0
 def test_register_new(self):
     Connections.register("new_dummy", DummyConnectionPlugin)
     assert "new_dummy" in Connections.available
示例#10
0
 def setup_method(self, method):
     Connections.deregister_all()
     Connections.register("dummy", DummyConnectionPlugin)
     Connections.register("another_dummy", AnotherDummyConnectionPlugin)