package consts

// Well-Known Labels
// https://kubernetes.io/docs/reference/labels-annotations-taints

const (
	// ComponentLabelKey is Kubernetes recommended label key, it represents the component within the architecture
	ComponentLabelKey string = "app.kubernetes.io/component"
	// NameLabelKey is Kubernetes recommended label key, it represents the name of the application
	// It should always be tidb-cluster in our case.
	NameLabelKey string = "app.kubernetes.io/name"
	// InstanceLabelKey is Kubernetes recommended label key, it represents a unique name identifying the instance of an application
	// It's set by helm when installing a release
	InstanceLabelKey string = "app.kubernetes.io/instance"

	ManagedByLabelKey string = "app.kubernetes.io/managed-by"

	NamespaceLabelKey string = "app.kubernetes.io/namespace"

	// Label of instance type on node
	InstanceTypeLabelKey = "node.kubernetes.io/instance-type"
	// GKEComputeClassLabelKey is used to select GKE ComputeClass-enabled nodepools.
	GKEComputeClassLabelKey = "cloud.google.com/compute-class"
	// GKEHeterogeneousNodePoolManagedByLabelKey marks GKE nodepools created through
	// cluster-server's heterogeneous nodepool API. It keeps that API from adopting ordinary shared nodepools.
	GKEHeterogeneousNodePoolManagedByLabelKey   = "tidbcloud.com/gke-heterogeneous-nodepool"
	GKEHeterogeneousNodePoolManagedByLabelValue = "cluster-server"
	// GKEHeterogeneousNodePoolIsolationTaintKey keeps prepared API-managed
	// heterogeneous nodepools isolated from ordinary shared workloads.
	GKEHeterogeneousNodePoolIsolationTaintKey   = GKEHeterogeneousNodePoolManagedByLabelKey
	GKEHeterogeneousNodePoolIsolationTaintValue = GKEHeterogeneousNodePoolManagedByLabelValue
	// GKEHeterogeneousNodePoolScopeLabelKey identifies the ordinary GKE nodepool
	// naming scope that an API-managed heterogeneous nodepool belongs to.
	GKEHeterogeneousNodePoolScopeLabelKey = "tidbcloud.com/gke-heterogeneous-nodepool-scope"

	// Label of node CPU architecture (system managed by kubelet)
	ArchLabelKey = "kubernetes.io/arch"

	// Labeled by AWS EKS
	ZoneLabelKey = "topology.kubernetes.io/zone"
)
