using System.Text.Json.Serialization; namespace ControlPlane.Core.Models; /// /// Defines where a specific infrastructure component (Postgres, Keycloak, Vault, MinIO) /// is hosted for a given tenant. Each component in a StackConfig is configured independently. /// [JsonConverter(typeof(JsonStringEnumConverter))] public enum ComponentMode { /// Shared platform instance — logical slice only (realm, schema, bucket, namespace). SharedPlatform, /// Baked into the app image itself via supervisord. Trial tier only. Bundled, /// Own sidecar container on ControlPlane's shared Docker host. OwnContainer, /// Own VM with the component running inside Docker on it. VpsDocker, /// Own VM with the component running as a native OS process (no Docker). VpsBareMetal, /// Component is not provisioned for this tenant (feature not elected). Disabled }