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)
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)
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