Ensure that the dom0 we're connected to is the right one
The XenAPI driver requires the compute domU be running on the same host as specified by xenapi_connection_url. Check that we can find the compute domU on the host connected to before going too far. Change-Id: I2a56fa305b6379a7ea97f04240e627bb13223c9f
This commit is contained in:
parent
7ff82ea4ce
commit
c5a9c75502
@ -90,6 +90,10 @@ xenapi_opts = [
|
||||
default=5.0,
|
||||
help='The interval used for polling of coalescing vhds. '
|
||||
'Used only if connection_type=xenapi.'),
|
||||
cfg.BoolOpt('xenapi_check_host',
|
||||
default=True,
|
||||
help='Ensure compute service is running on host XenAPI '
|
||||
'connects to.'),
|
||||
cfg.IntOpt('xenapi_vhd_coalesce_max_attempts',
|
||||
default=5,
|
||||
help='Max number of times to poll for VHD to coalesce. '
|
||||
@ -166,6 +170,9 @@ class XenAPIConnection(driver.ComputeDriver):
|
||||
return self._host_state
|
||||
|
||||
def init_host(self, host):
|
||||
if FLAGS.xenapi_check_host:
|
||||
vm_utils.ensure_correct_host(self._session)
|
||||
|
||||
try:
|
||||
vm_utils.cleanup_attached_vdis(self._session)
|
||||
except Exception:
|
||||
|
@ -1819,3 +1819,17 @@ def _prepare_injectables(inst, networks_info):
|
||||
searchList=[{'interfaces': interfaces_info,
|
||||
'use_ipv6': FLAGS.use_ipv6}]))
|
||||
return key, net, metadata
|
||||
|
||||
|
||||
def ensure_correct_host(session):
|
||||
"""Ensure we're connected to the host we're running on. This is the
|
||||
required configuration for anything that uses vdi_attached_here."""
|
||||
this_vm_uuid = get_this_vm_uuid()
|
||||
|
||||
try:
|
||||
session.call_xenapi('VM.get_by_uuid', this_vm_uuid)
|
||||
except session.XenAPI.Failure as exc:
|
||||
if exc.details[0] != 'UUID_INVALID':
|
||||
raise
|
||||
raise Exception(_('This domU must be running on the host '
|
||||
'specified by xenapi_connection_url'))
|
||||
|
Loading…
Reference in New Issue
Block a user