actually validate version field, reduce indentation a bit

This commit is contained in:
Michael Hudson-Doyle 2020-03-30 11:05:51 +13:00
parent 32e79826ad
commit 170f44663e
3 changed files with 40 additions and 29 deletions

View File

@ -57,6 +57,9 @@ probert:
(cd probert && $(PYTHON) setup.py build_ext -i); \
fi
schema: probert
$(PYTHON) -m subiquity.cmd.schema
clean:
./debian/rules clean

View File

@ -23,22 +23,8 @@ import jsonschema
from subiquity.cmd.tui import parse_options
from subiquity.core import Subiquity
base_schema = {
'type': 'object',
'properties': {
'version': {
'type': 'integer',
'minumum': 1,
'maximum': 1,
},
},
'required': ['version'],
'additionalProperties': True,
}
def make_schema(app):
schema = copy.deepcopy(base_schema)
schema = copy.deepcopy(app.base_schema)
for controller in app.controllers.instances:
ckey = getattr(controller, 'autoinstall_key', None)
if ckey is None:

View File

@ -23,6 +23,8 @@ import urwid
import apport.hookutils
import jsonschema
import yaml
from subiquitycore.async_helpers import (
@ -65,6 +67,19 @@ class Subiquity(Application):
snapd_socket_path = '/run/snapd.socket'
base_schema = {
'type': 'object',
'properties': {
'version': {
'type': 'integer',
'minumum': 1,
'maximum': 1,
},
},
'required': ['version'],
'additionalProperties': True,
}
from subiquity.palette import COLORS, STYLES, STYLES_MONO
project = "subiquity"
@ -151,23 +166,30 @@ class Subiquity(Application):
s.get_cols_rows = lambda: (80, 24)
return s
def load_autoinstall_config(self):
with open(self.opts.autoinstall) as fp:
self.autoinstall_config = yaml.safe_load(fp)
self.controllers.load("Reporting")
self.controllers.Reporting.start()
self.controllers.load("Error")
with self.context.child("core_validation", level="INFO"):
jsonschema.validate(self.autoinstall_config, self.base_schema)
self.controllers.load("Early")
if self.controllers.Early.cmds:
self.aio_loop.run_until_complete(
self.controllers.Early.run())
self.new_event_loop()
with open(self.opts.autoinstall) as fp:
self.autoinstall_config = yaml.safe_load(fp)
with self.context.child("core_validation", level="INFO"):
jsonschema.validate(self.autoinstall_config, self.base_schema)
for controller in self.controllers.instances:
controller.setup_autoinstall()
def run(self):
try:
if self.opts.autoinstall is not None:
with open(self.opts.autoinstall) as fp:
self.autoinstall_config = yaml.safe_load(fp)
self.controllers.load("Reporting")
self.controllers.Reporting.start()
self.controllers.load("Error")
self.controllers.load("Early")
if self.controllers.Early.cmds:
self.aio_loop.run_until_complete(
self.controllers.Early.run())
self.new_event_loop()
with open(self.opts.autoinstall) as fp:
self.autoinstall_config = yaml.safe_load(fp)
for controller in self.controllers.instances:
controller.setup_autoinstall()
self.load_autoinstall_config()
super().run()
if self.controllers.Late.cmds:
self.new_event_loop()