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
}