Fabian Deutsch has uploaded a new change for review.

Change subject: fs: Don't use ovirtfunctions for persistence
......................................................................

fs: Don't use ovirtfunctions for persistence

Previously the legacy ovirtfunctions module was used for the peristence
of files, on el7 this lead to problems.
Now the legacy module is not used anymore to prevent failing
persistence.

Change-Id: I19931fb98a113dba609ce484ec2f5031fd1f6936
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1152873
Signed-off-by: Fabian Deutsch <[email protected]>
---
M src/ovirt/node/utils/fs/__init__.py
1 file changed, 19 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/46/34946/1

diff --git a/src/ovirt/node/utils/fs/__init__.py 
b/src/ovirt/node/utils/fs/__init__.py
index fcfa40b..d03a1b3 100644
--- a/src/ovirt/node/utils/fs/__init__.py
+++ b/src/ovirt/node/utils/fs/__init__.py
@@ -29,6 +29,7 @@
 import os
 import StringIO
 import re
+import hashlib
 
 
 from . import mount
@@ -422,7 +423,8 @@
                 elif os.path.isfile(abspath):
                     self._persist_file(abspath)
             except Exception:
-                self._logger.error('Failed to persist "%s"', path)
+                self._logger.error('Failed to persist "%s"', path,
+                                   exc_info=True)
                 return -1
 
             restorecon(abspath)
@@ -444,11 +446,24 @@
     def _persist_file(self, abspath):
         """Persist file and bind mount it back to its current location
         """
-        from ovirtnode import ovirtfunctions
+
+        def cksum(filename):
+            try:
+                m = hashlib.md5()
+            except:
+                m = hashlib.sha1()
+
+            with open(filename) as f:
+                data = f.read(4096)
+                while data:
+                    m.update(data)
+                    data = f.read(4096)
+                return m.hexdigest()
+
         persisted_path = self._config_path(abspath)
         if os.path.exists(persisted_path):
-            current_checksum = ovirtfunctions.cksum(abspath)
-            stored_checksum = ovirtfunctions.cksum(persisted_path)
+            current_checksum = cksum(abspath)
+            stored_checksum = cksum(persisted_path)
             if stored_checksum == current_checksum:
                 self._logger.warn('File "%s" had already been persisted',
                                   abspath)


-- 
To view, visit http://gerrit.ovirt.org/34946
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I19931fb98a113dba609ce484ec2f5031fd1f6936
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Fabian Deutsch <[email protected]>
_______________________________________________
node-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/node-patches

Reply via email to