From 47ed12959dc1ac3d65b211f467ce23408fe36c48 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Thu, 22 Oct 2020 14:26:20 -0500 Subject: Implement module RPCs and RPC logging --- ncserver/base/modman.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ncserver/base/modman.py') 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. -- cgit v1.2.3-70-g09d2