Fix a warning message in linux fix_acpid sysprep
[snf-image-creator] / image_creator / disk.py
index 20ce9f5..6cd910b 100644 (file)
@@ -175,6 +175,19 @@ class DiskDevice(object):
         self.g = guestfs.GuestFS()
         self.g.add_drive_opts(self.real_device, readonly=0)
 
+        # Before version 1.17.14 the recovery process, which is a fork of the
+        # original process that called libguestfs, did not close its inherited
+        # file descriptors. This can cause problems especially if the parent
+        # process has opened pipes. Since the recovery process is an optional
+        # feature of libguestfs, it's better to disable it.
+        self.g.set_recovery_proc(0)
+        version = self.g.version()
+        if version['major'] > 1 or (version['major'] == 1 and
+            (version['minor'] >= 18 or \
+            (version['minor'] == 17 and version['release'] >= 14))):
+            self.g.set_recovery_proc(1)
+            self.out.output("Enabling recovery proc")
+
         #self.g.set_trace(1)
         #self.g.set_verbose(1)
 
@@ -182,9 +195,8 @@ class DiskDevice(object):
 
     def enable(self):
         """Enable a newly created DiskDevice"""
-        self.progressbar = self.out.Progress("Launching helper VM", "percent")
-        self.progressbar.max = 100
-        self.progressbar.goto(1)
+        self.progressbar = self.out.Progress(100, "Launching helper VM",
+                                             "percent")
         eh = self.g.set_event_callback(self.progress_callback,
                                                     guestfs.EVENT_PROGRESS)
         self.g.launch()
@@ -226,9 +238,10 @@ class DiskDevice(object):
 
         self.progressbar.goto((position * 100) // total)
 
-    def mount(self):
+    def mount(self, readonly=False):
         """Mount all disk partitions in a correct order."""
 
+        mount = self.g.mount_ro if readonly else self.g.mount
         self.out.output("Mounting image...", False)
         mps = self.g.inspect_get_mountpoints(self.root)
 
@@ -244,7 +257,7 @@ class DiskDevice(object):
         mps.sort(compare)
         for mp, dev in mps:
             try:
-                self.g.mount(dev, mp)
+                mount(dev, mp)
             except RuntimeError as msg:
                 self.out.warn("%s (ignored)" % msg)
         self.out.success("done")
@@ -406,9 +419,8 @@ class DiskDevice(object):
         MB = 2 ** 20
         blocksize = 4 * MB  # 4MB
         size = self.meta['SIZE']
-        progress_size = (size + MB - 1) // MB  # in MB
-        progressbar = self.out.Progress("Dumping image file", 'mb')
-        progressbar.max = progress_size
+        progr_size = (size + MB - 1) // MB  # in MB
+        progressbar = self.out.Progress(progr_size, "Dumping image file", 'mb')
 
         with open(self.real_device, 'r') as src:
             with open(outfile, "w") as dst: