diff --git a/src/cisco_gnmi/client.py b/src/cisco_gnmi/client.py index 97949c0..add0b50 100755 --- a/src/cisco_gnmi/client.py +++ b/src/cisco_gnmi/client.py @@ -408,7 +408,8 @@ def subscribe_xpaths( subscription_list.subscription.extend(subscriptions) return self.subscribe([subscription_list]) - def parse_xpath_to_gnmi_path(self, xpath, origin=None): + @classmethod + def parse_xpath_to_gnmi_path(cls, xpath, origin=None): """Parses an XPath to proto.gnmi_pb2.Path. This function should be overridden by any child classes for origin logic. diff --git a/src/cisco_gnmi/nx.py b/src/cisco_gnmi/nx.py index 182b31e..1bd7271 100644 --- a/src/cisco_gnmi/nx.py +++ b/src/cisco_gnmi/nx.py @@ -289,7 +289,8 @@ def subscribe_xpaths( heartbeat_interval, ) - def parse_xpath_to_gnmi_path(self, xpath, origin=None): + @classmethod + def parse_xpath_to_gnmi_path(cls, xpath, origin=None): """Attempts to determine whether origin should be YANG (device) or DME. """ if origin is None: diff --git a/src/cisco_gnmi/xe.py b/src/cisco_gnmi/xe.py index 139f9cd..5b06d74 100644 --- a/src/cisco_gnmi/xe.py +++ b/src/cisco_gnmi/xe.py @@ -312,7 +312,8 @@ def subscribe_xpaths( prefix ) - def parse_xpath_to_gnmi_path(self, xpath, origin=None): + @classmethod + def parse_xpath_to_gnmi_path(cls, xpath, origin=None): """Naively tries to intelligently (non-sequitur!) origin Otherwise assume rfc7951 legacy is not considered @@ -323,4 +324,4 @@ def parse_xpath_to_gnmi_path(self, xpath, origin=None): origin = "openconfig" else: origin = "rfc7951" - return super(XEClient, self).parse_xpath_to_gnmi_path(xpath, origin) + return super(XEClient, cls).parse_xpath_to_gnmi_path(xpath, origin) diff --git a/src/cisco_gnmi/xr.py b/src/cisco_gnmi/xr.py index e7cfb4d..c55d6e4 100644 --- a/src/cisco_gnmi/xr.py +++ b/src/cisco_gnmi/xr.py @@ -338,7 +338,8 @@ def subscribe_xpaths( heartbeat_interval, ) - def parse_xpath_to_gnmi_path(self, xpath, origin=None): + @classmethod + def parse_xpath_to_gnmi_path(cls, xpath, origin=None): """No origin specified implies openconfig Otherwise origin is expected to be the module name """ @@ -351,9 +352,10 @@ def parse_xpath_to_gnmi_path(self, xpath, origin=None): # module name origin, xpath = xpath.split(":", 1) origin = origin.strip("/") - return super(XRClient, self).parse_xpath_to_gnmi_path(xpath, origin) + return super(XRClient, cls).parse_xpath_to_gnmi_path(xpath, origin) - def parse_cli_to_gnmi_path(self, command): + @classmethod + def parse_cli_to_gnmi_path(cls, command): """Parses a CLI command to proto.gnmi_pb2.Path. IOS XR appears to be the only OS with this functionality.