示例#1
0
def withdraw_bgp_peer(provider, crud, asbr, peer):
    """Withdraw BGP peer configuration"""
    # BGP configuration filter
    network_instances = oc_network_instance.NetworkInstances()
    bgp_peer_remove_filter(network_instances,
                           local_as=asbr["as"],
                           peer_address=peer["address"])

    # update configuration on NETCONF device
    crud.update(provider, network_instances)
示例#2
0
def deploy_bgp_peer(kafka_consumer, provider, crud, asbr, peer):
    """Configure and validate BGP peer"""
    # BGP peer configuration
    network_instances = oc_network_instance.NetworkInstances()
    config_bgp_peer(network_instances,
                    local_as=asbr["as"],
                    peer_address=peer["address"],
                    peer_as=peer["as"],
                    peer_group=peer["group"])

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

    return validate_bgp_peer(kafka_consumer,
                             asbr["name"],
                             peer["address"],
                             timeout=VALIDATE_TIMEOUT)
示例#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)
if __name__ == "__main__":
    """Execute main program."""
    parser = ArgumentParser()
    parser.add_argument("-v", "--verbose", help="print debugging messages",
                        action="store_true")
    args = parser.parse_args()

    # 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 codec provider
    provider = CodecServiceProvider(type="xml")

    # create codec service
    codec = CodecService()

    network_instances = oc_network_instance.NetworkInstances()
    config_mpls(network_instances)  # add object configuration

    # encode and print object
    print(codec.encode(provider, network_instances))

    exit()
# End of script