From 76583c6766075746d93e162fd2bad65e620f0b01 Mon Sep 17 00:00:00 2001 From: mac Date: Thu, 23 Jul 2026 12:04:02 +0800 Subject: [PATCH] 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 --- server/.env.example | 13 +++++++++++++ server/internal/config/config.go | 22 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/server/.env.example b/server/.env.example index 7c2e099..be1c64f 100644 --- a/server/.env.example +++ b/server/.env.example @@ -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 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_ISSUER=authserver JWT_TTL_MINUTES=120 diff --git a/server/internal/config/config.go b/server/internal/config/config.go index 111d3fb..7fdc7b6 100644 --- a/server/internal/config/config.go +++ b/server/internal/config/config.go @@ -57,9 +57,20 @@ type Config struct { CloudDMClientSecret string CloudDMRedirectURI string CloudDMTargetURL string + CloudDMRegisterURL string + CloudDMAPIToken string AnsibleServiceBaseURL string AnsibleInternalToken string DeploymentCallbackBaseURL string + AWXBaseURL string + AWXToken string + DeliveryServiceToken string + DeliverySchedulerEnabled bool + DeliveryPollSeconds int + ReservationTTLMinutes int + DeliveryGlobalLimit int + DeliveryTargetLimit int + DeliveryBusinessLimit int } func Load() Config { @@ -115,9 +126,20 @@ func Load() Config { CloudDMClientSecret: env("OIDC_CLOUDDM_CLIENT_SECRET", ""), CloudDMRedirectURI: env("OIDC_CLOUDDM_REDIRECT_URI", ""), CloudDMTargetURL: env("CLOUDDM_TARGET_URL", ""), + CloudDMRegisterURL: trimURL(env("CLOUDDM_REGISTER_URL", "")), + CloudDMAPIToken: env("CLOUDDM_API_TOKEN", ""), AnsibleServiceBaseURL: trimURL(env("ANSIBLE_SERVICE_BASE_URL", "")), AnsibleInternalToken: env("ANSIBLE_INTERNAL_TOKEN", ""), 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), } }