Example #1
0
def withdraw_peer_interface(provider, crud, peer):
    """Withdraw peer interface configuration"""
    # interface configuration filter
    interfaces = oc_interfaces.Interfaces()
    peer_interface_remove_filter(interfaces, name=peer["interface"]["name"])

    # update configuration on NETCONF device
    crud.update(provider, interfaces)
Example #2
0
def deploy_peer_interface(kafka_consumer, provider, crud, asbr, peer):
    """Configure and validate peer interface"""
    # interface configuration
    interfaces = oc_interfaces.Interfaces()
    config_peer_interface(interfaces,
                          name=peer["interface"]["name"],
                          description=peer["interface"]["description"],
                          address=peer["interface"]["address"],
                          netmask=peer["interface"]["netmask"])

    # create configuration on NETCONF device
    crud.create(provider, interfaces)

    return validate_peer_interface(kafka_consumer,
                                   asbr["name"],
                                   peer["interface"]["name"],
                                   timeout=VALIDATE_TIMEOUT)
Example #3
0
def subscribe(func):
    gnmi = gNMIService()

    try:
        try:
            #Running on dev1 environment of tesuto cloud setup for Nanog75
            repository = Repository('/home/tesuto/yang/')
        except:
            #Running in a docker container started off image akshshar/nanog75-telemetry
            repository = Repository('/root/yang/')
            raise
    except Exception as e:
        print(
            "Failed to import yang models, check repository path,  aborting...."
        )
        sys.exit(1)

    provider = gNMIServiceProvider(repo=repository,
                                   address='100.96.0.14',
                                   port=57777,
                                   username='******',
                                   password='******')

    # The below will create a telemetry subscription path 'openconfig-interfaces:interfaces/interface'
    interfaces = openconfig_interfaces.Interfaces()
    interface = openconfig_interfaces.Interfaces.Interface()
    interfaces.interface.append(interface)

    network_instances = openconfig_network_instance.NetworkInstances()

    subscription = gNMISubscription()
    subscription.entity = interfaces  #network_instances

    subscription.subscription_mode = "SAMPLE"
    subscription.sample_interval = 10 * 1000000000
    subscription.suppress_redundant = False
    subscription.heartbeat_interval = 100 * 1000000000

    # Subscribe for updates in STREAM mode.
    var = gnmi.subscribe(provider, subscription, 10, "STREAM", "PROTO", func)
    # log debug messages if verbose argument specified
    if args.verbose:
        logger = logging.getLogger("ydk")
        logger.setLevel(logging.INFO)
        handler = logging.StreamHandler()
        formatter = logging.Formatter(("%(asctime)s - %(name)s - "
                                       "%(levelname)s - %(message)s"))
        handler.setFormatter(formatter)
        logger.addHandler(handler)

    # create gNMI provider
    repository = Repository(YDK_REPO_DIR + device.hostname)
    provider = gNMIServiceProvider(repo=repository,
                                   address=device.hostname,
                                   port=device.port,
                                   username=device.username,
                                   password=device.password)
    # create CRUD service
    crud = CRUDService()

    # interface configuration
    interfaces = oc_interfaces.Interfaces()
    config_peer_interface(interfaces, args.name, args.description,
                          args.address, int(args.netmask))

    # create configuration on gNMI device
    crud.create(provider, interfaces)

    sys.exit()
# End of script
Example #5
0
        logger = logging.getLogger("ydk")
        logger.setLevel(logging.DEBUG)
        handler = logging.StreamHandler()
        formatter = logging.Formatter(("%(asctime)s - %(name)s - "
                                       "%(levelname)s - %(message)s"))
        handler.setFormatter(formatter)
        logger.addHandler(handler)

    # create NETCONF provider
    provider = NetconfServiceProvider(address=device.hostname,
                                      port=device.port,
                                      username=device.username,
                                      password=device.password,
                                      protocol=device.scheme)
    # create CRUD service
    crud = CRUDService()

    interfaces = oc_interfaces.Interfaces()  # create object
    config_interfaces(interfaces,
                      name="GigabitEthernet0/0/0/0",
                      description="Peering with AS65002",
                      address_ip="192.168.0.1",
                      prefix_length=24)

    # create configuration on NETCONF device
    crud.create(provider, interfaces)

    provider.close()
    exit()
# End of script
Example #6
0
                                      password=device.password,
                                      protocol=device.scheme)

    # Instantiate codec providers with json and xml options
    json_provider = CodecServiceProvider(type='json')
    xml_provider = CodecServiceProvider(type='xml')

    # create CRUD service
    crud = CRUDService()

    # create codec service
    codec = CodecService()

    # create object
    interface_configurations = xr_ifmgr_cfg.InterfaceConfigurations()
    oc_ifaces = openconfig_interfaces.Interfaces()

    # create NETCONF operation
    try:
        _result = crud.read_config(provider, interface_configurations)
        if _result is not None:
            result_json = codec.encode(json_provider, _result)
            with open("rd_ifmgr_cfg.json", "w") as f:
                f.write(result_json)
            result_xml = codec.encode(xml_provider, _result)
            with open("rd_ifmgr_cfg.xml", "w") as f:
                f.write(result_xml)
    except YServiceProviderError as err:
        print("NETCONF FAILED with Error:")
        print(err.message.split('</error-message>')[0].split('"en">')[1])
    except YModelError as err: