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); \
|
(cd probert && $(PYTHON) setup.py build_ext -i); \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
schema: probert
|
||||||
|
$(PYTHON) -m subiquity.cmd.schema
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
./debian/rules clean
|
./debian/rules clean
|
||||||
|
|
||||||
|
|
|
@ -23,22 +23,8 @@ import jsonschema
|
||||||
from subiquity.cmd.tui import parse_options
|
from subiquity.cmd.tui import parse_options
|
||||||
from subiquity.core import Subiquity
|
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):
|
def make_schema(app):
|
||||||
schema = copy.deepcopy(base_schema)
|
schema = copy.deepcopy(app.base_schema)
|
||||||
for controller in app.controllers.instances:
|
for controller in app.controllers.instances:
|
||||||
ckey = getattr(controller, 'autoinstall_key', None)
|
ckey = getattr(controller, 'autoinstall_key', None)
|
||||||
if ckey is None:
|
if ckey is None:
|
||||||
|
|
|
@ -23,6 +23,8 @@ import urwid
|
||||||
|
|
||||||
import apport.hookutils
|
import apport.hookutils
|
||||||
|
|
||||||
|
import jsonschema
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from subiquitycore.async_helpers import (
|
from subiquitycore.async_helpers import (
|
||||||
|
@ -65,6 +67,19 @@ class Subiquity(Application):
|
||||||
|
|
||||||
snapd_socket_path = '/run/snapd.socket'
|
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
|
from subiquity.palette import COLORS, STYLES, STYLES_MONO
|
||||||
|
|
||||||
project = "subiquity"
|
project = "subiquity"
|
||||||
|
@ -151,23 +166,30 @@ class Subiquity(Application):
|
||||||
s.get_cols_rows = lambda: (80, 24)
|
s.get_cols_rows = lambda: (80, 24)
|
||||||
return s
|
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):
|
def run(self):
|
||||||
try:
|
try:
|
||||||
if self.opts.autoinstall is not None:
|
if self.opts.autoinstall is not None:
|
||||||
with open(self.opts.autoinstall) as fp:
|
self.load_autoinstall_config()
|
||||||
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()
|
|
||||||
super().run()
|
super().run()
|
||||||
if self.controllers.Late.cmds:
|
if self.controllers.Late.cmds:
|
||||||
self.new_event_loop()
|
self.new_event_loop()
|
||||||
|
|
Loading…
Reference in New Issue