summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2011-01-24 10:46:44 -0500
committerRob Crittenden <rcritten@redhat.com>2011-01-24 14:35:11 -0500
commit678c764d408856dc6a71d7fda92611bef96a22a2 (patch)
tree3b339b25d9bee3fbaf131d0171ba9b7f23cbda29 /ipalib
parent96469fbc886bb53a898396ad030a48609f147160 (diff)
downloadfreeipa-678c764d408856dc6a71d7fda92611bef96a22a2.tar.gz
freeipa-678c764d408856dc6a71d7fda92611bef96a22a2.tar.xz
freeipa-678c764d408856dc6a71d7fda92611bef96a22a2.zip
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.
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/plugins/baseldap.py3
-rw-r--r--ipalib/plugins/host.py8
2 files changed, 6 insertions, 5 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index e7ccb7724..27e543d03 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 6947d9077..3225a78ab 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()