mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
allow 'value' output param in commands without primary key
`PrimaryKey` output param works only for API objects that have primary keys, otherwise it expects None (nothing is associated with this param). Since the validation of command output was tightened durng thin client effort, some commands not honoring this contract began to fail output validation. A custom output was implemented for them to restore their functionality. It should however be considered as a fix for broken commands and not used further. https://fedorahosted.org/freeipa/ticket/6037 https://fedorahosted.org/freeipa/ticket/6061 Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
committed by
Jan Cholasta
parent
90704df59d
commit
f0a61546f5
10
API.txt
10
API.txt
@@ -144,7 +144,7 @@ option: StrEnum('type', values=[u'group', u'hostgroup'])
|
||||
option: Str('version?')
|
||||
output: Entry('result')
|
||||
output: Output('summary', type=[<type 'unicode'>, <type 'NoneType'>])
|
||||
output: PrimaryKey('value')
|
||||
output: Output('value', type=[<type 'unicode'>])
|
||||
command: automember_default_group_set/1
|
||||
args: 0,6,3
|
||||
option: Flag('all', autofill=True, cli_name='all', default=False)
|
||||
@@ -155,7 +155,7 @@ option: StrEnum('type', values=[u'group', u'hostgroup'])
|
||||
option: Str('version?')
|
||||
output: Entry('result')
|
||||
output: Output('summary', type=[<type 'unicode'>, <type 'NoneType'>])
|
||||
output: PrimaryKey('value')
|
||||
output: Output('value', type=[<type 'unicode'>])
|
||||
command: automember_default_group_show/1
|
||||
args: 0,4,3
|
||||
option: Flag('all', autofill=True, cli_name='all', default=False)
|
||||
@@ -164,7 +164,7 @@ option: StrEnum('type', values=[u'group', u'hostgroup'])
|
||||
option: Str('version?')
|
||||
output: Entry('result')
|
||||
output: Output('summary', type=[<type 'unicode'>, <type 'NoneType'>])
|
||||
output: PrimaryKey('value')
|
||||
output: Output('value', type=[<type 'unicode'>])
|
||||
command: automember_del/1
|
||||
args: 1,2,3
|
||||
arg: Str('cn+', cli_name='automember_rule')
|
||||
@@ -5574,7 +5574,7 @@ option: StrEnum('trust_type', autofill=True, cli_name='type', default=u'ad', val
|
||||
option: Str('version?')
|
||||
output: Entry('result')
|
||||
output: Output('summary', type=[<type 'unicode'>, <type 'NoneType'>])
|
||||
output: PrimaryKey('value')
|
||||
output: Output('value', type=[<type 'unicode'>])
|
||||
command: trustconfig_show/1
|
||||
args: 0,5,3
|
||||
option: Flag('all', autofill=True, cli_name='all', default=False)
|
||||
@@ -5584,7 +5584,7 @@ option: StrEnum('trust_type', autofill=True, cli_name='type', default=u'ad', val
|
||||
option: Str('version?')
|
||||
output: Entry('result')
|
||||
output: Output('summary', type=[<type 'unicode'>, <type 'NoneType'>])
|
||||
output: PrimaryKey('value')
|
||||
output: Output('value', type=[<type 'unicode'>])
|
||||
command: trustdomain_add/1
|
||||
args: 2,8,3
|
||||
arg: Str('trustcn', cli_name='trust')
|
||||
|
||||
4
VERSION
4
VERSION
@@ -90,5 +90,5 @@ IPA_DATA_VERSION=20100614120000
|
||||
# #
|
||||
########################################################
|
||||
IPA_API_VERSION_MAJOR=2
|
||||
IPA_API_VERSION_MINOR=210
|
||||
# Last change: Add --ca option to cert-status
|
||||
IPA_API_VERSION_MINOR=211
|
||||
# Last change: mbabinsk: allow 'value' output param in commands without primary key
|
||||
|
||||
@@ -217,3 +217,13 @@ simple_value = (
|
||||
Output('result', bool, _('True means the operation was successful')),
|
||||
Output('value', unicode, flags=['no_display']),
|
||||
)
|
||||
|
||||
# custom shim for commands like `trustconfig-show`,
|
||||
# `automember-default-group-*` which put stuff into output['value'] despite not
|
||||
# having primary key themselves. Designing commands like this is not a very
|
||||
# good practice, so please do not use this for new code.
|
||||
simple_entry = (
|
||||
summary,
|
||||
Entry('result'),
|
||||
Output('value', unicode, flags=['no_display']),
|
||||
)
|
||||
|
||||
@@ -586,6 +586,7 @@ class automember_default_group_set(LDAPUpdate):
|
||||
),
|
||||
) + group_type
|
||||
msg_summary = _('Set default (fallback) group for automember "%(value)s"')
|
||||
has_output = output.simple_entry
|
||||
|
||||
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
|
||||
dn = DN(('cn', options['type']), api.env.container_automember,
|
||||
@@ -609,6 +610,7 @@ class automember_default_group_remove(LDAPUpdate):
|
||||
|
||||
takes_options = group_type
|
||||
msg_summary = _('Removed default (fallback) group for automember "%(value)s"')
|
||||
has_output = output.simple_entry
|
||||
|
||||
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
|
||||
dn = DN(('cn', options['type']), api.env.container_automember,
|
||||
@@ -644,6 +646,7 @@ class automember_default_group_show(LDAPRetrieve):
|
||||
obj_name = 'automember_default_group'
|
||||
|
||||
takes_options = group_type
|
||||
has_output = output.simple_entry
|
||||
|
||||
def pre_callback(self, ldap, dn, attrs_list, *keys, **options):
|
||||
dn = DN(('cn', options['type']), api.env.container_automember,
|
||||
|
||||
@@ -1288,6 +1288,7 @@ class trustconfig_mod(LDAPUpdate):
|
||||
|
||||
takes_options = LDAPUpdate.takes_options + (_trust_type_option,)
|
||||
msg_summary = _('Modified "%(value)s" trust configuration')
|
||||
has_output = output.simple_entry
|
||||
|
||||
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
|
||||
self.obj._normalize_groupdn(entry_attrs)
|
||||
@@ -1310,6 +1311,7 @@ class trustconfig_show(LDAPRetrieve):
|
||||
__doc__ = _('Show global trust configuration.')
|
||||
|
||||
takes_options = LDAPRetrieve.takes_options + (_trust_type_option,)
|
||||
has_output = output.simple_entry
|
||||
|
||||
def execute(self, *keys, **options):
|
||||
result = super(trustconfig_show, self).execute(*keys, **options)
|
||||
|
||||
Reference in New Issue
Block a user