mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 15:36:27 +00:00
Cleanup adfter keyboard interrupts (also do a better job of cleaning up)
This commit is contained in:
parent
87f2d889b7
commit
0fe3c9e984
2 changed files with 22 additions and 11 deletions
|
@ -85,10 +85,10 @@ class VirtualBoxInstance(Instance):
|
||||||
self.create()
|
self.create()
|
||||||
try:
|
try:
|
||||||
self.boot()
|
self.boot()
|
||||||
except Exception as e:
|
except (Exception, KeyboardInterrupt) as e:
|
||||||
self.shutdown()
|
self.shutdown()
|
||||||
raise e
|
raise e
|
||||||
except Exception as e:
|
except (Exception, KeyboardInterrupt) as e:
|
||||||
self.destroy()
|
self.destroy()
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
|
|
@ -35,19 +35,30 @@ class BootableManifest(object):
|
||||||
handle, image_path = tempfile.mkstemp()
|
handle, image_path = tempfile.mkstemp()
|
||||||
import os
|
import os
|
||||||
os.close(handle)
|
os.close(handle)
|
||||||
build_server.download(bootstrap_info.volume.image_path, image_path)
|
try:
|
||||||
build_server.delete(bootstrap_info.volume.image_path)
|
build_server.download(bootstrap_info.volume.image_path, image_path)
|
||||||
|
except (Exception, KeyboardInterrupt) as e:
|
||||||
|
os.remove(image_path)
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
build_server.delete(bootstrap_info.volume.image_path)
|
||||||
image_type = {'virtualbox': VirtualBoxImage}
|
image_type = {'virtualbox': VirtualBoxImage}
|
||||||
return image_type.get(self.manifest_data['provider']['name'])(manifest, image_path)
|
return image_type.get(self.manifest_data['provider']['name'])(manifest, image_path)
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self.build_server = self.pick_build_server()
|
try:
|
||||||
self.manifest = self.get_manifest(self.build_server)
|
self.build_server = self.pick_build_server()
|
||||||
self.bootstrap_info = self.bootstrap(self.manifest, self.build_server)
|
self.manifest = self.get_manifest(self.build_server)
|
||||||
self.image = self.get_image(self.build_server, self.bootstrap_info, self.manifest)
|
self.bootstrap_info = self.bootstrap(self.manifest, self.build_server)
|
||||||
self.image.open()
|
self.image = self.get_image(self.build_server, self.bootstrap_info, self.manifest)
|
||||||
self.instance = self.image.get_instance()
|
self.image.open()
|
||||||
self.instance.up()
|
self.instance = self.image.get_instance()
|
||||||
|
self.instance.up()
|
||||||
|
except (Exception, KeyboardInterrupt) as e:
|
||||||
|
if hasattr(self, 'image'):
|
||||||
|
self.image.close()
|
||||||
|
self.image.destroy()
|
||||||
|
raise e
|
||||||
return self.instance
|
return self.instance
|
||||||
|
|
||||||
def __exit__(self, type, value, traceback):
|
def __exit__(self, type, value, traceback):
|
||||||
|
|
Loading…
Add table
Reference in a new issue