summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2016-06-22 15:15:32 +0200
committerJan Cholasta <jcholast@redhat.com>2016-06-27 16:42:42 +0200
commitac8e8ecdd3f75c104e30f68630290b0b1ad5a40b (patch)
tree861b0ec75029572cf367f82b1f97cc08861a8699
parent7b8247a485081a6f1f5201e286ac17228f976355 (diff)
downloadfreeipa-ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b.tar.gz
freeipa-ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b.tar.xz
freeipa-ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b.zip
schema: fix param default value handling
Advertise param's default value even when `autofill` is False. When `autofill` is False, set `alwaysask` to True in the schema, as it is semantically equivallent and removes redundancy. This fixes default value disappearing in CLI for some params. https://fedorahosted.org/freeipa/ticket/4739 Reviewed-By: David Kupka <dkupka@redhat.com>
-rw-r--r--ipaclient/remote_plugins/schema.py6
-rw-r--r--ipaserver/plugins/schema.py23
2 files changed, 16 insertions, 13 deletions
diff --git a/ipaclient/remote_plugins/schema.py b/ipaclient/remote_plugins/schema.py
index c21da5ff0..b944fb08f 100644
--- a/ipaclient/remote_plugins/schema.py
+++ b/ipaclient/remote_plugins/schema.py
@@ -213,7 +213,6 @@ def _create_param(meta):
for key, value in meta.items():
if key in ('alwaysask',
- 'autofill',
'doc',
'label',
'multivalue',
@@ -229,11 +228,9 @@ def _create_param(meta):
kwargs[key] = value
elif key == 'default':
default = value
- kwargs['autofill'] = True
elif key == 'default_from_param':
kwargs['default_from'] = DefaultFrom(_nope,
*(str(k) for k in value))
- kwargs['autofill'] = True
elif key in ('exclude',
'include'):
kwargs[key] = tuple(str(v) for v in value)
@@ -246,6 +243,9 @@ def _create_param(meta):
default = tmp._convert_scalar(default[0])
kwargs['default'] = default
+ if 'default' in kwargs or 'default_from' in kwargs:
+ kwargs['autofill'] = not kwargs.pop('alwaysask', False)
+
param = cls(str(meta['name']), **kwargs)
if sensitive:
diff --git a/ipaserver/plugins/schema.py b/ipaserver/plugins/schema.py
index a67d7b243..c3a0e60ba 100644
--- a/ipaserver/plugins/schema.py
+++ b/ipaserver/plugins/schema.py
@@ -542,23 +542,26 @@ class param(BaseParam):
'include'):
obj[key] = list(unicode(v) for v in value)
if isinstance(metaobj, Command):
- if key in ('alwaysask',
- 'confirm'):
+ if key == 'alwaysask':
+ obj.setdefault(key, value)
+ elif key == 'confirm':
obj[key] = value
elif key in ('cli_metavar',
'cli_name',
'option_group'):
obj[key] = unicode(value)
elif key == 'default':
- if param.autofill:
- if param.multivalue:
- obj[key] = [unicode(v) for v in value]
- else:
- obj[key] = [unicode(value)]
+ if param.multivalue:
+ obj[key] = [unicode(v) for v in value]
+ else:
+ obj[key] = [unicode(value)]
+ if not param.autofill:
+ obj['alwaysask'] = True
elif key == 'default_from':
- if param.autofill:
- obj['default_from_param'] = list(unicode(k)
- for k in value.keys)
+ obj['default_from_param'] = list(unicode(k)
+ for k in value.keys)
+ if not param.autofill:
+ obj['alwaysask'] = True
elif key in ('exponential',
'normalizer',
'only_absolute',