diff --git a/circle/vm/operations.py b/circle/vm/operations.py index a9bdbfa..7df6cb7 100644 --- a/circle/vm/operations.py +++ b/circle/vm/operations.py @@ -360,8 +360,18 @@ class ExportDiskOperation(InstanceOperation): accept_states = ('STOPPED',) async_queue = 'localhost.man.slow' - def _operation(self, disk, format): - disk.export(format) + def check_auth(self, user): + super(ExportDiskOperation, self).check_auth(user) + try: + Store(user) + except NoStoreException: + raise PermissionDenied + + def _operation(self, user, disk, format): + store = Store(user) + store.new_folder('/export') + upload_link = store.request_upload('/export') + disk.export(format, upload_link) @register_operation