Allow the schema to be set once an ldap connection is locked.

When making LDAP calls via api.Backend.ldap2 the ldap2 object will already be locked by the api.finalize() call. So the first time that api.Backend.ldap2.connect() is called an error would be thrown that self.schema cannot be set because the object is ReadOnly. This uses the documented procedure for working around this lock.

This was preventing the DNS installation to proceed.

ticket #188

rob
>From f7f6e08fafb9fe939e9543013373c178bf7ed131 Mon Sep 17 00:00:00 2001
From: Rob Crittenden <rcrit...@redhat.com>
Date: Wed, 8 Sep 2010 17:14:38 -0400
Subject: [PATCH] Allow the schema to be set once an ldap connection is locked.

When making LDAP calls via api.Backend.ldap2 the ldap2 object will already
be locked by the api.finalize() call. So the first time that
api.Backend.ldap2.connect() is called an error would be thrown that
self.schema cannot be set because the object is ReadOnly. This uses the
documented procedure for working around this lock.

This was preventing the DNS installation to proceed.

ticket #188
---
 ipaserver/plugins/ldap2.py |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/ipaserver/plugins/ldap2.py b/ipaserver/plugins/ldap2.py
index d4c0294..cc635b6 100644
--- a/ipaserver/plugins/ldap2.py
+++ b/ipaserver/plugins/ldap2.py
@@ -292,7 +292,9 @@ class ldap2(CrudBackend, Encoder):
             _handle_errors(e, **{})
 
         if self.schema is None and _schema is None:
-            self.schema = get_schema(self.ldap_uri, conn)
+            # explicitly use setattr here so the schema can be set after
+            # the object is finalized.
+            object.__setattr__(self, 'schema', get_schema(self.ldap_uri, conn))
         return conn
 
     def destroy_connection(self):
-- 
1.7.2.1

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to