Gmconfig - A JSON-SCHEMA-based configuration management support library
Introduction
This library offers the basic support functions for the Gajumaru configuration management subsystem. It is based on JSON-Schema, and includes, among other things:
- A reasonably complete JSON-Schema validator
- Validating user configurations against the schema
- In-service update of the user config
- Caching of the user config (and schema) as persistent terms
- Fast config lookups using key paths
- Lookups can handle both schema defaults and user-provided defaults
JSON-Schema validator
The main thing the validator currently doesn't support is proper
management of complex sets of schemas and subSchemas. There are
some preparations made for supporting "$id"
and uris, but this
is still incomplete. "definitions"
and "$ref"
properties are recognized.
As almost anything is theoretically possible with JSON-Schema, there are surely other things that are unsupported.
All standard data types
"null"
"boolean"
"integer"
"number"
"boolean"
"string"
"array"
"object"
Dynamic properties
"if"
"not"
"oneOf"
"anyOf"
"allOf"
Static Properties
Array
"maxItems"
"minItems"
"uniqueItems"
"prefixItems"
"contains"
("minContains"
,"maxContains"
)
Object
"properties"
("minProperties"
,"maxProperties"
)"patternProperties"
"additionalProperties"
"required"
String
"pattern"
"minLength"
"maxLength"
Number, Integer
"minimum"
"maximum"
"exclusiveMinimum"
"exclusiveMinimum"
"multipleOf"
(only if object is an integer)
"$updateSemantics"
"replace"
(fully replaces any old data)"merge"
(for objects, keeps and/or updates existing values)"suggest"
(adds value if not already present)
Languages
Erlang
100%