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

Reply via email to