actually validate version field, reduce indentation a bit
This commit is contained in:
parent
32e79826ad
commit
170f44663e
3
Makefile
3
Makefile
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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,14 +166,14 @@ class Subiquity(Application):
|
|||
s.get_cols_rows = lambda: (80, 24)
|
||||
return s
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
if self.opts.autoinstall is not None:
|
||||
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(
|
||||
|
@ -166,8 +181,15 @@ class Subiquity(Application):
|
|||
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:
|
||||
self.load_autoinstall_config()
|
||||
super().run()
|
||||
if self.controllers.Late.cmds:
|
||||
self.new_event_loop()
|
||||
|
|
Loading…
Reference in New Issue