summaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@gmail.com>2018-12-24 21:03:16 +0900
committerFUJITA Tomonori <fujita.tomonori@gmail.com>2018-12-24 21:41:54 +0900
commit28d96f985bc59f344894f2e37cea5cb1bea062e5 (patch)
tree69f9272994d7e49918912d6200bb579a03188c10 /tools
parent8e7741a0a80a1bd15a343563a29142f755c29f3f (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.py57
-rw-r--r--tools/grpc/python/get_neighbor.py29
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)