Skip to content

Commit 6d8e5d7

Browse files
committed
Streaming telemetry updates
Updated telemetry proto file from out-of-date version to unmarshal telemetry data in 6.1.1. Changed naming conventions and added some example clarifications.
1 parent a9657f5 commit 6d8e5d7

File tree

4 files changed

+180
-60
lines changed

4 files changed

+180
-60
lines changed

examples/telemetry_collector.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@
88
from lib.cisco_grpc_client import CiscoGRPCClient
99
import json
1010

11+
def print_connectivity(connectivity):
12+
print connectivity
13+
14+
# Change client details to match your environment.
1115
client = CiscoGRPCClient('10.200.96.16', 57400, 100, 'mdt', 'f33dm3d4t4')
1216
subscription_id = 'sub1'
1317
recv_count = 0
14-
for segment in client.get_subscription(subscription_id):
18+
# Handle connectivity changes.
19+
client.connectivityhandler(print_connectivity)
20+
# Iterate over subscription recvs.
21+
for segment in client.getsubscription(subscription_id):
1522
recv_count += 1
1623
print json.dumps(segment, indent=4, separators=(',', ': '))
1724
print 'End Telemetry Segment'

generate_pb.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
#pip install grpcio-tools
3+
python -m grpc.tools.protoc -I. --python_out=. --grpc_python_out=. ems_grpc.proto telemetry.proto

lib/cisco_grpc_client.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import ems_grpc_pb2
44
import protobuf_json
55
import ems_grpc_pb2
6-
import telemetry_message_pb2
6+
import telemetry_pb2
77

88
class CiscoGRPCClient(object):
99
def __init__(self, host, port, timeout, user, password, creds=None, options=None):
@@ -62,7 +62,7 @@ def getconfig(self, path):
6262
objects += response.yangjson
6363
return objects
6464

65-
def get_subscription(self, sub_id):
65+
def getsubscription(self, sub_id):
6666
"""Telemetry subscription function
6767
:param sub_id: Subscription ID
6868
:type: string
@@ -71,16 +71,15 @@ def get_subscription(self, sub_id):
7171
"""
7272
sub_args = ems_grpc_pb2.CreateSubsArgs(ReqId=1, encode=3, subidstr=sub_id)
7373
stream = self._stub.CreateSubs(sub_args, timeout=self._timeout, metadata=self._metadata)
74-
self._channel.subscribe(self.connectivity_handler, True)
7574
for segment in stream:
7675
# Go straight for telemetry data
77-
telemetry_pb = telemetry_message_pb2.Telemetry()
76+
telemetry_pb = telemetry_pb2.Telemetry()
7877
telemetry_pb.ParseFromString(segment.data)
7978
# Return in JSON format instead of protobuf.
8079
yield protobuf_json.pb2json(telemetry_pb)
8180

82-
def connectivity_handler(self, result):
83-
print result
81+
def connectivityhandler(self, callback):
82+
self._channel.subscribe(callback, True)
8483

8584
def mergeconfig (self, yangjson):
8685
"""Merge grpc call equivalent of PATCH RESTconf call

0 commit comments

Comments
 (0)