Public bug reported: Description ===========
When there is /etc/machine-id file missing on host, unit tests rescue in Libvirt driver case are failing with NovaException. It seems that this file shall be generated by systemd (https://www.freedesktop.org/software/systemd/man/machine-id.html), but it is not present on all platforms by default (like 'ubuntu:xenial' container). It may be potentially problematic on some CI/dev- environments that are testing if unit-tests are passing. Steps to reproduce ================== * Launch Docker container 'ubuntu:xenial' * Setup repository and install build-dep for Nova * Clone Nova from Github * Run: tox -e py27 'nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase' Expected result =============== The unit tests shall be platform-independent, right? Therefore in nova/tests/unit/virt/libvirt/test_driver.py there should be a mock for /etc/machine-id file. Actual result ============= The tests nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive and nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue are failing due to '**nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty**'. Environment =========== Clean 'ubuntu:xenial' Docker container with just build-deps for Nova from cloud-archive. Logs & Configs ============== For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/virt/libvirt/test_driver.py", line 16387, in test_rescue backend, doc = self._test_rescue(instance) File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue network_info, image_meta, rescue_password) File "nova/virt/libvirt/driver.py", line 2527, in rescue unrescue_xml = self._get_existing_domain_xml(instance, network_info) File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml block_device_info=block_device_info) File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml context) File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config root_device_name) File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type guest.sysinfo = self._get_guest_config_sysinfo(instance) File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo sysinfo.system_serial = self._sysinfo_serial_func() File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto return self._get_host_sysinfo_serial_os() File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os raise exception.NovaException(msg) nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16426, in test_rescue_config_drive instance, exists=lambda name: name != 'disk.config.rescue') File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue network_info, image_meta, rescue_password) File "nova/virt/libvirt/driver.py", line 2527, in rescue unrescue_xml = self._get_existing_domain_xml(instance, network_info) File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml block_device_info=block_device_info) File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml context) File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config root_device_name) File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type guest.sysinfo = self._get_guest_config_sysinfo(instance) File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo sysinfo.system_serial = self._sysinfo_serial_func() File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto return self._get_host_sysinfo_serial_os() File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os raise exception.NovaException(msg) nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` ** Affects: nova Importance: Medium Assignee: Szymon Datko (fenekpl) Status: Confirmed ** Tags: machine-id systemd ** Changed in: nova Assignee: (unassigned) => Szymon Datko (fenekpl) ** Description changed: Description =========== When there is /etc/machine-id file missing on host, unit tests rescue in Libvirt driver case are failing with NovaException. It seems that this file shall be generated by systemd (https://www.freedesktop.org/software/systemd/man/machine-id.html), but it is not present on all platforms by default (like 'ubuntu:xenial' container). It may be potentially problematic on some CI/dev- environments that are testing if unit-tests are passing. - Steps to reproduce ================== * Launch Docker container 'ubuntu:xenial' * Setup repository and install build-dep for Nova * Clone Nova from Github * Run: tox -e py27 'nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase' - Expected result =============== - The unit tests shall be platform-independent, right? - Therefore in nova/tests/unit/virt/libvirt/test_driver.py there should be a mock for /etc/machine-id file. - + The unit tests shall be platform-independent, right? + Therefore in nova/tests/unit/virt/libvirt/test_driver.py there should be a mock for /etc/machine-id file. Actual result ============= The tests - nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive + ***nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive*** and - nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue - are failing due to 'nova.exception.NovaException: Unable to get host - UUID: /etc/machine-id is empty'. - + ***nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue*** + are failing due to '**nova.exception.NovaException: Unable to get host + UUID: /etc/machine-id is empty**'. Environment =========== Clean 'ubuntu:xenial' Docker container with just build-deps for Nova from cloud-archive. - Logs & Configs ============== For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ - Traceback (most recent call last): - File "nova/tests/unit/virt/libvirt/test_driver.py", line 16387, in test_rescue - backend, doc = self._test_rescue(instance) - File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched - return func(*args, **keywargs) - File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue - network_info, image_meta, rescue_password) - File "nova/virt/libvirt/driver.py", line 2527, in rescue - unrescue_xml = self._get_existing_domain_xml(instance, network_info) - File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml - block_device_info=block_device_info) - File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml - context) - File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config - root_device_name) - File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type - guest.sysinfo = self._get_guest_config_sysinfo(instance) - File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo - sysinfo.system_serial = self._sysinfo_serial_func() - File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto - return self._get_host_sysinfo_serial_os() - File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os - raise exception.NovaException(msg) - nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty + Traceback (most recent call last): + File "nova/tests/unit/virt/libvirt/test_driver.py", line 16387, in test_rescue + backend, doc = self._test_rescue(instance) + File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched + return func(*args, **keywargs) + File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue + network_info, image_meta, rescue_password) + File "nova/virt/libvirt/driver.py", line 2527, in rescue + unrescue_xml = self._get_existing_domain_xml(instance, network_info) + File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml + block_device_info=block_device_info) + File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml + context) + File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config + root_device_name) + File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type + guest.sysinfo = self._get_guest_config_sysinfo(instance) + File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo + sysinfo.system_serial = self._sysinfo_serial_func() + File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto + return self._get_host_sysinfo_serial_os() + File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os + raise exception.NovaException(msg) + nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ - Traceback (most recent call last): - File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched - return func(*args, **keywargs) - File "nova/tests/unit/virt/libvirt/test_driver.py", line 16426, in test_rescue_config_drive - instance, exists=lambda name: name != 'disk.config.rescue') - File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched - return func(*args, **keywargs) - File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue - network_info, image_meta, rescue_password) - File "nova/virt/libvirt/driver.py", line 2527, in rescue - unrescue_xml = self._get_existing_domain_xml(instance, network_info) - File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml - block_device_info=block_device_info) - File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml - context) - File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config - root_device_name) - File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type - guest.sysinfo = self._get_guest_config_sysinfo(instance) - File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo - sysinfo.system_serial = self._sysinfo_serial_func() - File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto - return self._get_host_sysinfo_serial_os() - File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os - raise exception.NovaException(msg) - nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty + Traceback (most recent call last): + File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched + return func(*args, **keywargs) + File "nova/tests/unit/virt/libvirt/test_driver.py", line 16426, in test_rescue_config_drive + instance, exists=lambda name: name != 'disk.config.rescue') + File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched + return func(*args, **keywargs) + File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue + network_info, image_meta, rescue_password) + File "nova/virt/libvirt/driver.py", line 2527, in rescue + unrescue_xml = self._get_existing_domain_xml(instance, network_info) + File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml + block_device_info=block_device_info) + File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml + context) + File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config + root_device_name) + File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type + guest.sysinfo = self._get_guest_config_sysinfo(instance) + File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo + sysinfo.system_serial = self._sysinfo_serial_func() + File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto + return self._get_host_sysinfo_serial_os() + File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os + raise exception.NovaException(msg) + nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` ** Description changed: Description =========== When there is /etc/machine-id file missing on host, unit tests rescue in Libvirt driver case are failing with NovaException. It seems that this file shall be generated by systemd (https://www.freedesktop.org/software/systemd/man/machine-id.html), but it is not present on all platforms by default (like 'ubuntu:xenial' container). It may be potentially problematic on some CI/dev- environments that are testing if unit-tests are passing. Steps to reproduce ================== * Launch Docker container 'ubuntu:xenial' * Setup repository and install build-dep for Nova * Clone Nova from Github * Run: tox -e py27 'nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase' Expected result =============== The unit tests shall be platform-independent, right? Therefore in nova/tests/unit/virt/libvirt/test_driver.py there should be a mock for /etc/machine-id file. Actual result ============= The tests - ***nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive*** + nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive and - ***nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue*** + nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue are failing due to '**nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty**'. Environment =========== Clean 'ubuntu:xenial' Docker container with just build-deps for Nova from cloud-archive. Logs & Configs ============== For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/virt/libvirt/test_driver.py", line 16387, in test_rescue backend, doc = self._test_rescue(instance) File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue network_info, image_meta, rescue_password) File "nova/virt/libvirt/driver.py", line 2527, in rescue unrescue_xml = self._get_existing_domain_xml(instance, network_info) File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml block_device_info=block_device_info) File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml context) File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config root_device_name) File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type guest.sysinfo = self._get_guest_config_sysinfo(instance) File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo sysinfo.system_serial = self._sysinfo_serial_func() File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto return self._get_host_sysinfo_serial_os() File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os raise exception.NovaException(msg) nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16426, in test_rescue_config_drive instance, exists=lambda name: name != 'disk.config.rescue') File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue network_info, image_meta, rescue_password) File "nova/virt/libvirt/driver.py", line 2527, in rescue unrescue_xml = self._get_existing_domain_xml(instance, network_info) File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml block_device_info=block_device_info) File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml context) File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config root_device_name) File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type guest.sysinfo = self._get_guest_config_sysinfo(instance) File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo sysinfo.system_serial = self._sysinfo_serial_func() File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto return self._get_host_sysinfo_serial_os() File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os raise exception.NovaException(msg) nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1640502 Title: Missing /etc/machine-id causes failure in unit tests Status in OpenStack Compute (nova): Confirmed Bug description: Description =========== When there is /etc/machine-id file missing on host, unit tests rescue in Libvirt driver case are failing with NovaException. It seems that this file shall be generated by systemd (https://www.freedesktop.org/software/systemd/man/machine-id.html), but it is not present on all platforms by default (like 'ubuntu:xenial' container). It may be potentially problematic on some CI/dev-environments that are testing if unit-tests are passing. Steps to reproduce ================== * Launch Docker container 'ubuntu:xenial' * Setup repository and install build-dep for Nova * Clone Nova from Github * Run: tox -e py27 'nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase' Expected result =============== The unit tests shall be platform-independent, right? Therefore in nova/tests/unit/virt/libvirt/test_driver.py there should be a mock for /etc/machine-id file. Actual result ============= The tests nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive and nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue are failing due to '**nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty**'. Environment =========== Clean 'ubuntu:xenial' Docker container with just build-deps for Nova from cloud-archive. Logs & Configs ============== For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "nova/tests/unit/virt/libvirt/test_driver.py", line 16387, in test_rescue backend, doc = self._test_rescue(instance) File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue network_info, image_meta, rescue_password) File "nova/virt/libvirt/driver.py", line 2527, in rescue unrescue_xml = self._get_existing_domain_xml(instance, network_info) File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml block_device_info=block_device_info) File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml context) File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config root_device_name) File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type guest.sysinfo = self._get_guest_config_sysinfo(instance) File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo sysinfo.system_serial = self._sysinfo_serial_func() File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto return self._get_host_sysinfo_serial_os() File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os raise exception.NovaException(msg) nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` For nova.tests.unit.virt.libvirt.test_driver.LibvirtDriverTestCase.test_rescue_config_drive: ``` Captured traceback: ~~~~~~~~~~~~~~~~~~~ Traceback (most recent call last): File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16426, in test_rescue_config_drive instance, exists=lambda name: name != 'disk.config.rescue') File "/TEST/nova/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched return func(*args, **keywargs) File "nova/tests/unit/virt/libvirt/test_driver.py", line 16379, in _test_rescue network_info, image_meta, rescue_password) File "nova/virt/libvirt/driver.py", line 2527, in rescue unrescue_xml = self._get_existing_domain_xml(instance, network_info) File "nova/virt/libvirt/driver.py", line 1270, in _get_existing_domain_xml block_device_info=block_device_info) File "nova/virt/libvirt/driver.py", line 4677, in _get_guest_xml context) File "nova/virt/libvirt/driver.py", line 4494, in _get_guest_config root_device_name) File "nova/virt/libvirt/driver.py", line 4299, in _configure_guest_by_virt_type guest.sysinfo = self._get_guest_config_sysinfo(instance) File "nova/virt/libvirt/driver.py", line 3596, in _get_guest_config_sysinfo sysinfo.system_serial = self._sysinfo_serial_func() File "nova/virt/libvirt/driver.py", line 3585, in _get_host_sysinfo_serial_auto return self._get_host_sysinfo_serial_os() File "nova/virt/libvirt/driver.py", line 3579, in _get_host_sysinfo_serial_os raise exception.NovaException(msg) nova.exception.NovaException: Unable to get host UUID: /etc/machine-id is empty ``` To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1640502/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

