From 135ccf89de866ea2cdda96993ed2743394e1e716 Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Mon, 21 Nov 2011 10:50:27 -0500 Subject: Parse comma-separated lists of values in all parameter types. This can be enabled for a specific parameter by setting the "csv" option to True. Remove "List" parameter type and replace all occurences of it with appropriate multi-valued parameter ("Str" in most cases) with csv enabled. Add new parameter type "Any", capable of holding values of any type. This is needed by the "batch" command, as "Str" is not suitable type for the "methods" parameter. ticket 2007 --- API.txt | 712 +++++++++++++++++------------------ TODO | 5 - VERSION | 2 +- ipalib/__init__.py | 2 +- ipalib/parameters.py | 82 ++-- ipalib/plugins/aci.py | 8 +- ipalib/plugins/automember.py | 8 +- ipalib/plugins/baseldap.py | 24 +- ipalib/plugins/batch.py | 12 +- ipalib/plugins/config.py | 6 +- ipalib/plugins/delegation.py | 8 +- ipalib/plugins/dns.py | 14 +- ipalib/plugins/hbactest.py | 5 +- ipalib/plugins/migration.py | 28 +- ipalib/plugins/permission.py | 6 +- ipalib/plugins/selfservice.py | 8 +- make-lint | 42 +-- tests/test_ipalib/test_parameters.py | 110 +++--- 18 files changed, 540 insertions(+), 542 deletions(-) diff --git a/API.txt b/API.txt index 72e7025b9..95ae1d253 100644 --- a/API.txt +++ b/API.txt @@ -3,8 +3,8 @@ args: 1,15,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, required=True) option: Str('permission', attribute=False, cli_name='permission', multivalue=False, required=False) option: Str('group', attribute=False, cli_name='group', multivalue=False, required=False) -option: List('permissions', attribute=False, cli_name='permissions', multivalue=True, required=True) -option: List('attrs', attribute=False, cli_name='attrs', multivalue=True, required=False) +option: Str('permissions', attribute=False, cli_name='permissions', csv=True, multivalue=True, required=True) +option: Str('attrs', attribute=False, cli_name='attrs', csv=True, multivalue=True, required=False) option: StrEnum('type', attribute=False, cli_name='type', multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', attribute=False, cli_name='memberof', multivalue=False, required=False) option: Str('filter', attribute=False, cli_name='filter', multivalue=False, required=False) @@ -32,8 +32,8 @@ arg: Str('criteria?') option: Str('aciname', attribute=False, autofill=False, cli_name='name', multivalue=False, primary_key=True, query=True, required=False) option: Str('permission', attribute=False, autofill=False, cli_name='permission', multivalue=False, query=True, required=False) option: Str('group', attribute=False, autofill=False, cli_name='group', multivalue=False, query=True, required=False) -option: List('permissions', attribute=False, autofill=False, cli_name='permissions', multivalue=True, query=True, required=False) -option: List('attrs', attribute=False, autofill=False, cli_name='attrs', multivalue=True, query=True, required=False) +option: Str('permissions', attribute=False, autofill=False, cli_name='permissions', csv=True, multivalue=True, query=True, required=False) +option: Str('attrs', attribute=False, autofill=False, cli_name='attrs', csv=True, multivalue=True, query=True, required=False) option: StrEnum('type', attribute=False, autofill=False, cli_name='type', multivalue=False, query=True, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', attribute=False, autofill=False, cli_name='memberof', multivalue=False, query=True, required=False) option: Str('filter', attribute=False, autofill=False, cli_name='filter', multivalue=False, query=True, required=False) @@ -53,8 +53,8 @@ args: 1,14,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True) option: Str('permission', attribute=False, autofill=False, cli_name='permission', multivalue=False, required=False) option: Str('group', attribute=False, autofill=False, cli_name='group', multivalue=False, required=False) -option: List('permissions', attribute=False, autofill=False, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', attribute=False, autofill=False, cli_name='attrs', multivalue=True, required=False) +option: Str('permissions', attribute=False, autofill=False, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', attribute=False, autofill=False, cli_name='attrs', csv=True, multivalue=True, required=False) option: StrEnum('type', attribute=False, autofill=False, cli_name='type', multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', attribute=False, autofill=False, cli_name='memberof', multivalue=False, required=False) option: Str('filter', attribute=False, autofill=False, cli_name='filter', multivalue=False, required=False) @@ -73,8 +73,8 @@ args: 1,15,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True) option: Str('permission', attribute=False, autofill=False, cli_name='permission', multivalue=False, required=False) option: Str('group', attribute=False, autofill=False, cli_name='group', multivalue=False, required=False) -option: List('permissions', attribute=False, autofill=False, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', attribute=False, autofill=False, cli_name='attrs', multivalue=True, required=False) +option: Str('permissions', attribute=False, autofill=False, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', attribute=False, autofill=False, cli_name='attrs', csv=True, multivalue=True, required=False) option: StrEnum('type', attribute=False, autofill=False, cli_name='type', multivalue=False, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', attribute=False, autofill=False, cli_name='memberof', multivalue=False, required=False) option: Str('filter', attribute=False, autofill=False, cli_name='filter', multivalue=False, required=False) @@ -114,8 +114,8 @@ command: automember_add_condition args: 1,8,5 arg: Str('cn', cli_name='automember_rule') option: Str('description', attribute=True, autofill=False, cli_name='desc', multivalue=False, required=False) -option: List('automemberinclusiveregex?', alwaysask=True, cli_name='inclusive_regex', multivalue=True) -option: List('automemberexclusiveregex?', alwaysask=True, cli_name='exclusive_regex', multivalue=True) +option: Str('automemberinclusiveregex*', alwaysask=True, cli_name='inclusive_regex', csv=True) +option: Str('automemberexclusiveregex*', alwaysask=True, cli_name='exclusive_regex', csv=True) option: Str('key') option: StrEnum('type', values=(u'group', u'hostgroup')) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') @@ -190,8 +190,8 @@ command: automember_remove_condition args: 1,8,5 arg: Str('cn', cli_name='automember_rule') option: Str('description', attribute=True, autofill=False, cli_name='desc', multivalue=False, required=False) -option: List('automemberinclusiveregex?', alwaysask=True, cli_name='inclusive_regex', multivalue=True) -option: List('automemberexclusiveregex?', alwaysask=True, cli_name='exclusive_regex', multivalue=True) +option: Str('automemberinclusiveregex*', alwaysask=True, cli_name='inclusive_regex', csv=True) +option: Str('automemberexclusiveregex*', alwaysask=True, cli_name='exclusive_regex', csv=True) option: Str('key') option: StrEnum('type', values=(u'group', u'hostgroup')) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') @@ -415,7 +415,7 @@ output: Entry('result', , Gettext('A dictionary representing an LDA output: Output('value', , None) command: batch args: 1,0,2 -arg: List('methods?', multivalue=True) +arg: Any('methods*') output: Output('count', , None) output: Output('results', , None) command: cert_remove_hold @@ -455,8 +455,8 @@ option: Int('ipasearchrecordslimit', attribute=True, autofill=False, cli_name='s option: IA5Str('ipausersearchfields', attribute=True, autofill=False, cli_name='usersearch', multivalue=False, required=False) option: IA5Str('ipagroupsearchfields', attribute=True, autofill=False, cli_name='groupsearch', multivalue=False, required=False) option: Bool('ipamigrationenabled', attribute=True, autofill=False, cli_name='enable_migration', multivalue=False, required=False) -option: List('ipagroupobjectclasses', attribute=True, autofill=False, cli_name='groupobjectclasses', multivalue=True, required=False) -option: List('ipauserobjectclasses', attribute=True, autofill=False, cli_name='userobjectclasses', multivalue=True, required=False) +option: Str('ipagroupobjectclasses', attribute=True, autofill=False, cli_name='groupobjectclasses', csv=True, multivalue=True, required=False) +option: Str('ipauserobjectclasses', attribute=True, autofill=False, cli_name='userobjectclasses', csv=True, multivalue=True, required=False) option: Int('ipapwdexpadvnotify', attribute=True, autofill=False, cli_name='pwdexpnotify', minvalue=0, multivalue=False, required=False) option: Str('setattr*', cli_name='setattr', exclude='webui') option: Str('addattr*', cli_name='addattr', exclude='webui') @@ -541,8 +541,8 @@ output: Output('value', , None) command: delegation_add args: 1,7,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, required=True) -option: List('permissions', attribute=True, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', attribute=True, cli_name='attrs', multivalue=True, required=True) +option: Str('permissions', attribute=True, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', attribute=True, cli_name='attrs', csv=True, multivalue=True, required=True) option: Str('memberof', attribute=True, cli_name='membergroup', multivalue=False, required=True) option: Str('group', attribute=True, cli_name='group', multivalue=False, required=True) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') @@ -561,8 +561,8 @@ command: delegation_find args: 1,8,4 arg: Str('criteria?') option: Str('aciname', attribute=True, autofill=False, cli_name='name', multivalue=False, primary_key=True, query=True, required=False) -option: List('permissions', attribute=True, autofill=False, cli_name='permissions', multivalue=True, query=True, required=False) -option: List('attrs', attribute=True, autofill=False, cli_name='attrs', multivalue=True, query=True, required=False) +option: Str('permissions', attribute=True, autofill=False, cli_name='permissions', csv=True, multivalue=True, query=True, required=False) +option: Str('attrs', attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, query=True, required=False) option: Str('memberof', attribute=True, autofill=False, cli_name='membergroup', multivalue=False, query=True, required=False) option: Str('group', attribute=True, autofill=False, cli_name='group', multivalue=False, query=True, required=False) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') @@ -575,8 +575,8 @@ output: Output('truncated', , None) command: delegation_mod args: 1,7,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True) -option: List('permissions', attribute=True, autofill=False, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', attribute=True, autofill=False, cli_name='attrs', multivalue=True, required=False) +option: Str('permissions', attribute=True, autofill=False, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, required=False) option: Str('memberof', attribute=True, autofill=False, cli_name='membergroup', multivalue=False, required=False) option: Str('group', attribute=True, autofill=False, cli_name='group', multivalue=False, required=False) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') @@ -617,40 +617,40 @@ option: Flag('force', autofill=True, default=False) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('arecord?', attribute=True, cli_name='a_rec', multivalue=True) -option: List('aaaarecord?', attribute=True, cli_name='aaaa_rec', multivalue=True) -option: List('a6record?', attribute=True, cli_name='a6_rec', multivalue=True) -option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec', multivalue=True) -option: List('aplrecord?', attribute=True, cli_name='apl_rec', multivalue=True) -option: List('certrecord?', attribute=True, cli_name='cert_rec', multivalue=True) -option: List('cnamerecord?', attribute=True, cli_name='cname_rec', multivalue=True) -option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec', multivalue=True) -option: List('dlvrecord?', attribute=True, cli_name='dlv_rec', multivalue=True) -option: List('dnamerecord?', attribute=True, cli_name='dname_rec', multivalue=True) -option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', multivalue=True) -option: List('dsrecord?', attribute=True, cli_name='ds_rec', multivalue=True) -option: List('hiprecord?', attribute=True, cli_name='hip_rec', multivalue=True) -option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', multivalue=True) -option: List('keyrecord?', attribute=True, cli_name='key_rec', multivalue=True) -option: List('kxrecord?', attribute=True, cli_name='kx_rec', multivalue=True) -option: List('locrecord?', attribute=True, cli_name='loc_rec', multivalue=True) -option: List('mxrecord?', attribute=True, cli_name='mx_rec', multivalue=True) -option: List('naptrrecord?', attribute=True, cli_name='naptr_rec', multivalue=True) -option: List('nsrecord?', attribute=True, cli_name='ns_rec', multivalue=True) -option: List('nsecrecord?', attribute=True, cli_name='nsec_rec', multivalue=True) -option: List('nsec3record?', attribute=True, cli_name='nsec3_rec', multivalue=True) -option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', multivalue=True) -option: List('ptrrecord?', attribute=True, cli_name='ptr_rec', multivalue=True) -option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec', multivalue=True) -option: List('rprecord?', attribute=True, cli_name='rp_rec', multivalue=True) -option: List('sigrecord?', attribute=True, cli_name='sig_rec', multivalue=True) -option: List('spfrecord?', attribute=True, cli_name='spf_rec', multivalue=True) -option: List('srvrecord?', attribute=True, cli_name='srv_rec', multivalue=True) -option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec', multivalue=True) -option: List('tarecord?', attribute=True, cli_name='ta_rec', multivalue=True) -option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec', multivalue=True) -option: List('tsigrecord?', attribute=True, cli_name='tsig_rec', multivalue=True) -option: List('txtrecord?', attribute=True, cli_name='txt_rec', multivalue=True) +option: Str('arecord*', attribute=True, cli_name='a_rec', csv=True) +option: Str('aaaarecord*', attribute=True, cli_name='aaaa_rec', csv=True) +option: Str('a6record*', attribute=True, cli_name='a6_rec', csv=True) +option: Str('afsdbrecord*', attribute=True, cli_name='afsdb_rec', csv=True) +option: Str('aplrecord*', attribute=True, cli_name='apl_rec', csv=True) +option: Str('certrecord*', attribute=True, cli_name='cert_rec', csv=True) +option: Str('cnamerecord*', attribute=True, cli_name='cname_rec', csv=True) +option: Str('dhcidrecord*', attribute=True, cli_name='dhcid_rec', csv=True) +option: Str('dlvrecord*', attribute=True, cli_name='dlv_rec', csv=True) +option: Str('dnamerecord*', attribute=True, cli_name='dname_rec', csv=True) +option: Str('dnskeyrecord*', attribute=True, cli_name='dnskey_rec', csv=True) +option: Str('dsrecord*', attribute=True, cli_name='ds_rec', csv=True) +option: Str('hiprecord*', attribute=True, cli_name='hip_rec', csv=True) +option: Str('ipseckeyrecord*', attribute=True, cli_name='ipseckey_rec', csv=True) +option: Str('keyrecord*', attribute=True, cli_name='key_rec', csv=True) +option: Str('kxrecord*', attribute=True, cli_name='kx_rec', csv=True) +option: Str('locrecord*', attribute=True, cli_name='loc_rec', csv=True) +option: Str('mxrecord*', attribute=True, cli_name='mx_rec', csv=True) +option: Str('naptrrecord*', attribute=True, cli_name='naptr_rec', csv=True) +option: Str('nsrecord*', attribute=True, cli_name='ns_rec', csv=True) +option: Str('nsecrecord*', attribute=True, cli_name='nsec_rec', csv=True) +option: Str('nsec3record*', attribute=True, cli_name='nsec3_rec', csv=True) +option: Str('nsec3paramrecord*', attribute=True, cli_name='nsec3param_rec', csv=True) +option: Str('ptrrecord*', attribute=True, cli_name='ptr_rec', csv=True) +option: Str('rrsigrecord*', attribute=True, cli_name='rrsig_rec', csv=True) +option: Str('rprecord*', attribute=True, cli_name='rp_rec', csv=True) +option: Str('sigrecord*', attribute=True, cli_name='sig_rec', csv=True) +option: Str('spfrecord*', attribute=True, cli_name='spf_rec', csv=True) +option: Str('srvrecord*', attribute=True, cli_name='srv_rec', csv=True) +option: Str('sshfprecord*', attribute=True, cli_name='sshfp_rec', csv=True) +option: Str('tarecord*', attribute=True, cli_name='ta_rec', csv=True) +option: Str('tkeyrecord*', attribute=True, cli_name='tkey_rec', csv=True) +option: Str('tsigrecord*', attribute=True, cli_name='tsig_rec', csv=True) +option: Str('txtrecord*', attribute=True, cli_name='txt_rec', csv=True) output: Output('summary', (, ), None) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('value', , None) @@ -661,40 +661,40 @@ arg: Str('idnsname', attribute=True, cli_name='name', multivalue=False, primary_ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('arecord?', attribute=True, cli_name='a_rec', multivalue=True) -option: List('aaaarecord?', attribute=True, cli_name='aaaa_rec', multivalue=True) -option: List('a6record?', attribute=True, cli_name='a6_rec', multivalue=True) -option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec', multivalue=True) -option: List('aplrecord?', attribute=True, cli_name='apl_rec', multivalue=True) -option: List('certrecord?', attribute=True, cli_name='cert_rec', multivalue=True) -option: List('cnamerecord?', attribute=True, cli_name='cname_rec', multivalue=True) -option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec', multivalue=True) -option: List('dlvrecord?', attribute=True, cli_name='dlv_rec', multivalue=True) -option: List('dnamerecord?', attribute=True, cli_name='dname_rec', multivalue=True) -option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', multivalue=True) -option: List('dsrecord?', attribute=True, cli_name='ds_rec', multivalue=True) -option: List('hiprecord?', attribute=True, cli_name='hip_rec', multivalue=True) -option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', multivalue=True) -option: List('keyrecord?', attribute=True, cli_name='key_rec', multivalue=True) -option: List('kxrecord?', attribute=True, cli_name='kx_rec', multivalue=True) -option: List('locrecord?', attribute=True, cli_name='loc_rec', multivalue=True) -option: List('mxrecord?', attribute=True, cli_name='mx_rec', multivalue=True) -option: List('naptrrecord?', attribute=True, cli_name='naptr_rec', multivalue=True) -option: List('nsrecord?', attribute=True, cli_name='ns_rec', multivalue=True) -option: List('nsecrecord?', attribute=True, cli_name='nsec_rec', multivalue=True) -option: List('nsec3record?', attribute=True, cli_name='nsec3_rec', multivalue=True) -option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', multivalue=True) -option: List('ptrrecord?', attribute=True, cli_name='ptr_rec', multivalue=True) -option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec', multivalue=True) -option: List('rprecord?', attribute=True, cli_name='rp_rec', multivalue=True) -option: List('sigrecord?', attribute=True, cli_name='sig_rec', multivalue=True) -option: List('spfrecord?', attribute=True, cli_name='spf_rec', multivalue=True) -option: List('srvrecord?', attribute=True, cli_name='srv_rec', multivalue=True) -option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec', multivalue=True) -option: List('tarecord?', attribute=True, cli_name='ta_rec', multivalue=True) -option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec', multivalue=True) -option: List('tsigrecord?', attribute=True, cli_name='tsig_rec', multivalue=True) -option: List('txtrecord?', attribute=True, cli_name='txt_rec', multivalue=True) +option: Str('arecord*', attribute=True, cli_name='a_rec', csv=True) +option: Str('aaaarecord*', attribute=True, cli_name='aaaa_rec', csv=True) +option: Str('a6record*', attribute=True, cli_name='a6_rec', csv=True) +option: Str('afsdbrecord*', attribute=True, cli_name='afsdb_rec', csv=True) +option: Str('aplrecord*', attribute=True, cli_name='apl_rec', csv=True) +option: Str('certrecord*', attribute=True, cli_name='cert_rec', csv=True) +option: Str('cnamerecord*', attribute=True, cli_name='cname_rec', csv=True) +option: Str('dhcidrecord*', attribute=True, cli_name='dhcid_rec', csv=True) +option: Str('dlvrecord*', attribute=True, cli_name='dlv_rec', csv=True) +option: Str('dnamerecord*', attribute=True, cli_name='dname_rec', csv=True) +option: Str('dnskeyrecord*', attribute=True, cli_name='dnskey_rec', csv=True) +option: Str('dsrecord*', attribute=True, cli_name='ds_rec', csv=True) +option: Str('hiprecord*', attribute=True, cli_name='hip_rec', csv=True) +option: Str('ipseckeyrecord*', attribute=True, cli_name='ipseckey_rec', csv=True) +option: Str('keyrecord*', attribute=True, cli_name='key_rec', csv=True) +option: Str('kxrecord*', attribute=True, cli_name='kx_rec', csv=True) +option: Str('locrecord*', attribute=True, cli_name='loc_rec', csv=True) +option: Str('mxrecord*', attribute=True, cli_name='mx_rec', csv=True) +option: Str('naptrrecord*', attribute=True, cli_name='naptr_rec', csv=True) +option: Str('nsrecord*', attribute=True, cli_name='ns_rec', csv=True) +option: Str('nsecrecord*', attribute=True, cli_name='nsec_rec', csv=True) +option: Str('nsec3record*', attribute=True, cli_name='nsec3_rec', csv=True) +option: Str('nsec3paramrecord*', attribute=True, cli_name='nsec3param_rec', csv=True) +option: Str('ptrrecord*', attribute=True, cli_name='ptr_rec', csv=True) +option: Str('rrsigrecord*', attribute=True, cli_name='rrsig_rec', csv=True) +option: Str('rprecord*', attribute=True, cli_name='rp_rec', csv=True) +option: Str('sigrecord*', attribute=True, cli_name='sig_rec', csv=True) +option: Str('spfrecord*', attribute=True, cli_name='spf_rec', csv=True) +option: Str('srvrecord*', attribute=True, cli_name='srv_rec', csv=True) +option: Str('sshfprecord*', attribute=True, cli_name='sshfp_rec', csv=True) +option: Str('tarecord*', attribute=True, cli_name='ta_rec', csv=True) +option: Str('tkeyrecord*', attribute=True, cli_name='tkey_rec', csv=True) +option: Str('tsigrecord*', attribute=True, cli_name='tsig_rec', csv=True) +option: Str('txtrecord*', attribute=True, cli_name='txt_rec', csv=True) output: Output('summary', (, ), None) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('value', , None) @@ -706,40 +706,40 @@ option: Flag('del_all', autofill=True, default=False) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('arecord?', attribute=True, cli_name='a_rec', multivalue=True) -option: List('aaaarecord?', attribute=True, cli_name='aaaa_rec', multivalue=True) -option: List('a6record?', attribute=True, cli_name='a6_rec', multivalue=True) -option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec', multivalue=True) -option: List('aplrecord?', attribute=True, cli_name='apl_rec', multivalue=True) -option: List('certrecord?', attribute=True, cli_name='cert_rec', multivalue=True) -option: List('cnamerecord?', attribute=True, cli_name='cname_rec', multivalue=True) -option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec', multivalue=True) -option: List('dlvrecord?', attribute=True, cli_name='dlv_rec', multivalue=True) -option: List('dnamerecord?', attribute=True, cli_name='dname_rec', multivalue=True) -option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', multivalue=True) -option: List('dsrecord?', attribute=True, cli_name='ds_rec', multivalue=True) -option: List('hiprecord?', attribute=True, cli_name='hip_rec', multivalue=True) -option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', multivalue=True) -option: List('keyrecord?', attribute=True, cli_name='key_rec', multivalue=True) -option: List('kxrecord?', attribute=True, cli_name='kx_rec', multivalue=True) -option: List('locrecord?', attribute=True, cli_name='loc_rec', multivalue=True) -option: List('mxrecord?', attribute=True, cli_name='mx_rec', multivalue=True) -option: List('naptrrecord?', attribute=True, cli_name='naptr_rec', multivalue=True) -option: List('nsrecord?', attribute=True, cli_name='ns_rec', multivalue=True) -option: List('nsecrecord?', attribute=True, cli_name='nsec_rec', multivalue=True) -option: List('nsec3record?', attribute=True, cli_name='nsec3_rec', multivalue=True) -option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', multivalue=True) -option: List('ptrrecord?', attribute=True, cli_name='ptr_rec', multivalue=True) -option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec', multivalue=True) -option: List('rprecord?', attribute=True, cli_name='rp_rec', multivalue=True) -option: List('sigrecord?', attribute=True, cli_name='sig_rec', multivalue=True) -option: List('spfrecord?', attribute=True, cli_name='spf_rec', multivalue=True) -option: List('srvrecord?', attribute=True, cli_name='srv_rec', multivalue=True) -option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec', multivalue=True) -option: List('tarecord?', attribute=True, cli_name='ta_rec', multivalue=True) -option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec', multivalue=True) -option: List('tsigrecord?', attribute=True, cli_name='tsig_rec', multivalue=True) -option: List('txtrecord?', attribute=True, cli_name='txt_rec', multivalue=True) +option: Str('arecord*', attribute=True, cli_name='a_rec', csv=True) +option: Str('aaaarecord*', attribute=True, cli_name='aaaa_rec', csv=True) +option: Str('a6record*', attribute=True, cli_name='a6_rec', csv=True) +option: Str('afsdbrecord*', attribute=True, cli_name='afsdb_rec', csv=True) +option: Str('aplrecord*', attribute=True, cli_name='apl_rec', csv=True) +option: Str('certrecord*', attribute=True, cli_name='cert_rec', csv=True) +option: Str('cnamerecord*', attribute=True, cli_name='cname_rec', csv=True) +option: Str('dhcidrecord*', attribute=True, cli_name='dhcid_rec', csv=True) +option: Str('dlvrecord*', attribute=True, cli_name='dlv_rec', csv=True) +option: Str('dnamerecord*', attribute=True, cli_name='dname_rec', csv=True) +option: Str('dnskeyrecord*', attribute=True, cli_name='dnskey_rec', csv=True) +option: Str('dsrecord*', attribute=True, cli_name='ds_rec', csv=True) +option: Str('hiprecord*', attribute=True, cli_name='hip_rec', csv=True) +option: Str('ipseckeyrecord*', attribute=True, cli_name='ipseckey_rec', csv=True) +option: Str('keyrecord*', attribute=True, cli_name='key_rec', csv=True) +option: Str('kxrecord*', attribute=True, cli_name='kx_rec', csv=True) +option: Str('locrecord*', attribute=True, cli_name='loc_rec', csv=True) +option: Str('mxrecord*', attribute=True, cli_name='mx_rec', csv=True) +option: Str('naptrrecord*', attribute=True, cli_name='naptr_rec', csv=True) +option: Str('nsrecord*', attribute=True, cli_name='ns_rec', csv=True) +option: Str('nsecrecord*', attribute=True, cli_name='nsec_rec', csv=True) +option: Str('nsec3record*', attribute=True, cli_name='nsec3_rec', csv=True) +option: Str('nsec3paramrecord*', attribute=True, cli_name='nsec3param_rec', csv=True) +option: Str('ptrrecord*', attribute=True, cli_name='ptr_rec', csv=True) +option: Str('rrsigrecord*', attribute=True, cli_name='rrsig_rec', csv=True) +option: Str('rprecord*', attribute=True, cli_name='rp_rec', csv=True) +option: Str('sigrecord*', attribute=True, cli_name='sig_rec', csv=True) +option: Str('spfrecord*', attribute=True, cli_name='spf_rec', csv=True) +option: Str('srvrecord*', attribute=True, cli_name='srv_rec', csv=True) +option: Str('sshfprecord*', attribute=True, cli_name='sshfp_rec', csv=True) +option: Str('tarecord*', attribute=True, cli_name='ta_rec', csv=True) +option: Str('tkeyrecord*', attribute=True, cli_name='tkey_rec', csv=True) +option: Str('tsigrecord*', attribute=True, cli_name='tsig_rec', csv=True) +option: Str('txtrecord*', attribute=True, cli_name='txt_rec', csv=True) output: Output('summary', (, ), None) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('value', , None) @@ -764,40 +764,40 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('arecord', attribute=True, cli_name='a_rec', multivalue=True, query=True, required=False) -option: List('aaaarecord', attribute=True, cli_name='aaaa_rec', multivalue=True, query=True, required=False) -option: List('a6record', attribute=True, cli_name='a6_rec', multivalue=True, query=True, required=False) -option: List('afsdbrecord', attribute=True, cli_name='afsdb_rec', multivalue=True, query=True, required=False) -option: List('aplrecord', attribute=True, cli_name='apl_rec', multivalue=True, query=True, required=False) -option: List('certrecord', attribute=True, cli_name='cert_rec', multivalue=True, query=True, required=False) -option: List('cnamerecord', attribute=True, cli_name='cname_rec', multivalue=True, query=True, required=False) -option: List('dhcidrecord', attribute=True, cli_name='dhcid_rec', multivalue=True, query=True, required=False) -option: List('dlvrecord', attribute=True, cli_name='dlv_rec', multivalue=True, query=True, required=False) -option: List('dnamerecord', attribute=True, cli_name='dname_rec', multivalue=True, query=True, required=False) -option: List('dnskeyrecord', attribute=True, cli_name='dnskey_rec', multivalue=True, query=True, required=False) -option: List('dsrecord', attribute=True, cli_name='ds_rec', multivalue=True, query=True, required=False) -option: List('hiprecord', attribute=True, cli_name='hip_rec', multivalue=True, query=True, required=False) -option: List('ipseckeyrecord', attribute=True, cli_name='ipseckey_rec', multivalue=True, query=True, required=False) -option: List('keyrecord', attribute=True, cli_name='key_rec', multivalue=True, query=True, required=False) -option: List('kxrecord', attribute=True, cli_name='kx_rec', multivalue=True, query=True, required=False) -option: List('locrecord', attribute=True, cli_name='loc_rec', multivalue=True, query=True, required=False) -option: List('mxrecord', attribute=True, cli_name='mx_rec', multivalue=True, query=True, required=False) -option: List('naptrrecord', attribute=True, cli_name='naptr_rec', multivalue=True, query=True, required=False) -option: List('nsrecord', attribute=True, cli_name='ns_rec', multivalue=True, query=True, required=False) -option: List('nsecrecord', attribute=True, cli_name='nsec_rec', multivalue=True, query=True, required=False) -option: List('nsec3record', attribute=True, cli_name='nsec3_rec', multivalue=True, query=True, required=False) -option: List('nsec3paramrecord', attribute=True, cli_name='nsec3param_rec', multivalue=True, query=True, required=False) -option: List('ptrrecord', attribute=True, cli_name='ptr_rec', multivalue=True, query=True, required=False) -option: List('rrsigrecord', attribute=True, cli_name='rrsig_rec', multivalue=True, query=True, required=False) -option: List('rprecord', attribute=True, cli_name='rp_rec', multivalue=True, query=True, required=False) -option: List('sigrecord', attribute=True, cli_name='sig_rec', multivalue=True, query=True, required=False) -option: List('spfrecord', attribute=True, cli_name='spf_rec', multivalue=True, query=True, required=False) -option: List('srvrecord', attribute=True, cli_name='srv_rec', multivalue=True, query=True, required=False) -option: List('sshfprecord', attribute=True, cli_name='sshfp_rec', multivalue=True, query=True, required=False) -option: List('tarecord', attribute=True, cli_name='ta_rec', multivalue=True, query=True, required=False) -option: List('tkeyrecord', attribute=True, cli_name='tkey_rec', multivalue=True, query=True, required=False) -option: List('tsigrecord', attribute=True, cli_name='tsig_rec', multivalue=True, query=True, required=False) -option: List('txtrecord', attribute=True, cli_name='txt_rec', multivalue=True, query=True, required=False) +option: Str('arecord', attribute=True, cli_name='a_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('aaaarecord', attribute=True, cli_name='aaaa_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('a6record', attribute=True, cli_name='a6_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('afsdbrecord', attribute=True, cli_name='afsdb_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('aplrecord', attribute=True, cli_name='apl_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('certrecord', attribute=True, cli_name='cert_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('cnamerecord', attribute=True, cli_name='cname_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('dhcidrecord', attribute=True, cli_name='dhcid_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('dlvrecord', attribute=True, cli_name='dlv_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('dnamerecord', attribute=True, cli_name='dname_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('dnskeyrecord', attribute=True, cli_name='dnskey_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('dsrecord', attribute=True, cli_name='ds_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('hiprecord', attribute=True, cli_name='hip_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('ipseckeyrecord', attribute=True, cli_name='ipseckey_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('keyrecord', attribute=True, cli_name='key_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('kxrecord', attribute=True, cli_name='kx_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('locrecord', attribute=True, cli_name='loc_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('mxrecord', attribute=True, cli_name='mx_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('naptrrecord', attribute=True, cli_name='naptr_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('nsrecord', attribute=True, cli_name='ns_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('nsecrecord', attribute=True, cli_name='nsec_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('nsec3record', attribute=True, cli_name='nsec3_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('nsec3paramrecord', attribute=True, cli_name='nsec3param_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('ptrrecord', attribute=True, cli_name='ptr_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('rrsigrecord', attribute=True, cli_name='rrsig_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('rprecord', attribute=True, cli_name='rp_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('sigrecord', attribute=True, cli_name='sig_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('spfrecord', attribute=True, cli_name='spf_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('srvrecord', attribute=True, cli_name='srv_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('sshfprecord', attribute=True, cli_name='sshfp_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('tarecord', attribute=True, cli_name='ta_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('tkeyrecord', attribute=True, cli_name='tkey_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('tsigrecord', attribute=True, cli_name='tsig_rec', csv=True, multivalue=True, query=True, required=False) +option: Str('txtrecord', attribute=True, cli_name='txt_rec', csv=True, multivalue=True, query=True, required=False) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) @@ -809,40 +809,40 @@ arg: Str('idnsname', attribute=True, cli_name='name', multivalue=False, primary_ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('arecord?', attribute=True, cli_name='a_rec', multivalue=True) -option: List('aaaarecord?', attribute=True, cli_name='aaaa_rec', multivalue=True) -option: List('a6record?', attribute=True, cli_name='a6_rec', multivalue=True) -option: List('afsdbrecord?', attribute=True, cli_name='afsdb_rec', multivalue=True) -option: List('aplrecord?', attribute=True, cli_name='apl_rec', multivalue=True) -option: List('certrecord?', attribute=True, cli_name='cert_rec', multivalue=True) -option: List('cnamerecord?', attribute=True, cli_name='cname_rec', multivalue=True) -option: List('dhcidrecord?', attribute=True, cli_name='dhcid_rec', multivalue=True) -option: List('dlvrecord?', attribute=True, cli_name='dlv_rec', multivalue=True) -option: List('dnamerecord?', attribute=True, cli_name='dname_rec', multivalue=True) -option: List('dnskeyrecord?', attribute=True, cli_name='dnskey_rec', multivalue=True) -option: List('dsrecord?', attribute=True, cli_name='ds_rec', multivalue=True) -option: List('hiprecord?', attribute=True, cli_name='hip_rec', multivalue=True) -option: List('ipseckeyrecord?', attribute=True, cli_name='ipseckey_rec', multivalue=True) -option: List('keyrecord?', attribute=True, cli_name='key_rec', multivalue=True) -option: List('kxrecord?', attribute=True, cli_name='kx_rec', multivalue=True) -option: List('locrecord?', attribute=True, cli_name='loc_rec', multivalue=True) -option: List('mxrecord?', attribute=True, cli_name='mx_rec', multivalue=True) -option: List('naptrrecord?', attribute=True, cli_name='naptr_rec', multivalue=True) -option: List('nsrecord?', attribute=True, cli_name='ns_rec', multivalue=True) -option: List('nsecrecord?', attribute=True, cli_name='nsec_rec', multivalue=True) -option: List('nsec3record?', attribute=True, cli_name='nsec3_rec', multivalue=True) -option: List('nsec3paramrecord?', attribute=True, cli_name='nsec3param_rec', multivalue=True) -option: List('ptrrecord?', attribute=True, cli_name='ptr_rec', multivalue=True) -option: List('rrsigrecord?', attribute=True, cli_name='rrsig_rec', multivalue=True) -option: List('rprecord?', attribute=True, cli_name='rp_rec', multivalue=True) -option: List('sigrecord?', attribute=True, cli_name='sig_rec', multivalue=True) -option: List('spfrecord?', attribute=True, cli_name='spf_rec', multivalue=True) -option: List('srvrecord?', attribute=True, cli_name='srv_rec', multivalue=True) -option: List('sshfprecord?', attribute=True, cli_name='sshfp_rec', multivalue=True) -option: List('tarecord?', attribute=True, cli_name='ta_rec', multivalue=True) -option: List('tkeyrecord?', attribute=True, cli_name='tkey_rec', multivalue=True) -option: List('tsigrecord?', attribute=True, cli_name='tsig_rec', multivalue=True) -option: List('txtrecord?', attribute=True, cli_name='txt_rec', multivalue=True) +option: Str('arecord*', attribute=True, cli_name='a_rec', csv=True) +option: Str('aaaarecord*', attribute=True, cli_name='aaaa_rec', csv=True) +option: Str('a6record*', attribute=True, cli_name='a6_rec', csv=True) +option: Str('afsdbrecord*', attribute=True, cli_name='afsdb_rec', csv=True) +option: Str('aplrecord*', attribute=True, cli_name='apl_rec', csv=True) +option: Str('certrecord*', attribute=True, cli_name='cert_rec', csv=True) +option: Str('cnamerecord*', attribute=True, cli_name='cname_rec', csv=True) +option: Str('dhcidrecord*', attribute=True, cli_name='dhcid_rec', csv=True) +option: Str('dlvrecord*', attribute=True, cli_name='dlv_rec', csv=True) +option: Str('dnamerecord*', attribute=True, cli_name='dname_rec', csv=True) +option: Str('dnskeyrecord*', attribute=True, cli_name='dnskey_rec', csv=True) +option: Str('dsrecord*', attribute=True, cli_name='ds_rec', csv=True) +option: Str('hiprecord*', attribute=True, cli_name='hip_rec', csv=True) +option: Str('ipseckeyrecord*', attribute=True, cli_name='ipseckey_rec', csv=True) +option: Str('keyrecord*', attribute=True, cli_name='key_rec', csv=True) +option: Str('kxrecord*', attribute=True, cli_name='kx_rec', csv=True) +option: Str('locrecord*', attribute=True, cli_name='loc_rec', csv=True) +option: Str('mxrecord*', attribute=True, cli_name='mx_rec', csv=True) +option: Str('naptrrecord*', attribute=True, cli_name='naptr_rec', csv=True) +option: Str('nsrecord*', attribute=True, cli_name='ns_rec', csv=True) +option: Str('nsecrecord*', attribute=True, cli_name='nsec_rec', csv=True) +option: Str('nsec3record*', attribute=True, cli_name='nsec3_rec', csv=True) +option: Str('nsec3paramrecord*', attribute=True, cli_name='nsec3param_rec', csv=True) +option: Str('ptrrecord*', attribute=True, cli_name='ptr_rec', csv=True) +option: Str('rrsigrecord*', attribute=True, cli_name='rrsig_rec', csv=True) +option: Str('rprecord*', attribute=True, cli_name='rp_rec', csv=True) +option: Str('sigrecord*', attribute=True, cli_name='sig_rec', csv=True) +option: Str('spfrecord*', attribute=True, cli_name='spf_rec', csv=True) +option: Str('srvrecord*', attribute=True, cli_name='srv_rec', csv=True) +option: Str('sshfprecord*', attribute=True, cli_name='sshfp_rec', csv=True) +option: Str('tarecord*', attribute=True, cli_name='ta_rec', csv=True) +option: Str('tkeyrecord*', attribute=True, cli_name='tkey_rec', csv=True) +option: Str('tsigrecord*', attribute=True, cli_name='tsig_rec', csv=True) +option: Str('txtrecord*', attribute=True, cli_name='txt_rec', csv=True) output: Output('summary', (, ), None) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('value', , None) @@ -1056,8 +1056,8 @@ arg: Str('cn', attribute=True, cli_name='group_name', maxlength=255, multivalue= option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1087,20 +1087,20 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('user?', cli_name='users', multivalue=True) -option: List('no_user?', cli_name='no_users', multivalue=True) -option: List('group?', cli_name='groups', multivalue=True) -option: List('no_group?', cli_name='no_groups', multivalue=True) -option: List('in_group?', cli_name='in_groups', multivalue=True) -option: List('not_in_group?', cli_name='not_in_groups', multivalue=True) -option: List('in_netgroup?', cli_name='in_netgroups', multivalue=True) -option: List('not_in_netgroup?', cli_name='not_in_netgroups', multivalue=True) -option: List('in_role?', cli_name='in_roles', multivalue=True) -option: List('not_in_role?', cli_name='not_in_roles', multivalue=True) -option: List('in_hbacrule?', cli_name='in_hbacrules', multivalue=True) -option: List('not_in_hbacrule?', cli_name='not_in_hbacrules', multivalue=True) -option: List('in_sudorule?', cli_name='in_sudorules', multivalue=True) -option: List('not_in_sudorule?', cli_name='not_in_sudorules', multivalue=True) +option: Str('user*', cli_name='users', csv=True) +option: Str('no_user*', cli_name='no_users', csv=True) +option: Str('group*', cli_name='groups', csv=True) +option: Str('no_group*', cli_name='no_groups', csv=True) +option: Str('in_group*', cli_name='in_groups', csv=True) +option: Str('not_in_group*', cli_name='not_in_groups', csv=True) +option: Str('in_netgroup*', cli_name='in_netgroups', csv=True) +option: Str('not_in_netgroup*', cli_name='not_in_netgroups', csv=True) +option: Str('in_role*', cli_name='in_roles', csv=True) +option: Str('not_in_role*', cli_name='not_in_roles', csv=True) +option: Str('in_hbacrule*', cli_name='in_hbacrules', csv=True) +option: Str('not_in_hbacrule*', cli_name='not_in_hbacrules', csv=True) +option: Str('in_sudorule*', cli_name='in_sudorules', csv=True) +option: Str('not_in_sudorule*', cli_name='not_in_sudorules', csv=True) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) @@ -1128,8 +1128,8 @@ arg: Str('cn', attribute=True, cli_name='group_name', maxlength=255, multivalue= option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1166,8 +1166,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1177,8 +1177,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', multivalue=True) -option: List('hbacsvcgroup?', alwaysask=True, cli_name='hbacsvcgroups', multivalue=True) +option: Str('hbacsvc*', alwaysask=True, cli_name='hbacsvcs', csv=True) +option: Str('hbacsvcgroup*', alwaysask=True, cli_name='hbacsvcgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1188,8 +1188,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1199,8 +1199,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1268,8 +1268,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1279,8 +1279,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', multivalue=True) -option: List('hbacsvcgroup?', alwaysask=True, cli_name='hbacsvcgroups', multivalue=True) +option: Str('hbacsvc*', alwaysask=True, cli_name='hbacsvcs', csv=True) +option: Str('hbacsvcgroup*', alwaysask=True, cli_name='hbacsvcgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1290,8 +1290,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1301,8 +1301,8 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1392,7 +1392,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', multivalue=True) +option: Str('hbacsvc*', alwaysask=True, cli_name='hbacsvcs', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1438,7 +1438,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('hbacsvc?', alwaysask=True, cli_name='hbacsvcs', multivalue=True) +option: Str('hbacsvc*', alwaysask=True, cli_name='hbacsvcs', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1458,7 +1458,7 @@ option: Str('user', cli_name='user', primary_key=True) option: Str('sourcehost', cli_name='srchost') option: Str('targethost', cli_name='host') option: Str('service', cli_name='service') -option: List('rules?', cli_name='rules', multivalue=True) +option: Str('rules*', cli_name='rules', csv=True) option: Flag('nodetail?', autofill=True, cli_name='nodetail', default=False) option: Flag('enabled?', autofill=True, cli_name='enabled', default=False) option: Flag('disabled?', autofill=True, cli_name='disabled', default=False) @@ -1493,7 +1493,7 @@ arg: Str('fqdn', attribute=True, cli_name='hostname', maxlength=255, multivalue= option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1527,20 +1527,20 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('in_hostgroup?', cli_name='in_hostgroups', multivalue=True) -option: List('not_in_hostgroup?', cli_name='not_in_hostgroups', multivalue=True) -option: List('in_netgroup?', cli_name='in_netgroups', multivalue=True) -option: List('not_in_netgroup?', cli_name='not_in_netgroups', multivalue=True) -option: List('in_role?', cli_name='in_roles', multivalue=True) -option: List('not_in_role?', cli_name='not_in_roles', multivalue=True) -option: List('in_hbacrule?', cli_name='in_hbacrules', multivalue=True) -option: List('not_in_hbacrule?', cli_name='not_in_hbacrules', multivalue=True) -option: List('in_sudorule?', cli_name='in_sudorules', multivalue=True) -option: List('not_in_sudorule?', cli_name='not_in_sudorules', multivalue=True) -option: List('enroll_by_user?', cli_name='enroll_by_users', multivalue=True) -option: List('not_enroll_by_user?', cli_name='not_enroll_by_users', multivalue=True) -option: List('man_by_host?', cli_name='man_by_hosts', multivalue=True) -option: List('not_man_by_host?', cli_name='not_man_by_hosts', multivalue=True) +option: Str('in_hostgroup*', cli_name='in_hostgroups', csv=True) +option: Str('not_in_hostgroup*', cli_name='not_in_hostgroups', csv=True) +option: Str('in_netgroup*', cli_name='in_netgroups', csv=True) +option: Str('not_in_netgroup*', cli_name='not_in_netgroups', csv=True) +option: Str('in_role*', cli_name='in_roles', csv=True) +option: Str('not_in_role*', cli_name='not_in_roles', csv=True) +option: Str('in_hbacrule*', cli_name='in_hbacrules', csv=True) +option: Str('not_in_hbacrule*', cli_name='not_in_hbacrules', csv=True) +option: Str('in_sudorule*', cli_name='in_sudorules', csv=True) +option: Str('not_in_sudorule*', cli_name='not_in_sudorules', csv=True) +option: Str('enroll_by_user*', cli_name='enroll_by_users', csv=True) +option: Str('not_enroll_by_user*', cli_name='not_enroll_by_users', csv=True) +option: Str('man_by_host*', cli_name='man_by_hosts', csv=True) +option: Str('not_man_by_host*', cli_name='not_man_by_hosts', csv=True) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) @@ -1573,7 +1573,7 @@ arg: Str('fqdn', attribute=True, cli_name='hostname', maxlength=255, multivalue= option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1606,8 +1606,8 @@ arg: Str('cn', attribute=True, cli_name='hostgroup_name', multivalue=False, prim option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1629,18 +1629,18 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('host?', cli_name='hosts', multivalue=True) -option: List('no_host?', cli_name='no_hosts', multivalue=True) -option: List('hostgroup?', cli_name='hostgroups', multivalue=True) -option: List('no_hostgroup?', cli_name='no_hostgroups', multivalue=True) -option: List('in_hostgroup?', cli_name='in_hostgroups', multivalue=True) -option: List('not_in_hostgroup?', cli_name='not_in_hostgroups', multivalue=True) -option: List('in_netgroup?', cli_name='in_netgroups', multivalue=True) -option: List('not_in_netgroup?', cli_name='not_in_netgroups', multivalue=True) -option: List('in_hbacrule?', cli_name='in_hbacrules', multivalue=True) -option: List('not_in_hbacrule?', cli_name='not_in_hbacrules', multivalue=True) -option: List('in_sudorule?', cli_name='in_sudorules', multivalue=True) -option: List('not_in_sudorule?', cli_name='not_in_sudorules', multivalue=True) +option: Str('host*', cli_name='hosts', csv=True) +option: Str('no_host*', cli_name='no_hosts', csv=True) +option: Str('hostgroup*', cli_name='hostgroups', csv=True) +option: Str('no_hostgroup*', cli_name='no_hostgroups', csv=True) +option: Str('in_hostgroup*', cli_name='in_hostgroups', csv=True) +option: Str('not_in_hostgroup*', cli_name='not_in_hostgroups', csv=True) +option: Str('in_netgroup*', cli_name='in_netgroups', csv=True) +option: Str('not_in_netgroup*', cli_name='not_in_netgroups', csv=True) +option: Str('in_hbacrule*', cli_name='in_hbacrules', csv=True) +option: Str('not_in_hbacrule*', cli_name='not_in_hbacrules', csv=True) +option: Str('in_sudorule*', cli_name='in_sudorules', csv=True) +option: Str('not_in_sudorule*', cli_name='not_in_sudorules', csv=True) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) @@ -1665,8 +1665,8 @@ arg: Str('cn', attribute=True, cli_name='hostgroup_name', multivalue=False, prim option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1730,17 +1730,17 @@ arg: Password('bindpw', cli_name='password', confirm=False) option: Str('binddn?', autofill=True, cli_name='bind_dn', default=u'cn=directory manager') option: Str('usercontainer?', autofill=True, cli_name='user_container', default=u'ou=people') option: Str('groupcontainer?', autofill=True, cli_name='group_container', default=u'ou=groups') -option: List('userobjectclass?', autofill=True, cli_name='user_objectclass', default=(u'person',), multivalue=True) -option: List('groupobjectclass?', autofill=True, cli_name='group_objectclass', default=(u'groupOfUniqueNames', u'groupOfNames'), multivalue=True) -option: List('userignoreobjectclass?', autofill=True, cli_name='user_ignore_objectclass', default=(), multivalue=True) -option: List('userignoreattribute?', autofill=True, cli_name='user_ignore_attribute', default=(), multivalue=True) -option: List('groupignoreobjectclass?', autofill=True, cli_name='group_ignore_objectclass', default=(), multivalue=True) -option: List('groupignoreattribute?', autofill=True, cli_name='group_ignore_attribute', default=(), multivalue=True) +option: Str('userobjectclass*', autofill=True, cli_name='user_objectclass', csv=True, default=(u'person',)) +option: Str('groupobjectclass*', autofill=True, cli_name='group_objectclass', csv=True, default=(u'groupOfUniqueNames', u'groupOfNames')) +option: Str('userignoreobjectclass*', autofill=True, cli_name='user_ignore_objectclass', csv=True, default=()) +option: Str('userignoreattribute*', autofill=True, cli_name='user_ignore_attribute', csv=True, default=()) +option: Str('groupignoreobjectclass*', autofill=True, cli_name='group_ignore_objectclass', csv=True, default=()) +option: Str('groupignoreattribute*', autofill=True, cli_name='group_ignore_attribute', csv=True, default=()) option: Flag('groupoverwritegid', autofill=True, cli_name='group_overwrite_gid', default=False) option: StrEnum('schema?', autofill=True, cli_name='schema', default=u'RFC2307bis', values=(u'RFC2307bis', u'RFC2307')) option: Flag('continue?', autofill=True, default=False) -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) +option: Str('exclude_groups*', autofill=True, cli_name='exclude_groups', csv=True, default=()) +option: Str('exclude_users*', autofill=True, cli_name='exclude_users', csv=True, default=()) output: Output('result', , None) output: Output('failed', , None) output: Output('enabled', , None) @@ -1765,11 +1765,11 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) -option: List('netgroup?', alwaysask=True, cli_name='netgroups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) +option: Str('netgroup*', alwaysask=True, cli_name='netgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1797,18 +1797,18 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('netgroup?', cli_name='netgroups', multivalue=True) -option: List('no_netgroup?', cli_name='no_netgroups', multivalue=True) -option: List('user?', cli_name='users', multivalue=True) -option: List('no_user?', cli_name='no_users', multivalue=True) -option: List('group?', cli_name='groups', multivalue=True) -option: List('no_group?', cli_name='no_groups', multivalue=True) -option: List('host?', cli_name='hosts', multivalue=True) -option: List('no_host?', cli_name='no_hosts', multivalue=True) -option: List('hostgroup?', cli_name='hostgroups', multivalue=True) -option: List('no_hostgroup?', cli_name='no_hostgroups', multivalue=True) -option: List('in_netgroup?', cli_name='in_netgroups', multivalue=True) -option: List('not_in_netgroup?', cli_name='not_in_netgroups', multivalue=True) +option: Str('netgroup*', cli_name='netgroups', csv=True) +option: Str('no_netgroup*', cli_name='no_netgroups', csv=True) +option: Str('user*', cli_name='users', csv=True) +option: Str('no_user*', cli_name='no_users', csv=True) +option: Str('group*', cli_name='groups', csv=True) +option: Str('no_group*', cli_name='no_groups', csv=True) +option: Str('host*', cli_name='hosts', csv=True) +option: Str('no_host*', cli_name='no_hosts', csv=True) +option: Str('hostgroup*', cli_name='hostgroups', csv=True) +option: Str('no_hostgroup*', cli_name='no_hostgroups', csv=True) +option: Str('in_netgroup*', cli_name='in_netgroups', csv=True) +option: Str('not_in_netgroup*', cli_name='not_in_netgroups', csv=True) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) @@ -1836,11 +1836,11 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) -option: List('netgroup?', alwaysask=True, cli_name='netgroups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) +option: Str('netgroup*', alwaysask=True, cli_name='netgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1865,8 +1865,8 @@ output: Output('value', , None) command: permission_add args: 1,12,3 arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=True, required=True) -option: List('permissions', attribute=True, cli_name='permissions', multivalue=True, required=True) -option: List('attrs', alwaysask=True, attribute=True, autofill=False, cli_name='attrs', multivalue=True, query=True, required=False) +option: Str('permissions', attribute=True, cli_name='permissions', csv=True, multivalue=True, required=True) +option: Str('attrs', alwaysask=True, attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, query=True, required=False) option: StrEnum('type', alwaysask=True, attribute=True, autofill=False, cli_name='type', multivalue=False, query=True, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', alwaysask=True, attribute=True, autofill=False, cli_name='memberof', multivalue=False, query=True, required=False) option: Str('filter', alwaysask=True, attribute=True, autofill=False, cli_name='filter', multivalue=False, query=True, required=False) @@ -1886,7 +1886,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('privilege?', alwaysask=True, cli_name='privileges', multivalue=True) +option: Str('privilege*', alwaysask=True, cli_name='privileges', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1901,8 +1901,8 @@ command: permission_find args: 1,14,4 arg: Str('criteria?', noextrawhitespace=False) option: Str('cn', attribute=True, autofill=False, cli_name='name', multivalue=False, primary_key=True, query=True, required=False) -option: List('permissions', attribute=True, autofill=False, cli_name='permissions', multivalue=True, query=True, required=False) -option: List('attrs', attribute=True, autofill=False, cli_name='attrs', multivalue=True, query=True, required=False) +option: Str('permissions', attribute=True, autofill=False, cli_name='permissions', csv=True, multivalue=True, query=True, required=False) +option: Str('attrs', attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, query=True, required=False) option: StrEnum('type', attribute=True, autofill=False, cli_name='type', multivalue=False, query=True, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', attribute=True, autofill=False, cli_name='memberof', multivalue=False, query=True, required=False) option: Str('filter', attribute=True, autofill=False, cli_name='filter', multivalue=False, query=True, required=False) @@ -1921,8 +1921,8 @@ output: Output('truncated', , None) command: permission_mod args: 1,15,3 arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True) -option: List('permissions', attribute=True, autofill=False, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', alwaysask=True, attribute=True, autofill=False, cli_name='attrs', multivalue=True, query=True, required=False) +option: Str('permissions', attribute=True, autofill=False, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', alwaysask=True, attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, query=True, required=False) option: StrEnum('type', alwaysask=True, attribute=True, autofill=False, cli_name='type', multivalue=False, query=True, required=False, values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dnsrecord')) option: Str('memberof', alwaysask=True, attribute=True, autofill=False, cli_name='memberof', multivalue=False, query=True, required=False) option: Str('filter', alwaysask=True, attribute=True, autofill=False, cli_name='filter', multivalue=False, query=True, required=False) @@ -1945,7 +1945,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('privilege?', alwaysask=True, cli_name='privileges', multivalue=True) +option: Str('privilege*', alwaysask=True, cli_name='privileges', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -1991,7 +1991,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('role?', alwaysask=True, cli_name='roles', multivalue=True) +option: Str('role*', alwaysask=True, cli_name='roles', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2001,7 +2001,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('permission?', alwaysask=True, cli_name='permissions', multivalue=True) +option: Str('permission*', alwaysask=True, cli_name='permissions', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2048,7 +2048,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('role?', alwaysask=True, cli_name='roles', multivalue=True) +option: Str('role*', alwaysask=True, cli_name='roles', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2058,7 +2058,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('permission?', alwaysask=True, cli_name='permissions', multivalue=True) +option: Str('permission*', alwaysask=True, cli_name='permissions', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2173,10 +2173,10 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2186,7 +2186,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('privilege?', alwaysask=True, cli_name='privileges', multivalue=True) +option: Str('privilege*', alwaysask=True, cli_name='privileges', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2233,10 +2233,10 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2246,7 +2246,7 @@ arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=Tr option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('privilege?', alwaysask=True, cli_name='privileges', multivalue=True) +option: Str('privilege*', alwaysask=True, cli_name='privileges', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2263,8 +2263,8 @@ output: Output('value', , None) command: selfservice_add args: 1,5,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, required=True) -option: List('permissions', attribute=True, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', attribute=True, cli_name='attrs', multivalue=True, required=True) +option: Str('permissions', attribute=True, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', attribute=True, cli_name='attrs', csv=True, multivalue=True, required=True) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') @@ -2281,8 +2281,8 @@ command: selfservice_find args: 1,6,4 arg: Str('criteria?') option: Str('aciname', attribute=True, autofill=False, cli_name='name', multivalue=False, primary_key=True, query=True, required=False) -option: List('permissions', attribute=True, autofill=False, cli_name='permissions', multivalue=True, query=True, required=False) -option: List('attrs', attribute=True, autofill=False, cli_name='attrs', multivalue=True, query=True, required=False) +option: Str('permissions', attribute=True, autofill=False, cli_name='permissions', csv=True, multivalue=True, query=True, required=False) +option: Str('attrs', attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, query=True, required=False) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') @@ -2293,8 +2293,8 @@ output: Output('truncated', , None) command: selfservice_mod args: 1,5,3 arg: Str('aciname', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True) -option: List('permissions', attribute=True, autofill=False, cli_name='permissions', multivalue=True, required=False) -option: List('attrs', attribute=True, autofill=False, cli_name='attrs', multivalue=True, required=False) +option: Str('permissions', attribute=True, autofill=False, cli_name='permissions', csv=True, multivalue=True, required=False) +option: Str('attrs', attribute=True, autofill=False, cli_name='attrs', csv=True, multivalue=True, required=False) option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') @@ -2327,7 +2327,7 @@ arg: Str('krbprincipalname', attribute=True, cli_name='principal', multivalue=Fa option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2354,8 +2354,8 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('man_by_host?', cli_name='man_by_hosts', multivalue=True) -option: List('not_man_by_host?', cli_name='not_man_by_hosts', multivalue=True) +option: Str('man_by_host*', cli_name='man_by_hosts', csv=True) +option: Str('not_man_by_host*', cli_name='not_man_by_hosts', csv=True) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) @@ -2380,7 +2380,7 @@ arg: Str('krbprincipalname', attribute=True, cli_name='principal', multivalue=Fa option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2471,7 +2471,7 @@ arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', multivalue=False, p option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('sudocmd?', alwaysask=True, cli_name='sudocmds', multivalue=True) +option: Str('sudocmd*', alwaysask=True, cli_name='sudocmds', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2517,7 +2517,7 @@ arg: Str('cn', attribute=True, cli_name='sudocmdgroup_name', multivalue=False, p option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('sudocmd?', alwaysask=True, cli_name='sudocmds', multivalue=True) +option: Str('sudocmd*', alwaysask=True, cli_name='sudocmds', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2557,8 +2557,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('sudocmd?', alwaysask=True, cli_name='sudocmds', multivalue=True) -option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', multivalue=True) +option: Str('sudocmd*', alwaysask=True, cli_name='sudocmds', csv=True) +option: Str('sudocmdgroup*', alwaysask=True, cli_name='sudocmdgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2568,8 +2568,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('sudocmd?', alwaysask=True, cli_name='sudocmds', multivalue=True) -option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', multivalue=True) +option: Str('sudocmd*', alwaysask=True, cli_name='sudocmds', csv=True) +option: Str('sudocmdgroup*', alwaysask=True, cli_name='sudocmdgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2579,8 +2579,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2595,7 +2595,7 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2605,8 +2605,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2616,8 +2616,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2687,8 +2687,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('sudocmd?', alwaysask=True, cli_name='sudocmds', multivalue=True) -option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', multivalue=True) +option: Str('sudocmd*', alwaysask=True, cli_name='sudocmds', csv=True) +option: Str('sudocmdgroup*', alwaysask=True, cli_name='sudocmdgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2698,8 +2698,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('sudocmd?', alwaysask=True, cli_name='sudocmds', multivalue=True) -option: List('sudocmdgroup?', alwaysask=True, cli_name='sudocmdgroups', multivalue=True) +option: Str('sudocmd*', alwaysask=True, cli_name='sudocmds', csv=True) +option: Str('sudocmdgroup*', alwaysask=True, cli_name='sudocmdgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2709,8 +2709,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('host?', alwaysask=True, cli_name='hosts', multivalue=True) -option: List('hostgroup?', alwaysask=True, cli_name='hostgroups', multivalue=True) +option: Str('host*', alwaysask=True, cli_name='hosts', csv=True) +option: Str('hostgroup*', alwaysask=True, cli_name='hostgroups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2725,7 +2725,7 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2735,8 +2735,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2746,8 +2746,8 @@ arg: Str('cn', attribute=True, cli_name='sudorule_name', multivalue=False, prima option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') -option: List('user?', alwaysask=True, cli_name='users', multivalue=True) -option: List('group?', alwaysask=True, cli_name='groups', multivalue=True) +option: Str('user*', alwaysask=True, cli_name='users', csv=True) +option: Str('group*', alwaysask=True, cli_name='groups', csv=True) output: Entry('result', , Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None)) output: Output('failed', , None) output: Output('completed', , None) @@ -2853,16 +2853,16 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') option: Str('version?', exclude='webui') option: Flag('pkey_only?', autofill=True, default=False) -option: List('in_group?', cli_name='in_groups', multivalue=True) -option: List('not_in_group?', cli_name='not_in_groups', multivalue=True) -option: List('in_netgroup?', cli_name='in_netgroups', multivalue=True) -option: List('not_in_netgroup?', cli_name='not_in_netgroups', multivalue=True) -option: List('in_role?', cli_name='in_roles', multivalue=True) -option: List('not_in_role?', cli_name='not_in_roles', multivalue=True) -option: List('in_hbacrule?', cli_name='in_hbacrules', multivalue=True) -option: List('not_in_hbacrule?', cli_name='not_in_hbacrules', multivalue=True) -option: List('in_sudorule?', cli_name='in_sudorules', multivalue=True) -option: List('not_in_sudorule?', cli_name='not_in_sudorules', multivalue=True) +option: Str('in_group*', cli_name='in_groups', csv=True) +option: Str('not_in_group*', cli_name='not_in_groups', csv=True) +option: Str('in_netgroup*', cli_name='in_netgroups', csv=True) +option: Str('not_in_netgroup*', cli_name='not_in_netgroups', csv=True) +option: Str('in_role*', cli_name='in_roles', csv=True) +option: Str('not_in_role*', cli_name='not_in_roles', csv=True) +option: Str('in_hbacrule*', cli_name='in_hbacrules', csv=True) +option: Str('not_in_hbacrule*', cli_name='not_in_hbacrules', csv=True) +option: Str('in_sudorule*', cli_name='in_sudorules', csv=True) +option: Str('not_in_sudorule*', cli_name='not_in_sudorules', csv=True) output: Output('summary', (, ), None) output: ListOfEntries('result', (, ), Gettext('A list of LDAP entries', domain='ipa', localedir=None)) output: Output('count', , None) diff --git a/TODO b/TODO index 74f014b30..0b6299a63 100644 --- a/TODO +++ b/TODO @@ -63,11 +63,6 @@ Command Line interface own replacement for optparse. The isn't way to make optparse deal with the global options the way Jason would like, so that's another motivation. - * All "comma-separated list of..." parameters should really be changed to - multivalue and have a flag that tells the CLI whether a multivalue should - be parsed as comma-separated. The List type currently satisfy this, but it - would be nice to have a comma-separated multivalue of any type. - * Add a File param type so an argument may be read from a file. This is needed for cert-request to pass along the CSR. diff --git a/VERSION b/VERSION index 0b0ff1939..4fbf7a9a0 100644 --- a/VERSION +++ b/VERSION @@ -79,4 +79,4 @@ IPA_DATA_VERSION=20100614120000 # # ######################################################## IPA_API_VERSION_MAJOR=2 -IPA_API_VERSION_MINOR=16 +IPA_API_VERSION_MINOR=17 diff --git a/ipalib/__init__.py b/ipalib/__init__.py index c54717bf8..29ba0bb90 100644 --- a/ipalib/__init__.py +++ b/ipalib/__init__.py @@ -878,7 +878,7 @@ from backend import Backend from frontend import Command, LocalOrRemote, Updater from frontend import Object, Method, Property from crud import Create, Retrieve, Update, Delete, Search -from parameters import DefaultFrom, Bool, Flag, Int, Float, Bytes, Str, IA5Str, Password,List +from parameters import DefaultFrom, Bool, Flag, Int, Float, Bytes, Str, IA5Str, Password from parameters import BytesEnum, StrEnum, AccessTime, File from errors import SkipPluginModule from text import _, ngettext, GettextFactory, NGettextFactory diff --git a/ipalib/parameters.py b/ipalib/parameters.py index 96dde7fc2..287304d3b 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -381,6 +381,9 @@ class Param(ReadOnly): ('hint', (str, Gettext), None), ('alwaysask', bool, False), ('sortorder', int, 2), # see finalize() + ('csv', bool, False), + ('csv_separator', str, ','), + ('csv_skipspace', bool, True), # The 'default' kwarg gets appended in Param.__init__(): # ('default', self.type, None), @@ -493,6 +496,10 @@ class Param(ReadOnly): ) ) + # Check that if csv is set, multivalue is set too + if self.csv and not self.multivalue: + raise ValueError('%s: cannot have csv without multivalue' % self.nice) + # Check that all the rules are callable self.class_rules = tuple(class_rules) self.rules = rules @@ -663,6 +670,23 @@ class Param(ReadOnly): kw.update(overrides) return klass(name, *self.rules, **kw) + # The following 2 functions were taken from the Python + # documentation at http://docs.python.org/library/csv.html + def __utf_8_encoder(self, unicode_csv_data): + for line in unicode_csv_data: + yield line.encode('utf-8') + + def __unicode_csv_reader(self, unicode_csv_data, dialect=csv.excel, **kwargs): + # csv.py doesn't do Unicode; encode temporarily as UTF-8: + csv_reader = csv.reader(self.__utf_8_encoder(unicode_csv_data), + dialect=dialect, + delimiter=self.csv_separator, escapechar='\\', + skipinitialspace=self.csv_skipspace, + **kwargs) + for row in csv_reader: + # decode UTF-8 back to Unicode, cell by cell: + yield [unicode(cell, 'utf-8') for cell in row] + def normalize(self, value): """ Normalize ``value`` using normalizer callback. @@ -686,15 +710,20 @@ class Param(ReadOnly): :param value: A proposed value for this parameter. """ + if self.multivalue: + if self.csv and isinstance(value, basestring): + csvreader = self.__unicode_csv_reader([unicode(value)]) + value = tuple(csvreader.next()) #pylint: disable=E1101 + elif type(value) not in (tuple, list): + value = (value,) if self.normalizer is None: return value if self.multivalue: - if type(value) in (tuple, list): - return tuple( - self._normalize_scalar(v) for v in value - ) - return (self._normalize_scalar(value),) # Return a tuple - return self._normalize_scalar(value) + return tuple( + self._normalize_scalar(v) for v in value + ) + else: + return self._normalize_scalar(value) def _normalize_scalar(self, value): """ @@ -1525,47 +1554,12 @@ class StrEnum(Enum): type = unicode -class List(Param): +class Any(Param): """ - Base class for parameters as a list of values. The input is a delimited - string. + A parameter capable of holding values of any type. For internal use only. """ - type = tuple - kwargs = Param.kwargs + ( - ('separator', str, ','), - ('skipspace', bool, True), - ) - - # The following 2 functions were taken from the Python - # documentation at http://docs.python.org/library/csv.html - def __utf_8_encoder(self, unicode_csv_data): - for line in unicode_csv_data: - yield line.encode('utf-8') - - def __unicode_csv_reader(self, unicode_csv_data, dialect=csv.excel, **kwargs): - # csv.py doesn't do Unicode; encode temporarily as UTF-8: - csv_reader = csv.reader(self.__utf_8_encoder(unicode_csv_data), - dialect=dialect, - delimiter=self.separator, escapechar='\\', - skipinitialspace=self.skipspace, - **kwargs) - for row in csv_reader: - # decode UTF-8 back to Unicode, cell by cell: - yield [unicode(cell, 'utf-8') for cell in row] - - def __init__(self, name, *rules, **kw): - kw['multivalue'] = True - super(List, self).__init__(name, *rules, **kw) - - def normalize(self, value): - if value and not type(value) in (list, tuple): - reader = self.__unicode_csv_reader([value]) - value = [] - for row in reader: - value = value + row - value = tuple(value) - return super(List, self).normalize(value) + type = object def _convert_scalar(self, value, index=None): return value diff --git a/ipalib/plugins/aci.py b/ipalib/plugins/aci.py index 04f25f289..7ace05eb4 100644 --- a/ipalib/plugins/aci.py +++ b/ipalib/plugins/aci.py @@ -120,7 +120,7 @@ targetattr REPLACES the current attributes, it does not add to them. from ipalib import api, crud, errors from ipalib import Object, Command -from ipalib import Flag, Int, List, Str, StrEnum +from ipalib import Flag, Int, Str, StrEnum from ipalib.aci import ACI from ipalib import output from ipalib import _, ngettext @@ -430,18 +430,20 @@ class aci(Object): doc=_('User group ACI grants access to'), flags=('virtual_attribute',), ), - List('permissions', validate_permissions, + Str('permissions+', validate_permissions, cli_name='permissions', label=_('Permissions'), doc=_('comma-separated list of permissions to grant' \ '(read, write, add, delete, all)'), + csv=True, normalizer=_normalize_permissions, flags=('virtual_attribute',), ), - List('attrs?', + Str('attrs*', cli_name='attrs', label=_('Attributes'), doc=_('Comma-separated list of attributes'), + csv=True, flags=('virtual_attribute',), ), StrEnum('type?', diff --git a/ipalib/plugins/automember.py b/ipalib/plugins/automember.py index db58a7aa3..ff5a2bafb 100644 --- a/ipalib/plugins/automember.py +++ b/ipalib/plugins/automember.py @@ -109,18 +109,18 @@ INCLUDE_RE = 'automemberinclusiveregex' EXCLUDE_RE = 'automemberexclusiveregex' regex_attrs = ( - List('automemberinclusiveregex?', + Str('automemberinclusiveregex*', cli_name='inclusive_regex', label=_('Inclusive Regex'), doc=_('Inclusive Regex'), - multivalue=True, + csv=True, alwaysask=True, ), - List('automemberexclusiveregex?', + Str('automemberexclusiveregex*', cli_name='exclusive_regex', label=_('Exclusive Regex'), doc=_('Exclusive Regex'), - multivalue=True, + csv=True, alwaysask=True, ), Str('key', diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index 1766077be..cda0c497f 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -27,7 +27,7 @@ from copy import deepcopy from ipalib import api, crud, errors from ipalib import Method, Object, Command -from ipalib import Flag, Int, List, Str +from ipalib import Flag, Int, Str from ipalib.base import NameSpace from ipalib.cli import to_cli, from_cli from ipalib import output @@ -1298,8 +1298,9 @@ class LDAPModMember(LDAPQuery): ldap_obj = self.api.Object[ldap_obj_name] name = to_cli(ldap_obj_name) doc = self.member_param_doc % ldap_obj.object_name_plural - yield List('%s?' % name, cli_name='%ss' % name, doc=doc, - label=_('member %s') % ldap_obj.object_name, alwaysask=True) + yield Str('%s*' % name, cli_name='%ss' % name, doc=doc, + label=_('member %s') % ldap_obj.object_name, + csv=True, alwaysask=True) def get_member_dns(self, **options): dns = {} @@ -1593,18 +1594,18 @@ class LDAPSearch(BaseLDAPCommand, crud.Search): ldap_obj.object_name_plural ) name = '%s%s' % (relationship[1], to_cli(ldap_obj_name)) - yield List( - '%s?' % name, cli_name='%ss' % name, doc=doc, - label=ldap_obj.object_name + yield Str( + '%s*' % name, cli_name='%ss' % name, doc=doc, + label=ldap_obj.object_name, csv=True ) doc = self.member_param_excl_doc % ( self.obj.object_name_plural, relationship[0].lower(), ldap_obj.object_name_plural ) name = '%s%s' % (relationship[2], to_cli(ldap_obj_name)) - yield List( - '%s?' % name, cli_name='%ss' % name, doc=doc, - label=ldap_obj.object_name + yield Str( + '%s*' % name, cli_name='%ss' % name, doc=doc, + label=ldap_obj.object_name, csv=True ) def get_member_filter(self, ldap, **options): @@ -1784,8 +1785,9 @@ class LDAPModReverseMember(LDAPQuery): ldap_obj = self.api.Object[ldap_obj_name] name = to_cli(ldap_obj_name) doc = self.reverse_param_doc % ldap_obj.object_name_plural - yield List('%s?' % name, cli_name='%ss' % name, doc=doc, - label=ldap_obj.object_name, alwaysask=True) + yield Str('%s*' % name, cli_name='%ss' % name, doc=doc, + label=ldap_obj.object_name, csv=True, + alwaysask=True) class LDAPAddReverseMember(LDAPModReverseMember): diff --git a/ipalib/plugins/batch.py b/ipalib/plugins/batch.py index 72d7fe39e..4c5a6bd1e 100644 --- a/ipalib/plugins/batch.py +++ b/ipalib/plugins/batch.py @@ -47,7 +47,7 @@ And then a nested response for each IPA command method sent in the request from ipalib import api, errors from ipalib import Command -from ipalib import Str, List +from ipalib.parameters import Str, Any from ipalib.output import Output from ipalib import output from ipalib.text import _ @@ -58,10 +58,10 @@ class batch(Command): NO_CLI = True takes_args = ( - List('methods?', - doc=_('Nested Methods to execute'), - ), - ) + Any('methods*', + doc=_('Nested Methods to execute'), + ), + ) take_options = ( Str('version', @@ -71,7 +71,7 @@ class batch(Command): flags=['no_option', 'no_output'], default=API_VERSION, autofill=True, - ) + ), ) has_output = ( diff --git a/ipalib/plugins/config.py b/ipalib/plugins/config.py index 2b7dd6a2f..ee4505f49 100644 --- a/ipalib/plugins/config.py +++ b/ipalib/plugins/config.py @@ -148,15 +148,17 @@ class config(LDAPObject): doc=_('Base for certificate subjects (OU=Test,O=Example)'), flags=['no_update'], ), - List('ipagroupobjectclasses?', + Str('ipagroupobjectclasses*', cli_name='groupobjectclasses', label=_('Default group objectclasses'), doc=_('Default group objectclasses (comma-separated list)'), + csv=True, ), - List('ipauserobjectclasses?', + Str('ipauserobjectclasses*', cli_name='userobjectclasses', label=_('Default user objectclasses'), doc=_('Default user objectclasses (comma-separated list)'), + csv=True, ), Int('ipapwdexpadvnotify?', cli_name='pwdexpnotify', diff --git a/ipalib/plugins/delegation.py b/ipalib/plugins/delegation.py index fad0be362..5fe1511f2 100644 --- a/ipalib/plugins/delegation.py +++ b/ipalib/plugins/delegation.py @@ -19,7 +19,7 @@ import copy from ipalib import api, _, ngettext -from ipalib import Flag, Str, List +from ipalib import Flag, Str from ipalib.request import context from ipalib import api, crud, errors from ipalib import output @@ -110,16 +110,18 @@ class delegation(Object): doc=_('Delegation name'), primary_key=True, ), - List('permissions?', + Str('permissions*', cli_name='permissions', label=_('Permissions'), doc=_('Comma-separated list of permissions to grant ' \ '(read, write). Default is write.'), + csv=True, ), - List('attrs', + Str('attrs+', cli_name='attrs', label=_('Attributes'), doc=_('Comma-separated list of attributes'), + csv=True, normalizer=lambda value: value.lower(), ), Str('memberof', diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index b3a6abc67..7acb3df8a 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -24,7 +24,7 @@ import re from ipalib import api, errors, output from ipalib import Command -from ipalib import Flag, Bool, Int, List, Str, StrEnum +from ipalib import Flag, Bool, Int, Str, StrEnum from ipalib.plugins.baseldap import * from ipalib import _, ngettext from ipalib.util import validate_zonemgr, normalize_zonemgr, validate_hostname @@ -1040,16 +1040,16 @@ class dnsrecord_cmd_w_record_options(Command): validator = _record_validators.get(rec_type) normalizer = _record_normalizers.get(rec_type) if validator: - return List( - '%srecord?' % rec_type.lower(), validator, normalizer=normalizer, + return Str( + '%srecord*' % rec_type.lower(), validator, normalizer=normalizer, cli_name='%s_rec' % rec_type.lower(), doc=doc, - label='%s record' % rec_type, attribute=True + label='%s record' % rec_type, csv=True, attribute=True ) else: - return List( - '%srecord?' % rec_type.lower(), cli_name='%s_rec' % rec_type.lower(), + return Str( + '%srecord*' % rec_type.lower(), cli_name='%s_rec' % rec_type.lower(), normalizer=normalizer, doc=doc, label='%s record' % rec_type, - attribute=True + csv=True, attribute=True ) def prompt_record_options(self, rec_type_list): diff --git a/ipalib/plugins/hbactest.py b/ipalib/plugins/hbactest.py index 6bbdada4e..fbc3dbb2e 100644 --- a/ipalib/plugins/hbactest.py +++ b/ipalib/plugins/hbactest.py @@ -18,7 +18,7 @@ # along with this program. If not, see . from ipalib import api, errors, output -from ipalib import Command, List, Str, Flag +from ipalib import Command, Str, Flag from types import NoneType from ipalib.cli import to_cli from ipalib import _, ngettext @@ -186,9 +186,10 @@ class hbactest(Command): cli_name='service', label=_('Service'), ), - List('rules?', + Str('rules*', cli_name='rules', label=_('Rules to test. If not specified, --enabled is assumed'), + csv=True, ), Flag('nodetail?', cli_name='nodetail', diff --git a/ipalib/plugins/migration.py b/ipalib/plugins/migration.py index 5d6631f58..9fe72d587 100644 --- a/ipalib/plugins/migration.py +++ b/ipalib/plugins/migration.py @@ -21,7 +21,7 @@ import re import ldap as _ldap from ipalib import api, errors, output -from ipalib import Command, List, Password, Str, Flag, StrEnum +from ipalib import Command, Password, Str, Flag, StrEnum from ipalib.cli import to_cli from ipalib.dn import * if api.env.in_server and api.env.context in ['lite', 'server']: @@ -351,45 +351,51 @@ class migrate_ds(Command): default=u'ou=groups', autofill=True, ), - List('userobjectclass?', + Str('userobjectclass*', cli_name='user_objectclass', label=_('User object class'), doc=_('Comma-separated list of objectclasses used to search for user entries in DS'), + csv=True, default=(u'person',), autofill=True, ), - List('groupobjectclass?', + Str('groupobjectclass*', cli_name='group_objectclass', label=_('Group object class'), doc=_('Comma-separated list of objectclasses used to search for group entries in DS'), + csv=True, default=(u'groupOfUniqueNames', u'groupOfNames'), autofill=True, ), - List('userignoreobjectclass?', + Str('userignoreobjectclass*', cli_name='user_ignore_objectclass', label=_('Ignore user object class'), doc=_('Comma-separated list of objectclasses to be ignored for user entries in DS'), + csv=True, default=tuple(), autofill=True, ), - List('userignoreattribute?', + Str('userignoreattribute*', cli_name='user_ignore_attribute', label=_('Ignore user attribute'), doc=_('Comma-separated list of attributes to be ignored for user entries in DS'), + csv=True, default=tuple(), autofill=True, ), - List('groupignoreobjectclass?', + Str('groupignoreobjectclass*', cli_name='group_ignore_objectclass', label=_('Ignore group object class'), doc=_('Comma-separated list of objectclasses to be ignored for group entries in DS'), + csv=True, default=tuple(), autofill=True, ), - List('groupignoreattribute?', + Str('groupignoreattribute*', cli_name='group_ignore_attribute', label=_('Ignore group attribute'), doc=_('Comma-separated list of attributes to be ignored for group entries in DS'), + csv=True, default=tuple(), autofill=True, ), @@ -457,9 +463,9 @@ can use their Kerberos accounts.''') ldap_obj = self.api.Object[ldap_obj_name] name = 'exclude_%ss' % to_cli(ldap_obj_name) doc = self.exclude_doc % ldap_obj.object_name_plural - yield List( - '%s?' % name, cli_name=name, doc=doc, default=tuple(), - autofill=True + yield Str( + '%s*' % name, cli_name=name, doc=doc, csv=True, + default=tuple(), autofill=True ) def normalize_options(self, options): @@ -470,7 +476,7 @@ can use their Kerberos accounts.''') plugin doesn't like that - convert back to empty lists. """ for p in self.params(): - if isinstance(p, List): + if p.csv: if options[p.name]: options[p.name] = tuple( v.lower() for v in options[p.name] diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py index e51e3b859..c48979f9d 100644 --- a/ipalib/plugins/permission.py +++ b/ipalib/plugins/permission.py @@ -114,16 +114,18 @@ class permission(LDAPObject): label=_('Permission name'), primary_key=True, ), - List('permissions', + Str('permissions+', cli_name='permissions', label=_('Permissions'), doc=_('Comma-separated list of permissions to grant ' \ '(read, write, add, delete, all)'), + csv=True, ), - List('attrs?', + Str('attrs*', cli_name='attrs', label=_('Attributes'), doc=_('Comma-separated list of attributes'), + csv=True, normalizer=lambda value: value.lower(), flags=('ask_create', 'ask_update'), ), diff --git a/ipalib/plugins/selfservice.py b/ipalib/plugins/selfservice.py index f68212539..902e16baf 100644 --- a/ipalib/plugins/selfservice.py +++ b/ipalib/plugins/selfservice.py @@ -19,7 +19,7 @@ import copy from ipalib import api, _, ngettext -from ipalib import Flag, Str, List +from ipalib import Flag, Str from ipalib.request import context from ipalib import api, crud, errors from ipalib import output @@ -83,16 +83,18 @@ class selfservice(Object): doc=_('Self-service name'), primary_key=True, ), - List('permissions?', + Str('permissions*', cli_name='permissions', label=_('Permissions'), doc=_('Comma-separated list of permissions to grant ' \ '(read, write). Default is write.'), + csv=True, ), - List('attrs', + Str('attrs+', cli_name='attrs', label=_('Attributes'), doc=_('Comma-separated list of attributes'), + csv=True, normalizer=lambda value: value.lower(), ), ) diff --git a/make-lint b/make-lint index 59c472221..b5df9e4a6 100755 --- a/make-lint +++ b/make-lint @@ -43,30 +43,30 @@ IGNORE_PATHS = ('build', 'dist', 'install/po/test_i18n.py', 'lite-server.py', class IPATypeChecker(TypeChecker): # 'class': ('generated', 'properties',) ignore = { - 'ipalib.base.NameSpace': ('find',), - 'ipalib.cli.Collector': ('__options',), - 'ipalib.config.Env': ('*'), - 'ipalib.plugable.API': ('Command', 'Object', 'Method', 'Property', - 'Backend', 'log', 'plugins'), - 'ipalib.plugable.Plugin': ('Command', 'Object', 'Method', 'Property', + 'ipalib.base.NameSpace': ['find'], + 'ipalib.cli.Collector': ['__options'], + 'ipalib.config.Env': ['*'], + 'ipalib.plugable.API': ['Command', 'Object', 'Method', 'Property', + 'Backend', 'log', 'plugins'], + 'ipalib.plugable.Plugin': ['Command', 'Object', 'Method', 'Property', 'Backend', 'env', 'debug', 'info', 'warning', 'error', 'critical', - 'exception', 'context', 'log'), - 'ipalib.plugins.baseldap.CallbackInterface': ('pre_callback', - 'post_callback', 'exc_callback'), - 'ipalib.plugins.misc.env': ('env',), - 'ipalib.parameters.Param': ('cli_name', 'cli_short_name', 'label', + 'exception', 'context', 'log'], + 'ipalib.plugins.baseldap.CallbackInterface': ['pre_callback', + 'post_callback', 'exc_callback'], + 'ipalib.plugins.misc.env': ['env'], + 'ipalib.parameters.Param': ['cli_name', 'cli_short_name', 'label', 'doc', 'required', 'multivalue', 'primary_key', 'normalizer', 'default', 'default_from', 'create_default', 'autofill', 'query', - 'attribute', 'include', 'exclude', 'flags', 'hint', 'alwaysask'), - 'ipalib.parameters.Bool': ('truths', 'falsehoods'), - 'ipalib.parameters.Int': ('minvalue', 'maxvalue'), - 'ipalib.parameters.Float': ('minvalue', 'maxvalue'), - 'ipalib.parameters.Data': ('minlength', 'maxlength', 'length', - 'pattern', 'pattern_errmsg'), - 'ipalib.parameters.Enum': ('values',), - 'ipalib.parameters.List': ('separator', 'skipspace'), - 'ipalib.parameters.File': ('stdin_if_missing'), - 'urlparse.SplitResult': ('netloc',), + 'attribute', 'include', 'exclude', 'flags', 'hint', 'alwaysask', + 'sortorder', 'csv', 'csv_separator', 'csv_skipspace'], + 'ipalib.parameters.Bool': ['truths', 'falsehoods'], + 'ipalib.parameters.Int': ['minvalue', 'maxvalue'], + 'ipalib.parameters.Float': ['minvalue', 'maxvalue'], + 'ipalib.parameters.Data': ['minlength', 'maxlength', 'length', + 'pattern', 'pattern_errmsg'], + 'ipalib.parameters.Enum': ['values'], + 'ipalib.parameters.File': ['stdin_if_missing'], + 'urlparse.SplitResult': ['netloc'], } def _related_classes(self, klass): diff --git a/tests/test_ipalib/test_parameters.py b/tests/test_ipalib/test_parameters.py index e63bbb736..5cb7abf2a 100644 --- a/tests/test_ipalib/test_parameters.py +++ b/tests/test_ipalib/test_parameters.py @@ -192,6 +192,10 @@ class test_Param(ClassChecker): assert o.include is None assert o.exclude is None assert o.flags == frozenset() + assert o.sortorder == 2 + assert o.csv is False + assert o.csv_separator == ',' + assert o.csv_skipspace is True # Test that doc defaults from label: o = self.cls('my_param', doc=_('Hello world')) @@ -267,6 +271,10 @@ class test_Param(ClassChecker): 'exclude', frozenset(['client', 'bar']), ) + # Test that ValueError is raised if csv is set and multivalue is not set: + e = raises(ValueError, self.cls, 'my_param', csv=True) + assert str(e) == '%s: cannot have csv without multivalue' % "Param('my_param')" + # Test that _get_default gets set: call1 = lambda first, last: first[0] + last call2 = lambda **kw: 'The Default' @@ -626,6 +634,48 @@ class test_Param(ClassChecker): assert o._convert_scalar.value is default assert o.normalizer.value is default + def test_csv_normalize(self): + """ + Test the `ipalib.parameters.Param.normalize` method with csv. + """ + o = self.cls('my_list+', csv=True) + n = o.normalize('a,b') + assert type(n) is tuple + assert len(n) is 2 + + n = o.normalize('bar, "hi, there",foo') + assert type(n) is tuple + assert len(n) is 3 + + def test_csv_normalize_separator(self): + """ + Test the `ipalib.parameters.Param.normalize` method with csv and a separator. + """ + o = self.cls('my_list+', csv=True, csv_separator='|') + + n = o.normalize('a') + assert type(n) is tuple + assert len(n) is 1 + + n = o.normalize('a|b') + assert type(n) is tuple + assert len(n) is 2 + + def test_csv_normalize_skipspace(self): + """ + Test the `ipalib.parameters.Param.normalize` method with csv without skipping spaces. + """ + o = self.cls('my_list+', csv=True, csv_skipspace=False) + + n = o.normalize('a') + assert type(n) is tuple + assert len(n) is 1 + + n = o.normalize('a, "b,c", d') + assert type(n) is tuple + # the output w/o skipspace is ['a',' "b','c"',' d'] + assert len(n) is 4 + class test_Flag(ClassChecker): """ @@ -1324,66 +1374,6 @@ class test_Float(ClassChecker): assert dummy.called() is True dummy.reset() - -class test_List(ClassChecker): - """ - Test the `ipalib.parameters.List` class. - """ - _cls = parameters.List - - def test_init(self): - """ - Test the `ipalib.parameters.List.__init__` method. - """ - # Test with no kwargs: - o = self.cls('my_list') - assert o.type is tuple - assert isinstance(o, parameters.List) - assert o.multivalue is True - assert o.skipspace is True - - def test_normalize(self): - """ - Test the `ipalib.parameters.List.normalize` method. - """ - o = self.cls('my_list') - n = o.normalize('a,b') - assert type(n) is tuple - assert len(n) is 2 - - n = o.normalize('bar, "hi, there",foo') - assert type(n) is tuple - assert len(n) is 3 - - def test_normalize_separator(self): - """ - Test the `ipalib.parameters.List.normalize` method with a separator. - """ - o = self.cls('my_list', separator='|') - - n = o.normalize('a') - assert type(n) is tuple - assert len(n) is 1 - - n = o.normalize('a|b') - assert type(n) is tuple - assert len(n) is 2 - - def test_normalize_skipspace(self): - """ - Test the `ipalib.parameters.List.normalize` method without skipping spaces. - """ - o = self.cls('my_list', skipspace=False) - - n = o.normalize('a') - assert type(n) is tuple - assert len(n) is 1 - - n = o.normalize('a, "b,c", d') - assert type(n) is tuple - # the output w/o skipspace is ['a',' "b','c"',' d'] - assert len(n) is 4 - class test_AccessTime(ClassChecker): """ Test the `ipalib.parameters.AccessTime` class. -- cgit