slapconfiguration: Add .jsonschema recipe
[slapconfiguration]
<= slap-connection
recipe = slapos.cookbook:slapconfiguration.jsonschema
jsonschema = ${buildout:directory}/software.cfg.json
The recipe validates instance parameters against the JSON schema, and
automatically fills in values of parameters left unset from defaults
specified in the schema, both for the main instance and for every
shared instance, if any.
Validation error or conflicting defaults - when the instance validates
multiple combined schemas that each set different defaults - can occur.
In case of error in the main instance parameters, the recipe raises an
exception. Otherwise, the completed instance parameters are available
in `configuration`.
For shared instances, valid and conflict-free instances are
collected in `valid-shared-instance-list` as dicts in the form of:
```
{'reference': "...", 'parameters': {...}}
```
with parameters completed by defaults as appropriate.
Invalid shared instances are collected in `invalid-slave-instance-list`
as dicts in the form of:
```
{'reference': "...", 'parameters': {...}, 'errors': [...]}
```
with parameters left as-is without added defaults.
Co-authored-by: Thomas Gambier <thomas.gambier@nexedi.com>
Showing
Please register or sign in to comment