UnknownMethodException: connecting python client through dbus

Srinadh Penugonda <srinadh0-/[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Message-ID <[email protected]>
My host service is as below:
root@sonic:/tmp# busctl introspect org.SONiC.HostService.keyhandler  /org/SONiC/HostService/keyhandlerNAME                                TYPE      SIGNATURE RESULT/VALUE FLAGSorg.SONiC.HostService.keyhandler    interface -         -            -.key_ctl                            method    as        is           -org.freedesktop.DBus.Introspectable interface -         -            -.Introspect                         method    -         s            -root@sonic:/tmp# 


When I try to connect and execute a method, I am getting UnknownMethodException
My client code is as below:=========================================================================import dbus
import sys
class HostQuery:    def __init__(self):        try:            self._bus = dbus.SystemBus()            self._proxy = self._bus.get_object('org.SONiC.HostService',"/org/SONiC/HostService")        except Exception as e:
            msg = "Failed to connect.\nException :'{}'".format(str(e))            print(msg, file=sys.stderr)            sys.exit(1)
    def action(self, path, values):        print("in hostquery action")        res = path.split('.')        print("res is {}".format(res))        intf = dbus.Interface(self._proxy, dbus_interface=('org.SONiC.HostService.'+res[0]))        print(intf.getProperties())        ret = intf.key_ctl(values)        print("ret is {}".format(ret))        return ret
ut = HostQuery()ut.action("keyhandler.key_ctl", ["pwEncrypt", "test"])==============================================================================================
Logs shows as below:
root@sonic:/tmp# python3 hostcomm.py in hostquery actionres is ['keyhandler', 'key_ctl']Traceback (most recent call last):  File "hostcomm.py", line 27, in <module>    ut.action("keyhandler.key_ctl", ["pwEncrypt", "test"])  File "hostcomm.py", line 22, in action    ret = intf.key_ctl(values)  File "/usr/local/lib/python3.7/dist-packages/dbus/proxies.py", line 72, in __call__    return self._proxy_method(*args, **keywords)  File "/usr/local/lib/python3.7/dist-packages/dbus/proxies.py", line 147, in __call__    **keywords)  File "/usr/local/lib/python3.7/dist-packages/dbus/connection.py", line 653, in call_blocking    message, timeout)dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Traceback (most recent call last):  File "/usr/local/lib/python3.7/dist-packages/dbus/service.py", line 658, in _message_cb    (candidate_method, parent_method) = _method_lookup(self, method_name, interface_name)  File "/usr/local/lib/python3.7/dist-packages/dbus/service.py", line 248, in _method_lookup    raise UnknownMethodException('%s is not a valid method of interface %s' % (method_name, dbus_interface))dbus.exceptions.UnknownMethodException: org.freedesktop.DBus.Error.UnknownMethod: Unknown method: key_ctl is not a valid method of interface org.SONiC.HostService.keyhandler

Even getProperties() fails.
Any idea what is wrong here?



~~  Thanks, Srinadh
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.