Use forceall in e2fsck if available
[snf-image-creator] / image_creator / bundle_volume.py
index 18d0245..772e504 100644 (file)
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+#
 # Copyright 2012 GRNET S.A. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or
 # interpreted as representing official policies, either expressed
 # or implied, of GRNET S.A.
 
+"""This module hosts the code that performes the host bundling operation. By
+using the create_image method of the BundleVolume class the user can create an
+image out of the running system.
+"""
+
 import os
 import re
 import tempfile
@@ -260,8 +267,11 @@ class BundleVolume(object):
         name = os.path.basename(dev) + "_" + uuid.uuid4().hex
         tablefd, table = tempfile.mkstemp()
         try:
-            size = end - start + 1
-            os.write(tablefd, "0 %d linear %s %d" % (size, dev, start))
+            try:
+                size = end - start + 1
+                os.write(tablefd, "0 %d linear %s %d" % (size, dev, start))
+            finally:
+                os.close(tablefd)
             dmsetup('create', "%sp%d" % (name, num), table)
         finally:
             os.unlink(table)
@@ -294,7 +304,7 @@ class BundleVolume(object):
         mpoints = []
         for entry in self._read_fstable('/proc/mounts'):
             if entry.mpoint.startswith(os.path.abspath(target)):
-                    mpoints.append(entry.mpoint)
+                mpoints.append(entry.mpoint)
 
         mpoints.sort()
         for mpoint in reversed(mpoints):
@@ -326,10 +336,9 @@ class BundleVolume(object):
                 continue
 
             dirname = mpoint
-            basename = ''
             found_ancestor = False
             while dirname != '/':
-                (dirname, basename) = os.path.split(dirname)
+                (dirname, _) = os.path.split(dirname)
                 if dirname in excluded:
                     found_ancestor = True
                     break