2025-05-14 22:55:22 +02:00
2025-04-24 12:28:05 +02:00
2025-05-12 23:26:35 +02:00
2025-04-24 12:28:05 +02:00
2025-04-24 12:28:05 +02:00
2025-04-24 12:28:05 +02:00
2025-05-14 22:55:22 +02:00

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)
Description
Configuration management support
Readme ISC 144 KiB
Languages
Erlang 100%