69 lines
2.0 KiB
Go
69 lines
2.0 KiB
Go
// Package demos : cœur métier — cycle de vie des démos client déployées
|
|
// dans le cluster (une démo = un namespace isolé, TTL 30 jours).
|
|
package demos
|
|
|
|
import "time"
|
|
|
|
// Paramètres capacité / durée de vie.
|
|
const (
|
|
TTL = 30 * 24 * time.Hour // durée de vie d'une démo
|
|
MaxConcurrentDemos = 5 // capacité cible
|
|
PoolSizePerService = 5 // slots par service externe poolé
|
|
)
|
|
|
|
// Services externes gérés par pool pré-provisionné (non auto-créables par API).
|
|
// TomTom n'y figure pas : ses clés sont créées à la volée par le worker.
|
|
const (
|
|
ServiceTelegram = "telegram"
|
|
ServiceNowPayments = "nowpayments"
|
|
)
|
|
|
|
// PooledServices : services nécessitant un slot de pool par démo.
|
|
var PooledServices = []string{ServiceTelegram, ServiceNowPayments}
|
|
|
|
// Status : état d'une démo.
|
|
type Status string
|
|
|
|
const (
|
|
StatusPending Status = "pending" // créée, pas encore prise par le worker
|
|
StatusProvisioning Status = "provisioning" // worker en train de déployer
|
|
StatusReady Status = "ready" // démo accessible
|
|
StatusExpiring Status = "expiring" // teardown en cours
|
|
StatusExpired Status = "expired" // détruite / TTL atteint
|
|
StatusFailed Status = "failed" // échec de provisioning
|
|
)
|
|
|
|
func (s Status) Valid() bool {
|
|
switch s {
|
|
case StatusPending, StatusProvisioning, StatusReady, StatusExpiring, StatusExpired, StatusFailed:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Active indique si la démo occupe des ressources (compte dans la capacité).
|
|
func (s Status) Active() bool {
|
|
switch s {
|
|
case StatusPending, StatusProvisioning, StatusReady, StatusExpiring:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Extendable : on ne prolonge que des démos encore vivantes.
|
|
func (s Status) Extendable() bool {
|
|
switch s {
|
|
case StatusProvisioning, StatusReady:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// ResourceStatus : état d'un slot de pool.
|
|
type ResourceStatus string
|
|
|
|
const (
|
|
ResourceFree ResourceStatus = "free"
|
|
ResourceBorrowed ResourceStatus = "borrowed"
|
|
)
|