This repository was archived by the owner on Oct 17, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Including topology example for comparison
- Loading branch information
Showing
3 changed files
with
107 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
//Example of topology | ||
syntax = "proto3"; | ||
package topology; | ||
|
||
import "google/protobuf/empty.proto"; | ||
|
||
service TopologyService { | ||
rpc GetTopology (google.protobuf.Empty) returns (Topology) {} | ||
} | ||
|
||
|
||
message Link { | ||
string link_id = 1; | ||
string source_node = 2; | ||
string target_node = 3; | ||
string source_port = 4; | ||
string target_port = 5; | ||
} | ||
|
||
message Node { | ||
string node_id = 1; | ||
repeated Port port = 2; | ||
} | ||
|
||
message Port { | ||
string port_id = 1; | ||
enum LayerProtocolName { | ||
ETH = 0; | ||
OPTICAL = 1; | ||
} | ||
LayerProtocolName layerProtocolName = 2; | ||
} | ||
|
||
message Topology { | ||
repeated Node node = 1; | ||
repeated Link link = 2; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
from __future__ import print_function | ||
|
||
import grpc | ||
|
||
import topologyService_pb2 | ||
import topologyService_pb2_grpc | ||
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 | ||
try: | ||
raw_input # Python 2 | ||
except NameError: | ||
raw_input = input # Python 3 | ||
|
||
|
||
def getTopology(): | ||
with grpc.insecure_channel('localhost:50051') as channel: | ||
stub = topologyService_pb2_grpc.TopologyServiceStub(channel) | ||
response = stub.GetTopology(google_dot_protobuf_dot_empty__pb2.Empty()) | ||
print("TopologyService client received: " + str(response) ) | ||
|
||
if __name__ == '__main__': | ||
getTopology() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
from concurrent import futures | ||
import time | ||
import logging | ||
import grpc | ||
|
||
import topologyService_pb2 | ||
import topologyService_pb2_grpc | ||
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 | ||
|
||
_ONE_DAY_IN_SECONDS = 60 * 60 * 24 | ||
|
||
class topologyService(topologyService_pb2_grpc.TopologyServiceServicer): | ||
def __init__(self): | ||
self.topology = topologyService_pb2.Topology() | ||
node1=self.topology.node.add() | ||
node1.node_id = "node1" | ||
portA = node1.port.add() | ||
portA.port_id = "node1portA" | ||
node2=self.topology.node.add() | ||
node2.node_id = "node2" | ||
portB=node2.port.add() | ||
portB.port_id = "node2portA" | ||
link=self.topology.link.add() | ||
link.link_id = "link1" | ||
link.source_node = "node1" | ||
link.target_node = "node2" | ||
link.source_port = "node1portA" | ||
link.target_port = "node2portA" | ||
|
||
def GetTopology(self, request, context): | ||
logging.debug("Get Topology") | ||
return self.topology | ||
|
||
def serve(): | ||
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) | ||
topologyService_pb2_grpc.add_TopologyServiceServicer_to_server(topologyService(), server) | ||
server.add_insecure_port('[::]:50051') | ||
logging.debug("Starting server") | ||
server.start() | ||
try: | ||
while True: | ||
time.sleep(_ONE_DAY_IN_SECONDS) | ||
except KeyboardInterrupt: | ||
server.stop(0) | ||
|
||
if __name__ == '__main__': | ||
logging.basicConfig(level=logging.DEBUG) | ||
serve() |