Merge "Raise NovaException for missing/empty machine-id"
This commit is contained in:
commit
3ff6499a68
|
@ -3761,27 +3761,44 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||||
|
|
||||||
self._test_get_guest_config_sysinfo_serial(theuuid)
|
self._test_get_guest_config_sysinfo_serial(theuuid)
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
|
def patch_exists(self, result):
|
||||||
|
real_exists = os.path.exists
|
||||||
|
|
||||||
|
def fake_exists(filename):
|
||||||
|
if filename == "/etc/machine-id":
|
||||||
|
return result
|
||||||
|
return real_exists(filename)
|
||||||
|
|
||||||
|
with mock.patch.object(os.path, "exists") as mock_exists:
|
||||||
|
mock_exists.side_effect = fake_exists
|
||||||
|
yield mock_exists
|
||||||
|
|
||||||
def test_get_guest_config_sysinfo_serial_os(self):
|
def test_get_guest_config_sysinfo_serial_os(self):
|
||||||
self.flags(sysinfo_serial="os", group="libvirt")
|
self.flags(sysinfo_serial="os", group="libvirt")
|
||||||
|
theuuid = "56b40135-a973-4eb3-87bb-a2382a3e6dbc"
|
||||||
real_open = builtins.open
|
|
||||||
with contextlib.nested(
|
with contextlib.nested(
|
||||||
mock.patch.object(builtins, "open"),
|
mock.patch('__builtin__.open',
|
||||||
) as (mock_open, ):
|
mock.mock_open(read_data=theuuid)),
|
||||||
theuuid = "56b40135-a973-4eb3-87bb-a2382a3e6dbc"
|
self.patch_exists(True)):
|
||||||
|
|
||||||
def fake_open(filename, *args, **kwargs):
|
|
||||||
if filename == "/etc/machine-id":
|
|
||||||
h = mock.MagicMock()
|
|
||||||
h.read.return_value = theuuid
|
|
||||||
h.__enter__.return_value = h
|
|
||||||
return h
|
|
||||||
return real_open(filename, *args, **kwargs)
|
|
||||||
|
|
||||||
mock_open.side_effect = fake_open
|
|
||||||
|
|
||||||
self._test_get_guest_config_sysinfo_serial(theuuid)
|
self._test_get_guest_config_sysinfo_serial(theuuid)
|
||||||
|
|
||||||
|
def test_get_guest_config_sysinfo_serial_os_empty_machine_id(self):
|
||||||
|
self.flags(sysinfo_serial="os", group="libvirt")
|
||||||
|
with contextlib.nested(
|
||||||
|
mock.patch('__builtin__.open', mock.mock_open(read_data="")),
|
||||||
|
self.patch_exists(True)):
|
||||||
|
self.assertRaises(exception.NovaException,
|
||||||
|
self._test_get_guest_config_sysinfo_serial,
|
||||||
|
None)
|
||||||
|
|
||||||
|
def test_get_guest_config_sysinfo_serial_os_no_machine_id_file(self):
|
||||||
|
self.flags(sysinfo_serial="os", group="libvirt")
|
||||||
|
with self.patch_exists(False):
|
||||||
|
self.assertRaises(exception.NovaException,
|
||||||
|
self._test_get_guest_config_sysinfo_serial,
|
||||||
|
None)
|
||||||
|
|
||||||
def test_get_guest_config_sysinfo_serial_auto_hardware(self):
|
def test_get_guest_config_sysinfo_serial_auto_hardware(self):
|
||||||
self.flags(sysinfo_serial="auto", group="libvirt")
|
self.flags(sysinfo_serial="auto", group="libvirt")
|
||||||
|
|
||||||
|
|
|
@ -3396,10 +3396,19 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||||
systemd based containers and can be provided by other
|
systemd based containers and can be provided by other
|
||||||
init systems too, since it is just a plain text file.
|
init systems too, since it is just a plain text file.
|
||||||
"""
|
"""
|
||||||
|
if not os.path.exists("/etc/machine-id"):
|
||||||
|
msg = _("Unable to get host UUID: /etc/machine-id does not exist")
|
||||||
|
raise exception.NovaException(msg)
|
||||||
|
|
||||||
with open("/etc/machine-id") as f:
|
with open("/etc/machine-id") as f:
|
||||||
# We want to have '-' in the right place
|
# We want to have '-' in the right place
|
||||||
# so we parse & reformat the value
|
# so we parse & reformat the value
|
||||||
return str(uuid.UUID(f.read().split()[0]))
|
lines = f.read().split()
|
||||||
|
if not lines:
|
||||||
|
msg = _("Unable to get host UUID: /etc/machine-id is empty")
|
||||||
|
raise exception.NovaException(msg)
|
||||||
|
|
||||||
|
return str(uuid.UUID(lines[0]))
|
||||||
|
|
||||||
def _get_host_sysinfo_serial_auto(self):
|
def _get_host_sysinfo_serial_auto(self):
|
||||||
if os.path.exists("/etc/machine-id"):
|
if os.path.exists("/etc/machine-id"):
|
||||||
|
|
Loading…
Reference in New Issue