package config

type SecretsStorage struct {
	ChartRef     string   `yaml:"chart_ref" env-default:"kube-forge/vault"`
	ChartVersion string   `yaml:"chart_version" env-default:"0.1.0"`
	Enabled      bool     `yaml:"enabled"`
	KeyShares    int      `yaml:"key_shares" env-default:"5"`
	KeyThreshold int      `yaml:"key_threshold" env-default:"3"`
	UnsealKeys   []string `yaml:"unseal_keys" env-default:"[]"`
	AuthToken    string   `yaml:"auth_token" env-default:""`
	Expose       struct {
		Type     string `yaml:"type"`
		Domain   string `yaml:"domain"`
		Path     string `yaml:"path" env-default:"/"`
		NodePort int    `yaml:"node_port"`
		Tls      struct {
			Enabled bool `yaml:"enabled"`
		} `yaml:"tls"`
	} `yaml:"expose"`
	CsiIntegration struct {
		Enabled bool   `yaml:"enabled"`
		Image   string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault-csi-provider"`
		Tag     string `yaml:"tag" env-default:"1.4.1"`
	} `yaml:"csi_integration"`
	Injector struct {
		Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault-k8s"`
		Tag   string `yaml:"tag" env-default:"1.3.1"`
	} `yaml:"injector"`
	Server struct {
		Image       string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault"`
		Tag         string `yaml:"tag" env-default:"1.16.0"`
		Persistence struct {
			DataStorage struct {
				StorageClass string `yaml:"storage_class" env-default:"local-path"`
				Size         string `yaml:"size" env-default:"10Gi"`
			} `yaml:"data_storage"`
			AuditStorage struct {
				StorageClass string `yaml:"storage_class" env-default:"local-path"`
				Size         string `yaml:"size" env-default:"10Gi"`
			} `yaml:"audit_storage"`
		} `yaml:"persistence"`
	} `yaml:"server"`
	Agent struct {
		Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault"`
		Tag   string `yaml:"tag" env-default:"1.16.0"`
	} `yaml:"agent"`
}
