e = OrchestratorEvent(datetime.datetime.utcnow(), 'service', spec.service_name(), level, message)
self.add(e)
+ def from_orch_error(self, e: OrchestratorError):
+ if e.event_subject is not None:
+ self.add(OrchestratorEvent(
+ datetime.datetime.utcnow(),
+ e.event_subject[0],
+ e.event_subject[1],
+ "ERROR",
+ str(e)
+ ))
+
+
def for_daemon(self, daemon_name, level, message):
e = OrchestratorEvent(datetime.datetime.utcnow(), 'daemon', daemon_name, level, message)
self.add(e)
+ def for_daemon_from_exception(self, daemon_name, e: Exception):
+ self.for_daemon(
+ daemon_name,
+ "ERROR",
+ str(e)
+ )
+
def cleanup(self) -> None:
# Needs to be properly done, in case events are persistently stored.
except OrchestratorError as e:
if e.event_subject:
- self.events.add(OrchestratorEvent(
- datetime.datetime.utcnow(),
- e.event_subject[0],
- e.event_subject[1],
- "ERROR",
- str(e)
- ))
+ self.events.from_orch_error(e)
self._serve_sleep()
self.log.debug("serve exit")
self.log.info('Reconfiguring %s (monmap changed)...' % dd.name())
reconfig = True
if reconfig:
- self._create_daemon(
- CephadmDaemonSpec(
- host=dd.hostname,
- daemon_id=dd.daemon_id,
- daemon_type=dd.daemon_type),
- reconfig=True)
+ try:
+ self._create_daemon(
+ CephadmDaemonSpec(
+ host=dd.hostname,
+ daemon_id=dd.daemon_id,
+ daemon_type=dd.daemon_type),
+ reconfig=True)
+ except OrchestratorError as e:
+ self.events.from_orch_error(e)
+ # continue...
+ except Exception as e:
+ self.events.for_daemon_from_exception(dd.name(), e)
+ # continue...
# do daemon post actions
for daemon_type, daemon_descs in daemons_post.items():