Example #1
0
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)
Example #2
0
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)
Example #3
0
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
Example #4
0
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()
Example #8
0
                        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
Example #9
0
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)
Example #10
0
                        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
Example #11
0
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)