jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase

pubsub add --node and --service arguments
    pubsub_node_req add --service and a positional node argument (i.e. mandatory)
This commit is contained in:
Goffi 2017-04-27 01:01:43 +02:00
commit e12e25d1bf
2 changed files with 34 additions and 44 deletions

View file

@ -309,6 +309,15 @@ class Jp(object):
verbose_parent = self.parents['verbose'] = argparse.ArgumentParser(add_help=False)
verbose_parent.add_argument('--verbose', '-v', action='count', default=0, help=_(u"Add a verbosity level (can be used multiple times)"))
for parent_name in ('pubsub', 'pubsub_node_req'):
parent = self.parents[parent_name] = argparse.ArgumentParser(add_help=False)
parent.add_argument("-s", "--service", type=unicode_decoder, default=u'',
help=_(u"JID of the PubSub service (default: PEP service)"))
if parent_name == 'pubsub_node_req':
parent.add_argument("node", type=unicode_decoder, help=_(u"node to request"))
else:
parent.add_argument("-n", "--node", type=unicode_decoder, default=u'', help=_(u"node to request"))
def add_parser_options(self):
self.parser.add_argument('--version', action='version', version=("%(name)s %(version)s %(copyleft)s" % {'name': PROG_NAME, 'version': self.version, 'copyleft': COPYLEFT}))
@ -616,6 +625,10 @@ class CommandBase(object):
else:
assert extra_outputs is None
if 'use_pubsub' in kwargs and 'use_pubsub_node_req' in kwargs:
raise exceptions.InternalError(u"use_pubsub and use_pubsub_node_req can't be used at the same time."
u"Use the later one when node is required (else an empty string is used as default)")
# other common options
use_opts = {k:v for k,v in kwargs.iteritems() if k.startswith('use_')}
for param, do_use in use_opts.iteritems():

View file

@ -28,31 +28,15 @@ from sat_frontends.tools import jid
__commands__ = ["Pubsub"]
class NodeCommon(object):
node_required = True
def __init__(self, node_required=True):
self.node_required = node_required
def add_parser_options(self):
self.parser.add_argument("-s", "--service", type=base.unicode_decoder, default=u'',
help=_(u"JID of the PubSub service (default: PEP service)"))
if self.node_required:
self.parser.add_argument("node", type=base.unicode_decoder, help=_(u"node to request"))
else:
self.parser.add_argument("-n", "--node", type=base.unicode_decoder, default=u'', help=_(u"node to request"))
class NodeInfo(base.CommandBase, NodeCommon):
class NodeInfo(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'info', use_output=C.OUTPUT_DICT, help=_(u'retrieve node configuration'))
base.CommandBase.__init__(self, host, 'info', use_output=C.OUTPUT_DICT, use_pubsub_node_req=True, 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"))
NodeCommon.add_parser_options(self)
def removePrefix(self, key):
return key[7:] if key.startswith(u"pubsub#") else key
@ -80,18 +64,16 @@ class NodeInfo(base.CommandBase, NodeCommon):
errback=self.psNodeConfigurationGetEb)
class NodeCreate(base.CommandBase, NodeCommon):
class NodeCreate(base.CommandBase):
def __init__(self, host):
NodeCommon.__init__(self, node_required=False)
base.CommandBase.__init__(self, host, 'create', use_output=C.OUTPUT_DICT, use_verbose=True, help=_(u'create a node'))
base.CommandBase.__init__(self, host, 'create', use_output=C.OUTPUT_DICT, use_pubsub_node_req=True, use_verbose=True, help=_(u'create a node'))
self.need_loop=True
def add_parser_options(self):
self.parser.add_argument("-f", "--field", type=base.unicode_decoder, action='append', nargs=2, dest='fields',
default={}, metavar=(u"KEY", u"VALUE"), help=_(u"configuration field to set (required)"))
default={}, metavar=(u"KEY", u"VALUE"), help=_(u"configuration field to set"))
self.parser.add_argument("-F", "--full-prefix", action="store_true", help=_(u"don't prepend \"pubsub#\" prefix to field names"))
NodeCommon.add_parser_options(self)
def psNodeCreateCb(self, node_id):
if self.host.verbosity:
@ -122,15 +104,14 @@ class NodeCreate(base.CommandBase, NodeCommon):
exit_code=C.EXIT_BRIDGE_ERRBACK))
class NodeDelete(base.CommandBase, NodeCommon):
class NodeDelete(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'delete', help=_(u'delete a node'))
base.CommandBase.__init__(self, host, 'delete', use_pubsub_node_req=True, help=_(u'delete a node'))
self.need_loop=True
def add_parser_options(self):
self.parser.add_argument('-f', '--force', action='store_true', help=_(u'delete node without confirmation'))
NodeCommon.add_parser_options(self)
def psNodeDeleteCb(self):
self.disp(_(u'node deleted successfully'))
@ -160,16 +141,15 @@ class NodeDelete(base.CommandBase, NodeCommon):
exit_code=C.EXIT_BRIDGE_ERRBACK))
class NodeSet(base.CommandBase, NodeCommon):
class NodeSet(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'set', use_output=C.OUTPUT_DICT, use_verbose=True, help=_(u'set node configuration'))
base.CommandBase.__init__(self, host, 'set', use_output=C.OUTPUT_DICT, use_pubsub_node_req=True, use_verbose=True, help=_(u'set node configuration'))
self.need_loop=True
def add_parser_options(self):
self.parser.add_argument("-f", "--field", type=base.unicode_decoder, action='append', nargs=2, dest='fields',
required=True, metavar=(u"KEY", u"VALUE"), help=_(u"configuration field to set (required)"))
NodeCommon.add_parser_options(self)
def psNodeConfigurationSetCb(self):
self.disp(_(u'node configuration successful'), 1)
@ -196,14 +176,14 @@ class NodeSet(base.CommandBase, NodeCommon):
errback=self.psNodeConfigurationSetEb)
class NodeAffiliationsGet(base.CommandBase, NodeCommon):
class NodeAffiliationsGet(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'get', use_output=C.OUTPUT_DICT, help=_(u'retrieve node affiliations (for node owner)'))
base.CommandBase.__init__(self, host, 'get', use_output=C.OUTPUT_DICT, use_pubsub_node_req=True, help=_(u'retrieve node affiliations (for node owner)'))
self.need_loop=True
def add_parser_options(self):
NodeCommon.add_parser_options(self)
pass
def psNodeAffiliationsGetCb(self, affiliations):
self.output(affiliations)
@ -223,14 +203,13 @@ class NodeAffiliationsGet(base.CommandBase, NodeCommon):
errback=self.psNodeAffiliationsGetEb)
class NodeAffiliationsSet(base.CommandBase, NodeCommon):
class NodeAffiliationsSet(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'set', use_verbose=True, help=_(u'set affiliations (for node owner)'))
base.CommandBase.__init__(self, host, 'set', use_pubsub_node_req=True, use_verbose=True, help=_(u'set affiliations (for node owner)'))
self.need_loop=True
def add_parser_options(self):
NodeCommon.add_parser_options(self)
# XXX: we use optional argument syntax for a required one because list of list of 2 elements
# (uses to construct dicts) don't work with positional arguments
self.parser.add_argument("-a",
@ -277,10 +256,10 @@ class Node(base.CommandBase):
super(Node, self).__init__(host, 'node', use_profile=False, help=_('node handling'))
class Get(base.CommandBase, NodeCommon):
class Get(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'get', use_output=C.OUTPUT_LIST_XML, help=_(u'get pubsub item(s)'))
base.CommandBase.__init__(self, host, 'get', use_output=C.OUTPUT_LIST_XML, use_pubsub_node_req=True, help=_(u'get pubsub item(s)'))
self.need_loop=True
def add_parser_options(self):
@ -315,15 +294,14 @@ class Get(base.CommandBase, NodeCommon):
errback=self.psItemGetEb)
class Affiliations(base.CommandBase, NodeCommon):
class Affiliations(base.CommandBase):
def __init__(self, host):
NodeCommon.__init__(self, node_required=False)
base.CommandBase.__init__(self, host, 'affiliations', use_output=C.OUTPUT_DICT, help=_(u'retrieve all affiliations on a service'))
base.CommandBase.__init__(self, host, 'affiliations', use_output=C.OUTPUT_DICT, use_pubsub=True, help=_(u'retrieve all affiliations on a service'))
self.need_loop=True
def add_parser_options(self):
NodeCommon.add_parser_options(self)
pass
def psAffiliationsGetCb(self, affiliations):
self.output(affiliations)
@ -343,14 +321,13 @@ class Affiliations(base.CommandBase, NodeCommon):
errback=self.psAffiliationsGetEb)
class Uri(base.CommandBase, NodeCommon):
class Uri(base.CommandBase):
def __init__(self, host):
base.CommandBase.__init__(self, host, 'uri', use_profile=False, help=_(u'build URI'))
base.CommandBase.__init__(self, host, 'uri', use_profile=False, use_pubsub_node_req=True, help=_(u'build URI'))
self.need_loop=True
def add_parser_options(self):
NodeCommon.add_parser_options(self)
self.parser.add_argument("-i", "--item", type=base.unicode_decoder, help=_(u"item to link"))
self.parser.add_argument("-p", "--profile", type=base.unicode_decoder, default=C.PROF_KEY_DEFAULT, help=_(u"profile (used when no server is specified)"))