diff options
| -rw-r--r-- | nova/tests/virt/libvirt/test_libvirt.py | 11 | ||||
| -rwxr-xr-x | nova/virt/libvirt/driver.py | 9 | ||||
| -rwxr-xr-x | nova/virt/libvirt/utils.py | 7 |
3 files changed, 20 insertions, 7 deletions
diff --git a/nova/tests/virt/libvirt/test_libvirt.py b/nova/tests/virt/libvirt/test_libvirt.py index 16417b8bb..cd5dc6f4d 100644 --- a/nova/tests/virt/libvirt/test_libvirt.py +++ b/nova/tests/virt/libvirt/test_libvirt.py @@ -4554,6 +4554,17 @@ class LibvirtUtilsTestCase(test.TestCase): result = libvirt_utils.get_iscsi_initiator() self.assertEqual(initiator, result) + def test_get_missing_iscsi_initiator(self): + self.mox.StubOutWithMock(utils, 'execute') + file_path = '/etc/iscsi/initiatorname.iscsi' + utils.execute('cat', file_path, run_as_root=True).AndRaise( + exception.FileNotFound(file_path=file_path) + ) + # Start test + self.mox.ReplayAll() + result = libvirt_utils.get_iscsi_initiator() + self.assertIsNone(result) + def test_create_image(self): self.mox.StubOutWithMock(utils, 'execute') utils.execute('qemu-img', 'create', '-f', 'raw', diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index be90c7d32..5df9a1ef8 100755 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -952,15 +952,12 @@ class LibvirtDriver(driver.ComputeDriver): 'world wide port names'), instance=instance) - if not self._initiator and not self._fc_wwnns and not self._fc_wwpns: - msg = _("No Volume Connector found.") - LOG.error(msg) - raise exception.NovaException(msg) - connector = {'ip': CONF.my_ip, - 'initiator': self._initiator, 'host': CONF.host} + if self._initiator: + connector['initiator'] = self._initiator + if self._fc_wwnns and self._fc_wwpns: connector["wwnns"] = self._fc_wwnns connector["wwpns"] = self._fc_wwpns diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index 4da7d4f22..3ae366481 100755 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -26,6 +26,7 @@ import os from lxml import etree from oslo.config import cfg +from nova import exception from nova.openstack.common import log as logging from nova.openstack.common import processutils from nova import utils @@ -52,7 +53,11 @@ def get_iscsi_initiator(): """Get iscsi initiator name for this machine.""" # NOTE(vish) openiscsi stores initiator name in a file that # needs root permission to read. - contents = utils.read_file_as_root('/etc/iscsi/initiatorname.iscsi') + try: + contents = utils.read_file_as_root('/etc/iscsi/initiatorname.iscsi') + except exception.FileNotFound: + return None + for l in contents.split('\n'): if l.startswith('InitiatorName='): return l[l.index('=') + 1:].strip() |
