Ejemplo n.º 1
0
 def setUpClass(self):
     self.codec_provider = CodecServiceProvider()
     self.codec = CodecService()
     self.repo = Repository(get_local_repo_dir())
     self.provider = gNMIServiceProvider( self.repo, "127.0.0.1", 50051, "admin", "admin")
     self.schema = self.provider.get_session().get_root_schema()
     self.crud = CRUDService()
def run_test(device, mode, ca, call_back):

    # Create gNMI Service Provider and gNMI Service
    repo = Repository("/home/ygorelik/ydk-gen/scripts/samples/repository/192.168.122.107")
    provider = gNMIServiceProvider(repo, address=device.hostname,
                                      port=device.port,
                                      username=device.username,
                                      password=device.password,
                                      server_certificate=ca)
    gs = gNMIService()

    """Build entity for interface operational data"""
    ifc_oper_filter = ifoper.InterfaceProperties()
    dn = ifoper.InterfaceProperties.DataNodes.DataNode()
    dn.data_node_name = '"0/RP0/CPU0"'
    ifc_oper_filter.data_nodes.data_node.append(dn)

    lview = ifoper.InterfaceProperties.DataNodes.DataNode.Locationviews.Locationview()
    lview.locationview_name = '"0/RP0/CPU0"'
    dn.locationviews.locationview.append(lview)
    
    ifc = ifoper.InterfaceProperties.DataNodes.DataNode.Locationviews.Locationview.Interfaces.Interface()
    ifc.interface_name = '"Loopback10"'
    ifc.state = YFilter.read
    lview.interfaces.interface.append(ifc)

    """Build subscription"""
    subscription = gNMISubscription()
    subscription.entity = ifc_oper_filter
    subscription.suppress_redundant = False;
    subscription.subscription_mode = "SAMPLE";
    subscription.sample_interval    = 3 * 1000000000;
    subscription.heartbeat_interval = 30 * 1000000000;

    """Send sunscribe request"""
    gs.subscribe(provider, subscription, 10, mode, "PROTO", call_back);
Ejemplo n.º 3
0
    ifc_delete.interface_configuration.append(ifc)
    ifc_delete.yfilter = YFilter.delete
    reply = service.set(provider, ifc_delete)

if __name__ == "__main__":

    """Execute main program."""
    parser = ArgumentParser()
    parser.add_argument("-v", "--verbose", help="print debugging messages",
                        action="store_true")
    parser.add_argument("device",
                        help="NETCONF device (ssh://user:password@host:port)")
    args = parser.parse_args()
    device = urlparse(args.device)

    # log debug messages if verbose argument specified
    if args.verbose:
        import logging
        enable_logging(logging.DEBUG)

    # create gNMI service provider
    repo = Repository("/home/ygorelik/ydk-gen/scripts/samples/repository/192.168.122.107")
    provider = gNMIServiceProvider(repo=repo,
                                   address=device.hostname,
                                   port=device.port,
                                   username=device.username,
                                   password=device.password)
    run_test(provider)

# End of script
    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.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()

    mpls_oam = xr_mpls_oam_cfg.MplsOam()  # create object

    # delete configuration on gNMI device
    # crud.delete(provider, mpls_oam)

    exit()
# End of script
Ejemplo n.º 5
0
                        '--extra-verbose',
                        action='store_true',
                        help='Extra Verbose logs')
    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)
        if args.extra_verbose:
            os.environ['GRPC_TRACE'] = 'all'
            os.environ['GRPC_VERBOSITY'] = 'DEBUG'

    repository = Repository(args.yang_repo_location)
    provider = gNMIServiceProvider(repo=repository,
                                   address=args.grpc_ip,
                                   port=int(args.grpc_port),
                                   username=args.username,
                                   password=args.password)

    crud = CRUDService()

    bgp_ni = config_oc_bgp_ipv4()

    crud.create(provider, bgp_ni)
Ejemplo n.º 6
0
def config_bgp_ipv4(yang_repo="",
                    address="",
                    grpc_port="",
                    username="",
                    password="",
                    crud_op="add",
                    bgp={}):

    repository = Repository(yang_repo)
    provider = gNMIServiceProvider(repo=repository,
                                   address=address,
                                   port=int(grpc_port),
                                   username=username,
                                   password=password)

    gnmi_service = gNMIService()
    crud = CRUDService()

    ni = oc_ni.NetworkInstances.NetworkInstance()

    if "vrf" in list(bgp.keys()):
        ni.name = bgp["vrf"]
    else:
        print("Vrf for network Instance not specified")
        sys.exit(1)

    protocol = ni.protocols.Protocol()

    protocol.identifier = oc_policy_types.BGP()
    protocol.name = "default"
    protocol.config.identifier = oc_policy_types.BGP()
    protocol.config.name = "default"

    if "as" in list(bgp.keys()):
        protocol.bgp.global_.config.as_ = int(bgp["as"])
    else:
        print("AS for BGP instance not specified")
        sys.exit(1)

    # Fill out your BGP object properly using the Openconfig Yang Model
    # You will need to bring up the IBGP neighbor between rtr1 and rtr4

    protocol.bgp.global_.config.router_id = bgp["router_id"]
    peer_group = protocol.bgp.peer_groups.PeerGroup()
    peer_group.peer_group_name = bgp["peer-group-name"]
    peer_group.config.peer_group_name = bgp["peer-group-name"]
    peer_group.config.peer_as = int(bgp["peer-as"])
    peer_group.transport.config.local_address = bgp["peer-group-local-address"]

    pg_ipv4_afsf = peer_group.afi_safis.AfiSafi()
    pg_ipv4_afsf.afi_safi_name = oc_bgp_types.IPV4UNICAST()
    pg_ipv4_afsf.config.afi_safi_name = oc_bgp_types.IPV4UNICAST()
    pg_ipv4_afsf.config.enabled = True
    peer_group.afi_safis.afi_safi.append(pg_ipv4_afsf)
    protocol.bgp.peer_groups.peer_group.append(peer_group)

    #pdb.set_trace()
    neighbor = protocol.bgp.neighbors.Neighbor()
    neighbor.neighbor_address = bgp["neighbor"]
    neighbor.config.peer_group = bgp["peer-group-name"]
    #neighbor.config.enabled = True
    ng_ipv4_afsf = neighbor.afi_safis.AfiSafi()
    ng_ipv4_afsf.afi_safi_name = oc_bgp_types.IPV4UNICAST()
    ng_ipv4_afsf.config.afi_safi_name = oc_bgp_types.IPV4UNICAST()
    ng_ipv4_afsf.config.enabled = True
    neighbor.afi_safis.afi_safi.append(ng_ipv4_afsf)
    protocol.bgp.neighbors.neighbor.append(neighbor)

    ipv4_afsf = protocol.bgp.global_.afi_safis.AfiSafi()
    ipv4_afsf.afi_safi_name = oc_bgp_types.IPV4UNICAST()
    ipv4_afsf.config.afi_safi_name = oc_bgp_types.IPV4UNICAST()
    ipv4_afsf.config.enabled = True
    protocol.bgp.global_.afi_safis.afi_safi.append(ipv4_afsf)

    # neighbor =

    ni.protocols.protocol.append(protocol)

    if crud_op == "add":
        response = crud.create(provider, ni)
    elif crud_op == "delete":
        response = crud.delete(provider, ni)
    elif crud_op is "update":
        response = crud.update(provider, ni)
    else:
        print(
            "Invalid operation requested, allowed values =  add, update, delete"
        )
        return False
    return response
Ejemplo n.º 7
0
    formatter = logging.Formatter(
        ("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
    handler.setFormatter(formatter)
    log.addHandler(handler)


if __name__ == "__main__":
    """Main execution path"""

    enable_logging(logging.INFO)

    # create NETCONF session
    repo = Repository('/home/ygorelik/.ydk/192.168.122.169_830')
    provider = gNMIServiceProvider(repo,
                                   address="192.168.122.169",
                                   port=57400,
                                   username="******",
                                   password="******")
    # create CRUD service
    crud = CRUDService()

    # create system time object
    system_time = xr_shellutil_oper.SystemTime()

    # read system time from device
    system_time = crud.read(provider, system_time)

    # print system uptime
    print("System '%s' uptime is " % system_time.uptime.host_name +
          str(timedelta(seconds=system_time.uptime.uptime)))
Ejemplo n.º 8
0
def create_provider(repository, host, port, username, password):
    return gNMIServiceProvider(repo=repository, address=host, port=port, username=username, password=password)
    device = urlparse(args.device)

    # 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
    provider = gNMIServiceProvider(address=device.hostname,
                                   port=device.port,
                                   username=device.username,
                                   password=device.password,
                                   protocol=device.scheme)
    # create CRUD service
    crud = CRUDService()

    interface_configurations = xr_ifmgr_cfg.InterfaceConfigurations(
    )  # create object
    config_interface_configurations(
        interface_configurations)  # add object configuration

    # create configuration on gNMI device
    # crud.create(provider, interface_configurations)

    exit()
# End of script