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