Allow primary keys to use different type than unicode.

Also return list of primary keys instead of a single unicode CSV value from
LDAPDelete-based commands.

This introduces a new capability 'primary_key_types' for backward
compatibility with old clients.

Reviewed-By: Tomas Babej <tbabej@redhat.com>
This commit is contained in:
Jan Cholasta 2014-03-27 14:04:00 +01:00 committed by Petr Viktorin
parent c644b47492
commit 4314d02fbf
46 changed files with 538 additions and 447 deletions

337
API.txt

File diff suppressed because it is too large Load Diff

View File

@ -89,5 +89,5 @@ IPA_DATA_VERSION=20100614120000
# # # #
######################################################## ########################################################
IPA_API_VERSION_MAJOR=2 IPA_API_VERSION_MAJOR=2
IPA_API_VERSION_MINOR=82 IPA_API_VERSION_MINOR=83
# Last change: amisnyov - automember nowait add # Last change: jcholast - add 'primary_key_types' capability

View File

@ -45,6 +45,9 @@ capabilities = dict(
# permissions2: Reworked permission system # permissions2: Reworked permission system
# http://www.freeipa.org/page/V3/Permissions_V2 # http://www.freeipa.org/page/V3/Permissions_V2
permissions2=u'2.69', permissions2=u'2.69',
# primary_key_types: Non-unicode primary keys in command output
primary_key_types=u'2.83',
) )

View File

@ -363,7 +363,8 @@ class textui(backend.Backend):
label = labels.get(key, key) label = labels.get(key, key)
flag = flags.get(key, []) flag = flags.get(key, [])
value = entry[key] value = entry[key]
if 'suppress_empty' in flag and value in [u'', '', [], None]: if ('suppress_empty' in flag and
value in [u'', '', (), [], None]):
continue continue
if isinstance(value, dict): if isinstance(value, dict):
if frontend.entry_count(value) == 0: if frontend.entry_count(value) == 0:

View File

@ -439,12 +439,9 @@ class Command(HasParam):
and 'summary' in self.output and 'summary' in self.output
and 'summary' not in ret and 'summary' not in ret
): ):
if self.msg_summary: ret['summary'] = self.get_summary_default(ret)
ret['summary'] = self.msg_summary % ret
else:
ret['summary'] = None
if self.use_output_validation and (self.output or ret is not None): if self.use_output_validation and (self.output or ret is not None):
self.validate_output(ret) self.validate_output(ret, options.get('version', API_VERSION))
return ret return ret
def soft_validate(self, values): def soft_validate(self, values):
@ -918,7 +915,7 @@ class Command(HasParam):
flags=['no_option', 'no_output'], flags=['no_option', 'no_output'],
) )
def validate_output(self, output): def validate_output(self, output, version=API_VERSION):
""" """
Validate the return value to make sure it meets the interface contract. Validate the return value to make sure it meets the interface contract.
""" """
@ -947,7 +944,7 @@ class Command(HasParam):
nice, o.name, o.type, type(value), value) nice, o.name, o.type, type(value), value)
) )
if callable(o.validate): if callable(o.validate):
o.validate(self, value) o.validate(self, value, version)
def get_output_params(self): def get_output_params(self):
for param in self._get_param_iterable('output_params', verb='has'): for param in self._get_param_iterable('output_params', verb='has'):
@ -959,6 +956,10 @@ class Command(HasParam):
continue continue
yield param yield param
def get_summary_default(self, output):
if self.msg_summary:
return self.msg_summary % output
def log_messages(self, output, logger): def log_messages(self, output, logger):
logger_functions = dict( logger_functions = dict(
debug=logger.debug, debug=logger.debug,

View File

@ -24,6 +24,7 @@ Simple description of return values.
from inspect import getdoc from inspect import getdoc
from types import NoneType from types import NoneType
from plugable import ReadOnly, lock from plugable import ReadOnly, lock
from capabilities import client_has_capability
from text import _ from text import _
@ -99,7 +100,7 @@ class ListOfEntries(Output):
type = (list, tuple) type = (list, tuple)
doc = _('A list of LDAP entries') doc = _('A list of LDAP entries')
def validate(self, cmd, entries): def validate(self, cmd, entries, version):
assert isinstance(entries, self.type) assert isinstance(entries, self.type)
for (i, entry) in enumerate(entries): for (i, entry) in enumerate(entries):
if not isinstance(entry, dict): if not isinstance(entry, dict):
@ -107,6 +108,47 @@ class ListOfEntries(Output):
self.name, i, dict, type(entry), entry) self.name, i, dict, type(entry), entry)
) )
class PrimaryKey(Output):
def validate(self, cmd, value, version):
if client_has_capability(version, 'primary_key_types'):
if hasattr(cmd, 'obj') and cmd.obj and cmd.obj.primary_key:
types = cmd.obj.primary_key.allowed_types
else:
types = (unicode,)
types = types + (NoneType,)
else:
types = (unicode,)
if not isinstance(value, types):
raise TypeError(
"%s.validate_output() => %s.validate():\n"
" output[%r]: need %r; got %r: %r" % (
cmd.name, self.__class__.__name__, self.name,
types[0], type(value), value))
class ListOfPrimaryKeys(Output):
def validate(self, cmd, values, version):
if client_has_capability(version, 'primary_key_types'):
types = (tuple, list)
else:
types = (unicode,)
if not isinstance(values, types):
raise TypeError(
"%s.validate_output() => %s.validate():\n"
" output[%r]: need %r; got %r: %r" % (
cmd.name, self.__class__.__name__, self.name,
types[0], type(values), values))
if client_has_capability(version, 'primary_key_types'):
if hasattr(cmd, 'obj') and cmd.obj and cmd.obj.primary_key:
types = cmd.obj.primary_key.allowed_types
else:
types = (unicode,)
for (i, value) in enumerate(values):
if not isinstance(value, types):
raise TypeError(emsg % (
cmd.name, self.__class__.__name__, i, self.name,
types[0], type(value), value))
result = Output('result', doc=_('All commands should at least have a result')) result = Output('result', doc=_('All commands should at least have a result'))
@ -114,7 +156,7 @@ summary = Output('summary', (unicode, NoneType),
_('User-friendly description of action performed') _('User-friendly description of action performed')
) )
value = Output('value', unicode, value = PrimaryKey('value', None,
_("The primary_key value of the entry, e.g. 'jdoe' for a user"), _("The primary_key value of the entry, e.g. 'jdoe' for a user"),
flags=['no_display'], flags=['no_display'],
) )
@ -140,6 +182,12 @@ standard_delete = (
value, value,
) )
standard_multi_delete = (
summary,
Output('result', dict, _('List of deletions that failed')),
ListOfPrimaryKeys('value', flags=['no_display']),
)
standard_boolean = ( standard_boolean = (
summary, summary,
Output('result', bool, _('True means the operation was successful')), Output('result', bool, _('True means the operation was successful')),

View File

@ -126,7 +126,7 @@ from ipalib.aci import ACI
from ipalib import output from ipalib import output
from ipalib import _, ngettext from ipalib import _, ngettext
from ipalib.plugable import Registry from ipalib.plugable import Registry
from ipalib.plugins.baseldap import gen_pkey_only_option from ipalib.plugins.baseldap import gen_pkey_only_option, pkey_to_value
from ipapython.ipa_log_manager import * from ipapython.ipa_log_manager import *
from ipapython.dn import DN from ipapython.dn import DN
@ -557,7 +557,7 @@ class aci_add(crud.Create):
result = _aci_to_kw(ldap, newaci, kw.get('test', False)) result = _aci_to_kw(ldap, newaci, kw.get('test', False))
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
@ -598,7 +598,7 @@ class aci_del(crud.Delete):
return dict( return dict(
result=True, result=True,
value=aciname, value=pkey_to_value(aciname, options),
) )
@ -666,7 +666,7 @@ class aci_mod(crud.Update):
result = _aci_to_kw(ldap, newaci) result = _aci_to_kw(ldap, newaci)
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
@ -919,7 +919,7 @@ class aci_show(crud.Retrieve):
result = _aci_to_kw(ldap, aci) result = _aci_to_kw(ldap, aci)
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
@ -981,5 +981,5 @@ class aci_rename(crud.Update):
result = _aci_to_kw(ldap, newaci) result = _aci_to_kw(ldap, newaci)
return dict( return dict(
result=result, result=result,
value=kw['newname'], value=pkey_to_value(kw['newname'], kw),
) )

View File

@ -297,7 +297,7 @@ class automember_add(LDAPCreate):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_add, self).execute(*keys, **options) result = super(automember_add, self).execute(*keys, **options)
result['value'] = keys[-1] result['value'] = pkey_to_value(keys[-1], options)
return result return result
@ -389,7 +389,7 @@ class automember_add_condition(LDAPUpdate):
result = {'result': getattr(context, 'entry_attrs'), 'value': keys[-1]} result = {'result': getattr(context, 'entry_attrs'), 'value': keys[-1]}
result['failed'] = getattr(context, 'failed') result['failed'] = getattr(context, 'failed')
result['completed'] = getattr(context, 'completed') result['completed'] = getattr(context, 'completed')
result['value'] = keys[-1] result['value'] = pkey_to_value(keys[-1], options)
return result return result
@ -476,7 +476,7 @@ class automember_remove_condition(LDAPUpdate):
result = {'result': getattr(context, 'entry_attrs'), 'value': keys[-1]} result = {'result': getattr(context, 'entry_attrs'), 'value': keys[-1]}
result['failed'] = getattr(context, 'failed') result['failed'] = getattr(context, 'failed')
result['completed'] = getattr(context, 'completed') result['completed'] = getattr(context, 'completed')
result['value'] = keys[-1] result['value'] = pkey_to_value(keys[-1], options)
return result return result
@ -491,7 +491,7 @@ class automember_mod(LDAPUpdate):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_mod, self).execute(*keys, **options) result = super(automember_mod, self).execute(*keys, **options)
result['value'] = keys[-1] result['value'] = pkey_to_value(keys[-1], options)
return result return result
@ -506,7 +506,7 @@ class automember_del(LDAPDelete):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_del, self).execute(*keys, **options) result = super(automember_del, self).execute(*keys, **options)
result['value'] = keys[-1] result['value'] = pkey_to_value([keys[-1]], options)
return result return result
@ -540,7 +540,7 @@ class automember_show(LDAPRetrieve):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_show, self).execute(*keys, **options) result = super(automember_show, self).execute(*keys, **options)
result['value'] = keys[-1] result['value'] = pkey_to_value(keys[-1], options)
return result return result
@ -568,7 +568,7 @@ class automember_default_group_set(LDAPUpdate):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_default_group_set, self).execute(*keys, **options) result = super(automember_default_group_set, self).execute(*keys, **options)
result['value'] = options['type'] result['value'] = pkey_to_value(options['type'], options)
return result return result
@ -602,7 +602,7 @@ class automember_default_group_remove(LDAPUpdate):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_default_group_remove, self).execute(*keys, **options) result = super(automember_default_group_remove, self).execute(*keys, **options)
result['value'] = options['type'] result['value'] = pkey_to_value(options['type'], options)
return result return result
@ -626,7 +626,7 @@ class automember_default_group_show(LDAPRetrieve):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(automember_default_group_show, self).execute(*keys, **options) result = super(automember_default_group_show, self).execute(*keys, **options)
result['value'] = options['type'] result['value'] = pkey_to_value(options['type'], options)
return result return result
@ -777,4 +777,4 @@ class automember_rebuild(Command):
return dict( return dict(
result=result, result=result,
summary=unicode(summary), summary=unicode(summary),
value=u'') value=pkey_to_value(None, options))

View File

@ -827,7 +827,7 @@ class automountkey_add(LDAPCreate):
options[self.obj.primary_key.name] = self.obj.get_pk(key, info) options[self.obj.primary_key.name] = self.obj.get_pk(key, info)
options['add_operation'] = True options['add_operation'] = True
result = super(automountkey_add, self).execute(*keys, **options) result = super(automountkey_add, self).execute(*keys, **options)
result['value'] = options['automountkey'] result['value'] = pkey_to_value(options['automountkey'], options)
return result return result
api.register(automountkey_add) api.register(automountkey_add)
@ -923,7 +923,7 @@ class automountkey_del(LDAPDelete):
options['automountkey'], options['automountkey'],
options.get('automountinformation', None)) options.get('automountinformation', None))
result = super(automountkey_del, self).execute(*keys, **options) result = super(automountkey_del, self).execute(*keys, **options)
result['value'] = options['automountkey'] result['value'] = pkey_to_value([options['automountkey']], options)
return result return result
api.register(automountkey_del) api.register(automountkey_del)
@ -982,7 +982,7 @@ class automountkey_mod(LDAPUpdate):
options['rename'] = new_rdn options['rename'] = new_rdn
result = super(automountkey_mod, self).execute(*keys, **options) result = super(automountkey_mod, self).execute(*keys, **options)
result['value'] = options['automountkey'] result['value'] = pkey_to_value(options['automountkey'], options)
return result return result
api.register(automountkey_mod) api.register(automountkey_mod)
@ -1026,7 +1026,7 @@ class automountkey_show(LDAPRetrieve):
options.get('automountinformation', None)) options.get('automountinformation', None))
result = super(automountkey_show, self).execute(*keys, **options) result = super(automountkey_show, self).execute(*keys, **options)
result['value'] = options['automountkey'] result['value'] = pkey_to_value(options['automountkey'], options)
return result return result
api.register(automountkey_show) api.register(automountkey_show)

View File

@ -32,7 +32,9 @@ from ipalib.cli import to_cli
from ipalib import output from ipalib import output
from ipalib.text import _ from ipalib.text import _
from ipalib.util import json_serialize, validate_hostname from ipalib.util import json_serialize, validate_hostname
from ipalib.capabilities import client_has_capability
from ipapython.dn import DN, RDN from ipapython.dn import DN, RDN
from ipapython.version import API_VERSION
DNA_MAGIC = -1 DNA_MAGIC = -1
@ -240,6 +242,20 @@ def entry_to_dict(entry, **options):
result['dn'] = entry.dn result['dn'] = entry.dn
return result return result
def pkey_to_unicode(key):
if key is None:
key = []
elif not isinstance(key, (tuple, list)):
key = [key]
key = u','.join(unicode(k) for k in key)
return key
def pkey_to_value(key, options):
version = options.get('version', API_VERSION)
if client_has_capability(version, 'primary_key_types'):
return key
return pkey_to_unicode(key)
def wait_for_value(ldap, dn, attr, value): def wait_for_value(ldap, dn, attr, value):
""" """
389-ds postoperation plugins are executed after the data has been 389-ds postoperation plugins are executed after the data has been
@ -768,6 +784,12 @@ last, after all sets and adds."""),
_callback_registry = dict(pre={}, post={}, exc={}, interactive_prompt={}) _callback_registry = dict(pre={}, post={}, exc={}, interactive_prompt={})
def get_summary_default(self, output):
if 'value' in output:
output = dict(output)
output['value'] = pkey_to_unicode(output['value'])
return super(BaseLDAPCommand, self).get_summary_default(output)
def _convert_2_dict(self, ldap, attrs): def _convert_2_dict(self, ldap, attrs):
""" """
Convert a string in the form of name/value pairs into a dictionary. Convert a string in the form of name/value pairs into a dictionary.
@ -1103,9 +1125,12 @@ class LDAPCreate(BaseLDAPCommand, crud.Create):
entry_attrs = entry_to_dict(entry_attrs, **options) entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn entry_attrs['dn'] = dn
if self.obj.primary_key and keys[-1] is not None: if self.obj.primary_key:
return dict(result=entry_attrs, value=keys[-1]) pkey = keys[-1]
return dict(result=entry_attrs, value=u'') else:
pkey = None
return dict(result=entry_attrs, value=pkey_to_value(pkey, options))
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
assert isinstance(dn, DN) assert isinstance(dn, DN)
@ -1227,9 +1252,12 @@ class LDAPRetrieve(LDAPQuery):
entry_attrs = entry_to_dict(entry_attrs, **options) entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn entry_attrs['dn'] = dn
if self.obj.primary_key and keys[-1] is not None: if self.obj.primary_key:
return dict(result=entry_attrs, value=keys[-1]) pkey = keys[-1]
return dict(result=entry_attrs, value=u'') else:
pkey = None
return dict(result=entry_attrs, value=pkey_to_value(pkey, options))
def pre_callback(self, ldap, dn, attrs_list, *keys, **options): def pre_callback(self, ldap, dn, attrs_list, *keys, **options):
assert isinstance(dn, DN) assert isinstance(dn, DN)
@ -1363,9 +1391,12 @@ class LDAPUpdate(LDAPQuery, crud.Update):
entry_attrs = entry_to_dict(entry_attrs, **options) entry_attrs = entry_to_dict(entry_attrs, **options)
if self.obj.primary_key and keys[-1] is not None: if self.obj.primary_key:
return dict(result=entry_attrs, value=keys[-1]) pkey = keys[-1]
return dict(result=entry_attrs, value=u'') else:
pkey = None
return dict(result=entry_attrs, value=pkey_to_value(pkey, options))
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
assert isinstance(dn, DN) assert isinstance(dn, DN)
@ -1386,7 +1417,7 @@ class LDAPDelete(LDAPMultiQuery):
""" """
Delete an LDAP entry and all of its direct subentries. Delete an LDAP entry and all of its direct subentries.
""" """
has_output = output.standard_delete has_output = output.standard_multi_delete
has_output_params = global_output_params has_output_params = global_output_params
@ -1433,28 +1464,28 @@ class LDAPDelete(LDAPMultiQuery):
return result return result
if not self.obj.primary_key or not isinstance(keys[-1], (list, tuple)): if self.obj.primary_key and isinstance(keys[-1], (list, tuple)):
pkeyiter = (keys[-1], )
else:
pkeyiter = keys[-1] pkeyiter = keys[-1]
elif keys[-1] is not None:
pkeyiter = [keys[-1]]
else:
pkeyiter = []
deleted = [] deleted = []
failed = [] failed = []
result = True
for pkey in pkeyiter: for pkey in pkeyiter:
try: try:
if not delete_entry(pkey): delete_entry(pkey)
result = False
except errors.ExecutionError: except errors.ExecutionError:
if not options.get('continue', False): if not options.get('continue', False):
raise raise
failed.append(pkey) failed.append(pkey)
else: else:
deleted.append(pkey) deleted.append(pkey)
deleted = pkey_to_value(deleted, options)
failed = pkey_to_value(failed, options)
if self.obj.primary_key and pkeyiter[0] is not None: return dict(result=dict(failed=failed), value=deleted)
return dict(result=dict(failed=u','.join(failed)), value=u','.join(deleted))
return dict(result=dict(failed=u''), value=u'')
def pre_callback(self, ldap, dn, *keys, **options): def pre_callback(self, ldap, dn, *keys, **options):
assert isinstance(dn, DN) assert isinstance(dn, DN)

View File

@ -24,7 +24,7 @@ from ipalib.request import context
from ipalib import api, crud, errors from ipalib import api, crud, errors
from ipalib import output from ipalib import output
from ipalib import Object, Command from ipalib import Object, Command
from ipalib.plugins.baseldap import gen_pkey_only_option from ipalib.plugins.baseldap import gen_pkey_only_option, pkey_to_value
__doc__ = _(""" __doc__ = _("""
Group to Group Delegation Group to Group Delegation
@ -141,7 +141,7 @@ class delegation_add(crud.Create):
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(delegation_add) api.register(delegation_add)
@ -159,7 +159,7 @@ class delegation_del(crud.Delete):
self.obj.postprocess_result(result) self.obj.postprocess_result(result)
return dict( return dict(
result=True, result=True,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(delegation_del) api.register(delegation_del)
@ -178,7 +178,7 @@ class delegation_mod(crud.Update):
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(delegation_mod) api.register(delegation_mod)
@ -220,7 +220,7 @@ class delegation_show(crud.Retrieve):
self.obj.postprocess_result(result) self.obj.postprocess_result(result)
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(delegation_show) api.register(delegation_show)

View File

@ -2012,7 +2012,7 @@ class dnszone_disable(LDAPQuery):
except errors.EmptyModlist: except errors.EmptyModlist:
pass pass
return dict(result=True, value=keys[-1]) return dict(result=True, value=pkey_to_value(keys[-1], options))
api.register(dnszone_disable) api.register(dnszone_disable)
@ -2036,7 +2036,7 @@ class dnszone_enable(LDAPQuery):
except errors.EmptyModlist: except errors.EmptyModlist:
pass pass
return dict(result=True, value=keys[-1]) return dict(result=True, value=pkey_to_value(keys[-1], options))
api.register(dnszone_enable) api.register(dnszone_enable)
@ -2073,7 +2073,7 @@ class dnszone_add_permission(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=permission_name, value=pkey_to_value(permission_name, options),
) )
api.register(dnszone_add_permission) api.register(dnszone_add_permission)
@ -2106,7 +2106,7 @@ class dnszone_remove_permission(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=permission_name, value=pkey_to_value(permission_name, options),
) )
api.register(dnszone_remove_permission) api.register(dnszone_remove_permission)
@ -2957,7 +2957,7 @@ api.register(dnsrecord_delentry)
class dnsrecord_del(LDAPUpdate): class dnsrecord_del(LDAPUpdate):
__doc__ = _('Delete DNS resource record.') __doc__ = _('Delete DNS resource record.')
has_output = output.standard_delete has_output = output.standard_multi_delete
no_option_msg = _('Neither --del-all nor options to delete a specific record provided.\n'\ no_option_msg = _('Neither --del-all nor options to delete a specific record provided.\n'\
"Command help may be consulted for all supported record types.") "Command help may be consulted for all supported record types.")
@ -3045,6 +3045,7 @@ class dnsrecord_del(LDAPUpdate):
return result return result
result = super(dnsrecord_del, self).execute(*keys, **options) result = super(dnsrecord_del, self).execute(*keys, **options)
result['value'] = pkey_to_value([keys[-1]], options)
if getattr(context, 'del_all', False) and not \ if getattr(context, 'del_all', False) and not \
self.obj.is_pkey_zone_record(*keys): self.obj.is_pkey_zone_record(*keys):
@ -3223,7 +3224,7 @@ class dns_is_enabled(Command):
except Exception, e: except Exception, e:
pass pass
return dict(result=dns_enabled, value=u'') return dict(result=dns_enabled, value=pkey_to_value(None, options))
api.register(dns_is_enabled) api.register(dns_is_enabled)

View File

@ -589,7 +589,7 @@ class group_detach(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[0], value=pkey_to_value(keys[0], options),
) )
api.register(group_detach) api.register(group_detach)

View File

@ -324,7 +324,7 @@ class hbacrule_enable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=cn, value=pkey_to_value(cn, options),
) )
api.register(hbacrule_enable) api.register(hbacrule_enable)
@ -354,7 +354,7 @@ class hbacrule_disable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=cn, value=pkey_to_value(cn, options),
) )
api.register(hbacrule_disable) api.register(hbacrule_disable)

View File

@ -1011,7 +1011,7 @@ class host_disable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[0], value=pkey_to_value(keys[0], options),
) )
def post_callback(self, ldap, dn, entry_attrs, *keys, **options): def post_callback(self, ldap, dn, entry_attrs, *keys, **options):

View File

@ -216,8 +216,6 @@ class krbtpolicy_reset(LDAPQuery):
entry_attrs = entry_to_dict(entry_attrs, **options) entry_attrs = entry_to_dict(entry_attrs, **options)
if keys[-1] is not None: return dict(result=entry_attrs, value=pkey_to_value(keys[-1], options))
return dict(result=entry_attrs, value=keys[-1])
return dict(result=entry_attrs, value=u'')
api.register(krbtpolicy_reset) api.register(krbtpolicy_reset)

View File

@ -23,7 +23,7 @@ from ipalib.request import context
from ipalib import api, crud, errors from ipalib import api, crud, errors
from ipalib import output from ipalib import output
from ipalib import Object, Command from ipalib import Object, Command
from ipalib.plugins.baseldap import gen_pkey_only_option from ipalib.plugins.baseldap import gen_pkey_only_option, pkey_to_value
__doc__ = _(""" __doc__ = _("""
Self-service Permissions Self-service Permissions
@ -135,7 +135,7 @@ class selfservice_add(crud.Create):
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(selfservice_add) api.register(selfservice_add)
@ -153,7 +153,7 @@ class selfservice_del(crud.Delete):
return dict( return dict(
result=True, result=True,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(selfservice_del) api.register(selfservice_del)
@ -175,7 +175,7 @@ class selfservice_mod(crud.Update):
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(selfservice_mod) api.register(selfservice_mod)
@ -218,7 +218,7 @@ class selfservice_show(crud.Retrieve):
self.obj.postprocess_result(result) self.obj.postprocess_result(result)
return dict( return dict(
result=result, result=result,
value=aciname, value=pkey_to_value(aciname, kw),
) )
api.register(selfservice_show) api.register(selfservice_show)

View File

@ -425,7 +425,7 @@ class selinuxusermap_enable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=cn, value=pkey_to_value(cn, options),
) )
api.register(selinuxusermap_enable) api.register(selinuxusermap_enable)
@ -455,7 +455,7 @@ class selinuxusermap_disable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=cn, value=pkey_to_value(cn, options),
) )
api.register(selinuxusermap_disable) api.register(selinuxusermap_disable)

View File

@ -661,7 +661,7 @@ class service_disable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[0], value=pkey_to_value(keys[0], options),
) )
api.register(service_disable) api.register(service_disable)

View File

@ -699,7 +699,7 @@ class sudorule_add_option(LDAPQuery):
entry_attrs = entry_to_dict(entry_attrs, **options) entry_attrs = entry_to_dict(entry_attrs, **options)
return dict(result=entry_attrs, value=cn) return dict(result=entry_attrs, value=pkey_to_value(cn, options))
def output_for_cli(self, textui, result, cn, **options): def output_for_cli(self, textui, result, cn, **options):
textui.print_dashed(_('Added option "%(option)s" to Sudo Rule "%(rule)s"') % \ textui.print_dashed(_('Added option "%(option)s" to Sudo Rule "%(rule)s"') % \
@ -755,7 +755,7 @@ class sudorule_remove_option(LDAPQuery):
entry_attrs = entry_to_dict(entry_attrs, **options) entry_attrs = entry_to_dict(entry_attrs, **options)
return dict(result=entry_attrs, value=cn) return dict(result=entry_attrs, value=pkey_to_value(cn, options))
def output_for_cli(self, textui, result, cn, **options): def output_for_cli(self, textui, result, cn, **options):
textui.print_dashed(_('Removed option "%(option)s" from Sudo Rule "%(rule)s"') % \ textui.print_dashed(_('Removed option "%(option)s" from Sudo Rule "%(rule)s"') % \

View File

@ -434,6 +434,7 @@ sides.
) )
msg_summary = _('Added Active Directory trust for realm "%(value)s"') msg_summary = _('Added Active Directory trust for realm "%(value)s"')
msg_summary_existing = _('Re-established trust to domain "%(value)s"')
has_output_params = LDAPCreate.has_output_params + trust_output_params has_output_params = LDAPCreate.has_output_params + trust_output_params
def execute(self, *keys, **options): def execute(self, *keys, **options):
@ -640,11 +641,6 @@ sides.
except errors.NotFound: except errors.NotFound:
dn = None dn = None
if dn:
summary = _('Re-established trust to domain "%(value)s"')
else:
summary = self.msg_summary
# 1. Full access to the remote domain. Use admin credentials and # 1. Full access to the remote domain. Use admin credentials and
# generate random trustdom password to do work on both sides # generate random trustdom password to do work on both sides
if full_join: if full_join:
@ -685,10 +681,13 @@ sides.
error=_('Unable to verify write permissions to the AD')) error=_('Unable to verify write permissions to the AD'))
ret = dict( ret = dict(
value=self.trustinstance.remote_domain.info['dns_domain'], value=pkey_to_value(
self.trustinstance.remote_domain.info['dns_domain'],
options),
verified=result['verified'] verified=result['verified']
) )
ret['summary'] = summary % ret if dn:
ret['summary'] = self.msg_summary_existing % ret
return ret return ret
@ -702,10 +701,13 @@ sides.
options['trust_secret'] options['trust_secret']
) )
ret = dict( ret = dict(
value=self.trustinstance.remote_domain.info['dns_domain'], value=pkey_to_value(
self.trustinstance.remote_domain.info['dns_domain'],
options),
verified=result['verified'] verified=result['verified']
) )
ret['summary'] = summary % ret if dn:
ret['summary'] = self.msg_summary_existing % ret
return ret return ret
raise errors.ValidationError(name=_('AD Trust setup'), raise errors.ValidationError(name=_('AD Trust setup'),
error=_('Not enough arguments specified to perform trust setup')) error=_('Not enough arguments specified to perform trust setup'))
@ -915,7 +917,7 @@ class trustconfig_mod(LDAPUpdate):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(trustconfig_mod, self).execute(*keys, **options) result = super(trustconfig_mod, self).execute(*keys, **options)
result['value'] = options['trust_type'] result['value'] = pkey_to_value(options['trust_type'], options)
return result return result
def post_callback(self, ldap, dn, entry_attrs, *keys, **options): def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
@ -932,7 +934,7 @@ class trustconfig_show(LDAPRetrieve):
def execute(self, *keys, **options): def execute(self, *keys, **options):
result = super(trustconfig_show, self).execute(*keys, **options) result = super(trustconfig_show, self).execute(*keys, **options)
result['value'] = options['trust_type'] result['value'] = pkey_to_value(options['trust_type'], options)
return result return result
def post_callback(self, ldap, dn, entry_attrs, *keys, **options): def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
@ -1216,7 +1218,7 @@ class trustdomain_del(LDAPDelete):
except errors.AlreadyActive: except errors.AlreadyActive:
pass pass
result = super(trustdomain_del, self).execute(*keys, **options) result = super(trustdomain_del, self).execute(*keys, **options)
result['value'] = u','.join(keys[1]) result['value'] = pkey_to_value(keys[1], options)
return result return result
@ -1346,7 +1348,7 @@ class trustdomain_enable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[1], value=pkey_to_value(keys[1], options),
) )
api.register(trustdomain_enable) api.register(trustdomain_enable)
@ -1386,7 +1388,7 @@ class trustdomain_disable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[1], value=pkey_to_value(keys[1], options),
) )
api.register(trustdomain_disable) api.register(trustdomain_disable)

View File

@ -832,7 +832,7 @@ class user_disable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[0], value=pkey_to_value(keys[0], options),
) )
api.register(user_disable) api.register(user_disable)
@ -854,7 +854,7 @@ class user_enable(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[0], value=pkey_to_value(keys[0], options),
) )
api.register(user_enable) api.register(user_enable)
@ -883,7 +883,7 @@ class user_unlock(LDAPQuery):
return dict( return dict(
result=True, result=True,
value=keys[0], value=pkey_to_value(keys[0], options),
) )
api.register(user_unlock) api.register(user_unlock)

View File

@ -25,6 +25,7 @@ from ipatests.util import raises, ClassChecker
from ipalib import output from ipalib import output
from ipalib.frontend import Command from ipalib.frontend import Command
from ipalib import _ from ipalib import _
from ipapython.version import API_VERSION
class test_Output(ClassChecker): class test_Output(ClassChecker):
""" """
@ -78,12 +79,14 @@ class test_ListOfEntries(ClassChecker):
okay = dict(foo='bar') okay = dict(foo='bar')
nope = ('aye', 'bee') nope = ('aye', 'bee')
e = raises(TypeError, inst.validate, cmd, [okay, okay, nope]) e = raises(TypeError, inst.validate,
cmd, [okay, okay, nope], API_VERSION)
assert str(e) == output.emsg % ( assert str(e) == output.emsg % (
'example', 'ListOfEntries', 'stuff', 2, dict, tuple, nope 'example', 'ListOfEntries', 'stuff', 2, dict, tuple, nope
) )
e = raises(TypeError, inst.validate, cmd, [nope, okay, nope]) e = raises(TypeError, inst.validate,
cmd, [nope, okay, nope], API_VERSION)
assert str(e) == output.emsg % ( assert str(e) == output.emsg % (
'example', 'ListOfEntries', 'stuff', 0, dict, tuple, nope 'example', 'ListOfEntries', 'stuff', 0, dict, tuple, nope
) )

View File

@ -242,7 +242,7 @@ class test_automember(Declarative):
desc='Rebuild membership for hostgroups', desc='Rebuild membership for hostgroups',
command=('automember_rebuild', [], dict(type=u'hostgroup')), command=('automember_rebuild', [], dict(type=u'hostgroup')),
expected=dict( expected=dict(
value=u'', value=None,
summary=fuzzy_automember_message, summary=fuzzy_automember_message,
result=dict() result=dict()
), ),
@ -252,7 +252,7 @@ class test_automember(Declarative):
desc='Rebuild membership for hostgroups asynchronously', desc='Rebuild membership for hostgroups asynchronously',
command=('automember_rebuild', [], dict(type=u'hostgroup',no_wait=True)), command=('automember_rebuild', [], dict(type=u'hostgroup',no_wait=True)),
expected=dict( expected=dict(
value=u'', value=None,
summary=u'Automember rebuild membership task started', summary=u'Automember rebuild membership task started',
result=dict( result=dict(
dn=fuzzy_automember_dn dn=fuzzy_automember_dn
@ -361,7 +361,7 @@ class test_automember(Declarative):
desc='Rebuild membership for host: %s' % fqdn1, desc='Rebuild membership for host: %s' % fqdn1,
command=('automember_rebuild', [], dict(hosts=fqdn1)), command=('automember_rebuild', [], dict(hosts=fqdn1)),
expected=dict( expected=dict(
value=u'', value=None,
summary=fuzzy_automember_message, summary=fuzzy_automember_message,
result=dict() result=dict()
), ),
@ -371,7 +371,7 @@ class test_automember(Declarative):
desc='Rebuild membership for host: %s asynchronously' % fqdn1, desc='Rebuild membership for host: %s asynchronously' % fqdn1,
command=('automember_rebuild', [], dict(hosts=fqdn1, no_wait=True)), command=('automember_rebuild', [], dict(hosts=fqdn1, no_wait=True)),
expected=dict( expected=dict(
value=u'', value=None,
summary=u'Automember rebuild membership task started', summary=u'Automember rebuild membership task started',
result=dict( result=dict(
dn=fuzzy_automember_dn dn=fuzzy_automember_dn
@ -398,9 +398,9 @@ class test_automember(Declarative):
desc='Delete host: %r' % fqdn1, desc='Delete host: %r' % fqdn1,
command=('host_del', [fqdn1], dict()), command=('host_del', [fqdn1], dict()),
expected=dict( expected=dict(
value=fqdn1, value=[fqdn1],
summary=u'Deleted host "%s"' % fqdn1, summary=u'Deleted host "%s"' % fqdn1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -408,9 +408,9 @@ class test_automember(Declarative):
desc='Delete hostgroup: %r' % hostgroup1, desc='Delete hostgroup: %r' % hostgroup1,
command=('hostgroup_del', [hostgroup1], dict()), command=('hostgroup_del', [hostgroup1], dict()),
expected=dict( expected=dict(
value=hostgroup1, value=[hostgroup1],
summary=u'Deleted hostgroup "%s"' % hostgroup1, summary=u'Deleted hostgroup "%s"' % hostgroup1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -418,9 +418,9 @@ class test_automember(Declarative):
desc='Delete automember rule: %r' % hostgroup1, desc='Delete automember rule: %r' % hostgroup1,
command=('automember_del', [hostgroup1], dict(type=u'hostgroup')), command=('automember_del', [hostgroup1], dict(type=u'hostgroup')),
expected=dict( expected=dict(
value=hostgroup1, value=[hostgroup1],
summary=u'Deleted automember rule "%s"' % hostgroup1, summary=u'Deleted automember rule "%s"' % hostgroup1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -543,7 +543,7 @@ class test_automember(Declarative):
desc='Rebuild membership for groups', desc='Rebuild membership for groups',
command=('automember_rebuild', [], dict(type=u'group')), command=('automember_rebuild', [], dict(type=u'group')),
expected=dict( expected=dict(
value=u'', value=None,
summary=fuzzy_automember_message, summary=fuzzy_automember_message,
result=dict() result=dict()
), ),
@ -553,7 +553,7 @@ class test_automember(Declarative):
desc='Rebuild membership for groups asynchronously', desc='Rebuild membership for groups asynchronously',
command=('automember_rebuild', [], dict(type=u'group', no_wait=True)), command=('automember_rebuild', [], dict(type=u'group', no_wait=True)),
expected=dict( expected=dict(
value=u'', value=None,
summary=u'Automember rebuild membership task started', summary=u'Automember rebuild membership task started',
result=dict( result=dict(
dn=fuzzy_automember_dn dn=fuzzy_automember_dn
@ -620,7 +620,7 @@ class test_automember(Declarative):
desc='Rebuild membership for user: %s' % user1, desc='Rebuild membership for user: %s' % user1,
command=('automember_rebuild', [], dict(users=user1)), command=('automember_rebuild', [], dict(users=user1)),
expected=dict( expected=dict(
value=u'', value=None,
summary=fuzzy_automember_message, summary=fuzzy_automember_message,
result=dict() result=dict()
), ),
@ -630,7 +630,7 @@ class test_automember(Declarative):
desc='Rebuild membership for user: %s asynchronously' % user1, desc='Rebuild membership for user: %s asynchronously' % user1,
command=('automember_rebuild', [], dict(users=user1, no_wait=True)), command=('automember_rebuild', [], dict(users=user1, no_wait=True)),
expected=dict( expected=dict(
value=u'', value=None,
summary=u'Automember rebuild membership task started', summary=u'Automember rebuild membership task started',
result=dict( result=dict(
dn=fuzzy_automember_dn dn=fuzzy_automember_dn
@ -658,9 +658,9 @@ class test_automember(Declarative):
desc='Delete user: %r' % user1, desc='Delete user: %r' % user1,
command=('user_del', [user1], dict()), command=('user_del', [user1], dict()),
expected=dict( expected=dict(
value=user1, value=[user1],
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -668,9 +668,9 @@ class test_automember(Declarative):
desc='Delete user: %r' % manager1, desc='Delete user: %r' % manager1,
command=('user_del', [manager1], dict()), command=('user_del', [manager1], dict()),
expected=dict( expected=dict(
value=manager1, value=[manager1],
summary=u'Deleted user "%s"' % manager1, summary=u'Deleted user "%s"' % manager1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -678,9 +678,9 @@ class test_automember(Declarative):
desc='Delete group: %r' % group1, desc='Delete group: %r' % group1,
command=('group_del', [group1], dict()), command=('group_del', [group1], dict()),
expected=dict( expected=dict(
value=group1, value=[group1],
summary=u'Deleted group "%s"' % group1, summary=u'Deleted group "%s"' % group1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -688,9 +688,9 @@ class test_automember(Declarative):
desc='Delete automember rule: %r' % group1, desc='Delete automember rule: %r' % group1,
command=('automember_del', [group1], dict(type=u'group')), command=('automember_del', [group1], dict(type=u'group')),
expected=dict( expected=dict(
value=group1, value=[group1],
summary=u'Deleted automember rule "%s"' % group1, summary=u'Deleted automember rule "%s"' % group1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),

View File

@ -100,7 +100,7 @@ class AutomountTest(XMLRPC_test):
finally: finally:
res = api.Command['automountlocation_del'](self.locname)['result'] res = api.Command['automountlocation_del'](self.locname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Success; delete the temporary directory # Success; delete the temporary directory
shutil.rmtree(conf_directory) shutil.rmtree(conf_directory)
@ -285,7 +285,7 @@ class test_automount(AutomountTest):
delkey_kw={'automountkey': self.keyname_rename, 'automountinformation' : self.newinfo} delkey_kw={'automountkey': self.keyname_rename, 'automountinformation' : self.newinfo}
res = api.Command['automountkey_del'](self.locname, self.mapname, **delkey_kw)['result'] res = api.Command['automountkey_del'](self.locname, self.mapname, **delkey_kw)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verify that it is gone # Verify that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -297,7 +297,7 @@ class test_automount(AutomountTest):
""" """
res = api.Command['automountlocation_del'](self.locname)['result'] res = api.Command['automountlocation_del'](self.locname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verify that it is gone # Verify that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -367,7 +367,7 @@ class test_automount_direct(AutomountTest):
""" """
res = api.Command['automountlocation_del'](self.locname)['result'] res = api.Command['automountlocation_del'](self.locname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verity that it is gone # Verity that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -443,7 +443,7 @@ class test_automount_indirect(AutomountTest):
""" """
res = api.Command['automountkey_del'](self.locname, self.parentmap, **self.key_kw)['result'] res = api.Command['automountkey_del'](self.locname, self.parentmap, **self.key_kw)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verify that it is gone # Verify that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -455,7 +455,7 @@ class test_automount_indirect(AutomountTest):
""" """
res = api.Command['automountmap_del'](self.locname, self.mapname)['result'] res = api.Command['automountmap_del'](self.locname, self.mapname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verify that it is gone # Verify that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -467,7 +467,7 @@ class test_automount_indirect(AutomountTest):
""" """
res = api.Command['automountlocation_del'](self.locname)['result'] res = api.Command['automountlocation_del'](self.locname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verity that it is gone # Verity that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -551,7 +551,7 @@ class test_automount_indirect_no_parent(AutomountTest):
delkey_kw={'automountkey': self.keyname, 'automountinformation': self.mapname} delkey_kw={'automountkey': self.keyname, 'automountinformation': self.mapname}
res = api.Command['automountkey_del'](self.locname, self.parentmap, **delkey_kw)['result'] res = api.Command['automountkey_del'](self.locname, self.parentmap, **delkey_kw)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verify that it is gone # Verify that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -563,7 +563,7 @@ class test_automount_indirect_no_parent(AutomountTest):
""" """
res = api.Command['automountmap_del'](self.locname, self.mapname)['result'] res = api.Command['automountmap_del'](self.locname, self.mapname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verify that it is gone # Verify that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):
@ -575,7 +575,7 @@ class test_automount_indirect_no_parent(AutomountTest):
""" """
res = api.Command['automountlocation_del'](self.locname)['result'] res = api.Command['automountlocation_del'](self.locname)['result']
assert res assert res
assert_attr_equal(res, 'failed', '') assert not res['failed']
# Verity that it is gone # Verity that it is gone
with assert_raises(errors.NotFound): with assert_raises(errors.NotFound):

View File

@ -104,8 +104,8 @@ class test_batch(Declarative):
error=None), error=None),
dict( dict(
summary=u'Deleted group "%s"' % group1, summary=u'Deleted group "%s"' % group1,
result=dict(failed=u''), result=dict(failed=[]),
value=group1, value=[group1],
error=None), error=None),
), ),
), ),

View File

@ -37,7 +37,7 @@ class test_config(Declarative):
dict(addattr=u'ipauserobjectclasses=ipahost')), dict(addattr=u'ipauserobjectclasses=ipahost')),
expected=dict( expected=dict(
result=lambda d: 'ipahost' in d['ipauserobjectclasses'], result=lambda d: 'ipahost' in d['ipauserobjectclasses'],
value=u'', value=None,
summary=None, summary=None,
), ),
), ),
@ -48,7 +48,7 @@ class test_config(Declarative):
dict(delattr=u'ipauserobjectclasses=ipahost')), dict(delattr=u'ipauserobjectclasses=ipahost')),
expected=dict( expected=dict(
result=lambda d: 'ipahost' not in d['ipauserobjectclasses'], result=lambda d: 'ipahost' not in d['ipauserobjectclasses'],
value=u'', value=None,
summary=None, summary=None,
), ),
), ),
@ -123,7 +123,7 @@ class test_config(Declarative):
command=('config_mod', [], dict(ipauserauthtype=u'password')), command=('config_mod', [], dict(ipauserauthtype=u'password')),
expected=dict( expected=dict(
result=lambda d: d['ipauserauthtype'] == (u'password',), result=lambda d: d['ipauserauthtype'] == (u'password',),
value=u'', value=None,
summary=None, summary=None,
), ),
), ),
@ -133,7 +133,7 @@ class test_config(Declarative):
command=('config_show', [], {}), command=('config_show', [], {}),
expected=dict( expected=dict(
result=lambda d: d['ipauserauthtype'] == (u'password',), result=lambda d: d['ipauserauthtype'] == (u'password',),
value=u'', value=None,
summary=None, summary=None,
), ),
), ),
@ -143,7 +143,7 @@ class test_config(Declarative):
command=('config_mod', [], dict(ipauserauthtype=None)), command=('config_mod', [], dict(ipauserauthtype=None)),
expected=dict( expected=dict(
result=lambda d: 'ipauserauthtype' not in d, result=lambda d: 'ipauserauthtype' not in d,
value=u'', value=None,
summary=None, summary=None,
), ),
), ),

View File

@ -451,9 +451,9 @@ class test_dns(Declarative):
desc='Delete reverse zone %r' % revzone1, desc='Delete reverse zone %r' % revzone1,
command=('dnszone_del', [revzone1], {}), command=('dnszone_del', [revzone1], {}),
expected={ expected={
'value': revzone1, 'value': [revzone1],
'summary': u'Deleted DNS zone "%s"' % revzone1, 'summary': u'Deleted DNS zone "%s"' % revzone1,
'result': {'failed': u''}, 'result': {'failed': []},
}, },
), ),
@ -560,7 +560,7 @@ class test_dns(Declarative):
desc='Remove A record from %r in zone %r' % (name1, zone1), desc='Remove A record from %r in zone %r' % (name1, zone1),
command=('dnsrecord_del', [zone1, name1], {'arecord': arec2}), command=('dnsrecord_del', [zone1, name1], {'arecord': arec2}),
expected={ expected={
'value': name1, 'value': [name1],
'summary': None, 'summary': None,
'result': { 'result': {
'idnsname': [name1], 'idnsname': [name1],
@ -897,9 +897,9 @@ class test_dns(Declarative):
desc='Delete zone %r' % zone2, desc='Delete zone %r' % zone2,
command=('dnszone_del', [zone2], {}), command=('dnszone_del', [zone2], {}),
expected={ expected={
'value': zone2, 'value': [zone2],
'summary': u'Deleted DNS zone "%s"' % zone2, 'summary': u'Deleted DNS zone "%s"' % zone2,
'result': {'failed': u''}, 'result': {'failed': []},
}, },
), ),
@ -1026,9 +1026,9 @@ class test_dns(Declarative):
desc='Delete record %r in zone %r' % (name1_renamed, zone1), desc='Delete record %r in zone %r' % (name1_renamed, zone1),
command=('dnsrecord_del', [zone1, name1_renamed], {'del_all': True }), command=('dnsrecord_del', [zone1, name1_renamed], {'del_all': True }),
expected={ expected={
'value': name1_renamed, 'value': [name1_renamed],
'summary': u'Deleted record "%s"' % name1_renamed, 'summary': u'Deleted record "%s"' % name1_renamed,
'result': {'failed': u''}, 'result': {'failed': []},
}, },
), ),
@ -1166,7 +1166,7 @@ class test_dns(Declarative):
desc='Update global DNS settings', desc='Update global DNS settings',
command=('dnsconfig_mod', [], {'idnsforwarders' : [fwd_ip],}), command=('dnsconfig_mod', [], {'idnsforwarders' : [fwd_ip],}),
expected={ expected={
'value': u'', 'value': None,
'summary': None, 'summary': None,
'result': { 'result': {
'idnsforwarders': [fwd_ip], 'idnsforwarders': [fwd_ip],
@ -1406,9 +1406,9 @@ class test_dns(Declarative):
desc='Delete zone %r' % zone1, desc='Delete zone %r' % zone1,
command=('dnszone_del', [zone1], {}), command=('dnszone_del', [zone1], {}),
expected={ expected={
'value': zone1, 'value': [zone1],
'summary': u'Deleted DNS zone "%s"' % zone1, 'summary': u'Deleted DNS zone "%s"' % zone1,
'result': {'failed': u''}, 'result': {'failed': []},
}, },
), ),
@ -1469,9 +1469,9 @@ class test_dns(Declarative):
desc='Delete zone %r' % zone1, desc='Delete zone %r' % zone1,
command=('dnszone_del', [zone1], {}), command=('dnszone_del', [zone1], {}),
expected={ expected={
'value': zone1, 'value': [zone1],
'summary': u'Deleted DNS zone "%s"' % zone1, 'summary': u'Deleted DNS zone "%s"' % zone1,
'result': {'failed': u''}, 'result': {'failed': []},
}, },
), ),

View File

@ -55,6 +55,8 @@ def assert_realmdomain_and_txt_record_present(response):
def assert_realmdomain_and_txt_record_not_present(response): def assert_realmdomain_and_txt_record_not_present(response):
zone = response['value'] zone = response['value']
if isinstance(zone, (tuple, list)):
zone = zone[0]
r = api.Command['realmdomains_show']() r = api.Command['realmdomains_show']()
assert zone not in r['result']['associateddomain'] assert zone not in r['result']['associateddomain']
@ -159,9 +161,9 @@ class test_dns_realmdomains_integration(Declarative):
'during dnszone_del', 'during dnszone_del',
command=('dnszone_del', [dnszone_1], {}), command=('dnszone_del', [dnszone_1], {}),
expected={ expected={
'value': dnszone_1, 'value': [dnszone_1],
'summary': u'Deleted DNS zone "%s"' % dnszone_1, 'summary': u'Deleted DNS zone "%s"' % dnszone_1,
'result': {'failed': u''}, 'result': {'failed': []},
}, },
extra_check=assert_realmdomain_and_txt_record_not_present, extra_check=assert_realmdomain_and_txt_record_not_present,
), ),

View File

@ -554,8 +554,8 @@ class test_group(Declarative):
desc='Remove group %r with external membership' % (group3), desc='Remove group %r with external membership' % (group3),
command=('group_del', [group3], {}), command=('group_del', [group3], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=group3, value=[group3],
summary=u'Deleted group "testgroup3"', summary=u'Deleted group "testgroup3"',
), ),
), ),
@ -693,8 +693,8 @@ class test_group(Declarative):
desc='Delete %r' % group1, desc='Delete %r' % group1,
command=('group_del', [group1], {}), command=('group_del', [group1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=group1, value=[group1],
summary=u'Deleted group "testgroup1"', summary=u'Deleted group "testgroup1"',
) )
), ),
@ -728,8 +728,8 @@ class test_group(Declarative):
desc='Delete %r' % group2, desc='Delete %r' % group2,
command=('group_del', [group2], {}), command=('group_del', [group2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=group2, value=[group2],
summary=u'Deleted group "testgroup2"', summary=u'Deleted group "testgroup2"',
) )
), ),
@ -859,8 +859,8 @@ class test_group(Declarative):
desc='Now delete the unmanaged group %r' % user1, desc='Now delete the unmanaged group %r' % user1,
command=('group_del', [user1], {}), command=('group_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=user1, value=[user1],
summary=u'Deleted group "%s"' % user1, summary=u'Deleted group "%s"' % user1,
) )
), ),
@ -875,9 +875,9 @@ class test_group(Declarative):
desc='Delete %r' % user1, desc='Delete %r' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "tuser1"', summary=u'Deleted user "tuser1"',
value=user1, value=[user1],
), ),
), ),
@ -1004,9 +1004,9 @@ class test_group(Declarative):
desc='Delete %r' % user1, desc='Delete %r' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),

View File

@ -236,9 +236,9 @@ class test_hbacsvcgroup(Declarative):
desc='Delete %r' % hbacsvcgroup1, desc='Delete %r' % hbacsvcgroup1,
command=('hbacsvcgroup_del', [hbacsvcgroup1], {}), command=('hbacsvcgroup_del', [hbacsvcgroup1], {}),
expected=dict( expected=dict(
value=hbacsvcgroup1, value=[hbacsvcgroup1],
summary=u'Deleted HBAC service group "testhbacsvcgroup1"', summary=u'Deleted HBAC service group "testhbacsvcgroup1"',
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -247,9 +247,9 @@ class test_hbacsvcgroup(Declarative):
desc='Delete service %r' % hbacsvc1, desc='Delete service %r' % hbacsvc1,
command=('hbacsvc_del', [hbacsvc1], {}), command=('hbacsvc_del', [hbacsvc1], {}),
expected=dict( expected=dict(
value=hbacsvc1, value=[hbacsvc1],
summary=u'Deleted HBAC service "%s"' % hbacsvc1, summary=u'Deleted HBAC service "%s"' % hbacsvc1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
) )

View File

@ -585,9 +585,9 @@ class test_host(Declarative):
desc='Delete %r' % fqdn1, desc='Delete %r' % fqdn1,
command=('host_del', [fqdn1], {}), command=('host_del', [fqdn1], {}),
expected=dict( expected=dict(
value=fqdn1, value=[fqdn1],
summary=u'Deleted host "%s"' % fqdn1, summary=u'Deleted host "%s"' % fqdn1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -661,9 +661,9 @@ class test_host(Declarative):
desc='Delete using host name %r' % short1, desc='Delete using host name %r' % short1,
command=('host_del', [short1], {}), command=('host_del', [short1], {}),
expected=dict( expected=dict(
value=short1, value=[short1],
summary=u'Deleted host "%s"' % short1, summary=u'Deleted host "%s"' % short1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -831,9 +831,9 @@ class test_host(Declarative):
desc='Delete %r' % fqdn3, desc='Delete %r' % fqdn3,
command=('host_del', [fqdn3], {}), command=('host_del', [fqdn3], {}),
expected=dict( expected=dict(
value=fqdn3, value=[fqdn3],
summary=u'Deleted host "%s"' % fqdn3, summary=u'Deleted host "%s"' % fqdn3,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),

View File

@ -261,9 +261,9 @@ class test_hostgroup(Declarative):
desc='Delete %r' % hostgroup1, desc='Delete %r' % hostgroup1,
command=('hostgroup_del', [hostgroup1], {}), command=('hostgroup_del', [hostgroup1], {}),
expected=dict( expected=dict(
value=hostgroup1, value=[hostgroup1],
summary=u'Deleted hostgroup "testhostgroup1"', summary=u'Deleted hostgroup "testhostgroup1"',
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -293,9 +293,9 @@ class test_hostgroup(Declarative):
desc='Delete %r' % hostgroup_single, desc='Delete %r' % hostgroup_single,
command=('hostgroup_del', [hostgroup_single], {}), command=('hostgroup_del', [hostgroup_single], {}),
expected=dict( expected=dict(
value=hostgroup_single, value=[hostgroup_single],
summary=u'Deleted hostgroup "a"', summary=u'Deleted hostgroup "a"',
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -304,9 +304,9 @@ class test_hostgroup(Declarative):
desc='Delete host %r' % fqdn1, desc='Delete host %r' % fqdn1,
command=('host_del', [fqdn1], {}), command=('host_del', [fqdn1], {}),
expected=dict( expected=dict(
value=fqdn1, value=[fqdn1],
summary=u'Deleted host "%s"' % fqdn1, summary=u'Deleted host "%s"' % fqdn1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
) )

View File

@ -42,7 +42,7 @@ class test_krbtpolicy(Declarative):
'krbtpolicy_reset', [], {} 'krbtpolicy_reset', [], {}
), ),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
krbmaxticketlife=[u'86400'], krbmaxticketlife=[u'86400'],
@ -58,7 +58,7 @@ class test_krbtpolicy(Declarative):
'krbtpolicy_show', [], {} 'krbtpolicy_show', [], {}
), ),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
dn=DN(('cn',api.env.domain),('cn','kerberos'), dn=DN(('cn',api.env.domain),('cn','kerberos'),
@ -76,7 +76,7 @@ class test_krbtpolicy(Declarative):
'krbtpolicy_mod', [], dict(krbmaxticketlife=3600) 'krbtpolicy_mod', [], dict(krbmaxticketlife=3600)
), ),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
krbmaxticketlife=[u'3600'], krbmaxticketlife=[u'3600'],

View File

@ -200,9 +200,9 @@ class test_netgroup(Declarative):
desc='Delete %r' % netgroup_single, desc='Delete %r' % netgroup_single,
command=('netgroup_del', [netgroup_single], {}), command=('netgroup_del', [netgroup_single], {}),
expected=dict( expected=dict(
value=netgroup_single, value=[netgroup_single],
summary=u'Deleted netgroup "%s"' % netgroup_single, summary=u'Deleted netgroup "%s"' % netgroup_single,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),
@ -1281,9 +1281,9 @@ class test_netgroup(Declarative):
desc='Delete %r' % netgroup1, desc='Delete %r' % netgroup1,
command=('netgroup_del', [netgroup1], {}), command=('netgroup_del', [netgroup1], {}),
expected=dict( expected=dict(
value=netgroup1, value=[netgroup1],
summary=u'Deleted netgroup "%s"' % netgroup1, summary=u'Deleted netgroup "%s"' % netgroup1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),

View File

@ -1217,8 +1217,8 @@ class test_permission(Declarative):
desc='Delete %r' % permission1_renamed_ucase, desc='Delete %r' % permission1_renamed_ucase,
command=('permission_del', [permission1_renamed_ucase], {}), command=('permission_del', [permission1_renamed_ucase], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=permission1_renamed_ucase, value=[permission1_renamed_ucase],
summary=u'Deleted permission "%s"' % permission1_renamed_ucase, summary=u'Deleted permission "%s"' % permission1_renamed_ucase,
) )
), ),
@ -1253,8 +1253,8 @@ class test_permission(Declarative):
desc='Delete %r' % permission2, desc='Delete %r' % permission2,
command=('permission_del', [permission2], {}), command=('permission_del', [permission2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=permission2, value=[permission2],
summary=u'Deleted permission "%s"' % permission2, summary=u'Deleted permission "%s"' % permission2,
) )
), ),
@ -1277,8 +1277,8 @@ class test_permission(Declarative):
desc='Delete %r' % privilege1, desc='Delete %r' % privilege1,
command=('privilege_del', [privilege1], {}), command=('privilege_del', [privilege1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=privilege1, value=[privilege1],
summary=u'Deleted privilege "%s"' % privilege1, summary=u'Deleted privilege "%s"' % privilege1,
) )
), ),
@ -1410,8 +1410,8 @@ class test_permission(Declarative):
desc='Delete %r' % permission1, desc='Delete %r' % permission1,
command=('permission_del', [permission1], {}), command=('permission_del', [permission1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=permission1, value=[permission1],
summary=u'Deleted permission "%s"' % permission1, summary=u'Deleted permission "%s"' % permission1,
) )
), ),
@ -2697,8 +2697,8 @@ def _make_permission_flag_tests(flags, expected_message):
desc='Delete %r with --force' % permission1, desc='Delete %r with --force' % permission1,
command=('permission_del', [permission1], {'force': True}), command=('permission_del', [permission1], {'force': True}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=permission1, value=[permission1],
summary=u'Deleted permission "%s"' % permission1, summary=u'Deleted permission "%s"' % permission1,
), ),
), ),
@ -3571,8 +3571,8 @@ class test_managed_permissions(Declarative):
desc='Delete %r with --force' % permission1, desc='Delete %r with --force' % permission1,
command=('permission_del', [permission1], {'force': True}), command=('permission_del', [permission1], {'force': True}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=permission1, value=[permission1],
summary=u'Deleted permission "%s"' % permission1, summary=u'Deleted permission "%s"' % permission1,
), ),
), ),
@ -3826,8 +3826,8 @@ class test_permission_filters(Declarative):
desc='Delete %r' % permission1, desc='Delete %r' % permission1,
command=('permission_del', [permission1], {}), command=('permission_del', [permission1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=permission1, value=[permission1],
summary=u'Deleted permission "%s"' % permission1, summary=u'Deleted permission "%s"' % permission1,
) )
), ),

View File

@ -410,8 +410,8 @@ class test_privilege(Declarative):
desc='Delete %r' % privilege1, desc='Delete %r' % privilege1,
command=('privilege_del', [privilege1], {}), command=('privilege_del', [privilege1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=privilege1, value=[privilege1],
summary=u'Deleted privilege "%s"' % privilege1, summary=u'Deleted privilege "%s"' % privilege1,
) )
), ),

View File

@ -373,9 +373,9 @@ class test_raduisproxy(Declarative):
desc='Delete %r' % radius1, desc='Delete %r' % radius1,
command=('radiusproxy_del', [radius1], {}), command=('radiusproxy_del', [radius1], {}),
expected=dict( expected=dict(
value=radius1, value=[radius1],
summary=u'Deleted RADIUS proxy server "%s"' % radius1, summary=u'Deleted RADIUS proxy server "%s"' % radius1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),

View File

@ -323,8 +323,8 @@ class test_range(Declarative):
desc='Delete user %r' % user1, desc='Delete user %r' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=user1, value=[user1],
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
), ),
), ),
@ -334,8 +334,8 @@ class test_range(Declarative):
desc='Delete group %r' % group1, desc='Delete group %r' % group1,
command=('group_del', [group1], {}), command=('group_del', [group1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=group1, value=[group1],
summary=u'Deleted group "%s"' % group1, summary=u'Deleted group "%s"' % group1,
), ),
), ),
@ -345,8 +345,8 @@ class test_range(Declarative):
desc='Delete ID range %r' % testrange1, desc='Delete ID range %r' % testrange1,
command=('idrange_del', [testrange1], {}), command=('idrange_del', [testrange1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=testrange1, value=[testrange1],
summary=u'Deleted ID range "%s"' % testrange1, summary=u'Deleted ID range "%s"' % testrange1,
), ),
), ),
@ -442,8 +442,8 @@ class test_range(Declarative):
desc='Delete ID range %r' % testrange2, desc='Delete ID range %r' % testrange2,
command=('idrange_del', [testrange2], {}), command=('idrange_del', [testrange2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=testrange2, value=[testrange2],
summary=u'Deleted ID range "%s"' % testrange2, summary=u'Deleted ID range "%s"' % testrange2,
), ),
), ),
@ -476,8 +476,8 @@ class test_range(Declarative):
desc='Delete ID range %r' % testrange8, desc='Delete ID range %r' % testrange8,
command=('idrange_del', [testrange8], {}), command=('idrange_del', [testrange8], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=testrange8, value=[testrange8],
summary=u'Deleted ID range "%s"' % testrange8, summary=u'Deleted ID range "%s"' % testrange8,
), ),
), ),
@ -486,8 +486,8 @@ class test_range(Declarative):
desc='Delete non-active AD trusted range %r' % testrange9, desc='Delete non-active AD trusted range %r' % testrange9,
command=('idrange_del', [testrange9], {}), command=('idrange_del', [testrange9], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=testrange9, value=[testrange9],
summary=u'Deleted ID range "%s"' % testrange9, summary=u'Deleted ID range "%s"' % testrange9,
), ),
), ),

View File

@ -45,7 +45,7 @@ class test_realmdomains(Declarative):
desc='Retrieve realm domains', desc='Retrieve realm domains',
command=('realmdomains_show', [], {}), command=('realmdomains_show', [], {}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
dn=dn, dn=dn,
@ -57,7 +57,7 @@ class test_realmdomains(Declarative):
desc='Retrieve realm domains - print all attributes', desc='Retrieve realm domains - print all attributes',
command=('realmdomains_show', [], {'all': True}), command=('realmdomains_show', [], {'all': True}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
dn=dn, dn=dn,
@ -80,7 +80,7 @@ class test_realmdomains(Declarative):
desc='Replace list of realm domains with "%s"' % [our_domain, new_domain_1], desc='Replace list of realm domains with "%s"' % [our_domain, new_domain_1],
command=('realmdomains_mod', [], {'associateddomain': [our_domain, new_domain_1]}), command=('realmdomains_mod', [], {'associateddomain': [our_domain, new_domain_1]}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
associateddomain=[our_domain, new_domain_1], associateddomain=[our_domain, new_domain_1],
@ -91,7 +91,7 @@ class test_realmdomains(Declarative):
desc='Add domain "%s" to list' % new_domain_2, desc='Add domain "%s" to list' % new_domain_2,
command=('realmdomains_mod', [], {'add_domain': new_domain_2}), command=('realmdomains_mod', [], {'add_domain': new_domain_2}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
associateddomain=[our_domain, new_domain_1, new_domain_2], associateddomain=[our_domain, new_domain_1, new_domain_2],
@ -102,7 +102,7 @@ class test_realmdomains(Declarative):
desc='Delete domain "%s" from list' % new_domain_2, desc='Delete domain "%s" from list' % new_domain_2,
command=('realmdomains_mod', [], {'del_domain': new_domain_2}), command=('realmdomains_mod', [], {'del_domain': new_domain_2}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
associateddomain=[our_domain, new_domain_1], associateddomain=[our_domain, new_domain_1],
@ -113,7 +113,7 @@ class test_realmdomains(Declarative):
desc='Add domain "%s" and delete domain "%s"' % (new_domain_2, new_domain_1), desc='Add domain "%s" and delete domain "%s"' % (new_domain_2, new_domain_1),
command=('realmdomains_mod', [], {'add_domain': new_domain_2, 'del_domain': new_domain_1}), command=('realmdomains_mod', [], {'add_domain': new_domain_2, 'del_domain': new_domain_1}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
associateddomain=[our_domain, new_domain_2], associateddomain=[our_domain, new_domain_2],
@ -163,7 +163,7 @@ class test_realmdomains(Declarative):
desc='Add an invalid domain "%s" with --force option' % bad_domain, desc='Add an invalid domain "%s" with --force option' % bad_domain,
command=('realmdomains_mod', [], {'add_domain': bad_domain, 'force': True}), command=('realmdomains_mod', [], {'add_domain': bad_domain, 'force': True}),
expected=dict( expected=dict(
value=u'', value=None,
summary=None, summary=None,
result=dict( result=dict(
associateddomain=[our_domain, new_domain_2, bad_domain], associateddomain=[our_domain, new_domain_2, bad_domain],

View File

@ -468,8 +468,8 @@ class test_role(Declarative):
desc='Delete %r' % group1, desc='Delete %r' % group1,
command=('group_del', [group1], {}), command=('group_del', [group1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=group1, value=[group1],
summary=u'Deleted group "testgroup1"', summary=u'Deleted group "testgroup1"',
) )
), ),
@ -554,8 +554,8 @@ class test_role(Declarative):
desc='Delete %r' % role1, desc='Delete %r' % role1,
command=('role_del', [role1], {}), command=('role_del', [role1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=role1, value=[role1],
summary=u'Deleted role "%s"' % role1, summary=u'Deleted role "%s"' % role1,
) )
), ),
@ -604,8 +604,8 @@ class test_role(Declarative):
desc='Delete %r' % role2, desc='Delete %r' % role2,
command=('role_del', [role2], {}), command=('role_del', [role2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=role2, value=[role2],
summary=u'Deleted role "%s"' % role2, summary=u'Deleted role "%s"' % role2,
) )
), ),

View File

@ -572,8 +572,8 @@ class test_selinuxusermap(Declarative):
desc='Try to delete similarly named HBAC rule %r' % hbacrule2, desc='Try to delete similarly named HBAC rule %r' % hbacrule2,
command=('hbacrule_del', [hbacrule2], {}), command=('hbacrule_del', [hbacrule2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=hbacrule2, value=[hbacrule2],
summary=u'Deleted HBAC rule "%s"' % hbacrule2, summary=u'Deleted HBAC rule "%s"' % hbacrule2,
) )
), ),
@ -584,8 +584,8 @@ class test_selinuxusermap(Declarative):
desc='Delete %r' % rule1, desc='Delete %r' % rule1,
command=('selinuxusermap_del', [rule1], {}), command=('selinuxusermap_del', [rule1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=rule1, value=[rule1],
summary=u'Deleted SELinux User Map "%s"' % rule1, summary=u'Deleted SELinux User Map "%s"' % rule1,
) )
), ),
@ -780,8 +780,8 @@ class test_selinuxusermap(Declarative):
desc='Delete %r' % rule1, desc='Delete %r' % rule1,
command=('selinuxusermap_del', [rule1], {}), command=('selinuxusermap_del', [rule1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=rule1, value=[rule1],
summary=u'Deleted SELinux User Map "%s"' % rule1, summary=u'Deleted SELinux User Map "%s"' % rule1,
) )
), ),
@ -823,8 +823,8 @@ class test_selinuxusermap(Declarative):
desc='Delete %r' % rule1, desc='Delete %r' % rule1,
command=('selinuxusermap_del', [rule1], {}), command=('selinuxusermap_del', [rule1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=rule1, value=[rule1],
summary=u'Deleted SELinux User Map "%s"' % rule1, summary=u'Deleted SELinux User Map "%s"' % rule1,
) )
), ),
@ -865,8 +865,8 @@ class test_selinuxusermap(Declarative):
desc='Delete %r' % rule1, desc='Delete %r' % rule1,
command=('selinuxusermap_del', [rule1], {}), command=('selinuxusermap_del', [rule1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=rule1, value=[rule1],
summary=u'Deleted SELinux User Map "%s"' % rule1, summary=u'Deleted SELinux User Map "%s"' % rule1,
) )
), ),
@ -899,8 +899,8 @@ class test_selinuxusermap(Declarative):
desc='Delete %r' % rule1, desc='Delete %r' % rule1,
command=('selinuxusermap_del', [rule1], {}), command=('selinuxusermap_del', [rule1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=rule1, value=[rule1],
summary=u'Deleted SELinux User Map "%s"' % rule1, summary=u'Deleted SELinux User Map "%s"' % rule1,
) )
), ),

View File

@ -543,9 +543,9 @@ class test_service(Declarative):
desc='Delete %r' % service1, desc='Delete %r' % service1,
command=('service_del', [service1], {}), command=('service_del', [service1], {}),
expected=dict( expected=dict(
value=service1, value=[service1],
summary=u'Deleted service "%s"' % service1, summary=u'Deleted service "%s"' % service1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),

View File

@ -281,9 +281,9 @@ class test_sudocmd(Declarative):
desc='Delete %r' % sudocmd1, desc='Delete %r' % sudocmd1,
command=('sudocmd_del', [sudocmd1], {}), command=('sudocmd_del', [sudocmd1], {}),
expected=dict( expected=dict(
value=sudocmd1, value=[sudocmd1],
summary=u'Deleted Sudo Command "%s"' % sudocmd1, summary=u'Deleted Sudo Command "%s"' % sudocmd1,
result=dict(failed=u''), result=dict(failed=[]),
), ),
), ),

View File

@ -600,8 +600,8 @@ class test_sudocmdgroup(Declarative):
desc='Delete %r' % sudocmdgroup1, desc='Delete %r' % sudocmdgroup1,
command=('sudocmdgroup_del', [sudocmdgroup1], {}), command=('sudocmdgroup_del', [sudocmdgroup1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=sudocmdgroup1, value=[sudocmdgroup1],
summary=u'Deleted Sudo Command Group "testsudocmdgroup1"', summary=u'Deleted Sudo Command Group "testsudocmdgroup1"',
) )
), ),
@ -638,8 +638,8 @@ class test_sudocmdgroup(Declarative):
desc='Delete %r' % sudocmdgroup2, desc='Delete %r' % sudocmdgroup2,
command=('sudocmdgroup_del', [sudocmdgroup2], {}), command=('sudocmdgroup_del', [sudocmdgroup2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=sudocmdgroup2, value=[sudocmdgroup2],
summary=u'Deleted Sudo Command Group "testsudocmdgroup2"', summary=u'Deleted Sudo Command Group "testsudocmdgroup2"',
) )
), ),
@ -676,8 +676,8 @@ class test_sudocmdgroup(Declarative):
desc='Now delete the sudo command %r' % sudocmd1, desc='Now delete the sudo command %r' % sudocmd1,
command=('sudocmd_del', [sudocmd1], {}), command=('sudocmd_del', [sudocmd1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
value=sudocmd1, value=[sudocmd1],
summary=u'Deleted Sudo Command "%s"' % sudocmd1, summary=u'Deleted Sudo Command "%s"' % sudocmd1,
) )
), ),

View File

@ -519,9 +519,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -574,9 +574,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -646,9 +646,9 @@ class test_user(Declarative):
desc='Delete "%s" and "%s" at the same time' % (user1, user2), desc='Delete "%s" and "%s" at the same time' % (user1, user2),
command=('user_del', [user1, user2], {}), command=('user_del', [user1, user2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "tuser1,tuser2"', summary=u'Deleted user "tuser1,tuser2"',
value=u','.join((user1, user2)), value=[user1, user2],
), ),
), ),
@ -782,9 +782,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -811,9 +811,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -849,9 +849,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user2, desc='Delete "%s"' % user2,
command=('user_del', [user2], {}), command=('user_del', [user2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user2, summary=u'Deleted user "%s"' % user2,
value=user2, value=[user2],
), ),
), ),
@ -892,9 +892,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -932,9 +932,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -971,9 +971,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),
@ -1008,9 +1008,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user2, desc='Delete "%s"' % user2,
command=('user_del', [user2], {}), command=('user_del', [user2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user2, summary=u'Deleted user "%s"' % user2,
value=user2, value=[user2],
), ),
), ),
@ -1116,9 +1116,9 @@ class test_user(Declarative):
desc='Delete %r' % renameduser1, desc='Delete %r' % renameduser1,
command=('user_del', [renameduser1], {}), command=('user_del', [renameduser1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % renameduser1, summary=u'Deleted user "%s"' % renameduser1,
value=renameduser1, value=[renameduser1],
), ),
), ),
@ -1255,9 +1255,9 @@ class test_user(Declarative):
desc='Delete 2nd admin "%s"' % admin2, desc='Delete 2nd admin "%s"' % admin2,
command=('user_del', [admin2], {}), command=('user_del', [admin2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % admin2, summary=u'Deleted user "%s"' % admin2,
value=admin2, value=[admin2],
), ),
), ),
@ -1324,9 +1324,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user2, desc='Delete "%s"' % user2,
command=('user_del', [user2], {}), command=('user_del', [user2], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user2, summary=u'Deleted user "%s"' % user2,
value=user2, value=[user2],
), ),
), ),
@ -1362,9 +1362,9 @@ class test_user(Declarative):
desc='Delete "%s"' % user1, desc='Delete "%s"' % user1,
command=('user_del', [user1], {}), command=('user_del', [user1], {}),
expected=dict( expected=dict(
result=dict(failed=u''), result=dict(failed=[]),
summary=u'Deleted user "%s"' % user1, summary=u'Deleted user "%s"' % user1,
value=user1, value=[user1],
), ),
), ),