for extension in ('', '.meta', '.md5sum'):
filename = "%s%s" % (options.outfile, extension)
if os.path.exists(filename):
- raise FatalError("Output file %s exists "
- "(use --force to overwrite it)" % filename)
+ raise FatalError("Output file `%s' exists "
+ "(use --force to overwrite it)." % filename)
# Check if the authentication token is valid. The earlier the better
if options.token is not None:
if account is None:
raise FatalError("The authentication token you provided is not"
" valid!")
+ else:
+ kamaki = Kamaki(account, out)
except ClientError as e:
raise FatalError("Astakos client: %d %s" % (e.status, e.message))
+ if options.upload and not options.force:
+ if kamaki.object_exists(options.upload):
+ raise FatalError("Remote pithos object `%s' exists "
+ "(use --force to overwrite it)." % options.upload)
+ if kamaki.object_exists("%s.md5sum" % options.upload):
+ raise FatalError("Remote pithos object `%s.md5sum' exists "
+ "(use --force to overwrite it)." % options.upload)
+
+ if options.register and not options.force:
+ if kamaki.object_exists("%s.meta" % options.upload):
+ raise FatalError("Remote pithos object `%s.meta' exists "
+ "(use --force to overwrite it)." % options.upload)
+
disk = Disk(options.source, out, options.tmp)
def signal_handler(signum, frame):
image = disk.get_image(snapshot)
- # If no customization is to be applied, the image should be mounted ro
+ # If no customization is to be done, the image should be mounted ro
ro = (not (options.sysprep or options.shrink) or options.print_sysprep)
image.mount(ro)
try:
return 0
if options.sysprep:
+ err_msg = "Unable to perform the system preparation tasks. " \
+ "Couldn't mount the media%s. Use --no-sysprep if you " \
+ "don't won't to perform any system preparation task."
+ if not image.mounted:
+ raise FatalError(err_msg % "")
+ elif image.mounted_ro:
+ raise FatalError(err_msg % " read-write")
image.os.do_sysprep()
metadata = image.os.meta
uploaded_obj = ""
if options.upload:
out.output("Uploading image to pithos:")
- kamaki = Kamaki(account, out)
with open(snapshot, 'rb') as f:
uploaded_obj = kamaki.upload(
f, size, options.upload,
- "(1/4) Calculating block hashes",
- "(2/4) Uploading missing blocks")
-
- out.output("(3/4) Uploading metadata file ...", False)
- kamaki.upload(StringIO.StringIO(metastring),
- size=len(metastring),
- remote_path="%s.%s" % (options.upload, 'meta'))
- out.success('done')
- out.output("(4/4) Uploading md5sum file ...", False)
+ "(1/3) Calculating block hashes",
+ "(2/3) Uploading missing blocks")
+ out.output("(3/3) Uploading md5sum file ...", False)
md5sumstr = '%s %s\n' % (checksum,
os.path.basename(options.upload))
kamaki.upload(StringIO.StringIO(md5sumstr),
kamaki.register(options.register, uploaded_obj, metadata,
options.public)
out.success('done')
+ out.output("Uploading metadata file ...", False)
+ kamaki.upload(StringIO.StringIO(metastring),
+ size=len(metastring),
+ remote_path="%s.%s" % (options.upload, 'meta'))
+ out.success('done')
out.output()
except ClientError as e:
raise FatalError("Pithos client: %d %s" % (e.status, e.message))