Hello community,
here is the log from the commit of package yast2-adcommon-python for
openSUSE:Factory checked in at 2019-09-13 15:00:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-adcommon-python (Old)
and /work/SRC/openSUSE:Factory/.yast2-adcommon-python.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-adcommon-python"
Fri Sep 13 15:00:06 2019 rev:8 rq:730226 version:1.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/yast2-adcommon-python/yast2-adcommon-python.changes
2019-08-23 11:09:47.822457988 +0200
+++
/work/SRC/openSUSE:Factory/.yast2-adcommon-python.new.7948/yast2-adcommon-python.changes
2019-09-13 15:00:10.973281976 +0200
@@ -1,0 +2,6 @@
+Wed Sep 11 16:35:17 UTC 2019 - [email protected]
+
+- Reconnect the ldap session if it times out; (bsc#1150394);
+- 1.1
+
+-------------------------------------------------------------------
Old:
----
yast2-adcommon-python-1.0.tar.bz2
New:
----
yast2-adcommon-python-1.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-adcommon-python.spec ++++++
--- /var/tmp/diff_new_pack.ibWceD/_old 2019-09-13 15:00:11.561282001 +0200
+++ /var/tmp/diff_new_pack.ibWceD/_new 2019-09-13 15:00:11.565282001 +0200
@@ -17,7 +17,7 @@
Name: yast2-adcommon-python
-Version: 1.0
+Version: 1.1
Release: 0
Summary: Common code for the yast python ad modules
License: GPL-3.0-or-later
++++++ yast2-adcommon-python-1.0.tar.bz2 -> yast2-adcommon-python-1.1.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-adcommon-python-1.0/adcommon/yldap.py
new/yast2-adcommon-python-1.1/adcommon/yldap.py
--- old/yast2-adcommon-python-1.0/adcommon/yldap.py 2019-08-22
21:51:25.000000000 +0200
+++ new/yast2-adcommon-python-1.1/adcommon/yldap.py 2019-09-11
22:32:13.000000000 +0200
@@ -123,13 +123,26 @@
ycpbuiltins.y2error('Failed to initialize ldap connection')
raise Exception('Failed to initialize ldap connection')
+ def __ldap_disconnect(self, e):
+ if e.args[0] == ldb.ERR_OPERATIONS_ERROR and \
+ ('connection to remote LDAP server dropped' in e.args[1] or
'NT_STATUS_CONNECTION_RESET' in e.args[1]):
+ return True
+ return False
+
def ldap_search_s(self, *args):
return self.ldap_search(*args)
def ldap_search(self, base=None, scope=None, expression=None, attrs=None,
controls=None):
try:
attrs = [a.decode() if type(a) is six.binary_type else a for a in
attrs]
- return [(str(m.get('dn')), {k: [bytes(v) for v in m.get(k)] for k
in m.keys() if k != 'dn'}) for m in self.search(base, scope, expression, attrs,
controls)]
+ try:
+ return [(str(m.get('dn')), {k: [bytes(v) for v in m.get(k)]
for k in m.keys() if k != 'dn'}) for m in self.search(base, scope, expression,
attrs, controls)]
+ except ldb.LdbError as e:
+ if self.__ldap_disconnect(e):
+ self.__ldap_connect()
+ return [(str(m.get('dn')), {k: [bytes(v) for v in
m.get(k)] for k in m.keys() if k != 'dn'}) for m in self.search(base, scope,
expression, attrs, controls)]
+ else:
+ raise
except ldb.LdbError as e:
y2error_dialog(self.__ldap_exc_msg(e))
except Exception as e:
@@ -139,7 +152,14 @@
def ldap_add(self, dn, attrs):
try:
attrs['dn'] = dn
- return self.add(attrs)
+ try:
+ return self.add(attrs)
+ except ldb.LdbError as e:
+ if self.__ldap_disconnect(e):
+ self.__ldap_connect()
+ return self.add(attrs)
+ else:
+ raise
except Exception as e:
raise LdapException(self.__ldap_exc_msg(e),
self.__ldap_exc_info(e))
@@ -150,7 +170,14 @@
attrs = {m[1].decode() if type(m[1]) is six.binary_type else m[1]:
m[2].decode() if type(m[2]) is six.binary_type else str(m[2]) for m in attrs if
m[0] == 0}
try:
attrs['dn'] = dn
- return self.modify(ldb.Message.from_dict(self, attrs))
+ try:
+ return self.modify(ldb.Message.from_dict(self, attrs))
+ except ldb.LdbError as e:
+ if self.__ldap_disconnect(e):
+ self.__ldap_connect()
+ return self.modify(ldb.Message.from_dict(self, attrs))
+ else:
+ raise
except ldb.LdbError as e:
y2error_dialog(self.__ldap_exc_msg(e))
except Exception as e:
@@ -159,7 +186,14 @@
def ldap_delete(self, *args):
try:
- return self.delete(*args)
+ try:
+ return self.delete(*args)
+ except ldb.LdbError as e:
+ if self.__ldap_disconnect(e):
+ self.__ldap_connect()
+ return self.delete(*args)
+ else:
+ raise
except ldb.LdbError as e:
y2error_dialog(self.__ldap_exc_msg(e))
except Exception as e:
@@ -167,7 +201,20 @@
ycpbuiltins.y2error('ldap.delete_s: %s\n' % self.__ldap_exc_msg(e))
def rename_s(self, dn, newrdn, newsuperior):
- super(Ldap, self).rename(dn, '%s,%s' % (newrdn, newsuperior))
+ try:
+ try:
+ super(Ldap, self).rename(dn, '%s,%s' % (newrdn, newsuperior))
+ except ldb.LdbError as e:
+ if self.__ldap_disconnect(e):
+ self.__ldap_connect()
+ super(Ldap, self).rename(dn, '%s,%s' % (newrdn,
newsuperior))
+ else:
+ raise
+ except ldb.LdbError as e:
+ y2error_dialog(self.__ldap_exc_msg(e))
+ except Exception as e:
+ ycpbuiltins.y2error(traceback.format_exc())
+ ycpbuiltins.y2error('ldap.rename: %s\n' % self.__ldap_exc_msg(e))
def __find_inferior_classes(self, name):
dn = self.get_schema_basedn()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-adcommon-python-1.0/package/yast2-adcommon-python.changes
new/yast2-adcommon-python-1.1/package/yast2-adcommon-python.changes
--- old/yast2-adcommon-python-1.0/package/yast2-adcommon-python.changes
2019-08-22 21:51:25.000000000 +0200
+++ new/yast2-adcommon-python-1.1/package/yast2-adcommon-python.changes
2019-09-11 22:32:13.000000000 +0200
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Wed Sep 11 16:35:17 UTC 2019 - [email protected]
+
+- Reconnect the ldap session if it times out; (bsc#1150394);
+- 1.1
+
+-------------------------------------------------------------------
Thu Aug 22 15:55:34 UTC 2019 - [email protected]
- AD modules should connect to an AD-DC via the SamDB interface,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-adcommon-python-1.0/package/yast2-adcommon-python.spec
new/yast2-adcommon-python-1.1/package/yast2-adcommon-python.spec
--- old/yast2-adcommon-python-1.0/package/yast2-adcommon-python.spec
2019-08-22 21:51:25.000000000 +0200
+++ new/yast2-adcommon-python-1.1/package/yast2-adcommon-python.spec
2019-09-11 22:32:13.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-adcommon-python
-Version: 1.0
+Version: 1.1
Release: 0
Summary: Common code for the yast python ad modules
License: GPL-3.0+