Hi, I was trying to run the fuel ci code on Fedora and ran into an issue with 
fuseiso.
Is there a place where I can submit this patch?

Thanks,
Ross Brattain
Intel DCG



    switch from fuseiso to bsdtar

    fuseiso is not present in Fedora

    bsdtar can extract ISOs and when run as root can
    preserve RR permissions and uid/gid.

    this also avoids tmp_old_dir and copy, we can just extract to tmp_new_dir

    bsdtar is present in Ubuntu and Fedora/RHEL/CentOS

    Signed-off-by: Ross Brattain <[email protected]>

diff --git a/deploy/README b/deploy/README
index 40f95ef..ff76de3 100644
--- a/deploy/README
+++ b/deploy/README
@@ -13,7 +13,7 @@ the following dependencies and python modules are required to 
be installed:

 - for Ubuntu:

-sudo apt-get install -y libvirt-bin qemu-kvm python-pip fuseiso mkisofs 
genisoimage
+sudo apt-get install -y libvirt-bin qemu-kvm python-pip fuseiso bsdtar mkisofs 
genisoimage
 sudo apt-get install -y python-dev libz-dev libxml2-dev libxslt-dev libyaml-dev
 sudo pip install pyyaml netaddr paramiko lxml scp pycrypto ecdsa

diff --git a/deploy/deploy.py b/deploy/deploy.py
index 9e188eb..0f3a3bf 100755
--- a/deploy/deploy.py
+++ b/deploy/deploy.py
@@ -124,22 +124,14 @@ class AutoDeploy(object):
             self.copy(tmp_orig_dir, tmp_new_dir)
             self.patch(tmp_new_dir, new_iso)
         except Exception as e:
-            exec_cmd('fusermount -u %s' % tmp_orig_dir, False)
-            os.environ.pop(MOUNT_STATE_VAR, None)
             delete(self.tmp_dir)
             err(e)

     def copy(self, tmp_orig_dir, tmp_new_dir):
         log('Copying...')
-        os.makedirs(tmp_orig_dir)
         os.makedirs(tmp_new_dir)
-        exec_cmd('fuseiso %s %s' % (self.iso_file, tmp_orig_dir))
-        os.environ[MOUNT_STATE_VAR] = tmp_orig_dir
-        with cd(tmp_orig_dir):
-            exec_cmd('find . | cpio -pd %s' % tmp_new_dir)
-        exec_cmd('fusermount -u %s' % tmp_orig_dir)
-        os.environ.pop(MOUNT_STATE_VAR, None)
-        delete(tmp_orig_dir)
+        # we are running as root so use same-owner
+        exec_cmd('bsdtar -C %s --same-owner -xvpf %s' % (tmp_new_dir, 
self.iso_file))
         exec_cmd('chmod -R 755 %s' % tmp_new_dir)

     def patch(self, tmp_new_dir, new_iso):
@@ -384,16 +376,6 @@ def handle_signals(signal_num, frame):

     log('Caught signal %s, cleaning up and exiting.' % signal_num)

-    mount_point = os.environ.get(MOUNT_STATE_VAR)
-    if mount_point:
-        log('Unmounting ISO from "%s"' % mount_point)
-        # Prevent 'Device or resource busy' errors when unmounting
-        os.chdir('/')
-        exec_cmd('fusermount -u %s' % mount_point, True)
-        # Be nice and remove our environment variable, even though the OS would
-        # would clean it up anyway
-        os.environ.pop(MOUNT_STATE_VAR)
-
     sys.exit(1)

_______________________________________________
opnfv-tech-discuss mailing list
[email protected]
https://lists.opnfv.org/mailman/listinfo/opnfv-tech-discuss

Reply via email to