diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2020-10-22 14:26:20 -0500 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2020-10-22 14:26:20 -0500 |
commit | 47ed12959dc1ac3d65b211f467ce23408fe36c48 (patch) | |
tree | 477eea756170953539fc95d000658c13a544f622 /ncserver/base/modman.py | |
parent | 9eafe63c60759d9da25bfb10b927fb0699e3fd7c (diff) | |
download | netconfapk-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.py | 12 |
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. |