Oved Ourfali has uploaded a new change for review. Change subject: WIP supporting OVF directory structure ......................................................................
WIP supporting OVF directory structure Change-Id: I6dbffed3037c66b015489ea1cb03b2b4d92a098f Signed-off-by: Oved Ourfali <oourf...@redhat.com> --- M src/__main__.py 1 file changed, 46 insertions(+), 27 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-image-uploader refs/changes/62/18462/1 diff --git a/src/__main__.py b/src/__main__.py index 728dc2e..805080b 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -578,6 +578,21 @@ os.setegid(0) @staticmethod + def get_ovf_dir_space(ovf_directory): + size_in_bytes = 0 + try: + for root, dirs, files in os.walk(ovf_directory): + for file in files: + tgt = os.path.join(root, file) + if os.path.exists(tgt): + size = os.stat(tgt).st_size + size_in_bytes += os.stat(tgt).st_size + return size_in_bytes + except: + logging.error(_("Unable to calculate the size of folder %s.") % ovf_directory) + return -1 + + @staticmethod def space_test_ovf(ovf_file, dest_dir): '''Checks to see if there is enough room to decompress the tgz into dest_dir''' tar = tarfile.open(ovf_file, "r:gz") @@ -1295,34 +1310,38 @@ passwd = getpwnam(NFS_USER) dest_dir = os.path.join(mount_dir,remote_path) for ovf_file in self.configuration.files: - try: - ovf_extract_dir = tempfile.mkdtemp() - logging.debug('local extract directory for OVF is %s' % ovf_extract_dir) - retVal, ovf_file_size = self.space_test_ovf(ovf_file, ovf_extract_dir) - if retVal: - if self.unpack_ovf(ovf_file, ovf_extract_dir): - if (self.update_ovf_xml(ovf_extract_dir)): - self.copy_files_nfs(ovf_extract_dir, dest_dir, address, ovf_file_size, ovf_file) - else: - if ovf_file_size > 0: - ExitCodes.exit_code = ExitCodes.CRITICAL - size_needed_mb = "%1.f" % \ - (float(ovf_file_size) / float(pow(2, 20))) - logging.error(_( - "Not enough space in {tempdir}:" - " {size_needed}Mb are needed.").format( - tempdir=tempfile.gettempdir(), - size_needed=size_needed_mb - ) - ) - - finally: + if os.path.isdir(ovf_file) == True: + ovf_file_size = self.get_ovf_dir_space(ovf_file) + if (ovf_file_size != -1 and self.update_ovf_xml(ovf_file)): + self.copy_files_nfs(ovf_file, dest_dir, address, ovf_file_size, ovf_file) + else: try: - logging.debug("Cleaning up OVF extract directory %s" % ovf_extract_dir) - shutil.rmtree(ovf_extract_dir) - except Exception, e: - ExitCodes.exit_code=ExitCodes.CLEANUP_ERR - logging.debug(e) + ovf_extract_dir = tempfile.mkdtemp() + logging.debug('local extract directory for OVF is %s' % ovf_extract_dir) + retVal, ovf_file_size = self.space_test_ovf(ovf_file, ovf_extract_dir) + if retVal: + if self.unpack_ovf(ovf_file, ovf_extract_dir): + if (self.update_ovf_xml(ovf_extract_dir)): + self.copy_files_nfs(ovf_extract_dir, dest_dir, address, ovf_file_size, ovf_file) + else: + if ovf_file_size > 0: + ExitCodes.exit_code = ExitCodes.CRITICAL + size_needed_mb = "%1.f" % \ + (float(ovf_file_size) / float(pow(2, 20))) + logging.error(_( + "Not enough space in {tempdir}:" + " {size_needed}Mb are needed.").format( + tempdir=tempfile.gettempdir(), + size_needed=size_needed_mb + ) + ) + finally: + try: + logging.debug("Cleaning up OVF extract directory %s" % ovf_extract_dir) + shutil.rmtree(ovf_extract_dir) + except Exception, e: + ExitCodes.exit_code=ExitCodes.CLEANUP_ERR + logging.debug(e) except KeyError, k: ExitCodes.exit_code=ExitCodes.CRITICAL -- To view, visit http://gerrit.ovirt.org/18462 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6dbffed3037c66b015489ea1cb03b2b4d92a098f Gerrit-PatchSet: 1 Gerrit-Project: ovirt-image-uploader Gerrit-Branch: master Gerrit-Owner: Oved Ourfali <oourf...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches