import ipaddress import json import os from pydantic import BaseSettings class InfoBloxParams(BaseSettings): scheme: str wapi_version: str host: str username: str password: str class V4NetworkParams(BaseSettings): container: ipaddress.IPv4Network mask: int # TODO: validation on mask? class V6NetworkParams(BaseSettings): container: ipaddress.IPv6Network mask: int # TODO: validation on mask? class ServiceNetworkParams(BaseSettings): V4: V4NetworkParams V6: V6NetworkParams domain_name: str class IPAMParams(BaseSettings): INFOBLOX: InfoBloxParams LO: ServiceNetworkParams TRUNK: ServiceNetworkParams GEANT_IP: ServiceNetworkParams class ProvisioningProxyParams(BaseSettings): api_base: str 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__': print(load_oss_params())