diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py index e83fbd8dff8..eb535520a39 100644 --- a/cloudinit/config/cc_mounts.py +++ b/cloudinit/config/cc_mounts.py @@ -508,6 +508,7 @@ def mount_if_needed( do_mount = bool(set(dirs).difference(mount_points)) if do_mount: + util.udevadm_settle() subp.subp(["mount", "-a"]) if uses_systemd: subp.subp(["systemctl", "daemon-reload"]) diff --git a/tests/unittests/config/test_cc_mounts.py b/tests/unittests/config/test_cc_mounts.py index 7da080544fb..1d23f725674 100644 --- a/tests/unittests/config/test_cc_mounts.py +++ b/tests/unittests/config/test_cc_mounts.py @@ -298,6 +298,9 @@ def setup(self, mocker, fake_fs): fake_fs.create_dir("/etc") self.m_subp = mocker.patch(f"{M_PATH}subp.subp") + self.m_udevadm_settle = mocker.patch( + f"{M_PATH}util.udevadm_settle" + ) self.m_mounts = mocker.patch( f"{M_PATH}util.mounts", return_value={ @@ -473,6 +476,7 @@ def test_no_change_fstab_sets_needs_mount_all(self): with open(cc_mounts.FSTAB_PATH, "r") as fd: fstab_new_content = fd.read() assert fstab_original_content == fstab_new_content.strip() + self.m_udevadm_settle.assert_called_once_with() self.m_subp.assert_has_calls( [ mock.call(["mount", "-a"]),