summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--API.txt2752
-rw-r--r--BUILD.txt19
-rw-r--r--Makefile6
-rw-r--r--VERSION14
-rw-r--r--ipa.spec.in5
-rw-r--r--ipalib/cli.py13
-rw-r--r--ipalib/constants.py3
-rw-r--r--ipalib/crud.py4
-rw-r--r--ipalib/frontend.py38
-rw-r--r--ipalib/plugins/batch.py14
-rw-r--r--ipalib/plugins/ping.py3
-rw-r--r--ipapython/version.py.in3
-rwxr-xr-xmakeapi238
-rw-r--r--tests/test_ipalib/test_crud.py13
-rw-r--r--tests/test_ipalib/test_frontend.py8
15 files changed, 3118 insertions, 15 deletions
diff --git a/API.txt b/API.txt
new file mode 100644
index 000000000..7f71fa1cd
--- /dev/null
+++ b/API.txt
@@ -0,0 +1,2752 @@
+command: aci_add
+args: 1,14,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('ACI name', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Str('permission', attribute=True, cli_name='permission', label=Gettext('Permission', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('group', attribute=True, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: List('permissions', validate_permissions, attribute=True, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, normalizer=_normalize_permissions, required=True)
+option: List('attrs', attribute=True, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, required=False)
+option: StrEnum('type', attribute=True, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, cli_name='memberof', label=Gettext('Member of', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('filter', attribute=True, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('subtree', attribute=True, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('targetgroup', attribute=True, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('selfaci', attribute=True, autofill=True, cli_name='self', default=False, label=Gettext('Target your own entry (self)', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('test?', autofill=True, default=False,lag('test?', autofill=True, default=False, doc=Gettext("Test the ACI syntax but don't write anything", domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: aci_del
+args: 1,0,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('ACI name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: aci_find
+args: 1,14,4
+arg: Str('criteria?')
+option: Str('aciname', attribute=True, autofill=False, cli_name='name', label=Gettext('ACI name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Str('permission', attribute=True, autofill=False, cli_name='permission', label=Gettext('Permission', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('group', attribute=True, autofill=False, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: List('permissions', validate_permissions, attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, normalizer=_normalize_permissions, query=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: StrEnum('type', attribute=True, autofill=False, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, autofill=False, cli_name='memberof', label=Gettext('Member of', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('filter', attribute=True, autofill=False, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('subtree', attribute=True, autofill=False, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('targetgroup', attribute=True, autofill=False, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Bool('selfaci', attribute=True, autofill=False, cli_name='self', default=False, label=Gettext('Target your own entry (self)', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: aci_mod
+args: 1,13,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('ACI name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('permission', attribute=True, autofill=False, cli_name='permission', label=Gettext('Permission', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('group', attribute=True, autofill=False, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: List('permissions', validate_permissions, attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, normalizer=_normalize_permissions, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, required=False)
+option: StrEnum('type', attribute=True, autofill=False, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, autofill=False, cli_name='memberof', label=Gettext('Member of', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('filter', attribute=True, autofill=False, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('subtree', attribute=True, autofill=False, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('targetgroup', attribute=True, autofill=False, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('selfaci', attribute=True, autofill=True, cli_name='self', default=False, label=Gettext('Target your own entry (self)', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: aci_rename
+args: 1,14,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('ACI name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('permission', attribute=True, autofill=False, cli_name='permission', label=Gettext('Permission', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('group', attribute=True, autofill=False, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: List('permissions', validate_permissions, attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, normalizer=_normalize_permissions, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, required=False)
+option: StrEnum('type', attribute=True, autofill=False, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, autofill=False, cli_name='memberof', label=Gettext('Member of', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('filter', attribute=True, autofill=False, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('subtree', attribute=True, autofill=False, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('targetgroup', attribute=True, autofill=False, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('selfaci', attribute=True, autofill=True, cli_name='self', default=False, label=Gettext('Target your own entry (self)', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('newname',tr('newname', doc=Gettext('New ACI name', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: aci_show
+args: 1,3,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('ACI name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountkey_add
+args: 3,7,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapautomountmapname', cli_name='automountmap', label=Gettext('Map', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountkey', attribute=True, cli_name='key', label=Gettext('Key', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: IA5Str('automountinformation', attribute=True, cli_name='info', label=Gettext('Mount information', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountkey_del
+args: 3,1,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapautomountmapname', cli_name='automountmap', label=Gettext('Map', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountkey', attribute=True, cli_name='key', label=Gettext('Key', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountkey_find
+args: 3,8,4
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapautomountmapname', cli_name='automountmap', label=Gettext('Map', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('criteria?')
+option: IA5Str('automountkey', attribute=True, autofill=False, cli_name='key', label=Gettext('Key', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: IA5Str('automountinformation', attribute=True, autofill=False, cli_name='info', label=Gettext('Mount information', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: automountkey_mod
+args: 3,8,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapautomountmapname', cli_name='automountmap', label=Gettext('Map', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountkey', attribute=True, cli_name='key', label=Gettext('Key', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: IA5Str('automountinformation', attribute=True, autofill=False, cli_name='info', label=Gettext('Mount information', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountkey_show
+args: 3,4,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapautomountmapname', cli_name='automountmap', label=Gettext('Map', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountkey', attribute=True, cli_name='key', label=Gettext('Key', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountlocation_add
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountlocation_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountlocation_find
+args: 1,6,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: automountlocation_import
+args: 2,1,1
+arg: Str('cn', attribute=True, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+arg: Str('masterfile', label=Gettext('Master file', domain='ipa', localedir=None))
+option: Flag('continue?', autofill=True, cli_name='continue', default=False,lag('continue?', autofill=True, cli_name='continue', default=False, doc=Gettext('Continous operation mode. Errors are reported but the process continues', domain='ipa', localedir=None))
+output: Output('result', None, None)
+command: automountlocation_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountlocation_tofiles
+args: 1,0,1
+arg: Str('cn', attribute=True, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('result', None, None)
+command: automountmap_add
+args: 2,6,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapname', attribute=True, cli_name='map', label=Gettext('Map', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountmap_add_indirect
+args: 2,8,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapname', attribute=True, cli_name='map', label=Gettext('Map', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Str('key', cli_name='mount', label=Gettext('Mount point', domain='ipa', localedir=None))
+option: Str('parentmap?', autofill=True, cli_name='parentmap', default=u'auto.master', label=Gettext('Parent map', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountmap_del
+args: 2,1,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapname', attribute=True, cli_name='map', label=Gettext('Map', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountmap_find
+args: 2,7,4
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('criteria?')
+option: IA5Str('automountmapname', attribute=True, autofill=False, cli_name='map', label=Gettext('Map', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: automountmap_mod
+args: 2,7,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapname', attribute=True, cli_name='map', label=Gettext('Map', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: automountmap_show
+args: 2,4,3
+arg: Str('automountlocationcn', cli_name='automountlocation', label=Gettext('Location', domain='ipa', localedir=None), query=True, required=True)
+arg: IA5Str('automountmapname', attribute=True, cli_name='map', label=Gettext('Map', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: batch
+args: 1,0,2
+arg: List('methods?', multivalue=True)
+output: Output('count', <type 'int'>, Gettext('', domain='ipa', localedir=None))
+output: Output('results', <type 'list'>, Gettext('', domain='ipa', localedir=None))
+command: cert_remove_hold
+args: 1,0,1
+arg: Str('serial_number', label=Gettext('Serial number', domain='ipa', localedir=None))
+output: Output('result', None, None)
+command: cert_request
+args: 1,3,1
+arg: File('csr', validate_csr, cli_name='csr_file', normalizer=normalize_csr)
+option: Str('principal', label=Gettext('Principal', domain='ipa', localedir=None))
+option: Str('request_type', autofill=True, default=u'pkcs10')
+option: Flag('add', autofill=True, default=False,lag('add', autofill=True, default=False, doc=Gettext("automatically add the principal if it doesn't exist", domain='ipa', localedir=None))
+output: Output('result', <type 'dict'>, Gettext('Dictionary mapping variable name to value', domain='ipa', localedir=None))
+command: cert_revoke
+args: 1,1,1
+arg: Str('serial_number', label=Gettext('Serial number', domain='ipa', localedir=None))
+option: Int('revocation_reason?', default=0, label=Gettext('Reason', domain='ipa', localedir=None), maxvalue=10, minvalue=0)
+output: Output('result', None, None)
+command: cert_show
+args: 1,1,1
+arg: Str('serial_number', label=Gettext('Serial number', domain='ipa', localedir=None))
+option: Str('out?',tr('out?', doc=Gettext('file to store certificate in', domain='ipa', localedir=None))
+output: Output('result', None, None)
+command: cert_status
+args: 1,0,1
+arg: Str('request_id', flags=['no_create', 'no_update', 'no_search'], label=Gettext('Request id', domain='ipa', localedir=None))
+output: Output('result', None, None)
+command: config_mod
+args: 0,19,3
+option: Int('ipamaxusernamelength', attribute=True, autofill=False, cli_name='maxusername', label=Gettext('Max username length', domain='ipa', localedir=None), minvalue=1, multivalue=False, required=False)
+option: IA5Str('ipahomesrootdir', attribute=True, autofill=False, cli_name='homedirectory', label=Gettext('Home directory base', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipadefaultloginshell', attribute=True, autofill=False, cli_name='defaultshell', label=Gettext('Default shell', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipadefaultprimarygroup', attribute=True, autofill=False, cli_name='defaultgroup', label=Gettext('Default users group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipadefaultemaildomain', attribute=True, autofill=False, cli_name='emaildomain', label=Gettext('Default e-mail domain', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('ipasearchtimelimit', attribute=True, autofill=False, cli_name='searchtimelimit', label=Gettext('Search time limit', domain='ipa', localedir=None), minvalue=-1, multivalue=False, required=False)
+option: Int('ipasearchrecordslimit', attribute=True, autofill=False, cli_name='searchrecordslimit', label=Gettext('Search size limit', domain='ipa', localedir=None), minvalue=-1, multivalue=False, required=False)
+option: IA5Str('ipausersearchfields', attribute=True, autofill=False, cli_name='usersearch', label=Gettext('User search fields', domain='ipa', localedir=None), multivalue=False, required=False)
+option: IA5Str('ipagroupsearchfields', attribute=True, autofill=False, cli_name='groupsearch', label='Group search fields', multivalue=False, required=False)
+option: Bool('ipamigrationenabled', attribute=True, autofill=False, cli_name='enable_migration', label=Gettext('Migration mode', domain='ipa', localedir=None), multivalue=False, required=False)
+option: List('ipagroupobjectclasses', attribute=True, autofill=False, cli_name='groupobjectclasses', label=Gettext('Default group objectclasses', domain='ipa', localedir=None), multivalue=True, required=False)
+option: List('ipauserobjectclasses', attribute=True, autofill=False, cli_name='userobjectclasses', label=Gettext('Default user objectclasses', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Int('ipapwdexpadvnotify', attribute=True, autofill=False, cli_name='pwdexpnotify', label=Gettext('Password Expiration Notification', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: config_show
+args: 0,4,3
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: cosentry_add
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='cn', label=FixMe('cn'), multivalue=False, primary_key=True, required=True)
+option: Str('krbpwdpolicyreference', attribute=True, cli_name='krbpwdpolicyreference', label=FixMe('krbpwdpolicyreference'), multivalue=False, required=True)
+option: Int('cospriority', attribute=True, cli_name='cospriority', label=FixMe('cospriority'), minvalue=0, multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: cosentry_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='cn', label=FixMe('cn'), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: cosentry_find
+args: 1,8,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='cn', label=FixMe('cn'), multivalue=False, primary_key=True, query=True, required=False)
+option: Str('krbpwdpolicyreference', attribute=True, autofill=False, cli_name='krbpwdpolicyreference', label=FixMe('krbpwdpolicyreference'), multivalue=False, query=True, required=False)
+option: Int('cospriority', attribute=True, autofill=False, cli_name='cospriority', label=FixMe('cospriority'), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: cosentry_mod
+args: 1,8,3
+arg: Str('cn', attribute=True, cli_name='cn', label=FixMe('cn'), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('krbpwdpolicyreference', attribute=True, autofill=False, cli_name='krbpwdpolicyreference', label=FixMe('krbpwdpolicyreference'), multivalue=False, required=False)
+option: Int('cospriority', attribute=True, autofill=False, cli_name='cospriority', label=FixMe('cospriority'), minvalue=0, multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: cosentry_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='cn', label=FixMe('cn'), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: delegation_add
+args: 1,7,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Delegation name', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: List('permissions', attribute=True, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, required=False)
+option: List('attrs', attribute=True, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, required=True)
+option: Str('memberof', attribute=True, cli_name='membergroup', label=Gettext('Member user group', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('group', attribute=True, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: delegation_del
+args: 1,0,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Delegation name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: delegation_find
+args: 1,8,4
+arg: Str('criteria?')
+option: Str('aciname', attribute=True, autofill=False, cli_name='name', label=Gettext('Delegation name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: List('permissions', attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, query=True, required=False)
+option: Str('memberof', attribute=True, autofill=False, cli_name='membergroup', label=Gettext('Member user group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('group', attribute=True, autofill=False, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: delegation_mod
+args: 1,7,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Delegation name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: List('permissions', attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, required=False)
+option: Str('memberof', attribute=True, autofill=False, cli_name='membergroup', label=Gettext('Member user group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('group', attribute=True, autofill=False, cli_name='group', label=Gettext('User group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: delegation_show
+args: 1,3,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Delegation name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_add
+args: 1,14,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('idnssoamname', attribute=True, cli_name='name_server', label=Gettext('Authoritative name server', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('idnssoarname', attribute=True, cli_name='admin_email', default_from=DefaultFrom(<lambda>, 'idnsname'), label=Gettext('administrator e-mail address', domain='ipa', localedir=None), multivalue=False, normalizer=_rname_normalizer, required=True)
+option: Int('idnssoaserial', attribute=True, cli_name='serial', label=Gettext('SOA serial', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoarefresh', attribute=True, cli_name='refresh', label=Gettext('SOA refresh', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaretry', attribute=True, cli_name='retry', label=Gettext('SOA retry', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaexpire', attribute=True, cli_name='expire', label=Gettext('SOA expire', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaminimum', attribute=True, cli_name='minimum', label=Gettext('SOA minimum', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('dnsttl', attribute=True, cli_name='ttl', label=Gettext('SOA time to live', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('dnsclass', attribute=True, cli_name='class', label=Gettext('SOA class', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Flag('idnsallowdynupdate', attribute=True, autofill=True, cli_name='allow_dynupdate', default=False, label=Gettext('allow dynamic update?', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('idnsupdatepolicy', attribute=True, cli_name='update_policy', label=Gettext('BIND update policy', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_add_rr
+args: 4,5,3
+arg: Str('zone', label=Gettext('Zone name', domain='ipa', localedir=None), normalizer=<lambda>)
+arg: Str('idnsname', attribute=True, cli_name='resource', default_from=<lambda>, label=Gettext('resource name', domain='ipa', localedir=None))
+arg: StrEnum('type', label=Gettext('Record type', domain='ipa', localedir=None), values=(u'A', u'AAAA', u'A6', u'AFSDB', u'CERT', u'CNAME', u'DNAME', u'DS', u'HINFO', u'KEY', u'KX', u'LOC', u'MD', u'MINFO', u'MX', u'NAPTR', u'NS', u'NSEC', u'NXT', u'PTR', u'RRSIG', u'SSHFP', u'SRV', u'TXT'))
+arg: Str('data', label=Gettext('Data', domain='ipa', localedir=None))
+option: Int('dnsttl?', attribute=True, cli_name='ttl', label=Gettext('Time to live', domain='ipa', localedir=None))
+option: StrEnum('dnsclass?', attribute=True, cli_name='class', label=Gettext('Class', domain='ipa', localedir=None), values=(u'IN', u'CS', u'CH', u'HS'))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_del
+args: 1,0,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_del_rr
+args: 4,3,3
+arg: Str('zone', label=Gettext('Zone name', domain='ipa', localedir=None), normalizer=<lambda>)
+arg: Str('idnsname', attribute=True, cli_name='resource', default_from=<lambda>, label=Gettext('Resource name', domain='ipa', localedir=None))
+arg: StrEnum('type', label=Gettext('Record type', domain='ipa', localedir=None), values=(u'A', u'AAAA', u'A6', u'AFSDB', u'CERT', u'CNAME', u'DNAME', u'DS', u'HINFO', u'KEY', u'KX', u'LOC', u'MD', u'MINFO', u'MX', u'NAPTR', u'NS', u'NSEC', u'NXT', u'PTR', u'RRSIG', u'SSHFP', u'SRV', u'TXT'))
+arg: Str('data', label=Gettext('Data', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_disable
+args: 1,0,3
+arg: Str('zone', label=Gettext('Zone name', domain='ipa', localedir=None), normalizer=<lambda>)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_enable
+args: 1,0,3
+arg: Str('zone', cli_name='zone', label=Gettext('Zone name', domain='ipa', localedir=None), normalizer=<lambda>)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_find
+args: 1,15,4
+arg: Str('criteria?')
+option: Str('idnsname', attribute=True, autofill=False, cli_name='name', label=Gettext('Zone', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('idnssoamname', attribute=True, autofill=False, cli_name='name_server', label=Gettext('Authoritative name server', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('idnssoarname', attribute=True, autofill=False, cli_name='admin_email', default_from=DefaultFrom(<lambda>, 'idnsname'), label=Gettext('administrator e-mail address', domain='ipa', localedir=None), multivalue=False, normalizer=_rname_normalizer, query=True, required=False)
+option: Int('idnssoaserial', attribute=True, autofill=False, cli_name='serial', label=Gettext('SOA serial', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoarefresh', attribute=True, autofill=False, cli_name='refresh', label=Gettext('SOA refresh', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoaretry', attribute=True, autofill=False, cli_name='retry', label=Gettext('SOA retry', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoaexpire', attribute=True, autofill=False, cli_name='expire', label=Gettext('SOA expire', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoaminimum', attribute=True, autofill=False, cli_name='minimum', label=Gettext('SOA minimum', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('dnsttl', attribute=True, autofill=False, cli_name='ttl', label=Gettext('SOA time to live', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: StrEnum('dnsclass', attribute=True, autofill=False, cli_name='class', label=Gettext('SOA class', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Bool('idnsallowdynupdate', attribute=True, autofill=False, cli_name='allow_dynupdate', default=False, label=Gettext('allow dynamic update?', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('idnsupdatepolicy', attribute=True, autofill=False, cli_name='update_policy', label=Gettext('BIND update policy', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: dns_find_rr
+args: 2,6,4
+arg: Str('zone', label=Gettext('Zone name', domain='ipa', localedir=None), normalizer=<lambda>)
+arg: Str('criteria?', cli_name='criteria', label=Gettext('Search criteria', domain='ipa', localedir=None))
+option: Str('idnsname?', cli_name='resource', default_from=<lambda>, label=Gettext('Resource name', domain='ipa', localedir=None))
+option: StrEnum('type?', label=Gettext('Record type', domain='ipa', localedir=None), values=(u'A', u'AAAA', u'A6', u'AFSDB', u'CERT', u'CNAME', u'DNAME', u'DS', u'HINFO', u'KEY', u'KX', u'LOC', u'MD', u'MINFO', u'MX', u'NAPTR', u'NS', u'NSEC', u'NXT', u'PTR', u'RRSIG', u'SSHFP', u'SRV', u'TXT'))
+option: Str('data?', label=Gettext('type-specific data', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: dns_mod
+args: 1,14,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('idnssoamname', attribute=True, autofill=False, cli_name='name_server', label=Gettext('Authoritative name server', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('idnssoarname', attribute=True, autofill=False, cli_name='admin_email', default_from=DefaultFrom(<lambda>, 'idnsname'), label=Gettext('administrator e-mail address', domain='ipa', localedir=None), multivalue=False, normalizer=_rname_normalizer, required=False)
+option: Int('idnssoaserial', attribute=True, autofill=False, cli_name='serial', label=Gettext('SOA serial', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoarefresh', attribute=True, autofill=False, cli_name='refresh', label=Gettext('SOA refresh', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaretry', attribute=True, autofill=False, cli_name='retry', label=Gettext('SOA retry', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaexpire', attribute=True, autofill=False, cli_name='expire', label=Gettext('SOA expire', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaminimum', attribute=True, autofill=False, cli_name='minimum', label=Gettext('SOA minimum', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('dnsttl', attribute=True, autofill=False, cli_name='ttl', label=Gettext('SOA time to live', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('dnsclass', attribute=True, autofill=False, cli_name='class', label=Gettext('SOA class', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Flag('idnsallowdynupdate', attribute=True, autofill=True, cli_name='allow_dynupdate', default=False, label=Gettext('allow dynamic update?', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('idnsupdatepolicy', attribute=True, autofill=False, cli_name='update_policy', label=Gettext('BIND update policy', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_resolve
+args: 1,0,3
+arg: Str('hostname', label=Gettext('Hostname', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_show
+args: 1,3,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dns_show_rr
+args: 2,3,3
+arg: Str('zone', label=Gettext('Zone name', domain='ipa', localedir=None), normalizer=<lambda>)
+arg: Str('idnsname', cli_name='resource', label=Gettext('Resource name', domain='ipa', localedir=None), normalizer=<lambda>)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnsrecord_add
+args: 2,45,3
+arg: Str('dnszoneidnsname', cli_name='dnszone', label=Gettext('Zone name', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Record name', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Int('dnsttl', attribute=True, cli_name='ttl', label=Gettext('Time to live', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('dnsclass', attribute=True, cli_name='class', label=Gettext('Class', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('arecord?', _validate_ipaddr, attribute=True, cli_name='a_rec',ist('arecord?', _validate_ipaddr, attribute=True, cli_name='a_rec', doc='comma-separated list of A records', label='A record', multivalue=True)
+option: List('aaaarecord?', _validate_ipaddr, attribute=True, cli_name='aaaa_rec',ist('aaaarecord?', _validate_ipaddr, attribute=True, cli_name='aaaa_rec', doc='comma-separated list of AAAA records', label='AAAA record', multivalue=True)
+option: List('a6record?', attribute=True, cli_name='a6_rec',ist('a6record?', attribute=True, cli_name='a6_rec', doc='comma-separated list of A6 records', label='A6 record', multivalue=True)
+option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec',ist('afsdbrecord?', attribute=True, cli_name='afsdb_rec', doc='comma-separated list of AFSDB records', label='AFSDB record', multivalue=True)
+option: List('aplrecord?', _validate_ipnet, attribute=True, cli_name='apl_rec',ist('aplrecord?', _validate_ipnet, attribute=True, cli_name='apl_rec', doc='comma-separated list of APL records', label='APL record', multivalue=True)
+option: List('certrecord?', attribute=True, cli_name='cert_rec',ist('certrecord?', attribute=True, cli_name='cert_rec', doc='comma-separated list of CERT records', label='CERT record', multivalue=True)
+option: List('cnamerecord?', attribute=True, cli_name='cname_rec',ist('cnamerecord?', attribute=True, cli_name='cname_rec', doc='comma-separated list of CNAME records', label='CNAME record', multivalue=True)
+option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec',ist('dhcidrecord?', attribute=True, cli_name='dhcid_rec', doc='comma-separated list of DHCID records', label='DHCID record', multivalue=True)
+option: List('dlvrecord?', attribute=True, cli_name='dlv_rec',ist('dlvrecord?', attribute=True, cli_name='dlv_rec', doc='comma-separated list of DLV records', label='DLV record', multivalue=True)
+option: List('dnamerecord?', attribute=True, cli_name='dname_rec',ist('dnamerecord?', attribute=True, cli_name='dname_rec', doc='comma-separated list of DNAME records', label='DNAME record', multivalue=True)
+option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec',ist('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', doc='comma-separated list of DNSKEY records', label='DNSKEY record', multivalue=True)
+option: List('dsrecord?', attribute=True, cli_name='ds_rec',ist('dsrecord?', attribute=True, cli_name='ds_rec', doc='comma-separated list of DS records', label='DS record', multivalue=True)
+option: List('hinforecord?', attribute=True, cli_name='hinfo_rec',ist('hinforecord?', attribute=True, cli_name='hinfo_rec', doc='comma-separated list of HINFO records', label='HINFO record', multivalue=True)
+option: List('hiprecord?', attribute=True, cli_name='hip_rec',ist('hiprecord?', attribute=True, cli_name='hip_rec', doc='comma-separated list of HIP records', label='HIP record', multivalue=True)
+option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec',ist('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', doc='comma-separated list of IPSECKEY records', label='IPSECKEY record', multivalue=True)
+option: List('keyrecord?', attribute=True, cli_name='key_rec',ist('keyrecord?', attribute=True, cli_name='key_rec', doc='comma-separated list of KEY records', label='KEY record', multivalue=True)
+option: List('kxrecord?', attribute=True, cli_name='kx_rec',ist('kxrecord?', attribute=True, cli_name='kx_rec', doc='comma-separated list of KX records', label='KX record', multivalue=True)
+option: List('locrecord?', attribute=True, cli_name='loc_rec',ist('locrecord?', attribute=True, cli_name='loc_rec', doc='comma-separated list of LOC records', label='LOC record', multivalue=True)
+option: List('mdrecord?', attribute=True, cli_name='md_rec',ist('mdrecord?', attribute=True, cli_name='md_rec', doc='comma-separated list of MD records', label='MD record', multivalue=True)
+option: List('minforecord?', attribute=True, cli_name='minfo_rec',ist('minforecord?', attribute=True, cli_name='minfo_rec', doc='comma-separated list of MINFO records', label='MINFO record', multivalue=True)
+option: List('mxrecord?', attribute=True, cli_name='mx_rec',ist('mxrecord?', attribute=True, cli_name='mx_rec', doc='comma-separated list of MX records', label='MX record', multivalue=True)
+option: List('naptrrecord?', attribute=True, cli_name='naptr_rec',ist('naptrrecord?', attribute=True, cli_name='naptr_rec', doc='comma-separated list of NAPTR records', label='NAPTR record', multivalue=True)
+option: List('nsrecord?', attribute=True, cli_name='ns_rec',ist('nsrecord?', attribute=True, cli_name='ns_rec', doc='comma-separated list of NS records', label='NS record', multivalue=True)
+option: List('nsecrecord?', attribute=True, cli_name='nsec_rec',ist('nsecrecord?', attribute=True, cli_name='nsec_rec', doc='comma-separated list of NSEC records', label='NSEC record', multivalue=True)
+option: List('nsec3record?', attribute=True, cli_name='nsec3_rec',ist('nsec3record?', attribute=True, cli_name='nsec3_rec', doc='comma-separated list of NSEC3 records', label='NSEC3 record', multivalue=True)
+option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec',ist('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', doc='comma-separated list of NSEC3PARAM records', label='NSEC3PARAM record', multivalue=True)
+option: List('nxtrecord?', attribute=True, cli_name='nxt_rec',ist('nxtrecord?', attribute=True, cli_name='nxt_rec', doc='comma-separated list of NXT records', label='NXT record', multivalue=True)
+option: List('ptrrecord?', attribute=True, cli_name='ptr_rec',ist('ptrrecord?', attribute=True, cli_name='ptr_rec', doc='comma-separated list of PTR records', label='PTR record', multivalue=True)
+option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec',ist('rrsigrecord?', attribute=True, cli_name='rrsig_rec', doc='comma-separated list of RRSIG records', label='RRSIG record', multivalue=True)
+option: List('rprecord?', attribute=True, cli_name='rp_rec',ist('rprecord?', attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', label='RP record', multivalue=True)
+option: List('sigrecord?', attribute=True, cli_name='sig_rec',ist('sigrecord?', attribute=True, cli_name='sig_rec', doc='comma-separated list of SIG records', label='SIG record', multivalue=True)
+option: List('spfrecord?', attribute=True, cli_name='spf_rec',ist('spfrecord?', attribute=True, cli_name='spf_rec', doc='comma-separated list of SPF records', label='SPF record', multivalue=True)
+option: List('srvrecord?', attribute=True, cli_name='srv_rec',ist('srvrecord?', attribute=True, cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV record', multivalue=True)
+option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec',ist('sshfprecord?', attribute=True, cli_name='sshfp_rec', doc='comma-separated list of SSHFP records', label='SSHFP record', multivalue=True)
+option: List('tarecord?', attribute=True, cli_name='ta_rec',ist('tarecord?', attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', label='TA record', multivalue=True)
+option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec',ist('tkeyrecord?', attribute=True, cli_name='tkey_rec', doc='comma-separated list of TKEY records', label='TKEY record', multivalue=True)
+option: List('tsigrecord?', attribute=True, cli_name='tsig_rec',ist('tsigrecord?', attribute=True, cli_name='tsig_rec', doc='comma-separated list of TSIG records', label='TSIG record', multivalue=True)
+option: List('txtrecord?', attribute=True, cli_name='txt_rec',ist('txtrecord?', attribute=True, cli_name='txt_rec', doc='comma-separated list of TXT records', label='TXT record', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnsrecord_add_record
+args: 2,41,3
+arg: Str('dnszoneidnsname', cli_name='dnszone', label=Gettext('Zone name', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Record name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('arecord?', _validate_ipaddr, attribute=True, cli_name='a_rec',ist('arecord?', _validate_ipaddr, attribute=True, cli_name='a_rec', doc='comma-separated list of A records', label='A record', multivalue=True)
+option: List('aaaarecord?', _validate_ipaddr, attribute=True, cli_name='aaaa_rec',ist('aaaarecord?', _validate_ipaddr, attribute=True, cli_name='aaaa_rec', doc='comma-separated list of AAAA records', label='AAAA record', multivalue=True)
+option: List('a6record?', attribute=True, cli_name='a6_rec',ist('a6record?', attribute=True, cli_name='a6_rec', doc='comma-separated list of A6 records', label='A6 record', multivalue=True)
+option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec',ist('afsdbrecord?', attribute=True, cli_name='afsdb_rec', doc='comma-separated list of AFSDB records', label='AFSDB record', multivalue=True)
+option: List('aplrecord?', _validate_ipnet, attribute=True, cli_name='apl_rec',ist('aplrecord?', _validate_ipnet, attribute=True, cli_name='apl_rec', doc='comma-separated list of APL records', label='APL record', multivalue=True)
+option: List('certrecord?', attribute=True, cli_name='cert_rec',ist('certrecord?', attribute=True, cli_name='cert_rec', doc='comma-separated list of CERT records', label='CERT record', multivalue=True)
+option: List('cnamerecord?', attribute=True, cli_name='cname_rec',ist('cnamerecord?', attribute=True, cli_name='cname_rec', doc='comma-separated list of CNAME records', label='CNAME record', multivalue=True)
+option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec',ist('dhcidrecord?', attribute=True, cli_name='dhcid_rec', doc='comma-separated list of DHCID records', label='DHCID record', multivalue=True)
+option: List('dlvrecord?', attribute=True, cli_name='dlv_rec',ist('dlvrecord?', attribute=True, cli_name='dlv_rec', doc='comma-separated list of DLV records', label='DLV record', multivalue=True)
+option: List('dnamerecord?', attribute=True, cli_name='dname_rec',ist('dnamerecord?', attribute=True, cli_name='dname_rec', doc='comma-separated list of DNAME records', label='DNAME record', multivalue=True)
+option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec',ist('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', doc='comma-separated list of DNSKEY records', label='DNSKEY record', multivalue=True)
+option: List('dsrecord?', attribute=True, cli_name='ds_rec',ist('dsrecord?', attribute=True, cli_name='ds_rec', doc='comma-separated list of DS records', label='DS record', multivalue=True)
+option: List('hinforecord?', attribute=True, cli_name='hinfo_rec',ist('hinforecord?', attribute=True, cli_name='hinfo_rec', doc='comma-separated list of HINFO records', label='HINFO record', multivalue=True)
+option: List('hiprecord?', attribute=True, cli_name='hip_rec',ist('hiprecord?', attribute=True, cli_name='hip_rec', doc='comma-separated list of HIP records', label='HIP record', multivalue=True)
+option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec',ist('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', doc='comma-separated list of IPSECKEY records', label='IPSECKEY record', multivalue=True)
+option: List('keyrecord?', attribute=True, cli_name='key_rec',ist('keyrecord?', attribute=True, cli_name='key_rec', doc='comma-separated list of KEY records', label='KEY record', multivalue=True)
+option: List('kxrecord?', attribute=True, cli_name='kx_rec',ist('kxrecord?', attribute=True, cli_name='kx_rec', doc='comma-separated list of KX records', label='KX record', multivalue=True)
+option: List('locrecord?', attribute=True, cli_name='loc_rec',ist('locrecord?', attribute=True, cli_name='loc_rec', doc='comma-separated list of LOC records', label='LOC record', multivalue=True)
+option: List('mdrecord?', attribute=True, cli_name='md_rec',ist('mdrecord?', attribute=True, cli_name='md_rec', doc='comma-separated list of MD records', label='MD record', multivalue=True)
+option: List('minforecord?', attribute=True, cli_name='minfo_rec',ist('minforecord?', attribute=True, cli_name='minfo_rec', doc='comma-separated list of MINFO records', label='MINFO record', multivalue=True)
+option: List('mxrecord?', attribute=True, cli_name='mx_rec',ist('mxrecord?', attribute=True, cli_name='mx_rec', doc='comma-separated list of MX records', label='MX record', multivalue=True)
+option: List('naptrrecord?', attribute=True, cli_name='naptr_rec',ist('naptrrecord?', attribute=True, cli_name='naptr_rec', doc='comma-separated list of NAPTR records', label='NAPTR record', multivalue=True)
+option: List('nsrecord?', attribute=True, cli_name='ns_rec',ist('nsrecord?', attribute=True, cli_name='ns_rec', doc='comma-separated list of NS records', label='NS record', multivalue=True)
+option: List('nsecrecord?', attribute=True, cli_name='nsec_rec',ist('nsecrecord?', attribute=True, cli_name='nsec_rec', doc='comma-separated list of NSEC records', label='NSEC record', multivalue=True)
+option: List('nsec3record?', attribute=True, cli_name='nsec3_rec',ist('nsec3record?', attribute=True, cli_name='nsec3_rec', doc='comma-separated list of NSEC3 records', label='NSEC3 record', multivalue=True)
+option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec',ist('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', doc='comma-separated list of NSEC3PARAM records', label='NSEC3PARAM record', multivalue=True)
+option: List('nxtrecord?', attribute=True, cli_name='nxt_rec',ist('nxtrecord?', attribute=True, cli_name='nxt_rec', doc='comma-separated list of NXT records', label='NXT record', multivalue=True)
+option: List('ptrrecord?', attribute=True, cli_name='ptr_rec',ist('ptrrecord?', attribute=True, cli_name='ptr_rec', doc='comma-separated list of PTR records', label='PTR record', multivalue=True)
+option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec',ist('rrsigrecord?', attribute=True, cli_name='rrsig_rec', doc='comma-separated list of RRSIG records', label='RRSIG record', multivalue=True)
+option: List('rprecord?', attribute=True, cli_name='rp_rec',ist('rprecord?', attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', label='RP record', multivalue=True)
+option: List('sigrecord?', attribute=True, cli_name='sig_rec',ist('sigrecord?', attribute=True, cli_name='sig_rec', doc='comma-separated list of SIG records', label='SIG record', multivalue=True)
+option: List('spfrecord?', attribute=True, cli_name='spf_rec',ist('spfrecord?', attribute=True, cli_name='spf_rec', doc='comma-separated list of SPF records', label='SPF record', multivalue=True)
+option: List('srvrecord?', attribute=True, cli_name='srv_rec',ist('srvrecord?', attribute=True, cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV record', multivalue=True)
+option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec',ist('sshfprecord?', attribute=True, cli_name='sshfp_rec', doc='comma-separated list of SSHFP records', label='SSHFP record', multivalue=True)
+option: List('tarecord?', attribute=True, cli_name='ta_rec',ist('tarecord?', attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', label='TA record', multivalue=True)
+option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec',ist('tkeyrecord?', attribute=True, cli_name='tkey_rec', doc='comma-separated list of TKEY records', label='TKEY record', multivalue=True)
+option: List('tsigrecord?', attribute=True, cli_name='tsig_rec',ist('tsigrecord?', attribute=True, cli_name='tsig_rec', doc='comma-separated list of TSIG records', label='TSIG record', multivalue=True)
+option: List('txtrecord?', attribute=True, cli_name='txt_rec',ist('txtrecord?', attribute=True, cli_name='txt_rec', doc='comma-separated list of TXT records', label='TXT record', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnsrecord_del
+args: 2,41,3
+arg: Str('dnszoneidnsname', cli_name='dnszone', label=Gettext('Zone name', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Record name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('arecord?', _validate_ipaddr, attribute=True, cli_name='a_rec',ist('arecord?', _validate_ipaddr, attribute=True, cli_name='a_rec', doc='comma-separated list of A records', label='A record', multivalue=True)
+option: List('aaaarecord?', _validate_ipaddr, attribute=True, cli_name='aaaa_rec',ist('aaaarecord?', _validate_ipaddr, attribute=True, cli_name='aaaa_rec', doc='comma-separated list of AAAA records', label='AAAA record', multivalue=True)
+option: List('a6record?', attribute=True, cli_name='a6_rec',ist('a6record?', attribute=True, cli_name='a6_rec', doc='comma-separated list of A6 records', label='A6 record', multivalue=True)
+option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec',ist('afsdbrecord?', attribute=True, cli_name='afsdb_rec', doc='comma-separated list of AFSDB records', label='AFSDB record', multivalue=True)
+option: List('aplrecord?', _validate_ipnet, attribute=True, cli_name='apl_rec',ist('aplrecord?', _validate_ipnet, attribute=True, cli_name='apl_rec', doc='comma-separated list of APL records', label='APL record', multivalue=True)
+option: List('certrecord?', attribute=True, cli_name='cert_rec',ist('certrecord?', attribute=True, cli_name='cert_rec', doc='comma-separated list of CERT records', label='CERT record', multivalue=True)
+option: List('cnamerecord?', attribute=True, cli_name='cname_rec',ist('cnamerecord?', attribute=True, cli_name='cname_rec', doc='comma-separated list of CNAME records', label='CNAME record', multivalue=True)
+option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec',ist('dhcidrecord?', attribute=True, cli_name='dhcid_rec', doc='comma-separated list of DHCID records', label='DHCID record', multivalue=True)
+option: List('dlvrecord?', attribute=True, cli_name='dlv_rec',ist('dlvrecord?', attribute=True, cli_name='dlv_rec', doc='comma-separated list of DLV records', label='DLV record', multivalue=True)
+option: List('dnamerecord?', attribute=True, cli_name='dname_rec',ist('dnamerecord?', attribute=True, cli_name='dname_rec', doc='comma-separated list of DNAME records', label='DNAME record', multivalue=True)
+option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec',ist('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', doc='comma-separated list of DNSKEY records', label='DNSKEY record', multivalue=True)
+option: List('dsrecord?', attribute=True, cli_name='ds_rec',ist('dsrecord?', attribute=True, cli_name='ds_rec', doc='comma-separated list of DS records', label='DS record', multivalue=True)
+option: List('hinforecord?', attribute=True, cli_name='hinfo_rec',ist('hinforecord?', attribute=True, cli_name='hinfo_rec', doc='comma-separated list of HINFO records', label='HINFO record', multivalue=True)
+option: List('hiprecord?', attribute=True, cli_name='hip_rec',ist('hiprecord?', attribute=True, cli_name='hip_rec', doc='comma-separated list of HIP records', label='HIP record', multivalue=True)
+option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec',ist('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', doc='comma-separated list of IPSECKEY records', label='IPSECKEY record', multivalue=True)
+option: List('keyrecord?', attribute=True, cli_name='key_rec',ist('keyrecord?', attribute=True, cli_name='key_rec', doc='comma-separated list of KEY records', label='KEY record', multivalue=True)
+option: List('kxrecord?', attribute=True, cli_name='kx_rec',ist('kxrecord?', attribute=True, cli_name='kx_rec', doc='comma-separated list of KX records', label='KX record', multivalue=True)
+option: List('locrecord?', attribute=True, cli_name='loc_rec',ist('locrecord?', attribute=True, cli_name='loc_rec', doc='comma-separated list of LOC records', label='LOC record', multivalue=True)
+option: List('mdrecord?', attribute=True, cli_name='md_rec',ist('mdrecord?', attribute=True, cli_name='md_rec', doc='comma-separated list of MD records', label='MD record', multivalue=True)
+option: List('minforecord?', attribute=True, cli_name='minfo_rec',ist('minforecord?', attribute=True, cli_name='minfo_rec', doc='comma-separated list of MINFO records', label='MINFO record', multivalue=True)
+option: List('mxrecord?', attribute=True, cli_name='mx_rec',ist('mxrecord?', attribute=True, cli_name='mx_rec', doc='comma-separated list of MX records', label='MX record', multivalue=True)
+option: List('naptrrecord?', attribute=True, cli_name='naptr_rec',ist('naptrrecord?', attribute=True, cli_name='naptr_rec', doc='comma-separated list of NAPTR records', label='NAPTR record', multivalue=True)
+option: List('nsrecord?', attribute=True, cli_name='ns_rec',ist('nsrecord?', attribute=True, cli_name='ns_rec', doc='comma-separated list of NS records', label='NS record', multivalue=True)
+option: List('nsecrecord?', attribute=True, cli_name='nsec_rec',ist('nsecrecord?', attribute=True, cli_name='nsec_rec', doc='comma-separated list of NSEC records', label='NSEC record', multivalue=True)
+option: List('nsec3record?', attribute=True, cli_name='nsec3_rec',ist('nsec3record?', attribute=True, cli_name='nsec3_rec', doc='comma-separated list of NSEC3 records', label='NSEC3 record', multivalue=True)
+option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec',ist('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', doc='comma-separated list of NSEC3PARAM records', label='NSEC3PARAM record', multivalue=True)
+option: List('nxtrecord?', attribute=True, cli_name='nxt_rec',ist('nxtrecord?', attribute=True, cli_name='nxt_rec', doc='comma-separated list of NXT records', label='NXT record', multivalue=True)
+option: List('ptrrecord?', attribute=True, cli_name='ptr_rec',ist('ptrrecord?', attribute=True, cli_name='ptr_rec', doc='comma-separated list of PTR records', label='PTR record', multivalue=True)
+option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec',ist('rrsigrecord?', attribute=True, cli_name='rrsig_rec', doc='comma-separated list of RRSIG records', label='RRSIG record', multivalue=True)
+option: List('rprecord?', attribute=True, cli_name='rp_rec',ist('rprecord?', attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', label='RP record', multivalue=True)
+option: List('sigrecord?', attribute=True, cli_name='sig_rec',ist('sigrecord?', attribute=True, cli_name='sig_rec', doc='comma-separated list of SIG records', label='SIG record', multivalue=True)
+option: List('spfrecord?', attribute=True, cli_name='spf_rec',ist('spfrecord?', attribute=True, cli_name='spf_rec', doc='comma-separated list of SPF records', label='SPF record', multivalue=True)
+option: List('srvrecord?', attribute=True, cli_name='srv_rec',ist('srvrecord?', attribute=True, cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV record', multivalue=True)
+option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec',ist('sshfprecord?', attribute=True, cli_name='sshfp_rec', doc='comma-separated list of SSHFP records', label='SSHFP record', multivalue=True)
+option: List('tarecord?', attribute=True, cli_name='ta_rec',ist('tarecord?', attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', label='TA record', multivalue=True)
+option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec',ist('tkeyrecord?', attribute=True, cli_name='tkey_rec', doc='comma-separated list of TKEY records', label='TKEY record', multivalue=True)
+option: List('tsigrecord?', attribute=True, cli_name='tsig_rec',ist('tsigrecord?', attribute=True, cli_name='tsig_rec', doc='comma-separated list of TSIG records', label='TSIG record', multivalue=True)
+option: List('txtrecord?', attribute=True, cli_name='txt_rec',ist('txtrecord?', attribute=True, cli_name='txt_rec', doc='comma-separated list of TXT records', label='TXT record', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnsrecord_delentry
+args: 2,1,3
+arg: Str('dnszoneidnsname', cli_name='dnszone', label=Gettext('Zone name', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Record name', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnsrecord_find
+args: 2,46,4
+arg: Str('dnszoneidnsname', cli_name='dnszone', label=Gettext('Zone name', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('criteria?')
+option: Str('idnsname', attribute=True, autofill=False, cli_name='name', label=Gettext('Record name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Int('dnsttl', attribute=True, autofill=False, cli_name='ttl', label=Gettext('Time to live', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: StrEnum('dnsclass', attribute=True, autofill=False, cli_name='class', label=Gettext('Class', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('arecord', _validate_ipaddr, attribute=True, cli_name='a_rec',ist('arecord', _validate_ipaddr, attribute=True, cli_name='a_rec', doc='comma-separated list of A records', label='A record', multivalue=True, query=True, required=False)
+option: List('aaaarecord', _validate_ipaddr, attribute=True, cli_name='aaaa_rec',ist('aaaarecord', _validate_ipaddr, attribute=True, cli_name='aaaa_rec', doc='comma-separated list of AAAA records', label='AAAA record', multivalue=True, query=True, required=False)
+option: List('a6record', attribute=True, cli_name='a6_rec',ist('a6record', attribute=True, cli_name='a6_rec', doc='comma-separated list of A6 records', label='A6 record', multivalue=True, query=True, required=False)
+option: List('afsdbrecord', attribute=True, cli_name='afsdb_rec',ist('afsdbrecord', attribute=True, cli_name='afsdb_rec', doc='comma-separated list of AFSDB records', label='AFSDB record', multivalue=True, query=True, required=False)
+option: List('aplrecord', _validate_ipnet, attribute=True, cli_name='apl_rec',ist('aplrecord', _validate_ipnet, attribute=True, cli_name='apl_rec', doc='comma-separated list of APL records', label='APL record', multivalue=True, query=True, required=False)
+option: List('certrecord', attribute=True, cli_name='cert_rec',ist('certrecord', attribute=True, cli_name='cert_rec', doc='comma-separated list of CERT records', label='CERT record', multivalue=True, query=True, required=False)
+option: List('cnamerecord', attribute=True, cli_name='cname_rec',ist('cnamerecord', attribute=True, cli_name='cname_rec', doc='comma-separated list of CNAME records', label='CNAME record', multivalue=True, query=True, required=False)
+option: List('dhcidrecord', attribute=True, cli_name='dhcid_rec',ist('dhcidrecord', attribute=True, cli_name='dhcid_rec', doc='comma-separated list of DHCID records', label='DHCID record', multivalue=True, query=True, required=False)
+option: List('dlvrecord', attribute=True, cli_name='dlv_rec',ist('dlvrecord', attribute=True, cli_name='dlv_rec', doc='comma-separated list of DLV records', label='DLV record', multivalue=True, query=True, required=False)
+option: List('dnamerecord', attribute=True, cli_name='dname_rec',ist('dnamerecord', attribute=True, cli_name='dname_rec', doc='comma-separated list of DNAME records', label='DNAME record', multivalue=True, query=True, required=False)
+option: List('dnskeyrecord', attribute=True, cli_name='dnskey_rec',ist('dnskeyrecord', attribute=True, cli_name='dnskey_rec', doc='comma-separated list of DNSKEY records', label='DNSKEY record', multivalue=True, query=True, required=False)
+option: List('dsrecord', attribute=True, cli_name='ds_rec',ist('dsrecord', attribute=True, cli_name='ds_rec', doc='comma-separated list of DS records', label='DS record', multivalue=True, query=True, required=False)
+option: List('hinforecord', attribute=True, cli_name='hinfo_rec',ist('hinforecord', attribute=True, cli_name='hinfo_rec', doc='comma-separated list of HINFO records', label='HINFO record', multivalue=True, query=True, required=False)
+option: List('hiprecord', attribute=True, cli_name='hip_rec',ist('hiprecord', attribute=True, cli_name='hip_rec', doc='comma-separated list of HIP records', label='HIP record', multivalue=True, query=True, required=False)
+option: List('ipseckeyrecord', attribute=True, cli_name='ipseckey_rec',ist('ipseckeyrecord', attribute=True, cli_name='ipseckey_rec', doc='comma-separated list of IPSECKEY records', label='IPSECKEY record', multivalue=True, query=True, required=False)
+option: List('keyrecord', attribute=True, cli_name='key_rec',ist('keyrecord', attribute=True, cli_name='key_rec', doc='comma-separated list of KEY records', label='KEY record', multivalue=True, query=True, required=False)
+option: List('kxrecord', attribute=True, cli_name='kx_rec',ist('kxrecord', attribute=True, cli_name='kx_rec', doc='comma-separated list of KX records', label='KX record', multivalue=True, query=True, required=False)
+option: List('locrecord', attribute=True, cli_name='loc_rec',ist('locrecord', attribute=True, cli_name='loc_rec', doc='comma-separated list of LOC records', label='LOC record', multivalue=True, query=True, required=False)
+option: List('mdrecord', attribute=True, cli_name='md_rec',ist('mdrecord', attribute=True, cli_name='md_rec', doc='comma-separated list of MD records', label='MD record', multivalue=True, query=True, required=False)
+option: List('minforecord', attribute=True, cli_name='minfo_rec',ist('minforecord', attribute=True, cli_name='minfo_rec', doc='comma-separated list of MINFO records', label='MINFO record', multivalue=True, query=True, required=False)
+option: List('mxrecord', attribute=True, cli_name='mx_rec',ist('mxrecord', attribute=True, cli_name='mx_rec', doc='comma-separated list of MX records', label='MX record', multivalue=True, query=True, required=False)
+option: List('naptrrecord', attribute=True, cli_name='naptr_rec',ist('naptrrecord', attribute=True, cli_name='naptr_rec', doc='comma-separated list of NAPTR records', label='NAPTR record', multivalue=True, query=True, required=False)
+option: List('nsrecord', attribute=True, cli_name='ns_rec',ist('nsrecord', attribute=True, cli_name='ns_rec', doc='comma-separated list of NS records', label='NS record', multivalue=True, query=True, required=False)
+option: List('nsecrecord', attribute=True, cli_name='nsec_rec',ist('nsecrecord', attribute=True, cli_name='nsec_rec', doc='comma-separated list of NSEC records', label='NSEC record', multivalue=True, query=True, required=False)
+option: List('nsec3record', attribute=True, cli_name='nsec3_rec',ist('nsec3record', attribute=True, cli_name='nsec3_rec', doc='comma-separated list of NSEC3 records', label='NSEC3 record', multivalue=True, query=True, required=False)
+option: List('nsec3paramrecord', attribute=True, cli_name='nsec3param_rec',ist('nsec3paramrecord', attribute=True, cli_name='nsec3param_rec', doc='comma-separated list of NSEC3PARAM records', label='NSEC3PARAM record', multivalue=True, query=True, required=False)
+option: List('nxtrecord', attribute=True, cli_name='nxt_rec',ist('nxtrecord', attribute=True, cli_name='nxt_rec', doc='comma-separated list of NXT records', label='NXT record', multivalue=True, query=True, required=False)
+option: List('ptrrecord', attribute=True, cli_name='ptr_rec',ist('ptrrecord', attribute=True, cli_name='ptr_rec', doc='comma-separated list of PTR records', label='PTR record', multivalue=True, query=True, required=False)
+option: List('rrsigrecord', attribute=True, cli_name='rrsig_rec',ist('rrsigrecord', attribute=True, cli_name='rrsig_rec', doc='comma-separated list of RRSIG records', label='RRSIG record', multivalue=True, query=True, required=False)
+option: List('rprecord', attribute=True, cli_name='rp_rec',ist('rprecord', attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', label='RP record', multivalue=True, query=True, required=False)
+option: List('sigrecord', attribute=True, cli_name='sig_rec',ist('sigrecord', attribute=True, cli_name='sig_rec', doc='comma-separated list of SIG records', label='SIG record', multivalue=True, query=True, required=False)
+option: List('spfrecord', attribute=True, cli_name='spf_rec',ist('spfrecord', attribute=True, cli_name='spf_rec', doc='comma-separated list of SPF records', label='SPF record', multivalue=True, query=True, required=False)
+option: List('srvrecord', attribute=True, cli_name='srv_rec',ist('srvrecord', attribute=True, cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV record', multivalue=True, query=True, required=False)
+option: List('sshfprecord', attribute=True, cli_name='sshfp_rec',ist('sshfprecord', attribute=True, cli_name='sshfp_rec', doc='comma-separated list of SSHFP records', label='SSHFP record', multivalue=True, query=True, required=False)
+option: List('tarecord', attribute=True, cli_name='ta_rec',ist('tarecord', attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', label='TA record', multivalue=True, query=True, required=False)
+option: List('tkeyrecord', attribute=True, cli_name='tkey_rec',ist('tkeyrecord', attribute=True, cli_name='tkey_rec', doc='comma-separated list of TKEY records', label='TKEY record', multivalue=True, query=True, required=False)
+option: List('tsigrecord', attribute=True, cli_name='tsig_rec',ist('tsigrecord', attribute=True, cli_name='tsig_rec', doc='comma-separated list of TSIG records', label='TSIG record', multivalue=True, query=True, required=False)
+option: List('txtrecord', attribute=True, cli_name='txt_rec',ist('txtrecord', attribute=True, cli_name='txt_rec', doc='comma-separated list of TXT records', label='TXT record', multivalue=True, query=True, required=False)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: dnsrecord_show
+args: 2,4,3
+arg: Str('dnszoneidnsname', cli_name='dnszone', label=Gettext('Zone name', domain='ipa', localedir=None), query=True, required=True)
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Record name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnszone_add
+args: 1,17,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('idnssoamname', attribute=True, cli_name='name_server', label=Gettext('Authoritative name server', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('idnssoarname', attribute=True, cli_name='admin_email', default_from=DefaultFrom(<lambda>, 'idnsname'), label=Gettext('Administrator e-mail address', domain='ipa', localedir=None), multivalue=False, normalizer=_rname_normalizer, required=True)
+option: Int('idnssoaserial', attribute=True, autofill=True, cli_name='serial', create_default=_create_zone_serial, label=Gettext('SOA serial', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoarefresh', attribute=True, autofill=True, cli_name='refresh', default=3600, label=Gettext('SOA refresh', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaretry', attribute=True, autofill=True, cli_name='retry', default=900, label=Gettext('SOA retry', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaexpire', attribute=True, autofill=True, cli_name='expire', default=1209600, label=Gettext('SOA expire', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaminimum', attribute=True, autofill=True, cli_name='minimum', default=3600, label=Gettext('SOA minimum', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoamaximum', attribute=True, cli_name='maximum', label=Gettext('SOA maximum', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('dnsttl', attribute=True, cli_name='ttl', label=Gettext('SOA time to live', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('dnsclass', attribute=True, cli_name='class', label=Gettext('SOA class', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Str('idnsupdatepolicy', attribute=True, cli_name='update_policy', label=Gettext('BIND update policy', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('idnsallowdynupdate', attribute=True, autofill=True, cli_name='allow_dynupdate', default=False, label=Gettext('Dynamic update', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnszone_del
+args: 1,1,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnszone_disable
+args: 1,0,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnszone_enable
+args: 1,0,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnszone_find
+args: 1,19,4
+arg: Str('criteria?')
+option: Str('idnsname', attribute=True, autofill=False, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('idnssoamname', attribute=True, autofill=False, cli_name='name_server', label=Gettext('Authoritative name server', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('idnssoarname', attribute=True, autofill=False, cli_name='admin_email', default_from=DefaultFrom(<lambda>, 'idnsname'), label=Gettext('Administrator e-mail address', domain='ipa', localedir=None), multivalue=False, normalizer=_rname_normalizer, query=True, required=False)
+option: Int('idnssoaserial', attribute=True, autofill=False, cli_name='serial', create_default=_create_zone_serial, label=Gettext('SOA serial', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoarefresh', attribute=True, autofill=False, cli_name='refresh', default=3600, label=Gettext('SOA refresh', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoaretry', attribute=True, autofill=False, cli_name='retry', default=900, label=Gettext('SOA retry', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoaexpire', attribute=True, autofill=False, cli_name='expire', default=1209600, label=Gettext('SOA expire', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoaminimum', attribute=True, autofill=False, cli_name='minimum', default=3600, label=Gettext('SOA minimum', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('idnssoamaximum', attribute=True, autofill=False, cli_name='maximum', label=Gettext('SOA maximum', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('dnsttl', attribute=True, autofill=False, cli_name='ttl', label=Gettext('SOA time to live', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: StrEnum('dnsclass', attribute=True, autofill=False, cli_name='class', label=Gettext('SOA class', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Str('idnsupdatepolicy', attribute=True, autofill=False, cli_name='update_policy', label=Gettext('BIND update policy', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Bool('idnszoneactive', attribute=True, autofill=False, cli_name='zone_active', default=False, flags=['no_create', 'no_update'], label=Gettext('Active zone', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Bool('idnsallowdynupdate', attribute=True, autofill=False, cli_name='allow_dynupdate', default=False, label=Gettext('Dynamic update', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: dnszone_mod
+args: 1,18,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('idnssoamname', attribute=True, autofill=False, cli_name='name_server', label=Gettext('Authoritative name server', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('idnssoarname', attribute=True, autofill=False, cli_name='admin_email', default_from=DefaultFrom(<lambda>, 'idnsname'), label=Gettext('Administrator e-mail address', domain='ipa', localedir=None), multivalue=False, normalizer=_rname_normalizer, required=False)
+option: Int('idnssoaserial', attribute=True, autofill=False, cli_name='serial', create_default=_create_zone_serial, label=Gettext('SOA serial', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoarefresh', attribute=True, autofill=False, cli_name='refresh', default=3600, label=Gettext('SOA refresh', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaretry', attribute=True, autofill=False, cli_name='retry', default=900, label=Gettext('SOA retry', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaexpire', attribute=True, autofill=False, cli_name='expire', default=1209600, label=Gettext('SOA expire', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoaminimum', attribute=True, autofill=False, cli_name='minimum', default=3600, label=Gettext('SOA minimum', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('idnssoamaximum', attribute=True, autofill=False, cli_name='maximum', label=Gettext('SOA maximum', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('dnsttl', attribute=True, autofill=False, cli_name='ttl', label=Gettext('SOA time to live', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('dnsclass', attribute=True, autofill=False, cli_name='class', label=Gettext('SOA class', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'IN', u'CS', u'CH', u'HS'))
+option: Str('idnsupdatepolicy', attribute=True, autofill=False, cli_name='update_policy', label=Gettext('BIND update policy', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('idnsallowdynupdate', attribute=True, autofill=True, cli_name='allow_dynupdate', default=False, label=Gettext('Dynamic update', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: dnszone_show
+args: 1,4,3
+arg: Str('idnsname', attribute=True, cli_name='name', label=Gettext('Zone name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: env
+args: 1,2,4
+arg: Str('variables*')
+option: Flag('server?', autofill=True, default=False,lag('server?', autofill=True, default=False, doc=Gettext('Forward to server instead of running locally', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=True, exclude='webui', flags=['no_output'])
+output: Output('result', <type 'dict'>, Gettext('Dictionary mapping variable name to value', domain='ipa', localedir=None))
+output: Output('total', <type 'int'>, Gettext('Total number of variables env (>= count)', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, Gettext('Number of variables returned (<= total)', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+command: group_add
+args: 1,8,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Int('gidnumber', attribute=True, cli_name='gid', label=Gettext('GID', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('nonposix', autofill=True, cli_name='nonposix', default=False,lag('nonposix', autofill=True, cli_name='nonposix', default=False, doc=Gettext('Create as a non-POSIX group?', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: group_add_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to add', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: group_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=True, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: group_detach
+args: 1,0,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: group_find
+args: 1,19,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('gidnumber', attribute=True, autofill=False, cli_name='gid', label=Gettext('GID', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('private', autofill=True, cli_name='private', default=False,lag('private', autofill=True, cli_name='private', default=False, doc=Gettext('search for private groups', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', cli_name='users',ist('user?', cli_name='users', doc='only groups with member users', label='user', multivalue=True)
+option: List('no_user?', cli_name='no_users',ist('no_user?', cli_name='no_users', doc='only groups with no member users', label='user', multivalue=True)
+option: List('group?', cli_name='groups',ist('group?', cli_name='groups', doc='only groups with member groups', label='group', multivalue=True)
+option: List('no_group?', cli_name='no_groups',ist('no_group?', cli_name='no_groups', doc='only groups with no member groups', label='group', multivalue=True)
+option: List('in_group?', cli_name='in_groups',ist('in_group?', cli_name='in_groups', doc='only groups with member of groups', label='group', multivalue=True)
+option: List('not_in_group?', cli_name='not_in_groups',ist('not_in_group?', cli_name='not_in_groups', doc='only groups with no member of groups', label='group', multivalue=True)
+option: List('in_netgroup?', cli_name='in_netgroups',ist('in_netgroup?', cli_name='in_netgroups', doc='only groups with member of netgroups', label='netgroup', multivalue=True)
+option: List('not_in_netgroup?', cli_name='not_in_netgroups',ist('not_in_netgroup?', cli_name='not_in_netgroups', doc='only groups with no member of netgroups', label='netgroup', multivalue=True)
+option: List('in_role?', cli_name='in_roles',ist('in_role?', cli_name='in_roles', doc='only groups with member of roles', label='role', multivalue=True)
+option: List('not_in_role?', cli_name='not_in_roles',ist('not_in_role?', cli_name='not_in_roles', doc='only groups with no member of roles', label='role', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: group_mod
+args: 1,10,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('gidnumber', attribute=True, autofill=False, cli_name='gid', label=Gettext('GID', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('posix', autofill=True, cli_name='posix', default=False,lag('posix', autofill=True, cli_name='posix', default=False, doc=Gettext('change to a POSIX group', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: Str('rename', cli_name='rename', label=Gettext('Rename', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, required=False)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: group_remove_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to remove', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: group_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='group_name', label=Gettext('Group name', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacrule_add
+args: 1,11,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: StrEnum('accessruletype', attribute=True, cli_name='type', label=Gettext('Rule type', domain='ipa', localedir=None), multivalue=False, required=True, values=(u'allow', u'deny'))
+option: StrEnum('usercategory', attribute=True, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('sourcehostcategory', attribute=True, cli_name='srchostcat', label=Gettext('Source host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('servicecategory', attribute=True, cli_name='servicecat', label=Gettext('Service category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacrule_add_host
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to add', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: hbacrule_add_service
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs',ist('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', doc='comma-separated list of hbacsvcs to add', label='hbacsvc', multivalue=True)
+option: List('hbacsvcgroup?', alwaysask=True, cli_name='hbacsvcgroups',ist('hbacsvcgroup?', alwaysask=True, cli_name='hbacsvcgroups', doc='comma-separated list of hbacsvcgroups to add', label='hbacsvcgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: hbacrule_add_sourcehost
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to add', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: hbacrule_add_user
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to add', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: hbacrule_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacrule_disable
+args: 1,0,1
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('result', None, None)
+command: hbacrule_enable
+args: 1,0,1
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('result', None, None)
+command: hbacrule_find
+args: 1,12,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: StrEnum('accessruletype', attribute=True, autofill=False, cli_name='type', label=Gettext('Rule type', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'allow', u'deny'))
+option: StrEnum('usercategory', attribute=True, autofill=False, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, autofill=False, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('sourcehostcategory', attribute=True, autofill=False, cli_name='srchostcat', label=Gettext('Source host category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('servicecategory', attribute=True, autofill=False, cli_name='servicecat', label=Gettext('Service category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: hbacrule_mod
+args: 1,12,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: StrEnum('accessruletype', attribute=True, autofill=False, cli_name='type', label=Gettext('Rule type', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'allow', u'deny'))
+option: StrEnum('usercategory', attribute=True, autofill=False, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, autofill=False, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('sourcehostcategory', attribute=True, autofill=False, cli_name='srchostcat', label=Gettext('Source host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('servicecategory', attribute=True, autofill=False, cli_name='servicecat', label=Gettext('Service category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacrule_remove_host
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to remove', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: hbacrule_remove_service
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs',ist('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', doc='comma-separated list of hbacsvcs to remove', label='hbacsvc', multivalue=True)
+option: List('hbacsvcgroup?', alwaysask=True, cli_name='hbacsvcgroups',ist('hbacsvcgroup?', alwaysask=True, cli_name='hbacsvcgroups', doc='comma-separated list of hbacsvcgroups to remove', label='hbacsvcgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: hbacrule_remove_sourcehost
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to remove', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: hbacrule_remove_user
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to remove', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: hbacrule_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvc_add
+args: 1,6,3
+arg: Str('cn', attribute=True, cli_name='service', label=Gettext('Service name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvc_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='service', label=Gettext('Service name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvc_find
+args: 1,7,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='service', label=Gettext('Service name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: hbacsvc_mod
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='service', label=Gettext('Service name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvc_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='service', label=Gettext('Service name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvcgroup_add
+args: 1,6,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvcgroup_add_member
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs',ist('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', doc='comma-separated list of hbacsvcs to add', label='hbacsvc', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: hbacsvcgroup_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvcgroup_find
+args: 1,7,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: hbacsvcgroup_mod
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hbacsvcgroup_remove_member
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs',ist('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', doc='comma-separated list of hbacsvcs to remove', label='hbacsvc', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: hbacsvcgroup_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Service group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: host_add
+args: 1,14,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('l', attribute=True, cli_name='locality', label=Gettext('Locality', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nshostlocation', attribute=True, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nshardwareplatform', attribute=True, cli_name='platform', label=Gettext('Platform', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nsosversion', attribute=True, cli_name='os', label=Gettext('Operating system', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('userpassword', attribute=True, cli_name='password', label=Gettext('User password', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('random', attribute=True, autofill=True, cli_name='random', default=False, flags=['no_search'], label=FixMe('random'), multivalue=False, required=False)
+option: Bytes('usercertificate', validate_certificate, attribute=True, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('force', autofill=True, default=False,lag('force', autofill=True, default=False, doc=Gettext('force host name even if not in DNS', domain='ipa', localedir=None))
+option: Flag('no_reverse', autofill=True, default=False,lag('no_reverse', autofill=True, default=False, doc=Gettext('skip reverse DNS detection', domain='ipa', localedir=None))
+option: Str('ip_address?', validate_ipaddr,tr('ip_address?', validate_ipaddr, doc=Gettext('Add the host to DNS with this IP address', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: host_add_managedby
+args: 1,4,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: host_del
+args: 1,1,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('updatedns?', autofill=True, default=False,lag('updatedns?', autofill=True, default=False, doc=Gettext('Remove entries from DNS', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: host_disable
+args: 1,0,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: host_find
+args: 1,23,4
+arg: Str('criteria?')
+option: Str('fqdn', validate_host, attribute=True, autofill=False, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('l', attribute=True, autofill=False, cli_name='locality', label=Gettext('Locality', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('nshostlocation', attribute=True, autofill=False, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('nshardwareplatform', attribute=True, autofill=False, cli_name='platform', label=Gettext('Platform', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('nsosversion', attribute=True, autofill=False, cli_name='os', label=Gettext('Operating system', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('userpassword', attribute=True, autofill=False, cli_name='password', label=Gettext('User password', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Bytes('usercertificate', validate_certificate, attribute=True, autofill=False, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('in_hostgroup?', cli_name='in_hostgroups',ist('in_hostgroup?', cli_name='in_hostgroups', doc='only hosts with member of hostgroups', label='hostgroup', multivalue=True)
+option: List('not_in_hostgroup?', cli_name='not_in_hostgroups',ist('not_in_hostgroup?', cli_name='not_in_hostgroups', doc='only hosts with no member of hostgroups', label='hostgroup', multivalue=True)
+option: List('in_netgroup?', cli_name='in_netgroups',ist('in_netgroup?', cli_name='in_netgroups', doc='only hosts with member of netgroups', label='netgroup', multivalue=True)
+option: List('not_in_netgroup?', cli_name='not_in_netgroups',ist('not_in_netgroup?', cli_name='not_in_netgroups', doc='only hosts with no member of netgroups', label='netgroup', multivalue=True)
+option: List('in_role?', cli_name='in_roles',ist('in_role?', cli_name='in_roles', doc='only hosts with member of roles', label='role', multivalue=True)
+option: List('not_in_role?', cli_name='not_in_roles',ist('not_in_role?', cli_name='not_in_roles', doc='only hosts with no member of roles', label='role', multivalue=True)
+option: List('enroll_by_user?', cli_name='enroll_by_users',ist('enroll_by_user?', cli_name='enroll_by_users', doc='only hosts with enrolled by users', label='user', multivalue=True)
+option: List('not_enroll_by_user?', cli_name='not_enroll_by_users',ist('not_enroll_by_user?', cli_name='not_enroll_by_users', doc='only hosts with no enrolled by users', label='user', multivalue=True)
+option: List('man_by_host?', cli_name='man_by_hosts',ist('man_by_host?', cli_name='man_by_hosts', doc='only hosts with managed by hosts', label='host', multivalue=True)
+option: List('not_man_by_host?', cli_name='not_man_by_hosts',ist('not_man_by_host?', cli_name='not_man_by_hosts', doc='only hosts with no managed by hosts', label='host', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: host_mod
+args: 1,15,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('l', attribute=True, autofill=False, cli_name='locality', label=Gettext('Locality', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nshostlocation', attribute=True, autofill=False, cli_name='location', label=Gettext('Location', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nshardwareplatform', attribute=True, autofill=False, cli_name='platform', label=Gettext('Platform', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nsosversion', attribute=True, autofill=False, cli_name='os', label=Gettext('Operating system', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('userpassword', attribute=True, autofill=False, cli_name='password', label=Gettext('User password', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('random', attribute=True, autofill=True, cli_name='random', default=False, flags=['no_search'], label=FixMe('random'), multivalue=False, required=False)
+option: Bytes('usercertificate', validate_certificate, attribute=True, autofill=False, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Str('krbprincipalname?', attribute=True, cli_name='principalname', label=Gettext('Principal name', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: host_remove_managedby
+args: 1,4,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: host_show
+args: 1,5,3
+arg: Str('fqdn', validate_host, attribute=True, cli_name='hostname', label=Gettext('Host name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Str('out?',tr('out?', doc=Gettext('file to store certificate in', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hostgroup_add
+args: 1,6,3
+arg: Str('cn', attribute=True, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hostgroup_add_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to add', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: hostgroup_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hostgroup_find
+args: 1,13,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', cli_name='hosts',ist('host?', cli_name='hosts', doc='only hostgroups with member hosts', label='host', multivalue=True)
+option: List('no_host?', cli_name='no_hosts',ist('no_host?', cli_name='no_hosts', doc='only hostgroups with no member hosts', label='host', multivalue=True)
+option: List('hostgroup?', cli_name='hostgroups',ist('hostgroup?', cli_name='hostgroups', doc='only hostgroups with member hostgroups', label='hostgroup', multivalue=True)
+option: List('no_hostgroup?', cli_name='no_hostgroups',ist('no_hostgroup?', cli_name='no_hostgroups', doc='only hostgroups with no member hostgroups', label='hostgroup', multivalue=True)
+option: List('in_hostgroup?', cli_name='in_hostgroups',ist('in_hostgroup?', cli_name='in_hostgroups', doc='only hostgroups with member of hostgroups', label='hostgroup', multivalue=True)
+option: List('not_in_hostgroup?', cli_name='not_in_hostgroups',ist('not_in_hostgroup?', cli_name='not_in_hostgroups', doc='only hostgroups with no member of hostgroups', label='hostgroup', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: hostgroup_mod
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: hostgroup_remove_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to remove', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: hostgroup_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='hostgroup_name', label=Gettext('Host-group', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: i18n_messages
+args: 0,0,1
+output: Output('messages', <type 'dict'>, Gettext('Dict of I18N messages', domain='ipa', localedir=None))
+command: json_metadata
+args: 1,0,1
+arg: Str('objname?',tr('objname?', doc=Gettext('Name of object to export', domain='ipa', localedir=None))
+output: Output('metadata', <type 'dict'>, Gettext('Dict of JSON encoded IPA Objects', domain='ipa', localedir=None))
+command: krbtpolicy_mod
+args: 1,8,3
+arg: Str('uid', attribute=True, cli_name='user', label=Gettext('User name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Int('krbmaxticketlife', attribute=True, autofill=False, cli_name='maxlife', label=Gettext('Max life', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('krbmaxrenewableage', attribute=True, autofill=False, cli_name='maxrenew', label=Gettext('Max renew', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: krbtpolicy_reset
+args: 1,3,3
+arg: Str('uid', attribute=True, cli_name='user', label=Gettext('User name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: krbtpolicy_show
+args: 1,4,3
+arg: Str('uid', attribute=True, cli_name='user', label=Gettext('User name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: migrate_ds
+args: 2,9,3
+arg: Str('ldapuri', validate_ldapuri, cli_name='ldap_uri', label=Gettext('LDAP URI', domain='ipa', localedir=None))
+arg: Password('bindpw', cli_name='password', label=Gettext('Password', domain='ipa', localedir=None))
+option: Str('binddn?', autofill=True, cli_name='bind_dn', default=u'cn=directory manager', label=Gettext('Bind DN', domain='ipa', localedir=None))
+option: Str('usercontainer?', autofill=True, cli_name='user_container', default=u'ou=people', label=Gettext('User container', domain='ipa', localedir=None))
+option: Str('groupcontainer?', autofill=True, cli_name='group_container', default=u'ou=groups', label=Gettext('Group container', domain='ipa', localedir=None))
+option: List('userobjectclass?', autofill=True, cli_name='user_objectclass', default=(u'person',), label=Gettext('User object class', domain='ipa', localedir=None), multivalue=True)
+option: List('groupobjectclass?', autofill=True, cli_name='group_objectclass', default=(u'groupOfUniqueNames', u'groupOfNames'), label=Gettext('Group object class', domain='ipa', localedir=None), multivalue=True)
+option: StrEnum('schema?', autofill=True, cli_name='schema', default=u'RFC2307bis', label=Gettext('LDAP schema', domain='ipa', localedir=None), values=(u'RFC2307bis', u'RFC2307'))
+option: Flag('continue?', autofill=True, default=False,lag('continue?', autofill=True, default=False, doc=Gettext('Continous operation mode. Errors are reported but the process continues', domain='ipa', localedir=None))
+option: List('exclude_groups?', autofill=True, cli_name='exclude_groups', default=(), multivalue=True)
+option: List('exclude_users?', autofill=True, cli_name='exclude_users', default=(), multivalue=True)
+output: Output('result', <type 'dict'>, Gettext('Lists of objects migrated; categorized by type.', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Lists of objects that could not be migrated; categorized by type.', domain='ipa', localedir=None))
+output: Output('enabled', <type 'bool'>, Gettext('False if migration mode was disabled.', domain='ipa', localedir=None))
+command: netgroup_add
+args: 1,9,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('nisdomainname', attribute=True, cli_name='nisdomain', label=Gettext('NIS domain name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('usercategory', attribute=True, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: netgroup_add_member
+args: 1,8,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to add', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to add', label='hostgroup', multivalue=True)
+option: List('netgroup?', alwaysask=True, cli_name='netgroups',ist('netgroup?', alwaysask=True, cli_name='netgroups', doc='comma-separated list of netgroups to add', label='netgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: netgroup_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: netgroup_find
+args: 1,23,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('nisdomainname', attribute=True, autofill=False, cli_name='nisdomain', label=Gettext('NIS domain name', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('ipauniqueid', attribute=True, autofill=False, cli_name='uuid', flags=['no_create', 'no_update'], label='IPA unique ID', multivalue=False, query=True, required=False)
+option: StrEnum('usercategory', attribute=True, autofill=False, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, autofill=False, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('netgroup?', cli_name='netgroups',ist('netgroup?', cli_name='netgroups', doc='only netgroups with member netgroups', label='netgroup', multivalue=True)
+option: List('no_netgroup?', cli_name='no_netgroups',ist('no_netgroup?', cli_name='no_netgroups', doc='only netgroups with no member netgroups', label='netgroup', multivalue=True)
+option: List('user?', cli_name='users',ist('user?', cli_name='users', doc='only netgroups with member users', label='user', multivalue=True)
+option: List('no_user?', cli_name='no_users',ist('no_user?', cli_name='no_users', doc='only netgroups with no member users', label='user', multivalue=True)
+option: List('group?', cli_name='groups',ist('group?', cli_name='groups', doc='only netgroups with member groups', label='group', multivalue=True)
+option: List('no_group?', cli_name='no_groups',ist('no_group?', cli_name='no_groups', doc='only netgroups with no member groups', label='group', multivalue=True)
+option: List('host?', cli_name='hosts',ist('host?', cli_name='hosts', doc='only netgroups with member hosts', label='host', multivalue=True)
+option: List('no_host?', cli_name='no_hosts',ist('no_host?', cli_name='no_hosts', doc='only netgroups with no member hosts', label='host', multivalue=True)
+option: List('hostgroup?', cli_name='hostgroups',ist('hostgroup?', cli_name='hostgroups', doc='only netgroups with member hostgroups', label='hostgroup', multivalue=True)
+option: List('no_hostgroup?', cli_name='no_hostgroups',ist('no_hostgroup?', cli_name='no_hostgroups', doc='only netgroups with no member hostgroups', label='hostgroup', multivalue=True)
+option: List('in_netgroup?', cli_name='in_netgroups',ist('in_netgroup?', cli_name='in_netgroups', doc='only netgroups with member of netgroups', label='netgroup', multivalue=True)
+option: List('not_in_netgroup?', cli_name='not_in_netgroups',ist('not_in_netgroup?', cli_name='not_in_netgroups', doc='only netgroups with no member of netgroups', label='netgroup', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: netgroup_mod
+args: 1,10,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('nisdomainname', attribute=True, autofill=False, cli_name='nisdomain', label=Gettext('NIS domain name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('usercategory', attribute=True, autofill=False, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, autofill=False, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: netgroup_remove_member
+args: 1,8,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to remove', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to remove', label='hostgroup', multivalue=True)
+option: List('netgroup?', alwaysask=True, cli_name='netgroups',ist('netgroup?', alwaysask=True, cli_name='netgroups', doc='comma-separated list of netgroups to remove', label='netgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: netgroup_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Netgroup name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: passwd
+args: 2,0,3
+arg: Str('principal', autofill=True, cli_name='user', create_default=<lambda>, label=Gettext('User name', domain='ipa', localedir=None), primary_key=True)
+arg: Password('password', label=Gettext('Password', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: permission_add
+args: 1,13,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: List('permissions', attribute=True, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, required=True)
+option: List('attrs', attribute=True, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, required=False)
+option: StrEnum('type', attribute=True, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, cli_name='memberof', label=Gettext('Member of group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('filter', attribute=True, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('subtree', attribute=True, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('targetgroup', attribute=True, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: permission_add_member
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('privilege?', alwaysask=True, cli_name='privileges',ist('privilege?', alwaysask=True, cli_name='privileges', doc='comma-separated list of privileges to add', label='privilege', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: permission_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: permission_find
+args: 1,14,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: List('permissions', attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, query=True, required=False)
+option: StrEnum('type', attribute=True, autofill=False, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, autofill=False, cli_name='memberof', label=Gettext('Member of group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('filter', attribute=True, autofill=False, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('subtree', attribute=True, autofill=False, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('targetgroup', attribute=True, autofill=False, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: permission_mod
+args: 1,15,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: List('permissions', attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, required=False)
+option: StrEnum('type', attribute=True, autofill=False, cli_name='type', label=Gettext('Type', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns'))
+option: Str('memberof', attribute=True, autofill=False, cli_name='memberof', label=Gettext('Member of group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('filter', attribute=True, autofill=False, cli_name='filter', label=Gettext('Filter', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('subtree', attribute=True, autofill=False, cli_name='subtree', label=Gettext('Subtree', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('targetgroup', attribute=True, autofill=False, cli_name='targetgroup', label=Gettext('Target group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: Str('rename', cli_name='rename', label=Gettext('Rename', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=False)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: permission_remove_member
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('privilege?', alwaysask=True, cli_name='privileges',ist('privilege?', alwaysask=True, cli_name='privileges', doc='comma-separated list of privileges to remove', label='privilege', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: permission_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Permission name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: ping
+args: 0,0,1
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+command: pkinit_anonymous
+args: 1,0,1
+arg: Str('action', valid_arg)
+output: Output('result', None, None)
+command: plugins
+args: 0,2,3
+option: Flag('server?', autofill=True, default=False,lag('server?', autofill=True, default=False, doc=Gettext('Forward to server instead of running locally', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=True, exclude='webui', flags=['no_output'])
+output: Output('result', <type 'dict'>, 'Dictionary mapping plugin names to bases')
+output: Output('count', <type 'int'>, Gettext('Number of plugins loaded', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+command: privilege_add
+args: 1,6,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: privilege_add_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('permission?', alwaysask=True, cli_name='permissions',ist('permission?', alwaysask=True, cli_name='permissions', doc='comma-separated list of permissions to add', label='permission', multivalue=True)
+option: List('role?', alwaysask=True, cli_name='roles',ist('role?', alwaysask=True, cli_name='roles', doc='comma-separated list of roles to add', label='role', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: privilege_add_permission
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('permission?', cli_name='permissions',ist('permission?', cli_name='permissions', doc='comma-separated list of permissions', label='permission', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of permissions added', domain='ipa', localedir=None))
+command: privilege_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: privilege_find
+args: 1,7,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: privilege_mod
+args: 1,8,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: Str('rename', cli_name='rename', label=Gettext('Rename', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=False)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: privilege_remove_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('permission?', alwaysask=True, cli_name='permissions',ist('permission?', alwaysask=True, cli_name='permissions', doc='comma-separated list of permissions to remove', label='permission', multivalue=True)
+option: List('role?', alwaysask=True, cli_name='roles',ist('role?', alwaysask=True, cli_name='roles', doc='comma-separated list of roles to remove', label='role', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: privilege_remove_permission
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('permission?', cli_name='permissions',ist('permission?', cli_name='permissions', doc='comma-separated list of permissions', label='permission', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of permissions removed', domain='ipa', localedir=None))
+command: privilege_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Privilege name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: pwpolicy_add
+args: 1,14,3
+arg: Str('cn', attribute=True, cli_name='group', label=Gettext('Group', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Int('krbmaxpwdlife', attribute=True, cli_name='maxlife', label=Gettext('Max lifetime (days)', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbminpwdlife', attribute=True, cli_name='minlife', label=Gettext('Min lifetime (hours)', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdhistorylength', attribute=True, cli_name='history', label=Gettext('History size', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdmindiffchars', attribute=True, cli_name='minclasses', label=Gettext('Character classes', domain='ipa', localedir=None), maxvalue=5, minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdminlength', attribute=True, cli_name='minlength', label=Gettext('Min length', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('cospriority', attribute=True, cli_name='priority', label=Gettext('Priority', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=True)
+option: Int('krbpwdmaxfailure', attribute=True, cli_name='maxfail', label=Gettext('Max failures', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdfailurecountinterval', attribute=True, cli_name='failinterval', label=Gettext('Failure reset interval', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdlockoutduration', attribute=True, cli_name='lockouttime', label=Gettext('Lockout duration', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: pwpolicy_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='group', label=Gettext('Group', domain='ipa', localedir=None), multivalue=True, primary_key=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: pwpolicy_find
+args: 1,15,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='group', label=Gettext('Group', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Int('krbmaxpwdlife', attribute=True, autofill=False, cli_name='maxlife', label=Gettext('Max lifetime (days)', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbminpwdlife', attribute=True, autofill=False, cli_name='minlife', label=Gettext('Min lifetime (hours)', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbpwdhistorylength', attribute=True, autofill=False, cli_name='history', label=Gettext('History size', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbpwdmindiffchars', attribute=True, autofill=False, cli_name='minclasses', label=Gettext('Character classes', domain='ipa', localedir=None), maxvalue=5, minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbpwdminlength', attribute=True, autofill=False, cli_name='minlength', label=Gettext('Min length', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('cospriority', attribute=True, autofill=False, cli_name='priority', label=Gettext('Priority', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbpwdmaxfailure', attribute=True, autofill=False, cli_name='maxfail', label=Gettext('Max failures', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbpwdfailurecountinterval', attribute=True, autofill=False, cli_name='failinterval', label=Gettext('Failure reset interval', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('krbpwdlockoutduration', attribute=True, autofill=False, cli_name='lockouttime', label=Gettext('Lockout duration', domain='ipa', localedir=None), minvalue=0, multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: pwpolicy_mod
+args: 1,15,3
+arg: Str('cn', attribute=True, cli_name='group', label=Gettext('Group', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Int('krbmaxpwdlife', attribute=True, autofill=False, cli_name='maxlife', label=Gettext('Max lifetime (days)', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbminpwdlife', attribute=True, autofill=False, cli_name='minlife', label=Gettext('Min lifetime (hours)', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdhistorylength', attribute=True, autofill=False, cli_name='history', label=Gettext('History size', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdmindiffchars', attribute=True, autofill=False, cli_name='minclasses', label=Gettext('Character classes', domain='ipa', localedir=None), maxvalue=5, minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdminlength', attribute=True, autofill=False, cli_name='minlength', label=Gettext('Min length', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('cospriority', attribute=True, autofill=False, cli_name='priority', label=Gettext('Priority', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdmaxfailure', attribute=True, autofill=False, cli_name='maxfail', label=Gettext('Max failures', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdfailurecountinterval', attribute=True, autofill=False, cli_name='failinterval', label=Gettext('Failure reset interval', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Int('krbpwdlockoutduration', attribute=True, autofill=False, cli_name='lockouttime', label=Gettext('Lockout duration', domain='ipa', localedir=None), minvalue=0, multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: pwpolicy_show
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='group', label=Gettext('Group', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Str('user?', label=Gettext('User', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: role_add
+args: 1,6,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: role_add_member
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to add', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to add', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: role_add_privilege
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('privilege?', cli_name='privileges',ist('privilege?', cli_name='privileges', doc='comma-separated list of privileges', label='privilege', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of privileges added', domain='ipa', localedir=None))
+command: role_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: role_find
+args: 1,7,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: role_mod
+args: 1,8,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: Str('rename', cli_name='rename', label=Gettext('Rename', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=False)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: role_remove_member
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to remove', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to remove', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: role_remove_privilege
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('privilege?', cli_name='privileges',ist('privilege?', cli_name='privileges', doc='comma-separated list of privileges', label='privilege', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of privileges removed', domain='ipa', localedir=None))
+command: role_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', label=Gettext('Role name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: selfservice_add
+args: 1,5,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Self-Service name', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: List('permissions', attribute=True, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, required=False)
+option: List('attrs', attribute=True, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: selfservice_del
+args: 1,0,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Self-Service name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: selfservice_find
+args: 1,6,4
+arg: Str('criteria?')
+option: Str('aciname', attribute=True, autofill=False, cli_name='name', label=Gettext('Self-Service name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: List('permissions', attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, query=True, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: selfservice_mod
+args: 1,5,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Self-Service name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: List('permissions', attribute=True, autofill=False, cli_name='permissions', label=Gettext('Permissions', domain='ipa', localedir=None), multivalue=True, required=False)
+option: List('attrs', attribute=True, autofill=False, cli_name='attrs', label=Gettext('Attributes', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, required=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: selfservice_show
+args: 1,3,3
+arg: Str('aciname', attribute=True, cli_name='name', label=Gettext('Self-Service name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: service_add
+args: 1,5,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Bytes('usercertificate', validate_certificate, attribute=True, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Flag('force', autofill=True, default=False,lag('force', autofill=True, default=False, doc=Gettext('force principal name even if not in DNS', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: service_add_host
+args: 1,4,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: service_del
+args: 1,1,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: service_disable
+args: 1,0,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: service_find
+args: 1,9,4
+arg: Str('criteria?')
+option: Str('krbprincipalname', validate_principal, attribute=True, autofill=False, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Bytes('usercertificate', validate_certificate, attribute=True, autofill=False, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', cli_name='hosts',ist('host?', cli_name='hosts', doc='only services with member hosts', label='host', multivalue=True)
+option: List('no_host?', cli_name='no_hosts',ist('no_host?', cli_name='no_hosts', doc='only services with no member hosts', label='host', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: service_mod
+args: 1,7,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Bytes('usercertificate', validate_certificate, attribute=True, autofill=False, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: service_remove_host
+args: 1,4,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: service_show
+args: 1,5,3
+arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Str('out?',tr('out?', doc=Gettext('file to store certificate in', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmd_add
+args: 1,6,3
+arg: Str('sudocmd', attribute=True, cli_name='command', label=Gettext('Sudo Command', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmd_del
+args: 1,1,3
+arg: Str('sudocmd', attribute=True, cli_name='command', label=Gettext('Sudo Command', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmd_find
+args: 1,7,4
+arg: Str('criteria?')
+option: Str('sudocmd', attribute=True, autofill=False, cli_name='command', label=Gettext('Sudo Command', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: sudocmd_mod
+args: 1,7,3
+arg: Str('sudocmd', attribute=True, cli_name='command', label=Gettext('Sudo Command', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmd_show
+args: 1,4,3
+arg: Str('sudocmd', attribute=True, cli_name='command', label=Gettext('Sudo Command', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmdgroup_add
+args: 1,6,3
+arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmdgroup_add_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('sudocmd?', alwaysask=True, cli_name='sudocmds',ist('sudocmd?', alwaysask=True, cli_name='sudocmds', doc='comma-separated list of sudocmds to add', label='sudocmd', multivalue=True)
+option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups',ist('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', doc='comma-separated list of sudocmdgroups to add', label='sudocmdgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudocmdgroup_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=True, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmdgroup_find
+args: 1,7,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: sudocmdgroup_mod
+args: 1,7,3
+arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudocmdgroup_remove_member
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('sudocmd?', alwaysask=True, cli_name='sudocmds',ist('sudocmd?', alwaysask=True, cli_name='sudocmds', doc='comma-separated list of sudocmds to remove', label='sudocmd', multivalue=True)
+option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups',ist('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', doc='comma-separated list of sudocmdgroups to remove', label='sudocmdgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudocmdgroup_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', label=Gettext('Sudo Command Group name', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudorule_add
+args: 1,14,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, required=True)
+option: Str('description', attribute=True, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('usercategory', attribute=True, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('cmdcategory', attribute=True, cli_name='cmdcat', label=Gettext('Command category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('ipasudorunasusercategory', attribute=True, cli_name='runasusercat', label=Gettext('Run As User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('ipasudorunasgroupcategory', attribute=True, cli_name='runasgroupcat', label=Gettext('Run As Group category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: Str('externaluser', attribute=True, cli_name='externaluser', label=Gettext('External User', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipasudorunasextuser', attribute=True, cli_name='runasexternaluser', label=Gettext('RunAs External User', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipasudorunasextgroup', attribute=True, cli_name='runasexternalgroup', label=Gettext('RunAs External Group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudorule_add_allow_command
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('sudocmd?', alwaysask=True, cli_name='sudocmds',ist('sudocmd?', alwaysask=True, cli_name='sudocmds', doc='comma-separated list of sudocmds to add', label='sudocmd', multivalue=True)
+option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups',ist('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', doc='comma-separated list of sudocmdgroups to add', label='sudocmdgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudorule_add_deny_command
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('sudocmd?', alwaysask=True, cli_name='sudocmds',ist('sudocmd?', alwaysask=True, cli_name='sudocmds', doc='comma-separated list of sudocmds to add', label='sudocmd', multivalue=True)
+option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups',ist('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', doc='comma-separated list of sudocmdgroups to add', label='sudocmdgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudorule_add_host
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to add', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to add', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudorule_add_option
+args: 1,1,1
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('ipasudoopt', cli_name='sudooption', label=Gettext('Sudo Option', domain='ipa', localedir=None))
+output: Output('result', None, None)
+command: sudorule_add_runasgroup
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudorule_add_runasuser
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to add', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudorule_add_user
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to add', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to add', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be added', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members added', domain='ipa', localedir=None))
+command: sudorule_del
+args: 1,1,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=True, primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudorule_disable
+args: 1,0,1
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('result', None, None)
+command: sudorule_enable
+args: 1,0,1
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+output: Output('result', None, None)
+command: sudorule_find
+args: 1,15,4
+arg: Str('criteria?')
+option: Str('cn', attribute=True, autofill=False, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: StrEnum('usercategory', attribute=True, autofill=False, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, autofill=False, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('cmdcategory', attribute=True, autofill=False, cli_name='cmdcat', label=Gettext('Command category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('ipasudorunasusercategory', attribute=True, autofill=False, cli_name='runasusercat', label=Gettext('Run As User category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: StrEnum('ipasudorunasgroupcategory', attribute=True, autofill=False, cli_name='runasgroupcat', label=Gettext('Run As Group category', domain='ipa', localedir=None), multivalue=False, query=True, required=False, values=(u'all',))
+option: Str('externaluser', attribute=True, autofill=False, cli_name='externaluser', label=Gettext('External User', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('ipasudorunasextuser', attribute=True, autofill=False, cli_name='runasexternaluser', label=Gettext('RunAs External User', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('ipasudorunasextgroup', attribute=True, autofill=False, cli_name='runasexternalgroup', label=Gettext('RunAs External Group', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: sudorule_mod
+args: 1,15,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('description', attribute=True, autofill=False, cli_name='desc', label=Gettext('Description', domain='ipa', localedir=None), multivalue=False, required=False)
+option: StrEnum('usercategory', attribute=True, autofill=False, cli_name='usercat', label=Gettext('User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('hostcategory', attribute=True, autofill=False, cli_name='hostcat', label=Gettext('Host category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('cmdcategory', attribute=True, autofill=False, cli_name='cmdcat', label=Gettext('Command category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('ipasudorunasusercategory', attribute=True, autofill=False, cli_name='runasusercat', label=Gettext('Run As User category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: StrEnum('ipasudorunasgroupcategory', attribute=True, autofill=False, cli_name='runasgroupcat', label=Gettext('Run As Group category', domain='ipa', localedir=None), multivalue=False, required=False, values=(u'all',))
+option: Str('externaluser', attribute=True, autofill=False, cli_name='externaluser', label=Gettext('External User', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipasudorunasextuser', attribute=True, autofill=False, cli_name='runasexternaluser', label=Gettext('RunAs External User', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('ipasudorunasextgroup', attribute=True, autofill=False, cli_name='runasexternalgroup', label=Gettext('RunAs External Group', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: sudorule_remove_allow_command
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('sudocmd?', alwaysask=True, cli_name='sudocmds',ist('sudocmd?', alwaysask=True, cli_name='sudocmds', doc='comma-separated list of sudocmds to remove', label='sudocmd', multivalue=True)
+option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups',ist('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', doc='comma-separated list of sudocmdgroups to remove', label='sudocmdgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudorule_remove_deny_command
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('sudocmd?', alwaysask=True, cli_name='sudocmds',ist('sudocmd?', alwaysask=True, cli_name='sudocmds', doc='comma-separated list of sudocmds to remove', label='sudocmd', multivalue=True)
+option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups',ist('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', doc='comma-separated list of sudocmdgroups to remove', label='sudocmdgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudorule_remove_host
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('host?', alwaysask=True, cli_name='hosts',ist('host?', alwaysask=True, cli_name='hosts', doc='comma-separated list of hosts to remove', label='host', multivalue=True)
+option: List('hostgroup?', alwaysask=True, cli_name='hostgroups',ist('hostgroup?', alwaysask=True, cli_name='hostgroups', doc='comma-separated list of hostgroups to remove', label='hostgroup', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudorule_remove_option
+args: 1,1,1
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Str('ipasudoopt?', cli_name='sudooption', label=Gettext('Sudo Option', domain='ipa', localedir=None))
+output: Output('result', None, None)
+command: sudorule_remove_runasgroup
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudorule_remove_runasuser
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to remove', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudorule_remove_user
+args: 1,5,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('user?', alwaysask=True, cli_name='users',ist('user?', alwaysask=True, cli_name='users', doc='comma-separated list of users to remove', label='user', multivalue=True)
+option: List('group?', alwaysask=True, cli_name='groups',ist('group?', alwaysask=True, cli_name='groups', doc='comma-separated list of groups to remove', label='group', multivalue=True)
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('failed', <type 'dict'>, Gettext('Members that could not be removed', domain='ipa', localedir=None))
+output: Output('completed', <type 'int'>, Gettext('Number of members removed', domain='ipa', localedir=None))
+command: sudorule_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='sudorule_name', label=Gettext('Rule name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: user_add
+args: 1,30,3
+arg: Str('uid', attribute=True, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, required=True)
+option: Str('givenname', attribute=True, cli_name='first', label=Gettext('First name', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('sn', attribute=True, cli_name='last', label=Gettext('Last name', domain='ipa', localedir=None), multivalue=False, required=True)
+option: Str('cn', attribute=True, autofill=True, cli_name='cn', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Full name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('displayname', attribute=True, autofill=True, cli_name='displayname', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Display name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('initials', attribute=True, autofill=True, cli_name='initials', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Initials', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('homedirectory', attribute=True, cli_name='homedir', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('Home directory', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('gecos', attribute=True, autofill=True, cli_name='gecos', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('GECOS field', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('loginshell', attribute=True, cli_name='shell', default=u'/bin/sh', label=Gettext('Login shell', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('krbprincipalname', attribute=True, autofill=True, cli_name='principal', default_from=DefaultFrom(<lambda>, 'uid'), flags=['no_update'], label=Gettext('Kerberos principal', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('mail', attribute=True, cli_name='email', label=Gettext('Email address', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Password('userpassword', attribute=True, cli_name='password', exclude='webui', label=Gettext('Password', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('uidnumber', attribute=True, autofill=True, cli_name='uid', default=999, label=Gettext('UID', domain='ipa', localedir=None), minvalue=1, multivalue=False, required=False)
+option: Int('gidnumber', attribute=True, cli_name='gidnumber', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('GID', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('street', attribute=True, cli_name='street', label=Gettext('Street address', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('location', attribute=True, cli_name='city', label=Gettext('City', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('state', attribute=True, cli_name='state', label=Gettext('State', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('postalcode', attribute=True, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('telephonenumber', attribute=True, cli_name='phone', label=Gettext('Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('mobile', attribute=True, cli_name='mobile', label=Gettext('Mobile Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('pager', attribute=True, cli_name='pager', label=Gettext('Pager Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('facsimiletelephonenumber', attribute=True, cli_name='fax', label=Gettext('Fax Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('ou', attribute=True, cli_name='orgunit', label=Gettext('Org. Unit', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('title', attribute=True, cli_name='title', label=Gettext('Job Title', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('manager', attribute=True, cli_name='manager', label=Gettext('Manager', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('carlicense', attribute=True, cli_name='carlicense', label=Gettext('Car License', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: user_del
+args: 1,1,3
+arg: Str('uid', attribute=True, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=True, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Flag('continue', autofill=True, cli_name='continue', default=False,lag('continue', autofill=True, cli_name='continue', default=False, doc=Gettext("Continuous mode: Don't stop on errors.", domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'dict'>, 'list of deletions that failed')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: user_disable
+args: 1,0,3
+arg: Str('uid', attribute=True, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: user_enable
+args: 1,0,3
+arg: Str('uid', attribute=True, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Output('result', <type 'bool'>, 'True means the operation was successful')
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: user_find
+args: 1,38,4
+arg: Str('criteria?')
+option: Str('uid', attribute=True, autofill=False, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=False)
+option: Str('givenname', attribute=True, autofill=False, cli_name='first', label=Gettext('First name', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('sn', attribute=True, autofill=False, cli_name='last', label=Gettext('Last name', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('cn', attribute=True, autofill=False, cli_name='cn', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Full name', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('displayname', attribute=True, autofill=False, cli_name='displayname', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Display name', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('initials', attribute=True, autofill=False, cli_name='initials', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Initials', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('homedirectory', attribute=True, autofill=False, cli_name='homedir', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('Home directory', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('gecos', attribute=True, autofill=False, cli_name='gecos', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('GECOS field', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('loginshell', attribute=True, autofill=False, cli_name='shell', default=u'/bin/sh', label=Gettext('Login shell', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('krbprincipalname', attribute=True, autofill=False, cli_name='principal', default_from=DefaultFrom(<lambda>, 'uid'), flags=['no_update'], label=Gettext('Kerberos principal', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('mail', attribute=True, autofill=False, cli_name='email', label=Gettext('Email address', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: Password('userpassword', attribute=True, autofill=False, cli_name='password', exclude='webui', label=Gettext('Password', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('uidnumber', attribute=True, autofill=False, cli_name='uid', default=999, label=Gettext('UID', domain='ipa', localedir=None), minvalue=1, multivalue=False, query=True, required=False)
+option: Int('gidnumber', attribute=True, autofill=False, cli_name='gidnumber', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('GID', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('street', attribute=True, autofill=False, cli_name='street', label=Gettext('Street address', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('location', attribute=True, autofill=False, cli_name='city', label=Gettext('City', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('state', attribute=True, autofill=False, cli_name='state', label=Gettext('State', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('postalcode', attribute=True, autofill=False, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('telephonenumber', attribute=True, autofill=False, cli_name='phone', label=Gettext('Telephone Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: Str('mobile', attribute=True, autofill=False, cli_name='mobile', label=Gettext('Mobile Telephone Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: Str('pager', attribute=True, autofill=False, cli_name='pager', label=Gettext('Pager Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: Str('facsimiletelephonenumber', attribute=True, autofill=False, cli_name='fax', label=Gettext('Fax Number', domain='ipa', localedir=None), multivalue=True, query=True, required=False)
+option: Str('ou', attribute=True, autofill=False, cli_name='orgunit', label=Gettext('Org. Unit', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('title', attribute=True, autofill=False, cli_name='title', label=Gettext('Job Title', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('manager', attribute=True, autofill=False, cli_name='manager', label=Gettext('Manager', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Str('carlicense', attribute=True, autofill=False, cli_name='carlicense', label=Gettext('Car License', domain='ipa', localedir=None), multivalue=False, query=True, required=False)
+option: Int('timelimit?', autofill=False, flags=['no_display'], label=Gettext('Time Limit', domain='ipa', localedir=None), minvalue=0)
+option: Int('sizelimit?', autofill=False, flags=['no_display'], label=Gettext('Size Limit', domain='ipa', localedir=None), minvalue=0)
+option: Flag('whoami', autofill=True, default=False, label=Gettext('Self', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: List('in_group?', cli_name='in_groups',ist('in_group?', cli_name='in_groups', doc='only users with member of groups', label='group', multivalue=True)
+option: List('not_in_group?', cli_name='not_in_groups',ist('not_in_group?', cli_name='not_in_groups', doc='only users with no member of groups', label='group', multivalue=True)
+option: List('in_netgroup?', cli_name='in_netgroups',ist('in_netgroup?', cli_name='in_netgroups', doc='only users with member of netgroups', label='netgroup', multivalue=True)
+option: List('not_in_netgroup?', cli_name='not_in_netgroups',ist('not_in_netgroup?', cli_name='not_in_netgroups', doc='only users with no member of netgroups', label='netgroup', multivalue=True)
+option: List('in_role?', cli_name='in_roles',ist('in_role?', cli_name='in_roles', doc='only users with member of roles', label='role', multivalue=True)
+option: List('not_in_role?', cli_name='not_in_roles',ist('not_in_role?', cli_name='not_in_roles', doc='only users with no member of roles', label='role', multivalue=True)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('count', <type 'int'>, 'Number of entries returned')
+output: Output('truncated', <type 'bool'>, 'True if not all results were returned')
+command: user_mod
+args: 1,31,3
+arg: Str('uid', attribute=True, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Str('givenname', attribute=True, autofill=False, cli_name='first', label=Gettext('First name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('sn', attribute=True, autofill=False, cli_name='last', label=Gettext('Last name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('cn', attribute=True, autofill=False, cli_name='cn', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Full name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('displayname', attribute=True, autofill=False, cli_name='displayname', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Display name', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('initials', attribute=True, autofill=False, cli_name='initials', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Initials', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('homedirectory', attribute=True, autofill=False, cli_name='homedir', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('Home directory', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('gecos', attribute=True, autofill=False, cli_name='gecos', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('GECOS field', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('loginshell', attribute=True, autofill=False, cli_name='shell', default=u'/bin/sh', label=Gettext('Login shell', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('mail', attribute=True, autofill=False, cli_name='email', label=Gettext('Email address', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Password('userpassword', attribute=True, autofill=False, cli_name='password', exclude='webui', label=Gettext('Password', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('uidnumber', attribute=True, autofill=False, cli_name='uid', default=999, label=Gettext('UID', domain='ipa', localedir=None), minvalue=1, multivalue=False, required=False)
+option: Int('gidnumber', attribute=True, autofill=False, cli_name='gidnumber', default_from=DefaultFrom(<lambda>, 'uid'), label=Gettext('GID', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('street', attribute=True, autofill=False, cli_name='street', label=Gettext('Street address', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('location', attribute=True, autofill=False, cli_name='city', label=Gettext('City', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('state', attribute=True, autofill=False, cli_name='state', label=Gettext('State', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Int('postalcode', attribute=True, autofill=False, cli_name='postalcode', label=Gettext('ZIP', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('telephonenumber', attribute=True, autofill=False, cli_name='phone', label=Gettext('Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('mobile', attribute=True, autofill=False, cli_name='mobile', label=Gettext('Mobile Telephone Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('pager', attribute=True, autofill=False, cli_name='pager', label=Gettext('Pager Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('facsimiletelephonenumber', attribute=True, autofill=False, cli_name='fax', label=Gettext('Fax Number', domain='ipa', localedir=None), multivalue=True, required=False)
+option: Str('ou', attribute=True, autofill=False, cli_name='orgunit', label=Gettext('Org. Unit', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('title', attribute=True, autofill=False, cli_name='title', label=Gettext('Job Title', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('manager', attribute=True, autofill=False, cli_name='manager', label=Gettext('Manager', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('carlicense', attribute=True, autofill=False, cli_name='carlicense', label=Gettext('Car License', domain='ipa', localedir=None), multivalue=False, required=False)
+option: Str('addattr*', validate_add_attribute, cli_name='addattr', exclude='webui')
+option: Str('setattr*', validate_set_attribute, cli_name='setattr', exclude='webui')
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+option: Str('rename', cli_name='rename', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('Rename', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, required=False)
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
+command: user_show
+args: 1,4,3
+arg: Str('uid', attribute=True, cli_name='login', default_from=DefaultFrom(<lambda>, 'givenname', 'sn'), label=Gettext('User login', domain='ipa', localedir=None), maxlength=255, multivalue=False, normalizer=<lambda>, pattern='^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$', pattern_errmsg='may only include letters, numbers, _, -, . and $', primary_key=True, query=True, required=True)
+option: Flag('rights', autofill=True, default=False, label=Gettext('Rights', domain='ipa', localedir=None))
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
+option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), 'User-friendly description of action performed')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('value', <type 'unicode'>, "The primary_key value of the entry, e.g. 'jdoe' for a user")
diff --git a/BUILD.txt b/BUILD.txt
index acb5cacf0..d70351d6a 100644
--- a/BUILD.txt
+++ b/BUILD.txt
@@ -67,6 +67,25 @@ Some tests may be skipped. For example, all the XML-RPC tests will be skipped
if you haven't started the lite-server. The DNS tests will be skipped if
the underlying IPA installation doesn't configure DNS, etc.
+API.txt
+-------
+The purpose of the file API.txt is to prevent accidental API changes. The
+program ./makeapi creates file and also validates it (with the --validate
+option). This validation is part of the build process.
+
+There are three solutions to changes to the API:
+
+1. Changes to existing API require a change to the MAJOR version.
+2. Addition of new API requires a change to the MINOR version.
+3. Or just back out your changes and don't make an API change.
+
+If the API changes you'll need to run ./makeapi to update API.txt and
+commit it along with VERSION with your API change.
+
+If a module is optionally loaded then you will need to be able to
+conditionally load it for API validation. The environment variable
+api.env.validate_api is True during validation.
+
General Notes
-------------
IPA is not relocatable.
diff --git a/Makefile b/Makefile
index cb14c01d7..c7136492f 100644
--- a/Makefile
+++ b/Makefile
@@ -49,7 +49,7 @@ client: client-autogen
bootstrap-autogen: version-update client-autogen
@echo "Building IPA $(IPA_VERSION)"
- cd daemons; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
+ cd daemons; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR) --with-openldap; fi
cd install; if [ ! -e Makefile ]; then ../autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=$(LIBDIR); fi
client-autogen: version-update
@@ -90,6 +90,7 @@ version-update: release-update
sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/version.py.in \
> ipapython/version.py
perl -pi -e "s:__NUM_VERSION__:$(IPA_VERSION_MAJOR)$(IPA_VERSION_MINOR)$(IPA_VERSION_RELEASE):" ipapython/version.py
+ perl -pi -e "s:__API_VERSION__:$(IPA_API_VERSION_MAJOR).$(IPA_API_VERSION_MINOR):" ipapython/version.py
sed -e s/__VERSION__/$(IPA_VERSION)/ daemons/ipa-version.h.in \
> daemons/ipa-version.h
perl -pi -e "s:__NUM_VERSION__:$(IPA_VERSION_MAJOR)$(IPA_VERSION_MINOR)$(IPA_VERSION_RELEASE):" daemons/ipa-version.h
@@ -99,6 +100,9 @@ version-update: release-update
ipa-client/ipa-client.spec.in > ipa-client/ipa-client.spec
sed -e s/__VERSION__/$(IPA_VERSION)/ ipa-client/version.m4.in \
> ipa-client/version.m4
+ if [ "$(SKIP_API_VERSION_CHECK)" != "yes" ]; then \
+ ./makeapi --validate; \
+ fi
server:
python setup.py build
diff --git a/VERSION b/VERSION
index c956ad003..d5b55d0d3 100644
--- a/VERSION
+++ b/VERSION
@@ -66,3 +66,17 @@ IPA_VERSION_IS_GIT_SNAPSHOT="yes"
# -> "20100614120000" #
########################################################
IPA_DATA_VERSION=20100614120000
+
+########################################################
+# The version of the IPA API. This controls which #
+# client versions can use the XML-RPC and json APIs #
+# #
+# A change to existing API requires a MAJOR version #
+# update. The addition of new API bumps the MINOR #
+# version. #
+# #
+# The format is a whole number #
+# #
+########################################################
+IPA_API_VERSION_MAJOR=2
+IPA_API_VERSION_MINOR=0
diff --git a/ipa.spec.in b/ipa.spec.in
index 6cb96def8..6f9a62872 100644
--- a/ipa.spec.in
+++ b/ipa.spec.in
@@ -39,6 +39,11 @@ BuildRequires: m4
BuildRequires: policycoreutils >= %{POLICYCOREUTILSVER}
BuildRequires: python-setuptools
BuildRequires: python-krbV
+BuildRequires: python-nss
+BuildRequires: python-netaddr
+BuildRequires: python-kerberos
+BuildRequires: python-ldap
+BuildRequires: krb5-workstation
BuildRequires: xmlrpc-c-devel
BuildRequires: libcurl-devel
BuildRequires: gettext
diff --git a/ipalib/cli.py b/ipalib/cli.py
index c5fea8f28..c634d4909 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -32,7 +32,14 @@ import fcntl
import termios
import struct
import base64
-import default_encoding_utf8
+try:
+ import default_encoding_utf8
+except ImportError:
+ # This is a chicken-and-egg problem. The api can't be imported unless
+ # this is already installed and since it is installed with IPA therein
+ # lies the problem. Skip it for now so ipalib can be imported in-tree
+ # even in cases that IPA isn't installed on the dev machine.
+ pass
import frontend
import backend
@@ -42,6 +49,7 @@ from errors import PublicError, CommandError, HelpError, InternalError, NoSuchNa
from constants import CLI_TAB
from parameters import Password, Bytes, File
from text import _
+from ipapython.version import API_VERSION
def to_cli(name):
@@ -884,6 +892,7 @@ class cli(backend.Executioner):
if not isinstance(cmd, frontend.Local):
self.create_context()
kw = self.parse(cmd, argv)
+ kw['version'] = API_VERSION
if self.env.interactive:
self.prompt_interactively(cmd, kw)
self.load_files(cmd, kw)
@@ -931,6 +940,8 @@ class cli(backend.Executioner):
dest=option.name,
help=unicode(option.doc),
)
+ if 'no_option' in option.flags:
+ continue
if option.password and self.env.interactive:
kw['action'] = 'store_true'
elif option.type is bool and option.autofill:
diff --git a/ipalib/constants.py b/ipalib/constants.py
index b6aa85466..9a2f19826 100644
--- a/ipalib/constants.py
+++ b/ipalib/constants.py
@@ -140,6 +140,9 @@ DEFAULT_CONFIG = (
('enable_ra', False),
('ra_plugin', 'selfsign'),
+ # Used when verifying that the API hasn't changed. Not for production.
+ ('validate_api', False),
+
# ********************************************************
# The remaining keys are never set from the values here!
# ********************************************************
diff --git a/ipalib/crud.py b/ipalib/crud.py
index 6df3c733d..76d57daef 100644
--- a/ipalib/crud.py
+++ b/ipalib/crud.py
@@ -76,7 +76,7 @@ us:
>>> list(api.Command.user_add.args)
['login']
>>> list(api.Command.user_add.options)
-['first', 'last', 'all', 'raw']
+['first', 'last', 'all', 'raw', 'version']
Notice that ``'ipauniqueid'`` isn't included in the options for our ``user_add``
plugin. This is because of the ``'no_create'`` flag we used when defining the
@@ -94,7 +94,7 @@ class created them for us:
>>> list(api.Command.user_show.args)
['login']
>>> list(api.Command.user_show.options)
-['all', 'raw']
+['all', 'raw', 'version']
As you can see, `Retrieve` plugins take a single argument (the primary key) and
no options. If needed, you can still specify options for your `Retrieve` plugin
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 7177bd185..eeed3980c 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -30,9 +30,11 @@ from util import make_repr
from output import Output, Entry, ListOfEntries
from text import _, ngettext
-from errors import ZeroArgumentError, MaxArgumentError, OverlapError, RequiresRoot
+from errors import ZeroArgumentError, MaxArgumentError, OverlapError, RequiresRoot, VersionError, RequirementError
from errors import InvocationError
from constants import TYPE_ERROR
+from ipapython.version import API_VERSION
+from distutils import version
RULE_FLAG = 'validation_rule'
@@ -412,6 +414,8 @@ class Command(HasParam):
self.info(
'%s(%s)', self.name, ', '.join(self._repr_iter(**params))
)
+ if not self.api.env.in_server and 'version' not in params:
+ params['version'] = API_VERSION
self.validate(**params)
(args, options) = self.params_2_args_options(**params)
ret = self.run(*args, **options)
@@ -680,6 +684,30 @@ class Command(HasParam):
value = kw.get(param.name, None)
param.validate(value, self.env.context)
+ def verify_client_version(self, client_version):
+ """
+ Compare the version the client provided to the version of the
+ server.
+
+ If the client major version does not match then return an error.
+ If the client minor version is less than or equal to the server
+ then let the request proceed.
+ """
+ ver = version.LooseVersion(client_version)
+ if len(ver.version) < 2:
+ raise VersionError(cver=ver.version, sver=server_ver.version, server= self.env.xmlrpc_uri)
+ client_major = ver.version[0]
+ client_minor = ver.version[1]
+
+ server_ver = version.LooseVersion(API_VERSION)
+ server_major = server_ver.version[0]
+ server_minor = server_ver.version[1]
+
+ if server_major != client_major:
+ raise VersionError(cver=client_version, sver=API_VERSION, server=self.env.xmlrpc_uri)
+ if client_minor > server_minor:
+ raise VersionError(cver=client_version, sver=API_VERSION, server=self.env.xmlrpc_uri)
+
def run(self, *args, **options):
"""
Dispatch to `Command.execute` or `Command.forward`.
@@ -693,6 +721,9 @@ class Command(HasParam):
performs is executed remotely.
"""
if self.api.env.in_server:
+ if 'version' in options:
+ self.verify_client_version(options['version'])
+ del options['version']
return self.execute(*args, **options)
return self.forward(*args, **options)
@@ -826,6 +857,11 @@ class Command(HasParam):
exclude='webui',
flags=['no_output'],
)
+ yield Str('version?',
+ doc=_('Client version. Used to determine if server will accept request.'),
+ exclude='webui',
+ flags=['no_option', 'no_output'],
+ )
return
def validate_output(self, output):
diff --git a/ipalib/plugins/batch.py b/ipalib/plugins/batch.py
index 07c50600a..f6f662f28 100644
--- a/ipalib/plugins/batch.py
+++ b/ipalib/plugins/batch.py
@@ -33,7 +33,7 @@ where the contenst of the file batch_request.json follow the below example
{"method":"user_show","params":[["admin"],{"all":true}]}
],{}],"id":1}
-THe format of the response is nested the same way. At the top you will see
+The format of the response is nested the same way. At the top you will see
"error": null,
"id": 1,
"result": {
@@ -51,6 +51,7 @@ from ipalib import Str, List
from ipalib.output import Output
from ipalib import output
from ipalib.text import _
+from ipapython.version import API_VERSION
class batch(Command):
INTERNAL = True
@@ -61,6 +62,17 @@ class batch(Command):
),
)
+ take_options = (
+ Str('version',
+ cli_name='version',
+ doc=_('Client version. Used to determine if server will accept request.'),
+ exclude='webui',
+ flags=['no_option', 'no_output'],
+ default=API_VERSION,
+ autofill=True,
+ )
+ )
+
has_output = (
Output('count', int, doc=_('')),
Output('results', list, doc=_(''))
diff --git a/ipalib/plugins/ping.py b/ipalib/plugins/ping.py
index 634c4f875..c2f9b6b28 100644
--- a/ipalib/plugins/ping.py
+++ b/ipalib/plugins/ping.py
@@ -23,6 +23,7 @@ Ping the remote IPA server
from ipalib import api
from ipalib import Command
from ipalib import output
+from ipapython.version import VERSION, API_VERSION
class ping(Command):
"""
@@ -37,6 +38,6 @@ class ping(Command):
A possible enhancement would be to take an argument and echo it
back but a fixed value works for now.
"""
- return dict(summary=u'pong')
+ return dict(summary=u'IPA server version %s. API version %s' % (VERSION, API_VERSION))
api.register(ping)
diff --git a/ipapython/version.py.in b/ipapython/version.py.in
index 041425b50..9cf8ddbe8 100644
--- a/ipapython/version.py.in
+++ b/ipapython/version.py.in
@@ -23,3 +23,6 @@ VERSION="__VERSION__"
# Just the numeric portion of the version so one can do direct numeric
# comparisons to see if the API is compatible.
NUM_VERSION=__NUM_VERSION__
+
+# The version of the API.
+API_VERSION=u'__API_VERSION__'
diff --git a/makeapi b/makeapi
new file mode 100755
index 000000000..30eac18c3
--- /dev/null
+++ b/makeapi
@@ -0,0 +1,238 @@
+#!/usr/bin/env python
+# Authors:
+# Rob Crittenden <rcritten@redhat.com>
+#
+# Copyright (C) 2011 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test the API against a known-good API to ensure that changes aren't made
+# lightly.
+
+import sys
+import os
+import re
+from ipalib import *
+from ipalib.text import Gettext
+
+API_FILE='API.txt'
+
+API_FILE_DIFFERENCE = 1
+API_NEW_COMMAND = 2
+API_NO_FILE = 4
+
+def parse_options():
+ from optparse import OptionParser
+
+ parser = OptionParser()
+ parser.add_option("--validate", dest="validate", action="store_true",
+ default=False, help="Validate the API vs the stored API")
+
+ options, args = parser.parse_args()
+ return options, args
+
+def strip_doc(line):
+ """
+ Remove the doc= line from the repr() of a Paramter.
+ """
+ s = line.find(' doc=')
+ if s >= 0:
+ e = line.find('), ', s)
+ line = '%s%s' % (line[0:s], line[e+2:])
+
+ return line
+
+def make_api():
+ """
+ Write a new API file from the current tree.
+ """
+ fd = open(API_FILE, 'w')
+ for cmd in api.Command():
+ fd.write('command: %s\n' % cmd.name)
+ fd.write('args: %d,%d,%d\n' % (len(cmd.args), len(cmd.options), len(cmd.output)))
+ for a in cmd.args():
+ fd.write('arg: %s\n' % strip_doc(repr(a)))
+ for o in cmd.options():
+ fd.write('option: %s\n' % strip_doc(repr(o)))
+ for o in cmd.output():
+ fd.write('output: %s\n' % strip_doc(repr(o)))
+ fd.close()
+
+ return 0
+
+def find_name(line):
+ """
+ Break apart a Param line and pull out the name. It would be nice if we
+ could just eval() the line but we wouldn't have defined any validators
+ or normalizers it may be using.
+ """
+ m = re.match('^[a-zA-Z0-9]+\(\'([a-z][_a-z0-9?\*\+]*)\'.*', line)
+ if m:
+ name = m.group(1)
+ else:
+ print "Couldn't find name in: %s" % line
+ name = ''
+ return name
+
+def validate_api():
+ """
+ Compare the API in the file to the one in ipalib.
+
+ Return a bitwise return code to identify the types of errors found, if
+ any.
+ """
+ fd = open(API_FILE, 'r')
+ lines = fd.readlines()
+ fd.close()
+
+ rval = 0
+
+ # First run through the file and compare it to the API
+ existing_cmds = []
+ cmd = None
+ for line in lines:
+ line = line.strip()
+ if line.startswith('command:'):
+ if cmd:
+ # Check the args of the previous command.
+ if found_args != expected_args:
+ print 'Argument count in %s of %d doesn\'t match expected: %d' % (
+ name, found_args, expected_args)
+ rval |= API_FILE_DIFFERENCE
+ if found_options != expected_options:
+ print 'Options count in %s of %d doesn\'t match expected: %d' % (
+ name, found_options, expected_options)
+ rval |= API_FILE_DIFFERENCE
+ if found_output != expected_output:
+ print 'Output count in %s of %d doesn\'t match expected: %d' % (
+ name, found_output, expected_output)
+ rval |= API_FILE_DIFFERENCE
+ (arg, name) = line.split(': ', 1)
+ if name not in api.Command:
+ print "Command %s in API file, not in ipalib" % name
+ rval |= API_FILE_DIFFERENCE
+ cmd = None
+ else:
+ existing_cmds.append(name)
+ cmd = api.Command[name]
+ found_args = 0
+ found_options = 0
+ found_output = 0
+ if line.startswith('args:') and cmd:
+ line = line.replace('args: ', '')
+ (expected_args, expected_options, expected_output) = line.split(',')
+ expected_args = int(expected_args)
+ expected_options = int(expected_options)
+ expected_output = int(expected_output)
+ if line.startswith('arg:') and cmd:
+ line = line.replace('arg: ', '')
+ found = False
+ for a in cmd.args():
+ if strip_doc(repr(a)) == line:
+ found = True
+ else:
+ arg = find_name(line)
+ if a.name == arg:
+ found = True
+ print 'Arg in %s doesn\'t match.\nGot %s\nExpected %s' % (
+ name, strip_doc(repr(a)), line)
+ rval |= API_FILE_DIFFERENCE
+ if found:
+ found_args += 1
+ else:
+ arg = find_name(line)
+ print "Argument '%s' in command '%s' in API file not found" % (arg, name)
+ rval |= API_FILE_DIFFERENCE
+ if line.startswith('option:') and cmd:
+ line = line.replace('option: ', '')
+ found = False
+ for o in cmd.options():
+ if strip_doc(repr(o)) == line:
+ found = True
+ else:
+ option = find_name(line)
+ if o.name == option:
+ found = True
+ print 'Option in %s doesn\'t match. Got %s Expected %s' % (name, o, line)
+ rval |= API_FILE_DIFFERENCE
+ if found:
+ found_options += 1
+ else:
+ option = find_name(line)
+ print "Option '%s' in command '%s' in API file not found" % (option, name)
+ rval |= API_FILE_DIFFERENCE
+ if line.startswith('output:') and cmd:
+ line = line.replace('output: ', '')
+ found = False
+ for o in cmd.output():
+ if strip_doc(repr(o)) == line:
+ found = True
+ else:
+ output = find_name(line)
+ if o.name == output:
+ found = True
+ print 'Output in %s doesn\'t match. Got %s Expected %s' % (name, o, line)
+ rval |= API_FILE_DIFFERENCE
+ if found:
+ found_output += 1
+ else:
+ output = find_name(line)
+ print "Option '%s' in command '%s' in API file not found" % (output, name)
+ rval |= API_FILE_DIFFERENCE
+
+ # Now look for new commands not in the current API
+ for cmd in api.Command():
+ if cmd.name not in existing_cmds:
+ print "Command %s in ipalib, not in API" % cmd.name
+ rval |= API_NEW_COMMAND
+
+ return rval
+
+def main():
+ options, args = parse_options()
+
+ cfg = dict(
+ context='cli',
+ in_server=False,
+ debug=False,
+ verbose=0,
+ validate_api=True,
+ enable_ra=True,
+ )
+
+ api.bootstrap(**cfg)
+ api.finalize()
+
+ if options.validate:
+ if not os.path.exists(API_FILE):
+ print 'No %s to validate' % API_FILE
+ rval = API_NO_FILE
+ else:
+ rval = validate_api()
+ else:
+ print "Writing API to API.txt"
+ rval = make_api()
+
+ if rval & API_FILE_DIFFERENCE:
+ print ''
+ print 'There are one or more changes to the API.\nEither undo the API changes or update API.txt and increment the major version in VERSION.'
+
+ if rval & API_NEW_COMMAND:
+ print ''
+ print 'There are one or more new commands defined.\nUpdate API.txt and increment the minor version in VERSION.'
+
+ return rval
+
+sys.exit(main())
diff --git a/tests/test_ipalib/test_crud.py b/tests/test_ipalib/test_crud.py
index 04a8fa797..3700c5081 100644
--- a/tests/test_ipalib/test_crud.py
+++ b/tests/test_ipalib/test_crud.py
@@ -74,12 +74,13 @@ class test_Create(CrudChecker):
"""
api = self.get_api()
assert list(api.Method.user_verb.options) == \
- ['givenname', 'sn', 'initials', 'all', 'raw']
+ ['givenname', 'sn', 'initials', 'all', 'raw', 'version']
for param in api.Method.user_verb.options():
- assert param.required is True
+ if param.name != 'version':
+ assert param.required is True
api = self.get_api(options=('extra?',))
assert list(api.Method.user_verb.options) == \
- ['givenname', 'sn', 'initials', 'extra', 'all', 'raw']
+ ['givenname', 'sn', 'initials', 'extra', 'all', 'raw', 'version']
assert api.Method.user_verb.options.extra.required is False
@@ -104,7 +105,7 @@ class test_Update(CrudChecker):
"""
api = self.get_api()
assert list(api.Method.user_verb.options) == \
- ['givenname', 'initials', 'uidnumber', 'all', 'raw']
+ ['givenname', 'initials', 'uidnumber', 'all', 'raw', 'version']
for param in api.Method.user_verb.options():
if param.name in ['all', 'raw']:
assert param.required is True
@@ -132,7 +133,7 @@ class test_Retrieve(CrudChecker):
Test the `ipalib.crud.Retrieve.get_options` method.
"""
api = self.get_api()
- assert list(api.Method.user_verb.options) == ['all', 'raw']
+ assert list(api.Method.user_verb.options) == ['all', 'raw', 'version']
class test_Delete(CrudChecker):
@@ -180,7 +181,7 @@ class test_Search(CrudChecker):
"""
api = self.get_api()
assert list(api.Method.user_verb.options) == \
- ['givenname', 'sn', 'uid', 'initials', 'all', 'raw']
+ ['givenname', 'sn', 'uid', 'initials', 'all', 'raw', 'version']
for param in api.Method.user_verb.options():
if param.name in ['all', 'raw']:
assert param.required is True
diff --git a/tests/test_ipalib/test_frontend.py b/tests/test_ipalib/test_frontend.py
index 18b918c97..200dfe0a9 100644
--- a/tests/test_ipalib/test_frontend.py
+++ b/tests/test_ipalib/test_frontend.py
@@ -29,6 +29,7 @@ from ipalib.base import NameSpace
from ipalib import frontend, backend, plugable, errors, parameters, config
from ipalib import output
from ipalib.parameters import Str
+from ipapython.version import API_VERSION
def test_RULE_FLAG():
assert frontend.RULE_FLAG == 'validation_rule'
@@ -431,6 +432,7 @@ class test_Command(ClassChecker):
option0=u'option0',
option1=u'option1',
another_option='some value',
+ version=API_VERSION,
)
sub.validate(**okay)
@@ -561,7 +563,7 @@ class test_Command(ClassChecker):
return ('forward', args, kw)
args = ('Hello,', 'world,')
- kw = dict(how_are='you', on_this='fine day?')
+ kw = dict(how_are='you', on_this='fine day?', version=API_VERSION)
# Test in server context:
(api, home) = create_test_api(in_server=True)
@@ -569,7 +571,9 @@ class test_Command(ClassChecker):
o = my_cmd()
o.set_api(api)
assert o.run.im_func is self.cls.run.im_func
- assert ('execute', args, kw) == o.run(*args, **kw)
+ out = o.run(*args, **kw)
+ del kw['version']
+ assert ('execute', args, kw) == out
# Test in non-server context
(api, home) = create_test_api(in_server=False)