diff options
author | FUJITA Tomonori <fujita.tomonori@gmail.com> | 2018-12-24 21:03:16 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@gmail.com> | 2018-12-24 21:41:54 +0900 |
commit | 28d96f985bc59f344894f2e37cea5cb1bea062e5 (patch) | |
tree | 69f9272994d7e49918912d6200bb579a03188c10 /tools | |
parent | 8e7741a0a80a1bd15a343563a29142f755c29f3f (diff) |
docs: update python gRPC API example
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/grpc/python/add_path.py | 57 | ||||
-rw-r--r-- | tools/grpc/python/get_neighbor.py | 29 |
2 files changed, 57 insertions, 29 deletions
diff --git a/tools/grpc/python/add_path.py b/tools/grpc/python/add_path.py new file mode 100644 index 00000000..1af4882f --- /dev/null +++ b/tools/grpc/python/add_path.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +from __future__ import absolute_import +from __future__ import print_function + +import grpc +from google.protobuf.any_pb2 import Any + +import gobgp_pb2 +import gobgp_pb2_grpc +import attribute_pb2 + +_TIMEOUT_SECONDS = 1000 + + +def run(): + channel = grpc.insecure_channel('localhost:50051') + stub = gobgp_pb2_grpc.GobgpApiStub(channel) + + nlri = Any() + nlri.Pack(attribute_pb2.IPAddressPrefix( + prefix_len=24, + prefix="10.0.0.0", + )) + origin = Any() + origin.Pack(attribute_pb2.OriginAttribute( + origin=2, # INCOMPLETE + )) + as_segment = attribute_pb2.AsSegment( + # type=2, # "type" causes syntax error + numbers=[100, 200], + ) + as_segment.type = 2 # SEQ + as_path = Any() + as_path.Pack(attribute_pb2.AsPathAttribute( + segments=[as_segment], + )) + next_hop = Any() + next_hop.Pack(attribute_pb2.NextHopAttribute( + next_hop="1.1.1.1", + )) + attributes = [origin, as_path, next_hop] + + stub.AddPath( + gobgp_pb2.AddPathRequest( + table_type=gobgp_pb2.GLOBAL, + path=gobgp_pb2.Path( + nlri=nlri, + pattrs=attributes, + family=gobgp_pb2.Family(afi=gobgp_pb2.Family.AFI_IP, safi=gobgp_pb2.Family.SAFI_UNICAST), + ) + ), + _TIMEOUT_SECONDS, + ) + +if __name__ == '__main__': + run() diff --git a/tools/grpc/python/get_neighbor.py b/tools/grpc/python/get_neighbor.py deleted file mode 100644 index ff94569d..00000000 --- a/tools/grpc/python/get_neighbor.py +++ /dev/null @@ -1,29 +0,0 @@ -import gobgp_pb2_grpc -import gobgp_pb2 -import sys - -import grpc -from grpc.framework.interfaces.face.face import ExpirationError - -_TIMEOUT_SECONDS = 1 - - -def run(gobgpd_addr): - channel = grpc.insecure_channel(gobgpd_addr + ':50051') - stub = gobgp_pb2_grpc.GobgpApiStub(channel) - try: - peers = stub.GetNeighbor(gobgp_pb2.GetNeighborRequest()).peers - for peer in peers: - print("BGP neighbor is %s, remote AS %d" % (peer.conf.neighbor_address, peer.conf.peer_as)) - print(" BGP version 4, remote router ID %s" % (peer.conf.id)) - print(" BGP state = %s, up for %s" % (peer.info.bgp_state, peer.timers.state.uptime)) - print(" BGP OutQ = %d, Flops = %d" % (peer.info.out_q, peer.info.flops)) - print(" Hold time is %d, keepalive interval is %d seconds" % (peer.timers.state.negotiated_hold_time, peer.timers.state.keepalive_interval)) - print(" Configured hold time is %d, keepalive interval is %d seconds" % (peer.timers.config.hold_time, peer.timers.config.keepalive_interval)) - except ExpirationError, e: - print str(e) - sys.exit(-1) - -if __name__ == '__main__': - gobgp = sys.argv[1] - run(gobgp) |