Adds support for BBF WT-385 xPON model:
VOL-151: Framework for OLT PON Configuration Parameters
VOL-152: Framework for ONU Configuration Parameters
VOL-220: Support configuration(Create/Read/Delete) of Channel-Group,
Channel-Partition, Channel-Pair & Channel-Termination Objects
for XGS-PON
Change-Id: I992a4e03e6e7b021d7aa9a49a5f8466876c8f07c
diff --git a/ponsim/grpc_server.py b/ponsim/grpc_server.py
index cea0cc4..7ed70d5 100644
--- a/ponsim/grpc_server.py
+++ b/ponsim/grpc_server.py
@@ -23,6 +23,8 @@
add_PonSimServicer_to_server, PonSimDeviceInfo
from google.protobuf.empty_pb2 import Empty
+from voltha.protos.ponsim_pb2 import XPonSimServicer, add_XPonSimServicer_to_server
+
_ = third_party
log = structlog.get_logger()
@@ -56,19 +58,39 @@
def GetStats(self, request, context):
return self.ponsim.get_stats()
+class XPonHandler(XPonSimServicer):
+
+ def __init__(self, thread_pool, x_pon_sim):
+ self.thread_pool = thread_pool
+ self.x_pon_sim = x_pon_sim
+
+ def CreateInterface(self, request, context):
+ self.x_pon_sim.CreateInterface(request)
+ return Empty()
+
+ def UpdateInterface(self, request, context):
+ self.x_pon_sim.UpdateInterface(request)
+ return Empty()
+
+ def RemoveInterface(self, request, context):
+ self.x_pon_sim.RemoveInterface(request)
+ return Empty()
class GrpcServer(object):
- def __init__(self, port, ponsim):
+ def __init__(self, port, ponsim, x_pon_sim):
self.port = port
self.thread_pool = futures.ThreadPoolExecutor(max_workers=10)
self.server = grpc.server(self.thread_pool)
self.ponsim = ponsim
+ self.x_pon_sim = x_pon_sim
def start(self):
log.debug('starting')
handler = FlowUpdateHandler(self.thread_pool, self.ponsim)
add_PonSimServicer_to_server(handler, self.server)
+ x_pon_handler = XPonHandler(self.thread_pool, self.x_pon_sim)
+ add_XPonSimServicer_to_server(x_pon_handler, self.server)
self.server.add_insecure_port('[::]:%s' % self.port)
self.server.start()
log.info('started')
diff --git a/ponsim/main.py b/ponsim/main.py
index 1b11407..3140afd 100755
--- a/ponsim/main.py
+++ b/ponsim/main.py
@@ -31,6 +31,8 @@
from ponsim import PonSim
from realio import RealIo
+from ponsim import XPonSim
+
defs = dict(
config=os.environ.get('CONFIG', './ponsim.yml'),
grpc_port=int(os.environ.get('GRPC_PORT', 50060)),
@@ -157,6 +159,7 @@
# components
self.io = None
self.ponsim = None
+ self.x_pon_sim = None
self.grpc_server = None
self.alarm_config = dict()
@@ -182,7 +185,9 @@
self.ponsim = PonSim(self.args.onus, self.io.egress, self.alarm_config)
self.io.register_ponsim(self.ponsim)
- self.grpc_server = GrpcServer(self.args.grpc_port, self.ponsim)
+ self.x_pon_sim = XPonSim()
+
+ self.grpc_server = GrpcServer(self.args.grpc_port, self.ponsim, self.x_pon_sim)
yield self.grpc_server.start()
self.log.info('started-internal-services')
diff --git a/ponsim/ponsim.py b/ponsim/ponsim.py
index 3adcd4e..619beb1 100644
--- a/ponsim/ponsim.py
+++ b/ponsim/ponsim.py
@@ -471,3 +471,19 @@
if not isinstance(frame, Packet):
frame = Ether(frame)
self.devices[port].ingress(2, frame)
+
+class XPonSim(object):
+ def __init__(self):
+ self.log = structlog.get_logger()
+
+ def CreateInterface(self, request):
+ self.log.info("create-interface-request", interface_type = request.WhichOneof("interface_type"), data = request)
+ return
+
+ def UpdateInterface(self, request):
+ self.log.info("update-interface-request", interface_type = request.WhichOneof("interface_type"), data = request)
+ return
+
+ def RemoveInterface(self, request):
+ self.log.info("remove-interface-request", interface_type = request.WhichOneof("interface_type"), data = request)
+ return