package consts

import (
	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

// workflow types
const (
	WorkflowTypeEnableTiProxy  cloudv1.WorkflowType = "enable-tiproxy"
	WorkflowTypeDisableTiProxy cloudv1.WorkflowType = "disable-tiproxy"
	WorkflowTypeScaleCluster   cloudv1.WorkflowType = "scale-cluster"
)

// workflow actions
const (
	// base //
	WorkflowActionSleep           cloudv1.WorkflowActionName = "sleep"
	WorkflowActionCancelableSleep cloudv1.WorkflowActionName = "cancelable-sleep"
	WorkflowActionEcho            cloudv1.WorkflowActionName = "echo"
	WorkflowActionAbort           cloudv1.WorkflowActionName = "abort"

	// common //
	WorkflowActionMutateAnnotations    cloudv1.WorkflowActionName = "mutate-annotations"
	WorkflowActionEnsureAnnotateToTC   cloudv1.WorkflowActionName = "ensure-annotate-to-tc"
	WfActionPauseReconciliationAction  cloudv1.WorkflowActionName = "PauseReconciliationAction"
	WfActionResumeReconciliationAction cloudv1.WorkflowActionName = "ResumeReconciliationAction"
	WfActionWaitTargetReadyAction      cloudv1.WorkflowActionName = "WaitTargetReadyAction"

	// cluster related //
	WorkflowActionToggleLBTarget         cloudv1.WorkflowActionName = "toggle-lb-target"
	WorkflowActionWaitClusterSynced      cloudv1.WorkflowActionName = "wait-cluster-synced"
	WorkflowActionRemoveTiProxy          cloudv1.WorkflowActionName = "remove-tiproxy"
	WorkflowActionScaleCluster           cloudv1.WorkflowActionName = "scale-cluster"
	WfActionTogglePDScheduler            cloudv1.WorkflowActionName = "toggle-pd-scheduler"
	WfActionSetStandbyNodeAction         cloudv1.WorkflowActionName = "SetStandbyNodeAction"
	WfActionUpdateClusterStatusAction    cloudv1.WorkflowActionName = "UpdateClusterStatusAction"
	WfActionDeleteTiDBClusterNodesAction cloudv1.WorkflowActionName = "DeleteTiDBClusterNodesAction"
	WfActionModifyLoadBalanceLogsAction  cloudv1.WorkflowActionName = "ModifyLoadBalanceLogsAction"
	WfActionModifyVPCFlowLogsAction      cloudv1.WorkflowActionName = "ModifyVPCFlowLogsAction"
	WfActionStartZonalShiftAction        cloudv1.WorkflowActionName = "StartZonalShiftAction"
	WfActionUpdateZonalShiftAction       cloudv1.WorkflowActionName = "UpdateZonalShiftAction"
	WfActionCancelZonalShiftAction       cloudv1.WorkflowActionName = "CancelZonalShiftAction"
	WfActionCleanupZonalShiftAction      cloudv1.WorkflowActionName = "CleanupZonalShiftAction"

	// dataplane related //
	WfActionGetPodInfoAction       cloudv1.WorkflowActionName = "GetPodInfoAction"
	WfActionCheckPodStatusAction   cloudv1.WorkflowActionName = "CheckPodStatusAction"
	WfActionWaitPodPhaseAction     cloudv1.WorkflowActionName = "WaitPodPhaseAction"
	WfActionRestartPodAction       cloudv1.WorkflowActionName = "RestartPodAction"
	WfActionRestartOtherPodAction  cloudv1.WorkflowActionName = "RestartOtherPodAction"
	WfActionRestartComponentAction cloudv1.WorkflowActionName = "RestartComponentAction"
	WfActionCordonNodeAction       cloudv1.WorkflowActionName = "CordonNodeAction"
	WfActionDeleteASTSAction       cloudv1.WorkflowActionName = "DeleteASTSAction"
	WfActionDeleteTCMemberAction   cloudv1.WorkflowActionName = "DeleteTCMemberAction"
	WfActionOfflineAZAction        cloudv1.WorkflowActionName = "OfflineAZAction"
	WfActionRecoverAZAction        cloudv1.WorkflowActionName = "RecoverAZAction"
)

// workflow input keys
const (
	WfInputKeyNamespace     = "namespace"
	WfInputKeyName          = "name"
	WfInputKeyTenant        = "tenantId"
	WfInputKeyProjectID     = "projectId"
	WfInputKeyClusterID     = "clusterId"
	WfInputKeyGroupID       = "groupId" // tidb node group id
	WfInputKeyComponentType = "componentType"
)

// WorkflowActionScaleCluster Action related consts
const (
	WfInputKeyScaleClusterOriginalComponentSpec     = "originalComponentSpec"
	WfInputKeyScaleClusterDesiredComponentSpec      = "desiredComponentSpec"
	WfInputKeyScaleClusterCurrentConfigRevisionName = "currentConfigRevisionName"
	WfInputKeyScaleClusterDesiredConfigRevisionName = "desiredConfigRevisionName"
	WfInputKeyScaleClusterDisableGKEHeterogeneous   = "disableGKEHeterogeneous"
	WfScaleClusterScopeReplicas                     = "replicas"
	WfScaleClusterScopeInstanceType                 = "instanceType"
	WfScaleClusterScopeStorage                      = "storage"
	WfScaleClusterScopeConfigRevision               = "configRevision"
)

// WfActionTogglePDScheduler Action related consts
const (
	WfInputKeyTogglePDSchedulerOpAdd    = "add"
	WfInputKeyTogglePDSchedulerOpRemove = "remove"
)
