From 5afa3c18159ae3f56a5a73158b526fcf8ff4d427 Mon Sep 17 00:00:00 2001 From: Nathaniel McCallum Date: Thu, 1 May 2014 16:31:45 -0400 Subject: Only specify the ipatokenuniqueid default in the add operation Specifying the default in the LDAP Object causes the parameter to be specified for non-add operations. This is especially problematic when performing the modify operation as it causes the primary key to change for every modification. https://fedorahosted.org/freeipa/ticket/4227 Reviewed-By: Petr Viktorin --- API.txt | 10 +++++----- VERSION | 4 ++-- ipalib/plugins/otptoken.py | 7 +++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/API.txt b/API.txt index e674dfebe..1ea93e9dd 100644 --- a/API.txt +++ b/API.txt @@ -2224,7 +2224,7 @@ output: Output('summary', (, ), None) output: PrimaryKey('value', None, None) command: otptoken_add args: 1,21,3 -arg: Str('ipatokenuniqueid', attribute=True, autofill=True, cli_name='id', multivalue=False, primary_key=True, required=False) +arg: Str('ipatokenuniqueid', attribute=True, cli_name='id', multivalue=False, primary_key=True, required=False) option: Str('addattr*', cli_name='addattr', exclude='webui') option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Str('description', attribute=True, cli_name='desc', multivalue=False, required=False) @@ -2251,7 +2251,7 @@ output: Output('summary', (, ), None) output: PrimaryKey('value', None, None) command: otptoken_del args: 1,2,3 -arg: Str('ipatokenuniqueid', attribute=True, autofill=True, cli_name='id', multivalue=True, primary_key=True, query=True, required=True) +arg: Str('ipatokenuniqueid', attribute=True, cli_name='id', multivalue=True, primary_key=True, query=True, required=True) option: Flag('continue', autofill=True, cli_name='continue', default=False) option: Str('version?', exclude='webui') output: Output('result', , None) @@ -2287,7 +2287,7 @@ output: Output('summary', (, ), None) output: Output('truncated', , None) command: otptoken_mod args: 1,16,3 -arg: Str('ipatokenuniqueid', attribute=True, autofill=True, cli_name='id', multivalue=False, primary_key=True, query=True, required=True) +arg: Str('ipatokenuniqueid', attribute=True, cli_name='id', multivalue=False, primary_key=True, query=True, required=True) option: Str('addattr*', cli_name='addattr', exclude='webui') option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui') option: Str('delattr*', cli_name='delattr', exclude='webui') @@ -2300,7 +2300,7 @@ option: Str('ipatokenowner', attribute=True, autofill=False, cli_name='owner', m option: Str('ipatokenserial', attribute=True, autofill=False, cli_name='serial', multivalue=False, required=False) option: Str('ipatokenvendor', attribute=True, autofill=False, cli_name='vendor', default=u'FreeIPA', multivalue=False, required=False) option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui') -option: Str('rename', autofill=True, cli_name='rename', multivalue=False, primary_key=True, required=False) +option: Str('rename', cli_name='rename', multivalue=False, primary_key=True, required=False) option: Flag('rights', autofill=True, default=False) option: Str('setattr*', cli_name='setattr', exclude='webui') option: Str('version?', exclude='webui') @@ -2309,7 +2309,7 @@ output: Output('summary', (, ), None) output: PrimaryKey('value', None, None) command: otptoken_show args: 1,4,3 -arg: Str('ipatokenuniqueid', attribute=True, autofill=True, cli_name='id', multivalue=False, primary_key=True, query=True, required=True) +arg: Str('ipatokenuniqueid', attribute=True, cli_name='id', multivalue=False, primary_key=True, query=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: Flag('rights', autofill=True, default=False) diff --git a/VERSION b/VERSION index 9a47a23a2..87e67cf7a 100644 --- a/VERSION +++ b/VERSION @@ -89,5 +89,5 @@ IPA_DATA_VERSION=20100614120000 # # ######################################################## IPA_API_VERSION_MAJOR=2 -IPA_API_VERSION_MINOR=85 -# Last change: tbabej - expose krbPrincipalExpiration +IPA_API_VERSION_MINOR=86 +# Last change: npmccallum - Only specify the ipatokenuniqueid default in the add operation diff --git a/ipalib/plugins/otptoken.py b/ipalib/plugins/otptoken.py index f68ea7df5..027c28f85 100644 --- a/ipalib/plugins/otptoken.py +++ b/ipalib/plugins/otptoken.py @@ -120,8 +120,6 @@ class otptoken(LDAPObject): Str('ipatokenuniqueid', cli_name='id', label=_('Unique ID'), - default_from=lambda: unicode(uuid.uuid4()), - autofill=True, primary_key=True, flags=('optional_create'), ), @@ -233,6 +231,11 @@ class otptoken_add(LDAPCreate): ) def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): + # Fill in a default UUID when not specified. + if entry_attrs.get('ipatokenuniqueid', None) is None: + entry_attrs['ipatokenuniqueid'] = str(uuid.uuid4()) + dn = DN("ipatokenuniqueid=%s" % entry_attrs['ipatokenuniqueid'], dn) + # Set the object class and defaults for specific token types entry_attrs['objectclass'] = otptoken.object_class + ['ipatoken' + options['type']] for ttype, tattrs in TOKEN_TYPES.items(): -- cgit