core/hvm: check if VM serving cdrom content is running
This commit is contained in:
parent
4a01c53787
commit
8f862cdf69
@ -329,6 +329,10 @@ class QubesHVm(QubesVm):
|
||||
return -1
|
||||
|
||||
def start(self, *args, **kwargs):
|
||||
# make it available to storage.prepare_for_vm_startup, which is
|
||||
# called before actually building VM libvirt configuration
|
||||
self.storage.drive = self.drive
|
||||
|
||||
if self.template and self.template.is_running():
|
||||
raise QubesException("Cannot start the HVM while its template is running")
|
||||
try:
|
||||
|
@ -226,3 +226,24 @@ class QubesXenVmStorage(QubesVmStorage):
|
||||
return
|
||||
super(QubesXenVmStorage, self).reset_volatile_storage(
|
||||
verbose=verbose, source_template=source_template)
|
||||
|
||||
def prepare_for_vm_startup(self, verbose):
|
||||
super(QubesXenVmStorage, self).prepare_for_vm_startup(verbose=verbose)
|
||||
|
||||
if self.drive is not None:
|
||||
(drive_type, drive_domain, drive_path) = self.drive.split(":")
|
||||
if drive_domain.lower() != "dom0":
|
||||
try:
|
||||
# FIXME: find a better way to access QubesVmCollection
|
||||
drive_vm = self.vm._collection.get_vm_by_name(drive_domain)
|
||||
# prepare for improved QubesVmCollection
|
||||
if drive_vm is None:
|
||||
raise KeyError
|
||||
if not drive_vm.is_running():
|
||||
raise QubesException(
|
||||
"VM '{}' holding '{}' isn't running".format(
|
||||
drive_domain, drive_path))
|
||||
except KeyError:
|
||||
raise QubesException(
|
||||
"VM '{}' holding '{}' does not exists".format(
|
||||
drive_domain, drive_path))
|
||||
|
Loading…
Reference in New Issue
Block a user