]> sourceware.org Git - lvm2.git/commitdiff
lvmdbusd: Ensure vg_uuid is present
authorTony Asleson <tasleson@redhat.com>
Wed, 20 Sep 2017 21:39:35 +0000 (16:39 -0500)
committerTony Asleson <tasleson@redhat.com>
Thu, 21 Sep 2017 19:35:36 +0000 (14:35 -0500)
In some cases we are seeing where there are no VGs, but the data returned from
lvm shows that the PVs have the following for the VG:

"vg_name":"[unknown]", "vg_uuid":""

The code was only checking for the exitence of the VG name and we called into
the function get_object_path_by_uuid_lvm_id which requires both the VG name and
the LV name to exist (asserts this) which results in the following stack trace:

Traceback (most recent call last):
  File "/home/tasleson/lvm2/daemons/lvmdbusd/utils.py", line 563, in runner
    obj._run()
  File "/home/tasleson/lvm2/daemons/lvmdbusd/utils.py", line 584, in _run
    self.rc = self.f(*self.args)
  File "/home/tasleson/lvm2/daemons/lvmdbusd/fetch.py", line 26, in
_main_thread_load
    cache_refresh=False)[1]
  File "/home/tasleson/lvm2/daemons/lvmdbusd/pv.py", line 48, in load_pvs
    emit_signal, cache_refresh)
  File "/home/tasleson/lvm2/daemons/lvmdbusd/loader.py", line 37, in common
    objects = retrieve(search_keys, cache_refresh=False)
  File "/home/tasleson/lvm2/daemons/lvmdbusd/pv.py", line 40, in
pvs_state_retrieve
    p["pv_attr"], p["pv_tags"], p["vg_name"], p["vg_uuid"]))
  File "/home/tasleson/lvm2/daemons/lvmdbusd/pv.py", line 84, in __init__
    vg_uuid, vg_name, vg_obj_path_generate)
  File "/home/tasleson/lvm2/daemons/lvmdbusd/objectmanager.py", line 318,
in get_object_path_by_uuid_lvm_id
    assert uuid
AssertionError

daemons/lvmdbusd/pv.py

index fe321431afece8323cb782e0ffed4a18969f6641..e5f8b9d38ec9bfd190c584da9879b59e8f971177 100644 (file)
@@ -79,7 +79,9 @@ class PvState(State):
 
                self.lv = self._lv_object_list(vg_name)
 
-               if vg_name:
+               # It's possible to have a vg_name and no uuid with the main example
+               # being when the vg_name == '[unknown]'
+               if vg_uuid and vg_name:
                        self.vg_path = cfg.om.get_object_path_by_uuid_lvm_id(
                                vg_uuid, vg_name, vg_obj_path_generate)
                else:
This page took 0.033872 seconds and 5 git commands to generate.