# Copyright 2021 99cloud # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import annotations from typing import Dict, List from pydantic import HttpUrl, StrictBool, StrictInt, StrictStr from skyline_apiserver.config.base import Opt from skyline_apiserver.types import InterfaceType keystone_url = Opt( name="keystone_url", description=( "Keystone endpoint address. If using domain, " "top level domain is required. For example: example.org" ), schema=HttpUrl, default="http://127.0.0.1:5000/v3/", ) system_project_domain = Opt( name="system_project_domain", description="Skyline system project's domain", schema=StrictStr, default="Default", ) system_project = Opt( name="system_project", description="Skyline system project", schema=StrictStr, default="service", ) system_user_domain = Opt( name="system_user_domain", description="Skyline system user's domain", schema=StrictStr, default="Default", ) system_user_name = Opt( name="system_user_name", description="Skyline system username", schema=StrictStr, default="skyline", ) system_user_password = Opt( name="system_user_password", description="Skyline system 's password", schema=StrictStr, default="", ) default_region = Opt( name="default_region", description="Skyline default region", schema=StrictStr, default="RegionOne", ) interface_type = Opt( name="interface_type", description="OpenStack endpoint interface type", schema=InterfaceType, default="public", ) nginx_prefix = Opt( name="nginx_prefix", description="Endpoint prefix", schema=StrictStr, default="/api/openstack", ) base_domains = Opt( name="base_domains", description="base domains list", schema=List[StrictStr], default=[ "heat_user_domain", ], ) system_admin_roles = Opt( name="system_admin_roles", description="system admin roles have system permission", schema=List[StrictStr], default=["admin", "system_admin"], ) system_reader_roles = Opt( name="system_reader_roles", description="system reader roles have system permission", schema=List[StrictStr], default=["system_reader"], ) service_mapping = Opt( name="service_mapping", description=( "openstack service mapping, service mapping in the format :" ), schema=Dict[StrictStr, StrictStr], default={ "baremetal": "ironic", "compute": "nova", "container": "zun", "container-infra": "magnum", "database": "trove", "dns": "designate", "identity": "keystone", "image": "glance", "instance-ha": "masakari", "key-manager": "barbican", "load-balancer": "octavia", "network": "neutron", "object-store": "swift", "orchestration": "heat", "placement": "placement", "sharev2": "manilav2", "volumev3": "cinder", }, ) extension_mapping = Opt( name="extension_mapping", description="Mapping of extension from extensions api", schema=Dict[StrictStr, StrictStr], default={ "floating-ip-port-forwarding": "neutron_port_forwarding", "fwaas_v2": "neutron_firewall", "qos": "neutron_qos", "vpnaas": "neutron_vpn", }, ) reclaim_instance_interval = Opt( name="reclaim_instance_interval", description="reclaim instance interval", schema=StrictInt, default=60 * 60 * 24 * 7, ) enforce_new_defaults = Opt( name="enforce_new_defaults", description=( "This configuration is associated with `enforce_new_defaults`" "in oslo policy, which you can refer to the oslo policy parameters." "Skyline does not currently support deprecated policy setting, specify" "default:True." ), schema=StrictBool, default=True, ) sso_enabled = Opt( name="sso_enabled", description="enable sso", schema=StrictBool, default=False, ) sso_protocols = Opt( name="sso_protocols", description="SSO protocol list", schema=List[StrictStr], default=[ "openid", ], ) sso_region = Opt( name="sso_region", description="SSO region", schema=StrictStr, default="RegionOne", ) GROUP_NAME = __name__.split(".")[-1] ALL_OPTS = ( enforce_new_defaults, sso_enabled, sso_protocols, sso_region, keystone_url, system_project_domain, system_project, system_user_domain, system_user_name, system_user_password, default_region, interface_type, nginx_prefix, base_domains, system_admin_roles, system_reader_roles, service_mapping, extension_mapping, reclaim_instance_interval, ) __all__ = ("GROUP_NAME", "ALL_OPTS")