From: Michael Fritch Date: Fri, 13 Nov 2020 17:06:48 +0000 (-0700) Subject: mgr/cephadm: verify the `host` key exists during refresh X-Git-Tag: v15.2.9~88^2~26 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4a0fe0c7dc4e95ad548e097c62b2736b6e9ba571;p=ceph.git mgr/cephadm: verify the `host` key exists during refresh various parts of the host cache might not have a key for the desired host due to ssh communication issues during host add/remove Fixes: https://tracker.ceph.com/issues/48223 Signed-off-by: Michael Fritch (cherry picked from commit 218d00c8ed8e3d1df2f08ce5d89ec9ddd4f07630) --- diff --git a/src/pybind/mgr/cephadm/inventory.py b/src/pybind/mgr/cephadm/inventory.py index 274145fa22d..f17a7bd257c 100644 --- a/src/pybind/mgr/cephadm/inventory.py +++ b/src/pybind/mgr/cephadm/inventory.py @@ -346,17 +346,21 @@ class HostCache(): j['last_daemon_update'] = datetime_to_str(self.last_daemon_update[host]) if host in self.last_device_update: j['last_device_update'] = datetime_to_str(self.last_device_update[host]) - for name, dd in self.daemons[host].items(): - j['daemons'][name] = dd.to_json() - for d in self.devices[host]: - j['devices'].append(d.to_json()) - j['networks'] = self.networks[host] - for name, depi in self.daemon_config_deps[host].items(): - j['daemon_config_deps'][name] = { - 'deps': depi.get('deps', []), - 'last_config': datetime_to_str(depi['last_config']), - } - if self.osdspec_previews[host]: + if host in self.daemons: + for name, dd in self.daemons[host].items(): + j['daemons'][name] = dd.to_json() + if host in self.devices: + for d in self.devices[host]: + j['devices'].append(d.to_json()) + if host in self.networks: + j['networks'] = self.networks[host] + if host in self.daemon_config_deps: + for name, depi in self.daemon_config_deps[host].items(): + j['daemon_config_deps'][name] = { + 'deps': depi.get('deps', []), + 'last_config': datetime_to_str(depi['last_config']), + } + if host in self.osdspec_previews and self.osdspec_previews[host]: j['osdspec_previews'] = self.osdspec_previews[host] if host in self.last_host_check: @@ -364,7 +368,7 @@ class HostCache(): if host in self.last_etc_ceph_ceph_conf: j['last_etc_ceph_ceph_conf'] = datetime_to_str(self.last_etc_ceph_ceph_conf[host]) - if self.scheduled_daemon_actions.get(host, {}): + if host in self.scheduled_daemon_actions: j['scheduled_daemon_actions'] = self.scheduled_daemon_actions[host] self.mgr.set_store(HOST_CACHE_PREFIX + host, json.dumps(j))