package types

const (
	// ProviderTypeGCPSharedTier defines provider which provides
	// implementation of shared tier infra on GCP.
	ProviderTypeGCPSharedTier = "gcp-shared-tier"

	// ProviderTypeAWSSharedTier defines provider which provides
	// implementation of shared tier infra on AWS.
	ProviderTypeAWSSharedTier = "aws-shared-tier"

	// KeyPrefix defines prefix of label and annotation key.
	KeyPrefix = "infra.tidbcloud.com/"

	// DefaultStorageClassName defines default StorageClass for provider.
	DefaultStorageClassName = "default"

	// LocalStorageClassName defines local StorageClass.
	LocalStorageClassName = "local-storage"

	// S3BackupServiceAccount defines ServiceAccount name for s3 backup.
	S3BackupServiceAccount = "tidb-backup-manager"

	// KubernetesEndpointName defines default endpoints name of kubernetes.
	KubernetesEndpointName = "kubernetes"

	// Annotation to bind aws role with kubernetes service account.
	AnnoKeyEKSRoleARN = "eks.amazonaws.com/role-arn"

	// annotation keys to set at tidbcluster for controlling bandwidth.
	// it 's the outside services's responsibility to limit the bandwidth.
	AnnoKeyIngress     = "bandwidth.tidbcloud.com/ingress"
	AnnoKeyIngressPort = "bandwidth.tidbcloud.com/ingress-port"
	AnnoKeyEgress      = "bandwidth.tidbcloud.com/egress"
	AnnoKeyEgressPort  = "bandwidth.tidbcloud.com/egress-port"

	// Annotation to reschedule network to another kubernetes
	AnnoKeyReschedule             = KeyPrefix + "reschedule"
	AnnoKeyRescheduleFailedReason = KeyPrefix + "reschedule-failed-reason"

	// Annotations for enabling Security Enhanced Mode
	AnnoKeySEMTcLastReadyTime = KeyPrefix + "sem-tc-last-ready-time"

	CrossplaneProviderConfigReferenceName = "provider-aws"

	// Annotations for Google Config-Connector
	AnnoCnrmProjectID = "cnrm.cloud.google.com/project-id"

	CnrmSAPrivateKeyType  = "TYPE_GOOGLE_CREDENTIALS_FILE"
	CnrmSACredentialCmKey = "key.json"

	// TODO: maybe change to tidb-operator api?
	LabelKeyInstance                   = "app.kubernetes.io/instance"
	LabelKeyComponent                  = "app.kubernetes.io/component"
	LabelValComponentTiDB              = "tidb"
	LabelValComponentTiKV              = "tikv"
	LabelValComponentTiFlash           = "tiflash"
	LabelValComponentBackup            = "backup"
	LabelValComponentRestore           = "restore"
	LabelValComponentClean             = "clean"
	LabelValComponentTiDBLightning     = "tidb-lightning"
	LabelValComponentControllerManager = "controller-manager"
	LabelValComponentDiscovery         = "discovery"
	LabelValComponentMonitor           = "monitor"
)
