This commit consists of:
1) Dockerizing the netconf server
2) Update proto2yang to support module imports
3) Provide a set of yang modules derived from the proto files in voltha.
These files as well as the slight mmodifications to the proto files are
provided in the experiments/netconf/proto2yang directory
4) Code to automatically pull proto files from voltha into the netconf server,
compiles them and produce the yang equivalent files.
5) Add a getvoltha netconf API to provide voltha state information (basic at
this time). There is potential to make this generic once we experiment
with additional APIs
Change-Id: I94f3a1f871b8025ad675d5f9b9b626d1be8b8d36
diff --git a/netconf/nc_rpc/rpc_factory.py b/netconf/nc_rpc/rpc_factory.py
index f3ec0cc..eb13b8d 100644
--- a/netconf/nc_rpc/rpc_factory.py
+++ b/netconf/nc_rpc/rpc_factory.py
@@ -28,6 +28,7 @@
from base.unlock import UnLock
from base.close_session import CloseSession
from base.kill_session import KillSession
+from ext.get_voltha import GetVoltha
from netconf import NSMAP, qmap
import netconf.nc_common.error as ncerror
log = structlog.get_logger()
@@ -36,7 +37,7 @@
instance = None
- def get_rpc_handler(self, rpc_node, msg, session):
+ def get_rpc_handler(self, rpc_node, msg, grpc_channel, session):
try:
msg_id = rpc_node.get('message-id')
log.info("Received-rpc-message-id", msg_id=msg_id)
@@ -59,12 +60,13 @@
class_handler = self.rpc_class_handlers.get(rpc_name, None)
if class_handler is not None:
- return class_handler(rpc_node, rpc_method, session)
+ return class_handler(rpc_node, rpc_method, grpc_channel, session)
log.error("rpc-not-implemented", rpc=rpc_name)
rpc_class_handlers = {
+ 'getvoltha' : GetVoltha,
'get-config': GetConfig,
'get': Get,
'edit-config': EditConfig,
@@ -83,3 +85,8 @@
RpcFactory.instance = RpcFactory()
return RpcFactory.instance
+
+if __name__ == '__main__':
+ fac = get_rpc_factory_instance()
+ rpc = fac.rpc_class_handlers.get('getvoltha', None)
+ print rpc(None,None,None)
\ No newline at end of file