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