summaryrefslogtreecommitdiff
path: root/ncserver/base/modman.py
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2020-10-22 14:26:20 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2020-10-22 14:26:20 -0500
commit47ed12959dc1ac3d65b211f467ce23408fe36c48 (patch)
tree477eea756170953539fc95d000658c13a544f622 /ncserver/base/modman.py
parent9eafe63c60759d9da25bfb10b927fb0699e3fd7c (diff)
downloadnetconfapk-47ed12959dc1ac3d65b211f467ce23408fe36c48.tar.gz
netconfapk-47ed12959dc1ac3d65b211f467ce23408fe36c48.tar.bz2
netconfapk-47ed12959dc1ac3d65b211f467ce23408fe36c48.tar.xz
netconfapk-47ed12959dc1ac3d65b211f467ce23408fe36c48.zip
Implement module RPCs and RPC logging
Diffstat (limited to 'ncserver/base/modman.py')
-rw-r--r--ncserver/base/modman.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/ncserver/base/modman.py b/ncserver/base/modman.py
index 3bf8fcb..a47fa3e 100644
--- a/ncserver/base/modman.py
+++ b/ncserver/base/modman.py
@@ -127,6 +127,7 @@ class ModuleManager:
self.imports = dict(self.M_IMPORTS)
self.library = {'ncserver.base.modman':
'{}@{}'.format(self.M_NAME, self.M_REVISION)}
+ self.rpcs = dict()
nsmap_add(self.M_PREFIX, self.M_NS)
self.logger = getLogger('base/ModuleManager')
@@ -195,6 +196,9 @@ class ModuleManager:
else:
self.imports[imname] = improps
+ if getattr(mod, 'M_RPCS', None) is not None:
+ self.rpcs.update(mod.M_RPCS)
+
self.logger.info(_("Loading module '%s' with ABI %d for namespace %s"),
name, mod.M_ABI_VERSION, mod.M_NS)
@@ -235,6 +239,14 @@ class ModuleManager:
return capabs
+ def has_rpc(self, name: str) -> bool:
+ """Determine if an RPC is implemented by a module."""
+ return name in self.rpcs
+
+ def rpc(self, name: str):
+ """Return an RPC that is implemented by a module."""
+ return self.rpcs.get(name, None)
+
def running(self, node):
"""Return running configuration information."""
# ietf-yang-library is state-only.