from image_creator import __version__ as version
from image_creator import util
from image_creator.disk import Disk
-from image_creator.util import get_command, FatalError, MD5
+from image_creator.util import FatalError, MD5
from image_creator.output.cli import SilentOutput, SimpleOutput, \
OutputWthProgress
from image_creator.os_type import os_cls
import os
import optparse
import StringIO
+import signal
def check_writable_dir(option, opt_str, value, parser):
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",
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 "
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,
"(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)
metadata = image_os.meta
dev.umount()
- size = options.shrink and dev.shrink() or dev.meta['SIZE']
+ size = options.shrink and dev.shrink() or dev.size
metadata.update(dev.meta)
# Add command line metadata to the collected ones...
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()