#!/usr/bin/python
-# Copyright 2011, 2012 Lars Wirzenius
+# Copyright 2011-2013 Lars Wirzenius
# Copyright 2012 Codethink Limited
#
# This program is free software: you can redistribute it and/or modify
import shutil
import subprocess
import tempfile
+import time
-__version__ = '0.1.0'
+__version__ = '0.2'
class VmDebootstrap(cliapp.Application):
self.runcmd(['install-mbr', self.settings['image']])
def setup_kpartx(self):
- out = self.runcmd(['kpartx', '-av', self.settings['image']])
+ out = self.runcmd(['kpartx', '-avs', self.settings['image']])
if self.settings['bootsize']:
bootindex = 0
rootindex = 1
if self.settings['image']:
for i in xrange(len(self.mount_points) - 1, -1, -1):
mount_point = self.mount_points[i]
- self.runcmd(['umount', mount_point], ignore_fail=True)
+ try:
+ self.runcmd(['umount', mount_point], ignore_fail=False)
+ except cliapp.AppException:
+ logging.debug("umount failed, sleeping and trying again")
+ time.sleep(5)
+ self.runcmd(['umount', mount_point], ignore_fail=False)
self.runcmd(['kpartx', '-d', self.settings['image']], ignore_fail=True)
-
+
for dirname in self.remove_dirs:
shutil.rmtree(dirname)