Since API is not singleton anymore, ldap2 instance should not be shared
between all APIs.
Patch attached.
--
Martin Basti
From 5add879b420b6d73a1de63a933073c3659efc9aa Mon Sep 17 00:00:00 2001
From: Martin Basti <mba...@redhat.com>
Date: Wed, 25 Mar 2015 15:34:16 +0100
Subject: [PATCH] Fix ldap2 shared instance
Since API is not singleton anymore, ldap2 connections should not be
shared by default.
---
ipalib/backend.py | 2 +-
ipaserver/plugins/ldap2.py | 2 +-
ipatests/test_ipalib/test_backend.py | 12 ++++++------
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/ipalib/backend.py b/ipalib/backend.py
index 4c1001d4d47613537b64c314a2d22769a27f4c69..fcbbd254afc797019e9ea63214b1ee034b8c13f8 100644
--- a/ipalib/backend.py
+++ b/ipalib/backend.py
@@ -46,7 +46,7 @@ class Connectible(Backend):
`request.destroy_context()` can properly close all open connections.
"""
- def __init__(self, shared_instance=True):
+ def __init__(self, shared_instance=False):
Backend.__init__(self)
if shared_instance:
self.id = self.name
diff --git a/ipaserver/plugins/ldap2.py b/ipaserver/plugins/ldap2.py
index 3211b3390fb979f090467445905513d33e537e17..fd4ed29903fb2f3afe0f4b74467bf53df49654fa 100644
--- a/ipaserver/plugins/ldap2.py
+++ b/ipaserver/plugins/ldap2.py
@@ -61,7 +61,7 @@ class ldap2(LDAPClient, CrudBackend):
LDAP Backend Take 2.
"""
- def __init__(self, shared_instance=True, ldap_uri=None, base_dn=None,
+ def __init__(self, shared_instance=False, ldap_uri=None, base_dn=None,
schema=None):
self.__ldap_uri = None
diff --git a/ipatests/test_ipalib/test_backend.py b/ipatests/test_ipalib/test_backend.py
index c69757cb3d68ebc12f9c91572d37603738357c4e..121c4745bd1dfebfbeed75ba1b46b4420064fe63 100644
--- a/ipatests/test_ipalib/test_backend.py
+++ b/ipatests/test_ipalib/test_backend.py
@@ -76,7 +76,7 @@ class test_Connectible(ClassChecker):
object.__setattr__(self, 'args', args)
object.__setattr__(self, 'kw', kw)
return 'The connection.'
- o = example()
+ o = example(shared_instance=True)
args = ('Arg1', 'Arg2', 'Arg3')
kw = dict(key1='Val1', key2='Val2', key3='Val3')
assert not hasattr(context, 'example')
@@ -104,7 +104,7 @@ class test_Connectible(ClassChecker):
class example(self.cls):
pass
for klass in (self.cls, example):
- o = klass()
+ o = klass(shared_instance=True)
e = raises(NotImplementedError, o.create_connection)
assert str(e) == '%s.create_connection()' % klass.__name__
@@ -114,7 +114,7 @@ class test_Connectible(ClassChecker):
"""
class example(self.cls):
destroy_connection = Disconnect()
- o = example()
+ o = example(shared_instance=True)
m = "disconnect: 'context.%s' does not exist in thread %r"
e = raises(StandardError, o.disconnect)
@@ -131,7 +131,7 @@ class test_Connectible(ClassChecker):
class example(self.cls):
pass
for klass in (self.cls, example):
- o = klass()
+ o = klass(shared_instance=True)
e = raises(NotImplementedError, o.destroy_connection)
assert str(e) == '%s.destroy_connection()' % klass.__name__
@@ -142,7 +142,7 @@ class test_Connectible(ClassChecker):
class example(self.cls):
pass
for klass in (self.cls, example):
- o = klass()
+ o = klass(shared_instance=True)
assert o.isconnected() is False
conn = 'whatever'
setattr(context, klass.__name__, conn)
@@ -157,7 +157,7 @@ class test_Connectible(ClassChecker):
class example(self.cls):
pass
for klass in (self.cls, example):
- o = klass()
+ o = klass(shared_instance=True)
e = raises(AttributeError, getattr, o, 'conn')
assert str(e) == msg % (
klass.__name__, threading.currentThread().getName()
--
2.1.0
--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code