Skip to content
Snippets Groups Projects
settings.py 1.38 KiB
Newer Older
import ipaddress
import json
import os
from pydantic import BaseSettings


class GeneralParams(BaseSettings):
class InfoBloxParams(BaseSettings):
    scheme: str
    wapi_version: str
    host: str
    username: str
    password: str


class V4NetworkParams(BaseSettings):
    containers: list[ipaddress.IPv4Network]
    mask: int  # TODO: validation on mask?


class V6NetworkParams(BaseSettings):
    containers: list[ipaddress.IPv6Network]
    mask: int  # TODO: validation on mask?


class ServiceNetworkParams(BaseSettings):
    V4: V4NetworkParams
    V6: V6NetworkParams


class IPAMParams(BaseSettings):
    INFOBLOX: InfoBloxParams
    TRUNK: ServiceNetworkParams
    GEANT_IP: ServiceNetworkParams


class ProvisioningProxyParams(BaseSettings):
    auth: str  # FIXME: unfinished
    api_version: int


class OSSParams(BaseSettings):
    IPAM: IPAMParams
    RESOURCE_MANAGER_API_PREFIX: str  # api prefix
    PROVISIONING_PROXY: ProvisioningProxyParams


def load_oss_params() -> OSSParams:
    """
    look for OSS_PARAMS_FILENAME in the environment and load the
    parameters from that file
    """
    with open(os.environ['OSS_PARAMS_FILENAME']) as f:
        return OSSParams(**json.loads(f.read()))


if __name__ == '__main__':
Erik Reid's avatar
Erik Reid committed
    print(load_oss_params())