feat(delivery): add delivery configuration and environment variables

Add 10 config fields: AWX connection (AWX_BASE_URL, AWX_TOKEN),
scheduler controls (DELIVERY_SCHEDULER_ENABLED, DELIVERY_POLL_SECONDS,
DELIVERY_RESERVATION_TTL_MINUTES), concurrency limits (GLOBAL/TARGET/
BUSINESS), service token, and CloudDM registration (CLOUDDM_REGISTER_URL,
CLOUDDM_API_TOKEN). Update .env.example with new variables.

Relates-to: #97
This commit is contained in:
mac
2026-07-23 12:04:02 +08:00
parent 8676963bac
commit 76583c6766
2 changed files with 35 additions and 0 deletions
+13
View File
@@ -18,6 +18,19 @@ DEPLOYMENT_CALLBACK_BASE_URL=http://authserver-backend:8080
MYSQL_DSN=auth:auth@tcp(127.0.0.1:3000)/authserver?charset=utf8mb4&parseTime=True&loc=Local MYSQL_DSN=auth:auth@tcp(127.0.0.1:3000)/authserver?charset=utf8mb4&parseTime=True&loc=Local
AUTO_MIGRATE=true AUTO_MIGRATE=true
# MySQL service delivery (AWX is required when the scheduler is enabled)
DELIVERY_SCHEDULER_ENABLED=false
DELIVERY_POLL_SECONDS=5
DELIVERY_RESERVATION_TTL_MINUTES=120
DELIVERY_GLOBAL_LIMIT=2
DELIVERY_TARGET_LIMIT=2
DELIVERY_BUSINESS_LIMIT=1
AWX_BASE_URL=
AWX_TOKEN=
DELIVERY_SERVICE_TOKEN=
CLOUDDM_REGISTER_URL=
CLOUDDM_API_TOKEN=
JWT_SECRET=change-this-secret JWT_SECRET=change-this-secret
JWT_ISSUER=authserver JWT_ISSUER=authserver
JWT_TTL_MINUTES=120 JWT_TTL_MINUTES=120
+22
View File
@@ -57,9 +57,20 @@ type Config struct {
CloudDMClientSecret string CloudDMClientSecret string
CloudDMRedirectURI string CloudDMRedirectURI string
CloudDMTargetURL string CloudDMTargetURL string
CloudDMRegisterURL string
CloudDMAPIToken string
AnsibleServiceBaseURL string AnsibleServiceBaseURL string
AnsibleInternalToken string AnsibleInternalToken string
DeploymentCallbackBaseURL string DeploymentCallbackBaseURL string
AWXBaseURL string
AWXToken string
DeliveryServiceToken string
DeliverySchedulerEnabled bool
DeliveryPollSeconds int
ReservationTTLMinutes int
DeliveryGlobalLimit int
DeliveryTargetLimit int
DeliveryBusinessLimit int
} }
func Load() Config { func Load() Config {
@@ -115,9 +126,20 @@ func Load() Config {
CloudDMClientSecret: env("OIDC_CLOUDDM_CLIENT_SECRET", ""), CloudDMClientSecret: env("OIDC_CLOUDDM_CLIENT_SECRET", ""),
CloudDMRedirectURI: env("OIDC_CLOUDDM_REDIRECT_URI", ""), CloudDMRedirectURI: env("OIDC_CLOUDDM_REDIRECT_URI", ""),
CloudDMTargetURL: env("CLOUDDM_TARGET_URL", ""), CloudDMTargetURL: env("CLOUDDM_TARGET_URL", ""),
CloudDMRegisterURL: trimURL(env("CLOUDDM_REGISTER_URL", "")),
CloudDMAPIToken: env("CLOUDDM_API_TOKEN", ""),
AnsibleServiceBaseURL: trimURL(env("ANSIBLE_SERVICE_BASE_URL", "")), AnsibleServiceBaseURL: trimURL(env("ANSIBLE_SERVICE_BASE_URL", "")),
AnsibleInternalToken: env("ANSIBLE_INTERNAL_TOKEN", ""), AnsibleInternalToken: env("ANSIBLE_INTERNAL_TOKEN", ""),
DeploymentCallbackBaseURL: trimURL(env("DEPLOYMENT_CALLBACK_BASE_URL", publicBaseURL)), DeploymentCallbackBaseURL: trimURL(env("DEPLOYMENT_CALLBACK_BASE_URL", publicBaseURL)),
AWXBaseURL: trimURL(env("AWX_BASE_URL", "")),
AWXToken: env("AWX_TOKEN", ""),
DeliveryServiceToken: env("DELIVERY_SERVICE_TOKEN", ""),
DeliverySchedulerEnabled: envBool("DELIVERY_SCHEDULER_ENABLED", false),
DeliveryPollSeconds: envInt("DELIVERY_POLL_SECONDS", 5),
ReservationTTLMinutes: envInt("DELIVERY_RESERVATION_TTL_MINUTES", 120),
DeliveryGlobalLimit: envInt("DELIVERY_GLOBAL_LIMIT", 2),
DeliveryTargetLimit: envInt("DELIVERY_TARGET_LIMIT", 2),
DeliveryBusinessLimit: envInt("DELIVERY_BUSINESS_LIMIT", 1),
} }
} }