bootstrap-vz/tests/integration/tools/instances.py

69 lines
2.1 KiB
Python
Raw Normal View History

2014-11-30 00:33:42 +01:00
from bootstrapvz.common.tools import log_check_call
2014-12-14 15:41:04 +01:00
import virtualbox
2014-11-30 00:33:42 +01:00
class Instance(object):
def __init__(self, name, image):
self.name = name
self.image = image
def boot(self):
pass
def shutdown(self):
pass
def destroy(self):
pass
class VirtualBoxInstance(Instance):
cpus = 1
memory = 256
def __init__(self, name, image):
super(VirtualBoxInstance, self).__init__(name, image)
self.vbox = virtualbox.VirtualBox()
2014-12-14 15:41:04 +01:00
manager = virtualbox.Manager()
self.session = manager.get_session()
2014-11-30 00:33:42 +01:00
def create(self):
2014-12-14 15:41:04 +01:00
if self.image.manifest.system['architecture'] == 'x86':
2014-11-30 00:33:42 +01:00
os_type = 'Debian'
else:
os_type = 'Debian_64'
self.machine = self.vbox.create_machine(settings_file='', name=self.name,
groups=[], os_type_id=os_type, flags='')
self.machine.save_settings()
self.machine.cpu_count = self.cpus
self.machine.memory_size = self.memory
self.vbox.register_machine(self.machine)
2014-12-14 15:41:04 +01:00
self.machine.lock_machine(self.session, virtualbox.library.LockType.write)
strg_ctrl = self.session.machine.add_storage_controller('SATA Controller',
virtualbox.library.StorageBus.sata)
strg_ctrl.port_count = 1
self.session.machine.attach_device(name='SATA Controller', controller_port=0, device=0,
type_p=virtualbox.library.DeviceType.hard_disk,
medium=self.image.medium)
self.session.machine.save_settings()
self.session.unlock_machine()
2014-11-30 00:33:42 +01:00
def boot(self):
self.machine.launch_vm_process(self.session, 'headless')
def shutdown(self):
self.session.console.power_down()
log_check_call(['VBoxManage', 'stopvm', self.uuid,
'--type', 'headless'])
def destroy(self):
2014-12-14 15:41:04 +01:00
if hasattr(self, 'machine'):
self.machine.lock_machine(self.session, virtualbox.library.LockType.write)
self.session.machine.detach_device(name='SATA Controller', controller_port=0, device=0)
self.session.machine.save_settings()
self.session.unlock_machine()
self.machine.unregister(virtualbox.library.CleanupMode.unregister_only)
self.machine.remove(delete=True)