Re: [Freeipa-devel] [PATCH] 689 make deepcopy of objectclasses
Jakub Hrozek wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 01/24/2011 04:58 PM, Rob Crittenden wrote: Jakub Hrozek wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 01/24/2011 04:50 PM, Rob Crittenden wrote: In the host plugin we modify the default set of objectclasses depending on what kind of host we're creating. This was actually updating the objectclass of the object itself so that the objectclass variable was storing duplicate objectclasses (because we sometimes append values). Make a deepcopy instead. I also re-ordered some values in the host plugin to match what the unit tests expect. It was easier to change in one place than many and have the same result :-) rob I think you sent a wrong patch (688, should have been 689) Ok, here goes. rob Ack pushed to master ___ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel
Re: [Freeipa-devel] [PATCH] 689 make deepcopy of objectclasses
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 01/24/2011 04:58 PM, Rob Crittenden wrote: > Jakub Hrozek wrote: >> -BEGIN PGP SIGNED MESSAGE- >> Hash: SHA1 >> >> On 01/24/2011 04:50 PM, Rob Crittenden wrote: >>> In the host plugin we modify the default set of objectclasses depending >>> on what kind of host we're creating. This was actually updating the >>> objectclass of the object itself so that the objectclass variable was >>> storing duplicate objectclasses (because we sometimes append values). >>> >>> Make a deepcopy instead. >>> >>> I also re-ordered some values in the host plugin to match what the unit >>> tests expect. It was easier to change in one place than many and have >>> the same result :-) >>> >>> rob >>> >> >> I think you sent a wrong patch (688, should have been 689) > > Ok, here goes. > > rob Ack -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk09rEAACgkQHsardTLnvCV5zACgih6krPeHUe4UzDEccDlYYV8n g9AAoN47pXdhXtVDimqi+OUX1d1whtmT =gYvF -END PGP SIGNATURE- ___ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel
Re: [Freeipa-devel] [PATCH] 689 make deepcopy of objectclasses
Jakub Hrozek wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 01/24/2011 04:50 PM, Rob Crittenden wrote: In the host plugin we modify the default set of objectclasses depending on what kind of host we're creating. This was actually updating the objectclass of the object itself so that the objectclass variable was storing duplicate objectclasses (because we sometimes append values). Make a deepcopy instead. I also re-ordered some values in the host plugin to match what the unit tests expect. It was easier to change in one place than many and have the same result :-) rob I think you sent a wrong patch (688, should have been 689) Ok, here goes. rob >From 2512a94629e55e3693ec9b348fff09866f21585d Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Mon, 24 Jan 2011 10:46:44 -0500 Subject: [PATCH] Make a copy of objectclasses so a call can't update them globally. In the host plugin we may change the default objectclasses based on the options selected. This was affecting it globally and causing subsequent calls to fail. --- ipalib/plugins/baseldap.py |3 ++- ipalib/plugins/host.py |8 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index e7ccb77..27e543d 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -23,6 +23,7 @@ Base classes for LDAP plugins. import re import json import time +from copy import deepcopy from ipalib import api, crud, errors from ipalib import Method, Object @@ -504,7 +505,7 @@ class LDAPCreate(CallbackInterface, crud.Create): ldap = self.obj.backend entry_attrs = self.args_options_2_entry(*keys, **options) -entry_attrs['objectclass'] = self.obj.object_class +entry_attrs['objectclass'] = deepcopy(self.obj.object_class) if self.obj.object_class_config: config = ldap.get_ipa_config()[1] diff --git a/ipalib/plugins/host.py b/ipalib/plugins/host.py index 6947d90..3225a78 100644 --- a/ipalib/plugins/host.py +++ b/ipalib/plugins/host.py @@ -323,15 +323,15 @@ class host_add(LDAPCreate): entry_attrs['krbprincipalname'] = 'host/%s@%s' % ( keys[-1], self.api.env.realm ) +if 'krbprincipalaux' not in entry_attrs: +entry_attrs['objectclass'].append('krbprincipalaux') if 'krbprincipal' not in entry_attrs: entry_attrs['objectclass'].append('krbprincipal') -if 'krbprincipal' not in entry_attrs: -entry_attrs['objectclass'].append('krbprincipalaux') else: -if 'krbprincipal' in entry_attrs['objectclass']: -entry_attrs['objectclass'].remove('krbprincipal') if 'krbprincipalaux' in entry_attrs['objectclass']: entry_attrs['objectclass'].remove('krbprincipalaux') +if 'krbprincipal' in entry_attrs['objectclass']: +entry_attrs['objectclass'].remove('krbprincipal') if 'random' in options: if options.get('random'): entry_attrs['userpassword'] = ipa_generate_password() -- 1.7.3.4 ___ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel
Re: [Freeipa-devel] [PATCH] 689 make deepcopy of objectclasses
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 01/24/2011 04:50 PM, Rob Crittenden wrote: > In the host plugin we modify the default set of objectclasses depending > on what kind of host we're creating. This was actually updating the > objectclass of the object itself so that the objectclass variable was > storing duplicate objectclasses (because we sometimes append values). > > Make a deepcopy instead. > > I also re-ordered some values in the host plugin to match what the unit > tests expect. It was easier to change in one place than many and have > the same result :-) > > rob > I think you sent a wrong patch (688, should have been 689) -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk09oP8ACgkQHsardTLnvCWNzQCgoWpYWVo4kq4vdRP1/XWqF+8S smgAoKFYRGzpAvCyrFwiiRE/uiL7X+6l =+FB/ -END PGP SIGNATURE- ___ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel