import datetime import enum import re class Env(enum.StrEnum): Dev = "dev" Staging = "staging" Prod = "prod" class Provider(enum.StrEnum): AWS = "aws" GCP = "gcp" class FieldName(enum.StrEnum): ServiceType = "service_type" UsedBy = "usedby" Tenant = "tenant_id" Project = "project_id" Cluster = "cluster_id" Region = "region" Product = "product" NetworkName = 'network_name' Id = "id" Name = "name" CreatedAt = "created_at" Env = "env" class AWSProduct(enum.StrEnum): VPC = "vpc" EC2 = "ec2" EBS = "ebs" EKS = "eks" ASG = "asg" NG = "node_group" SG = "security_group" NAT = "nat" ELB = "elb" CLB = "clb" NLB = "nlb" class GCPProduct(enum.StrEnum): VM = "vm" Disk = "disk" VPC = "vpc" LB = "lb" NAT = "nat" GKE = "gke" class Arch(enum.StrEnum): ThreeLayers = '3-layers' Gardener = 'gardener' CloudNative = 'cloud-native' class ServiceType(enum.StrEnum): DEDICATED = "dedicated" SERVERLESS = "serverless" class UsedBy(enum.StrEnum): CustomerTiDB = "customer-tidb" DBaaSControlPlaneSeed = "dbaas-control-plane-seed" DBaaSControlPlaneBase = "dbaas-control-plane-base" DBaaSControlPlaneShoot = "dbaas-control-plane-shoot" class VPCType(enum.StrEnum): Shoot = 'shoot' Seed = 'seed' Base = 'base' class ShowTag(enum.StrEnum): MissLabel = 'miss-label' Deleted = 'deleted' InUse = 'in-use' MayLeaked = 'may-leaked' Leaked = 'leaked' class Component(enum.StrEnum): Admin = 'admin' Tidb = 'tidb' Tikv = 'tikv' Tiflash = 'tiflash' PD = 'pd' Tiproxy = 'tiproxy' Tiflow = 'tiflow' Backup = 'backup' Restore = 'restore' class ResourceUseState(enum.StrEnum): InUse = 'in-use' MayLeaked = 'may-leaked' Leaked = 'leaked' Cleaned = 'cleaned' Unknown = 'unknown' class CleanResult(enum.StrEnum): Unknown = 'unknown' Failed = 'failed' DryRun = 'dryrun' Cleaned = 'cleaned' Skipped = 'skipped' class CRSatatus(enum.StrEnum): Pending = "Pending" Creating = "Creating" Failed = "Failed" Active = "Active" Deleting = "Deleting" BELONG_TO_3LAYERS_ARCH_PREFIX = 'dedicated-{env}-' TIDB_CLUSTER_NS_PREFIX = 'tidb' TIDB_CLUSTER_POD_PREFIX = 'db-' TIDB_ADMIN_NS = 'tidb-admin' CLUSTER_ID_IN_TC_NS = re.compile('^tidb(\d+)$') MEMBER_NAME_IN_PVC_NAME_RE = re.compile(r'.*(db-(pd|tiproxy|tidb|tikv|tiflash)-.*)') assert MEMBER_NAME_IN_PVC_NAME_RE.match('tidb-db-tidb-0').groups()[0] == 'db-tidb-0' assert MEMBER_NAME_IN_PVC_NAME_RE.match('db-tidb-0').groups()[0] == 'db-tidb-0' assert MEMBER_NAME_IN_PVC_NAME_RE.match('db-tidb-abcd-0').groups()[0] == 'db-tidb-abcd-0' COMPONENT_IN_PVC_NAME_RE = re.compile( r'.*(vmagent|o11y-vector-agent|tiflow|ng-monitoring|etcd|victoria-metrics-agent).*') assert COMPONENT_IN_PVC_NAME_RE.match('o11y-vmagent-victoria-metrics-agent').groups()[ 0] == 'victoria-metrics-agent' assert COMPONENT_IN_PVC_NAME_RE.match('tiflow-prod-1372813089190521282-gke-us-west1-c886a1c7-victoria').groups()[ 0] == 'tiflow' assert COMPONENT_IN_PVC_NAME_RE.match('o11y-vector-agent').groups()[0] == 'o11y-vector-agent' COMPONENT_IN_MEMBER_NAME_RE = re.compile( r'db-(pd|tiproxy|tidb|tikv|tiflash|db-discovery).*') assert COMPONENT_IN_MEMBER_NAME_RE.match('db-tidb-0').groups()[ 0] == 'tidb' assert COMPONENT_IN_MEMBER_NAME_RE.match('db-tidb-abcd-0').groups()[ 0] == 'tidb' assert COMPONENT_IN_MEMBER_NAME_RE.match('db-tikv-0').groups()[0] == 'tikv' ZERO_DATETIME = datetime.datetime.fromtimestamp(0)