def withdraw_bgp_peer(provider, crud, peer): """Withdraw BGP peer configuration""" # BGP configuration filter bgp = oc_bgp.Bgp() bgp_peer_remove_filter(bgp, local_as=peer["as"], peer_address=peer["address"]) # update configuration on NETCONF device crud.update(provider, bgp)
def deploy_bgp_peer(kafka_consumer, provider, crud, asbr, peer): """Configure and validate BGP peer""" # BGP peer configuration bgp = oc_bgp.Bgp() config_bgp_peer(bgp, local_as=asbr["as"], peer_address=peer["address"], peer_as=peer["as"], peer_group=peer["group"]) # create configuration on NETCONF device crud.create(provider, bgp) return validate_bgp_peer(kafka_consumer, asbr["name"], peer["address"], timeout=VALIDATE_TIMEOUT)
def _get_bgp_config(): bgp_cfg = openconfig_bgp.Bgp() bgp_cfg.global_.config.as_ = 65001 ipv4_afsf = bgp_cfg.global_.afi_safis.AfiSafi() ipv4_afsf.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity() ipv4_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity() ipv4_afsf.config.enabled = True ipv6_afsf = bgp_cfg.global_.afi_safis.AfiSafi() ipv6_afsf.afi_safi_name = openconfig_bgp_types.Ipv6UnicastIdentity() ipv6_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv6UnicastIdentity() ipv6_afsf.config.enabled = True bgp_cfg.global_.afi_safis.afi_safi.append(ipv4_afsf) bgp_cfg.global_.afi_safis.afi_safi.append(ipv6_afsf) # Global config done # IPv4 Neighbor instance config nbr_ipv4 = bgp_cfg.neighbors.Neighbor() nbr_ipv4.neighbor_address = '192.168.1.1' nbr_ipv4.config.neighbor_address = '192.168.1.1' nbr_ipv4.config.peer_as = 65002 nbr_ipv4_afsf = nbr_ipv4.afi_safis.AfiSafi() nbr_ipv4_afsf.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity() nbr_ipv4_afsf.config.peer_as = 65002 nbr_ipv4_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity( ) nbr_ipv4_afsf.config.enabled = True # Create afi-safi policy instances nbr_ipv4.afi_safis.afi_safi.append(nbr_ipv4_afsf) bgp_cfg.neighbors.neighbor.append(nbr_ipv4) nbr_ipv4.parent = bgp_cfg.neighbors return bgp_cfg
def _get_bgp_config(): bgp_cfg = openconfig_bgp.Bgp() bgp_cfg.global_.config.as_ = 65001 ipv4_afsf = bgp_cfg.global_.afi_safis.AfiSafi() ipv4_afsf.afi_safi_name = openconfig_bgp_types.IPV4UNICAST() ipv4_afsf.config.afi_safi_name = openconfig_bgp_types.IPV4UNICAST() ipv4_afsf.config.enabled = True ipv6_afsf = bgp_cfg.global_.afi_safis.AfiSafi() ipv6_afsf.afi_safi_name = openconfig_bgp_types.IPV6UNICAST() ipv6_afsf.config.afi_safi_name = openconfig_bgp_types.IPV6UNICAST() ipv6_afsf.config.enabled = True bgp_cfg.global_.afi_safis.afi_safi.append(ipv4_afsf) bgp_cfg.global_.afi_safis.afi_safi.append(ipv6_afsf) # Global config done # IPv4 Neighbor instance config return bgp_cfg
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() bgp = oc_bgp.Bgp() # create object config_bgp(bgp) # add object configuration # encode and print object # print(codec.encode(provider, bgp)) exit() # End of script
from ydk.providers import NetconfServiceProvider from ydk.models.openconfig import openconfig_bgp as oc_bgp from ydk.errors import YPYModelError #The provider is the underlying implementation that connects to the device xr_provider = NetconfServiceProvider(address='xrv', port=830, username='******', password='******', protocol='ssh') #CRUDSerice provides the CRUD functions crud_service = CRUDService() #Configuration entity for BGP bgp_config = oc_bgp.Bgp() #Read and print the initial value initial_bgp = crud_service.read(xr_provider, bgp_config) print("The initial BGP ASN value is - " + str(initial_bgp.global_.config.as_)) #Set a new value if initial_bgp.global_.config.as_: bgp_config.global_.config.as_ = initial_bgp.global_.config.as_ - 1 #Delete the configuration entity so that we can create a new one crud_service.delete(xr_provider, bgp_config) else: bgp_config.global_.config.as_ = 65000 #Create the configuration crud_service.create(xr_provider, bgp_config)
#!/usr/bin/env python from ydk.services import CRUDService from ydk.providers import NetconfServiceProvider from ydk.models.openconfig import openconfig_bgp as oc_bgp if __name__ == "__main__": provider = NetconfServiceProvider(address="200.200.200.200", port=830, username='******', password='******', protocol='ssh') crud = CRUDService() # create CRUD service bgp = oc_bgp.Bgp() # create oc-bgp object bgp.global_.config.as_ = 65000 # set local AS number crud.create(provider, bgp) # create on NETCONF device provider.close() exit()
action="store_true") parser.add_argument("device", help="gNMI device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: 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 gNMI provider repository = Repository('/Users/abhirame/.ydk/pavarotti:830') provider = gNMIServiceProvider(repo=repository, address=device.hostname, username=device.username, password=device.password) # create CRUD service crud = CRUDService() bgp = oc_bgp.Bgp() config_bgp(bgp) bgp = crud.create(provider, bgp) exit() # End of script
def bgp_run(crud_service, session): # Global config bgp_cfg = openconfig_bgp.Bgp() try: crud_service.delete(session, bgp_cfg) except Exception: print('BGP config does not exist!') #set up routing policy definition routing_policy = RoutingPolicy() #first delete try: crud_service.delete(session, routing_policy) except YPYError: print('Routing policy does not exist!') pass_all_policy_defn = RoutingPolicy.PolicyDefinitions.PolicyDefinition() pass_all_policy_defn.name = 'PASS-ALL' routing_policy.policy_definitions.policy_definition.append( pass_all_policy_defn) pass_all_policy_defn._parent = routing_policy.policy_definitions bgp_cfg.global_.config.as_ = 65001 ipv4_afsf = bgp_cfg.global_.afi_safis.AfiSafi() ipv4_afsf.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity() ipv4_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity() ipv4_afsf.config.enabled = True ipv6_afsf = bgp_cfg.global_.afi_safis.AfiSafi() ipv6_afsf.afi_safi_name = openconfig_bgp_types.Ipv6UnicastIdentity() ipv6_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv6UnicastIdentity() ipv6_afsf.config.enabled = True bgp_cfg.global_.afi_safis.afi_safi.append(ipv4_afsf) bgp_cfg.global_.afi_safis.afi_safi.append(ipv6_afsf) # Global config done # IPv4 Neighbor instance config nbr_ipv4 = bgp_cfg.neighbors.Neighbor() nbr_ipv4.neighbor_address = '192.168.1.1' nbr_ipv4.config.neighbor_address = '192.168.1.1' nbr_ipv4.config.peer_as = 65002 nbr_ipv4_afsf = nbr_ipv4.afi_safis.AfiSafi() nbr_ipv4_afsf.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity() nbr_ipv4_afsf.config.peer_as = 65002 nbr_ipv4_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv4UnicastIdentity( ) nbr_ipv4_afsf.config.enabled = True # Create afi-safi policy instances nbr_ipv4_afsf.apply_policy.config.import_policy.append('PASS-ALL') nbr_ipv4_afsf.apply_policy.config.export_policy.append('PASS-ALL') nbr_ipv4.afi_safis.afi_safi.append(nbr_ipv4_afsf) bgp_cfg.neighbors.neighbor.append(nbr_ipv4) nbr_ipv4.parent = bgp_cfg.neighbors # IPv4 Neighbor instance config done crud_service.create(session, bgp_cfg) # crud_service.create(session, routing_policy) bgp_cfg_read = crud_service.read(session, bgp.Bgp()) #crud on just the neighbor # IPv6 Neighbor instance config nbr_ipv6 = bgp.Bgp.Neighbors.Neighbor() #nbr_ipv6.parent = bgp_cfg.neighbors nbr_ipv6.neighbor_address = '2001:db8:fff1::1' nbr_ipv6.config.neighbor_address = '2001:db8:fff1::1' nbr_ipv6.config.peer_as = 65002 nbr_ipv6_afsf = nbr_ipv6.afi_safis.AfiSafi() nbr_ipv6_afsf.afi_safi_name = openconfig_bgp_types.Ipv6UnicastIdentity() nbr_ipv6_afsf.config.peer_as = 65002 nbr_ipv6_afsf.config.afi_safi_name = openconfig_bgp_types.Ipv6UnicastIdentity( ) nbr_ipv6_afsf.config.enabled = True # Create afi-safi policy instances nbr_ipv6_afsf.apply_policy.config.import_policy.append('PASS-ALL') nbr_ipv6_afsf.apply_policy.config.export_policy.append('PASS-ALL') nbr_ipv6.afi_safis.afi_safi.append(nbr_ipv6_afsf) crud_service.create(session, nbr_ipv6) #now delete nbr_ipv4 crud_service.delete(session, nbr_ipv4) nbr_ipv6_filter = bgp.Bgp.Neighbors.Neighbor() nbr_ipv6_filter.neighbor_address = '2001:db8:fff1::1' nbr_ipv6_read = crud_service.read(session, nbr_ipv6_filter) # help(nbr_ipv6_read) print(nbr_ipv6_read)
help="print debugging messages", action="store_true") parser.add_argument("device", help="gNMI device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: 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) repo = Repository("/usr/local/share/ydk/0.0.0.0:50051/") # create gNMI provider provider = gNMIServiceProvider(repo, address="pavarotti:57400") # create CRUD service crud = CRUDService() bgp = openconfig_bgp.Bgp() # create object # read data from gNMI device bgp = crud.read_config(provider, bgp) process_bgp(bgp) # process object data exit() # End of script
from ydk.models.openconfig import openconfig_bgp import json def config_native(native): """Add config data to native object.""" loopback = native.interface.Loopback() loopback.name = 0 loopback.description = "PRIMARY ROUTER LOOPBACK" loopback.ip.address.primary.address = "172.16.255.1" loopback.ip.address.primary.mask = "255.255.255.255" native.interface.loopback.append(loopback) if __name__ == "__main__": with open('hosts.json', 'r') as fh: hosts = json.loads(fh.read()) host = hosts[0] provider = NetconfServiceProvider(address=host.get('host'), port=int(host.get('netconf_port')), username=host.get('username'), password=host.get('password'), protocol='ssh') crud = CRUDService() bgp = openconfig_bgp.Bgp() bgp.global_.config.as_ = 65001 bgp.global_.config.router_id = '10.0.0.1' result = crud.create(provider, bgp)