Files
omnex/control-plane/api/internal/demos/provisioner.go
T
Xor290 2592ea1c6f
ci-api / test (push) Successful in 21m59s
ci-web / test (push) Successful in 13m44s
chore: update
2026-08-02 21:31:29 +02:00

36 lines
1.8 KiB
Go

package demos
import "context"
// Provisioner : abstraction du worker qui déploie/détruit la stack dans le cluster.
// L'implémentation réelle (Helm + client-go) sera branchée plus tard ; l'API se
// contente d'enfiler les intentions.
type Provisioner interface {
// Provision demande le déploiement d'une démo (asynchrone).
Provision(d Demo, resources []ExternalResource, cfg ProvisionConfig) error
// Teardown demande la destruction d'une démo.
Teardown(d Demo) error
// MigrateToPremiumNamespace reconstruit la démo dans newNamespace
// (Kubernetes ne permet pas de renommer un namespace) en préservant les
// données postgres, puis supprime l'ancien namespace une fois le
// nouveau opérationnel. No-op si d.Namespace == newNamespace.
MigrateToPremiumNamespace(d Demo, newNamespace, newURL string) error
// UpdateDomain change le domaine public d'une démo (IngressRoute, et
// re-branchement des webhooks Telegram si configurés) sans changer de
// namespace ni migrer de données.
UpdateDomain(d Demo, newURL string) error
GetResourceState(ctx context.Context, namespace string) (ResourceState, error)
}
// NoopProvisioner : implémentation neutre (aucun déploiement réel).
// Sert au scaffolding et aux tests tant que le worker n'existe pas.
type NoopProvisioner struct{}
func (NoopProvisioner) Provision(Demo, []ExternalResource, ProvisionConfig) error { return nil }
func (NoopProvisioner) Teardown(Demo) error { return nil }
func (NoopProvisioner) MigrateToPremiumNamespace(Demo, string, string) error { return nil }
func (NoopProvisioner) UpdateDomain(Demo, string) error { return nil }
func (NoopProvisioner) GetResourceState(ctx context.Context, namespace string) (ResourceState, error) {
return ResourceState{}, nil
}