-
JORGE SASIAIN authoredJORGE SASIAIN authored
settings.py 1.48 KiB
import ipaddress
import json
import os
from pydantic import BaseSettings
class GeneralParams(BaseSettings):
public_hostname: str
class InfoBloxParams(BaseSettings):
scheme: str
wapi_version: str
host: str
username: str
password: str
class V4NetworkParams(BaseSettings):
containers: list[ipaddress.IPv4Network]
networks: list[ipaddress.IPv4Network]
mask: int # TODO: validation on mask?
class V6NetworkParams(BaseSettings):
containers: list[ipaddress.IPv6Network]
networks: list[ipaddress.IPv6Network]
mask: int # TODO: validation on mask?
class ServiceNetworkParams(BaseSettings):
V4: V4NetworkParams
V6: V6NetworkParams
domain_name: str
dns_view: str
class IPAMParams(BaseSettings):
INFOBLOX: InfoBloxParams
LO: ServiceNetworkParams
TRUNK: ServiceNetworkParams
GEANT_IP: ServiceNetworkParams
class ProvisioningProxyParams(BaseSettings):
scheme: str
api_base: str
auth: str # FIXME: unfinished
api_version: int
class OSSParams(BaseSettings):
GENERAL: GeneralParams
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__':
print(load_oss_params())