X-Git-Url: https://code.grnet.gr/git/snf-image-creator/blobdiff_plain/dbf466eb438759595eda22952a7409ec0ab398c8..25b4d8581861e089cffd3e78b0823d93787bef7f:/image_creator/main.py diff --git a/image_creator/main.py b/image_creator/main.py index 85c9272..9996dd6 100644 --- a/image_creator/main.py +++ b/image_creator/main.py @@ -45,6 +45,7 @@ import sys import os import optparse import StringIO +import signal def check_writable_dir(option, opt_str, value, parser): @@ -88,12 +89,12 @@ def parse_options(input_args): parser.add_option("-r", "--register", dest="register", type="string", default=False, - help="register the image to ~okeanos as IMAGENAME", + help="register the image with ~okeanos as IMAGENAME", metavar="IMAGENAME") parser.add_option("-a", "--account", dest="account", type="string", default=account, help="Use this ACCOUNT when " - "uploading/registring images [Default: %s]" % account) + "uploading/registering images [Default: %s]" % account) parser.add_option("-m", "--metadata", dest="metadata", default=[], help="Add custom KEY=VALUE metadata to the image", @@ -101,7 +102,7 @@ def parse_options(input_args): parser.add_option("-t", "--token", dest="token", type="string", default=token, help="Use this token when " - "uploading/registring images [Default: %s]" % token) + "uploading/registering images [Default: %s]" % token) parser.add_option("--print-sysprep", dest="print_sysprep", default=False, help="print the enabled and disabled system preparation " @@ -117,7 +118,7 @@ def parse_options(input_args): metavar="SYSPREP") parser.add_option("--no-sysprep", dest="sysprep", default=True, - help="don't perform system preperation", + help="don't perform system preparation", action="store_false") parser.add_option("--no-shrink", dest="shrink", default=True, @@ -187,13 +188,20 @@ def image_creator(): "(use --force to overwrite it)." % filename) disk = Disk(options.source, out) + + def signal_handler(signum, frame): + disk.cleanup() + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) try: snapshot = disk.snapshot() dev = disk.get_device(snapshot) # If no customization is to be applied, the image should be mounted ro - readonly = not (options.sysprep or options.shrink) + readonly = (not (options.sysprep or options.shrink) or + options.print_sysprep) dev.mount(readonly) cls = os_cls(dev.distro, dev.ostype) @@ -277,7 +285,7 @@ def image_creator(): out.output() if options.register: - out.output('Registring image to ~okeanos...', False) + out.output('Registering image with ~okeanos...', False) kamaki.register(options.register, uploaded_obj, metadata) out.success('done') out.output()