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:
parent
f07c5991ea
commit
e12e25d1bf
2 changed files with 34 additions and 44 deletions
|
|
@ -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():
|
||||
|
|
|
|||
|
|
@ -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)"))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue