Merge pull request #840 from mwhudson/restart-client-on-server-update

restart the client if the server is updated
This commit is contained in:
Michael Hudson-Doyle 2020-09-23 15:02:04 +12:00 committed by GitHub
commit 379b981ce4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -151,6 +151,7 @@ class Subiquity(TuiApplication):
self.help_menu = HelpMenu(self) self.help_menu = HelpMenu(self)
super().__init__(opts) super().__init__(opts)
self.server_updated = None
self.restarting_server = False self.restarting_server = False
self.prober = Prober(opts.machine_config, self.debug_flags) self.prober = Prober(opts.machine_config, self.debug_flags)
journald_listen( journald_listen(
@ -313,8 +314,14 @@ class Subiquity(TuiApplication):
os.system('stty sane') os.system('stty sane')
def resp_hook(self, response): def resp_hook(self, response):
if response.headers.get('x-error-report') is not None: headers = response.headers
ref = from_json(ErrorReportRef, response.headers['x-error-report']) if 'x-updated' in headers:
if self.server_updated is None:
self.server_updated = headers['x-updated']
elif self.server_updated != headers['x-updated']:
self.restart(remove_last_screen=False)
if headers.get('x-error-report') is not None:
ref = from_json(ErrorReportRef, headers['x-error-report'])
raise Abort(ref) raise Abort(ref)
try: try:
response.raise_for_status() response.raise_for_status()

View File

@ -79,7 +79,12 @@ class SubiquityServer(Application):
@web.middleware @web.middleware
async def middleware(self, request, handler): async def middleware(self, request, handler):
if self.updated:
updated = 'yes'
else:
updated = 'no'
resp = await handler(request) resp = await handler(request)
resp.headers['x-updated'] = updated
if resp.get('exception'): if resp.get('exception'):
exc = resp['exception'] exc = resp['exception']
log.debug( log.debug(