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+


Reply via email to