[Thincrust-devel] [PATCH] fixed problem with long move operations (#466278)
David Huff
dhuff at redhat.com
Fri Oct 10 21:40:02 UTC 2008
---
appcreate/appliance.py | 56 ++++++++++++++++++++++++++++------------------
tools/appliance-creator | 9 ++++++-
2 files changed, 41 insertions(+), 24 deletions(-)
diff --git a/appcreate/appliance.py b/appcreate/appliance.py
index 054c69a..c3af120 100644
--- a/appcreate/appliance.py
+++ b/appcreate/appliance.py
@@ -332,22 +332,10 @@ class ApplianceImageCreator(ImageCreator):
if rc != 0:
raise CreatorError("Unable to convert disk to %s" % self.__format)
- def _package_image(self):
- #package image and metadata
- if self.__package == "zip":
- #dst = "%s/%s.zip" % (self.__imgdir, self.name) tmp dir
- dst = "%s/%s.zip" % (self._outdir, self.name)
- files = glob.glob('%s/*' % self.__imgdir)
- logging.debug("creating %s" % (dst))
- z = zipfile.ZipFile(dst, "w", compression=8, allowZip64="True")
- for file in files:
- if file != dst:
- logging.debug("adding %s to %s" % (file,dst))
- z.write(file, arcname=os.path.basename(file), compress_type=None)
- z.close()
-
def _stage_final_image(self):
+ """Stage the final system image in _outdir.
+ """
self._resparse()
self._write_image_xml()
@@ -358,16 +346,40 @@ class ApplianceImageCreator(ImageCreator):
#else
if self.__format != "raw":
self._convert_image()
+
+ if self.__package == "zip":
+ dst = "%s/%s.zip" % (self._outdir, self.name)
+ files = glob.glob('%s/*' % self.__imgdir)
+ logging.debug("creating %s" % (dst))
+ z = zipfile.ZipFile(dst, "w", compression=8, allowZip64="True")
+ for file in files:
+ if file != dst:
+ logging.debug("adding %s to %s" % (file,dst))
+ z.write(file, arcname=os.path.basename(file), compress_type=None)
+ z.close()
+
if self.__package == "none":
logging.debug("moving disks to final location")
for files in glob.glob('%s/*' % self.__imgdir):
- logging.debug("moving %s to %s" % (files, self._outdir))
- shutil.move(files, self._outdir)
- else:
- self._package_image()
-
- print("done")
-
-
+ logging.debug("moving %s to %s/%s" % (files, self._outdir, os.path.basename(files)))
+ try:
+ os.rename(files, '%s/%s' % (self._outdir, os.path.basename(files)))
+ except Exception, e:
+ shutil.move(files, '%s/%s' % (self._outdir, os.path.basename(files)))
+
+ def package(self, destdir):
+ """Prepares the created image for final delivery.
+ """
+ self._stage_final_image()
+
+ for f in os.listdir(self._outdir):
+ try:
+ os.rename(os.path.join(self._outdir, f),
+ os.path.join(destdir, f))
+ except Exception, e:
+ shutil.move(os.path.join(self._outdir, f),
+ os.path.join(destdir, f))
+
+ print "Finished"
diff --git a/tools/appliance-creator b/tools/appliance-creator
index 6d990de..805771f 100755
--- a/tools/appliance-creator
+++ b/tools/appliance-creator
@@ -99,7 +99,12 @@ def main():
name = imgcreate.build_name(options.kscfg)
if options.name:
- name = options.name
+ if os.path.dirname(options.name):
+ destdir=os.path.dirname(options.name)
+ name=os.path.basename(options.name)
+ else:
+ name = options.name
+ destdir = "."
creator = appcreate.ApplianceImageCreator(ks, name, options.format, options.package, options.vmem, options.vcpu)
creator.tmpdir = options.tmpdir
@@ -109,7 +114,7 @@ def main():
creator.install()
creator.configure()
creator.unmount()
- creator.package()
+ creator.package(destdir)
except imgcreate.CreatorError, e:
logging.error("Unable to create appliance : %s" % e)
return 1
--
1.5.5.1
More information about the Thincrust-devel
mailing list