handle skipping controllers and confirmation in client/server calls
This commit is contained in:
parent
9cb66cdc71
commit
a78cd1a021
|
@ -318,6 +318,11 @@ class Subiquity(TuiApplication):
|
|||
self.server_updated = headers['x-updated']
|
||||
elif self.server_updated != headers['x-updated']:
|
||||
self.restart(remove_last_screen=False)
|
||||
status = response.headers.get('x-status')
|
||||
if status == 'skip':
|
||||
raise Skip
|
||||
elif status == 'confirm':
|
||||
raise Confirm
|
||||
if headers.get('x-error-report') is not None:
|
||||
ref = from_json(ErrorReportRef, headers['x-error-report'])
|
||||
raise Abort(ref)
|
||||
|
|
|
@ -21,7 +21,10 @@ from aiohttp import web
|
|||
|
||||
from subiquitycore.core import Application
|
||||
|
||||
from subiquity.common.api.server import bind
|
||||
from subiquity.common.api.server import (
|
||||
bind,
|
||||
controller_for_request,
|
||||
)
|
||||
from subiquity.common.apidef import API
|
||||
from subiquity.common.errorreport import (
|
||||
ErrorReportKind,
|
||||
|
@ -32,6 +35,7 @@ from subiquity.common.types import (
|
|||
ApplicationState,
|
||||
ErrorReportRef,
|
||||
)
|
||||
from subiquity.server.controller import SubiquityController
|
||||
from subiquity.server.errors import ErrorController
|
||||
|
||||
|
||||
|
@ -83,6 +87,14 @@ class SubiquityServer(Application):
|
|||
updated = 'yes'
|
||||
else:
|
||||
updated = 'no'
|
||||
controller = await controller_for_request(request)
|
||||
if isinstance(controller, SubiquityController):
|
||||
if not controller.interactive():
|
||||
return web.Response(
|
||||
headers={'x-status': 'skip', 'x-updated': updated})
|
||||
elif self.base_model.needs_confirmation(controller.model_name):
|
||||
return web.Response(
|
||||
headers={'x-status': 'confirm', 'x-updated': updated})
|
||||
resp = await handler(request)
|
||||
resp.headers['x-updated'] = updated
|
||||
if resp.get('exception'):
|
||||
|
|
Loading…
Reference in New Issue