make journal event handling more generic and also not drop events
This commit is contained in:
parent
2c6fb9ed99
commit
5ab2f6c972
|
@ -95,10 +95,7 @@ class InstallProgressController(BaseController):
|
||||||
log.debug("completed %s", cmd)
|
log.debug("completed %s", cmd)
|
||||||
return cp.returncode
|
return cp.returncode
|
||||||
|
|
||||||
def curtin_event(self):
|
def curtin_event(self, event):
|
||||||
if self.journal_reader.process() != journal.APPEND:
|
|
||||||
return
|
|
||||||
event = self.journal_reader.get_next()
|
|
||||||
event_type = event.get("CURTIN_EVENT_TYPE")
|
event_type = event.get("CURTIN_EVENT_TYPE")
|
||||||
if random.randrange(1000) == 0 or len(event) > 0:
|
if random.randrange(1000) == 0 or len(event) > 0:
|
||||||
log.debug("got curtin event from journald: %r", event)
|
log.debug("got curtin event from journald: %r", event)
|
||||||
|
@ -117,11 +114,16 @@ class InstallProgressController(BaseController):
|
||||||
desc = ""
|
desc = ""
|
||||||
self.ui.set_footer("Running install... %s" % (desc,))
|
self.ui.set_footer("Running install... %s" % (desc,))
|
||||||
|
|
||||||
def start_event_listener(self):
|
def start_journald_listener(self, identifier, callback):
|
||||||
self.journal_reader = journal.Reader()
|
reader = journal.Reader()
|
||||||
self.journal_reader.seek_tail()
|
reader.seek_tail()
|
||||||
self.journal_reader.add_match("SYSLOG_IDENTIFIER=curtin_event")
|
reader.add_match("SYSLOG_IDENTIFIER={}".format(identifier))
|
||||||
self.journal_reader_handle = self.loop.watch_file(self.journal_reader.fileno(), self.curtin_event)
|
def watch():
|
||||||
|
if reader.process() != journal.APPEND:
|
||||||
|
return
|
||||||
|
for event in reader:
|
||||||
|
callback(event)
|
||||||
|
self.loop.watch_file(reader.fileno(), watch)
|
||||||
|
|
||||||
def curtin_start_install(self):
|
def curtin_start_install(self):
|
||||||
log.debug('Curtin Install: calling curtin with '
|
log.debug('Curtin Install: calling curtin with '
|
||||||
|
@ -131,7 +133,7 @@ class InstallProgressController(BaseController):
|
||||||
|
|
||||||
self.start_journald_forwarder()
|
self.start_journald_forwarder()
|
||||||
|
|
||||||
self.start_event_listener()
|
self.start_journald_listener("curtin_event", self.curtin_event)
|
||||||
|
|
||||||
curtin_write_reporting_config(self.reporting_url)
|
curtin_write_reporting_config(self.reporting_url)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue