Unit config schema

This example uses code from the aioli_rdbms extension Unit.

Create

Define a custom Unit configuration schema.

File: aioli_rdbms/config.py

from aioli.config import UnitConfigSchema, fields, validate


class ConfigSchema(UnitConfigSchema):
    type = fields.String(
        validate=validate.OneOf(["mysql", "postgres"]),
        required=True
    )
    username = fields.String(required=True)
    password = fields.String(required=True)
    host = fields.String(missing="127.0.0.1")
    port = fields.Integer(missing=3306)
    database = fields.String(missing="aioli")

Associate

Associate the configuration schema with a Unit.

File: aioli_rdbms/__init__.py

from aioli import Unit

from .service import DatabaseService
from .config import ConfigSchema


export = Unit(
    auto_meta=True,
    controllers=[],
    services=[DatabaseService],
    config=ConfigSchema,
)

Configure

Create the configuration using the format of choice.

File: aioli.cfg

[aioli_core]
dev_port = 5555
path = "/api"
pretty_json = false
allow_origins = ["*"]
debug = true

[aioli_guestbook]
path = "/guestbook"
# Maximum number of visits per IP
visits_max = 14

[aioli_rdbms]
type = "(mysql|postgres)"
username = "user"
password = "pass"
host = "127.0.0.1"
port = 3306
database = "aioli"

Register

Parse the configuration file and pass it as a Dictionary to the Application constructor.

File: my_application/main.py

import aioli_guestbook
import aioli_rdbms

import toml

from aioli import Application

app = Application(
    config=toml.load("aioli.cfg"),
    units=[
        aioli_guestbook,
        aioli_rdbms,
    ]
)