diff options
author | Tony Asleson <tasleson@redhat.com> | 2022-09-08 15:39:30 -0500 |
---|---|---|
committer | Tony Asleson <tasleson@redhat.com> | 2022-09-16 10:49:37 -0500 |
commit | d51fb57f1abf9e24aa8c74df5ffd717e2d45c103 (patch) | |
tree | fa7b1ded86c7722085633a738fad126656eb7548 /daemons | |
parent | feaf46863b4d53ee352b451c8f6f6ce8b77a15cc (diff) | |
download | lvm2-d51fb57f1abf9e24aa8c74df5ffd717e2d45c103.tar.gz |
lvmdbusd: Check for KeyError in refresh
Bubble up a LvmBug if we get a KeyError on a lvm column name.
Diffstat (limited to 'daemons')
-rw-r--r-- | daemons/lvmdbusd/lvmdb.py.in | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/daemons/lvmdbusd/lvmdb.py.in b/daemons/lvmdbusd/lvmdb.py.in index 2346d01e9..8d0cc59e1 100644 --- a/daemons/lvmdbusd/lvmdb.py.in +++ b/daemons/lvmdbusd/lvmdb.py.in @@ -15,7 +15,7 @@ import pprint as prettyprint import os from lvmdbusd import cmdhandler -from lvmdbusd.utils import log_debug, log_error +from lvmdbusd.utils import log_debug, log_error, lvm_column_key, LvmBug class DataStore(object): @@ -309,32 +309,38 @@ class DataStore(object): :param log Add debug log entry/exit messages :return: None """ - self.num_refreshes += 1 - if log: - log_debug("lvmdb - refresh entry") - - # Grab everything first then parse it - # Do a single lvm retrieve for everything in json - a = cmdhandler.lvm_full_report_json() - - _pvs, _pvs_lookup, _pvs_in_vgs = self._parse_pvs_json(a) - _vgs, _vgs_lookup = self._parse_vgs_json(a) - _lvs, _lvs_in_vgs, _lvs_hidden, _lvs_lookup = self._parse_lvs_json(a) - - # Set all - self.pvs = _pvs - self.pv_path_to_uuid = _pvs_lookup - self.vg_name_to_uuid = _vgs_lookup - self.lv_full_name_to_uuid = _lvs_lookup - - self.vgs = _vgs - self.lvs = _lvs - self.lvs_in_vgs = _lvs_in_vgs - self.pvs_in_vgs = _pvs_in_vgs - self.lvs_hidden = _lvs_hidden - - # Create lookup table for which LV and segments are on each PV - self.pv_lvs, self.lv_pvs = self._parse_pv_in_lvs() + try: + self.num_refreshes += 1 + if log: + log_debug("lvmdb - refresh entry") + + # Grab everything first then parse it + # Do a single lvm retrieve for everything in json + a = cmdhandler.lvm_full_report_json() + + _pvs, _pvs_lookup, _pvs_in_vgs = self._parse_pvs_json(a) + _vgs, _vgs_lookup = self._parse_vgs_json(a) + _lvs, _lvs_in_vgs, _lvs_hidden, _lvs_lookup = self._parse_lvs_json(a) + + # Set all + self.pvs = _pvs + self.pv_path_to_uuid = _pvs_lookup + self.vg_name_to_uuid = _vgs_lookup + self.lv_full_name_to_uuid = _lvs_lookup + + self.vgs = _vgs + self.lvs = _lvs + self.lvs_in_vgs = _lvs_in_vgs + self.pvs_in_vgs = _pvs_in_vgs + self.lvs_hidden = _lvs_hidden + + # Create lookup table for which LV and segments are on each PV + self.pv_lvs, self.lv_pvs = self._parse_pv_in_lvs() + except KeyError as ke: + key = ke.args[0] + if lvm_column_key(key): + raise LvmBug("missing JSON key: '%s'" % key) + raise ke if log: log_debug("lvmdb - refresh exit") |