Files
3cloud-backend/cloud/runtime_urls.py
JamesBhattarai b25c6cd24e Feat: Add cloud plane
- Plane with OIDC users, projects and VDCs with per-VDC roles, SSH key vault, Cloudflare exposure, TLS certificates, and a gateway that forwards allowlisted calls to core with the VDC as tenant_id.
- Also added docker compose for setups
2026-09-02 11:15:25 +05:45

57 lines
2.1 KiB
Python

import os
def _env(key: str, default: str = "") -> str:
return os.environ.get(key, default)
def _env_bool(key: str, default: bool = False) -> bool:
val = os.environ.get(key)
if val is None:
return default
return val.strip().lower() in ("1", "true", "yes", "on")
CLOUD_DATABASE_URL = _env(
"CLOUD_DATABASE_URL",
"mysql+pymysql://cloud_user:cloud_password@127.0.0.1:3307/cloud",
)
CORE_API_BASE_URL = _env("CORE_API_BASE_URL", "http://172.17.0.1:5000")
CORE_API_KEY = _env("CORE_API_KEY", "")
FLASK_ENV = _env("FLASK_ENV", "development")
OIDC_ISSUER = _env("OIDC_ISSUER", "https://secuird.tech/")
OIDC_JWKS_URL = _env("OIDC_JWKS_URL", "")
OIDC_AUDIENCE = _env("OIDC_AUDIENCE", "")
OIDC_ADDITIONAL_AUDIENCES = _env("OIDC_ADDITIONAL_AUDIENCES", "")
OIDC_SUBJECT_CLAIM = _env("OIDC_SUBJECT_CLAIM", "sub")
OIDC_EMAIL_CLAIM = _env("OIDC_EMAIL_CLAIM", "email")
# Unset means production. The dev bypass is only possible in a development
# APP_ENV (see xcloudify_shared.env.dev_bypass_enabled), where it is on unless
# AUTH_DEV_BYPASS=false.
APP_ENV = _env("APP_ENV", "production")
AUTH_DEV_BYPASS = _env_bool("AUTH_DEV_BYPASS") if os.environ.get("AUTH_DEV_BYPASS") else None
OIDC_GROUPS_CLAIMS = _env("OIDC_GROUPS_CLAIMS") or _env(
"OIDC_GROUPS_CLAIM",
"groups,roles,realm_access.roles,openstack_groups,openstack_project_names,memberOf",
)
IDP_PROJECT_AUTOCREATE = _env_bool("IDP_PROJECT_AUTOCREATE", True)
IDP_PROJECT_GROUP_PATTERN = _env("IDP_PROJECT_GROUP_PATTERN", "")
IDP_PROJECT_IGNORED_GROUPS = _env(
"IDP_PROJECT_IGNORED_GROUPS",
"offline_access,uma_authorization,account,default-roles-*,*/*-realm,everyone,users,authenticated",
)
IDP_PROJECT_DEFAULT_ROLE = _env("IDP_PROJECT_DEFAULT_ROLE", "member")
IDP_PROJECT_NAME_TEMPLATE = _env("IDP_PROJECT_NAME_TEMPLATE", "{group_title}")
LOCAL_USER_EMAIL = os.getenv("LOCAL_USER_EMAIL", "local@xcloudify.dev")
LOCAL_USER_GROUPS = _env("LOCAL_USER_GROUPS", "")
REDIS_BROKER_URL = _env("CLOUD_BROKER_URL", "redis://cloud-redis:6379/0")
REDIS_RESULT_BACKEND_URL = _env("CLOUD_RESULT_BACKEND", "redis://cloud-redis:6379/1")
CLOUD_SECRET_KEY = _env("CLOUD_SECRET_KEY", "")