jp (pubsub): added pubsub/node/info command to retrieve node configuration
This commit is contained in:
parent
a022ae21af
commit
b9db15510f
1 changed files with 47 additions and 1 deletions
|
|
@ -25,6 +25,52 @@ from sat_frontends.jp.constants import Const as C
|
|||
__commands__ = ["Pubsub"]
|
||||
|
||||
|
||||
class NodeInfo(base.CommandBase):
|
||||
|
||||
def __init__(self, host):
|
||||
base.CommandBase.__init__(self, host, 'info', use_output=C.OUTPUT_DICT, help=_(u'retrieve node configuration'))
|
||||
self.need_loop=True
|
||||
|
||||
def add_parser_options(self):
|
||||
self.parser.add_argument("-k", "--key", type=base.unicode_decoder, action='append', dest='keys',
|
||||
help=_(u"data key to filter"))
|
||||
self.parser.add_argument("node", type=base.unicode_decoder, help=_(u"node to request"))
|
||||
self.parser.add_argument("service", type=base.unicode_decoder, nargs='?', default=u'',
|
||||
help=_(u"JID of the PubSub service (default: request profile own pubsub)"))
|
||||
|
||||
def removePrefix(self, key):
|
||||
return key[7:] if key.startswith(u"pubsub#") else key
|
||||
|
||||
def filterKey(self, key):
|
||||
return any((key == k or key == u'pubsub#' + k) for k in self.args.keys)
|
||||
|
||||
def psNodeConfigurationGetCb(self, config_dict):
|
||||
key_filter = (lambda k: True) if not self.args.keys else self.filterKey
|
||||
config_dict = {self.removePrefix(k):v for k,v in config_dict.iteritems() if key_filter(k)}
|
||||
self.output(config_dict)
|
||||
self.host.quit()
|
||||
|
||||
def psNodeConfigurationGetEb(self, failure_):
|
||||
self.disp(u"can't get node configuration: {reason}".format(
|
||||
reason=failure_), error=True)
|
||||
self.host.quit(C.EXIT_BRIDGE_ERRBACK)
|
||||
|
||||
def start(self):
|
||||
self.host.bridge.psNodeConfigurationGet(
|
||||
self.args.service,
|
||||
self.args.node,
|
||||
self.profile,
|
||||
callback=self.psNodeConfigurationGetCb,
|
||||
errback=self.psNodeConfigurationGetEb)
|
||||
|
||||
|
||||
class Node(base.CommandBase):
|
||||
subcommands = (NodeInfo,)
|
||||
|
||||
def __init__(self, host):
|
||||
super(Node, self).__init__(host, 'node', use_profile=False, help=_('node handling'))
|
||||
|
||||
|
||||
class Get(base.CommandBase):
|
||||
|
||||
def __init__(self, host):
|
||||
|
|
@ -67,7 +113,7 @@ class Get(base.CommandBase):
|
|||
|
||||
|
||||
class Pubsub(base.CommandBase):
|
||||
subcommands = (Get,)
|
||||
subcommands = (Get, Node)
|
||||
|
||||
def __init__(self, host):
|
||||
super(Pubsub, self).__init__(host, 'pubsub', use_profile=False, help=_('PubSub nodes/items management'))
|
||||
|
|
|
|||
Loading…
Reference in a new issue