- with open(filename) as f:
- # TODO: create container if necessary
- self.pithos_client.create_object(remote_path, f, size)
- self.uploaded_object = "pithos://%s/%s/%s" % \
- (self.account, self.container, remote_path)
-
- register(self, metadata):
- pass
-
-# vim: set sta sts=4 shiftwidth=4 sw=4 et ai
+ try:
+ self.pithos_client.create_container(self.container)
+ except ClientError as e:
+ if e.status != 202: # Ignore container already exists errors
+ raise FatalError("Pithos client: %d %s" % \
+ (e.status, e.message))
+ try:
+ hash_cb = progress(hp) if hp is not None else None
+ upload_cb = progress(up) if up is not None else None
+ self.pithos_client.create_object(remote_path, file_obj, size,
+ hash_cb, upload_cb)
+ return "pithos://%s/%s/%s" % \
+ (self.account, self.container, remote_path)
+ except ClientError as e:
+ raise FatalError("Pithos client: %d %s" % (e.status, e.message))
+
+ def register(self, name, location, metadata):
+ params = {'is_public':'true', 'disk_format':'diskdump'}
+ try:
+ self.image_client.register(name, location, params, metadata)
+ except ClientError as e:
+ raise FatalError("Image client: %d %s" % (e.status, e.message))
+
+# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :