Пример #1
0
def subscribe(channel, options, log, prog):
    try:
        import grpc
        import gnmi_pb2
    except ImportError as err:
        log.error(str(err))
        quit()

    log.debug("Create gNMI stub")
    stub = gnmi_pb2.gNMIStub(channel)

    req_iterator = gen_request( options, log )
    metadata = [('username',options.username), ('password', options.password)]

    msgs = 0
    upds = 0
    secs = 0
    start = 0

    try:
        responses = stub.Subscribe(req_iterator, options.timeout, metadata=metadata)
        for response in responses:
            if response.HasField('sync_response'):
                log.debug('Sync Response received\n'+str(response))
                secs += time.time() - start
                start = 0
                if options.stats:
                    log.info("%d updates and %d messages within %1.2f seconds", upds, msgs, secs)
                    log.info("Statistics: %5.0f upd/sec, %5.0f msg/sec", upds/secs, msgs/secs)
            elif response.HasField('error'):
                log.error('gNMI Error '+str(response.error.code)+' received\n'+str(response.error.message))
            elif response.HasField('update'):
                if start==0:
                    start=time.time()
                msgs += 1
                upds += len(response.update.update)
                if not options.stats:
                    if options.logstash:
                        log.info(response.update.update)
                    if options.output == "xpath":
                        log.info(grpc_support.xpath_output(response.update))
                    else:
                        log.info('Update received\n'+str(response))
            else:
                log.error('Unknown response received:\n'+str(response))

    except KeyboardInterrupt:
        log.info("%s stopped by user", prog)

    except grpc.RpcError as x:
        log.error("grpc.RpcError received:\n%s", x.details)

    except Exception as err:
        log.error(err)

    if (msgs>1):
        log.info("%d update messages received", msgs)
        return msgs
Пример #2
0
def get(channel, options, log, prog):
    try:
        import grpc
        import gnmi_pb2
    except ImportError as err:
        log.error(str(err))
        quit()

    log.debug("Create gNMI stub")
    stub = gnmi_pb2.gNMIStub(channel)

    req_iterator = gen_request(options, log)
    metadata = [('username', options.username), ('password', options.password)]

    msgs = 0
    upds = 0
    secs = 0
    start = 0

    try:
        response = gnmi_pb2.GetResponse()
        response = stub.Get(req_iterator, options.timeout, metadata=metadata)

#        if response.HasField('notification'):
#            log.debug('Sync Response received\n'+str(response))
#            secs += time.time() - start
#            start = 0
#            if options.stats:
#                log.info("%d updates and %d messages within %1.2f seconds", upds, msgs, secs)
#                log.info("Statistics: %5.0f upd/sec, %5.0f msg/sec", upds/secs, msgs/secs)
#        elif response.HasField('error'):
#            log.error('gNMI Error '+str(response.error.code)+' received\n'+str(response.error.message))
#        elif response.HasField('update'):
#            if start==0:
#                start=time.time()
#            msgs += 1
#            upds += len(response.update.update)
#            if not options.stats:
#                log.info('Update received\n'+str(response))
#        else:
#            log.error('Unknown response received:\n'+str(response))

    except KeyboardInterrupt:
        log.info("%s stopped by user", prog)

    except grpc.RpcError as x:
        log.error("grpc.RpcError received:\n%s", x.details)

    except Exception as err:
        log.error(err)

    if (msgs > 1):
        log.info("%d update messages received", msgs)
        return msgs

    return response
Пример #3
0
def get_capabilities(channel, options, log):
    try:
        import grpc
        import gnmi_pb2
    except ImportError as err:
        log.error(str(err))
        quit()
    stub = gnmi_pb2.gNMIStub(channel)
    metadata = [('username', options.username), ('password', options.password)]
    responses = gnmi_pb2.CapabilityResponse()
    log.info("Obtaining capabilities from " + options.server)
    responses = stub.Capabilities(gnmi_pb2.CapabilityRequest(),
                                  5,
                                  metadata=metadata)
    return responses
Пример #4
0
            log.error(
                'Disable cert validation against root certificate (InsecureSkipVerify) is not yet supported!'
            )
            # TODO: Clarify how to setup gRPC with SSLContext using verify_mode:=CERT_NONE

            cred = grpc.ssl_channel_credentials(root_certificates=None,
                                                private_key=None,
                                                certificate_chain=None)
            channel = grpc.secure_channel(options.server, cred)

    else:
        log.info("Create insecure Channel")
        channel = grpc.insecure_channel(options.server)

    log.debug("Create gNMI stub")
    stub = gnmi_pb2.gNMIStub(channel)

    req_iterator = gen_request(options)
    metadata = [('username', options.username), ('password', options.password)]

    msgs = 0
    upds = 0
    secs = 0
    start = 0

    try:
        responses = stub.Subscribe(req_iterator,
                                   options.timeout,
                                   metadata=metadata)
        for response in responses:
            if response.HasField('sync_response'):