forked from AlexFengCisco/Telemetry_Receiver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtelemetry_grpc_dial_out_tls.py
63 lines (49 loc) · 2.01 KB
/
telemetry_grpc_dial_out_tls.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
'''
Telemetry GRPC dial out mode , no TLS
tested by Cisco IOS XR Software, Version 6.4.1
'''
from concurrent import futures
import time
import json
from google.protobuf.json_format import MessageToJson
import grpc
import telemetry_pb2
import cisco_grpc_dialout_pb2
import cisco_grpc_dialout_pb2_grpc
_ONE_DAY_IN_SECONDS = 60 * 60 * 24 #grpc time out
class gRPCMdtDialoutServicer(cisco_grpc_dialout_pb2_grpc.gRPCMdtDialoutServicer):
def __init__(self):
print("Initializing gRPCMdtDialoutServicer()")
def MdtDialout(self, message, context):
grpcPeerStr = context.peer()
grpcPeer = {}
(grpcPeerProto, grpcPeer['telemetry_node'], grpcPeer['telemetry_node_port']) = grpcPeerStr.split(":")
jsonTelemetryNode = json.dumps(grpcPeer)
print(jsonTelemetryNode)
for new_msg in message:
telemetry_msg = telemetry_pb2.Telemetry()
telemetry_msg.ParseFromString(new_msg.data)
jsonStrTelemetry = MessageToJson(telemetry_msg)
#dictTelemetry = json.loads(jsonStrTelemetry)
#print telemetry json message
print(jsonStrTelemetry)
return cisco_grpc_dialout_pb2.MdtDialoutArgs()
def serve():
with open('ems.key','rb') as f:
private_key = f.read()
with open('ems.pem','rb') as f:
certificate_chain = f.read()
#server_credentials = grpc.ssl_server_credentials(((private_key, certificate_chain,),))
server_credentials = grpc.ssl_server_credentials([(private_key, certificate_chain)])
gRPCserver = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
cisco_grpc_dialout_pb2_grpc.add_gRPCMdtDialoutServicer_to_server(gRPCMdtDialoutServicer(), gRPCserver)
#gRPCserver.add_insecure_port('10.79.99.174:50051')
gRPCserver.add_secure_port('192.168.1.128:50051',server_credentials)
gRPCserver.start()
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
gRPCserver.stop(0)
if __name__ == '__main__':
serve()