apiVersion: api/v1
kind: Plan
name: pd_failover_hongm
schedule: '0 0 * * 2,4,6'
tags: []
testbed:
  generateName: pd-failover-hongm-
  #resourcePool: scenario
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '{{meta.parameters.onFailureNoReserve}}'
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/259e813d-7676-4876-8de2-962df96f4d8e
      onSuccess:
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/259e813d-7676-4876-8de2-962df96f4d8e
  items:
  - name: tc
    type: TIDB_CLUSTER
    spec:
      pd:
        replicas: 3
        service:
          type: NodePort
          # more refer to: https://github.com/tikv/pd/blob/master/conf/config.toml
          # config is string type and toml format, I prefer uses https://www.convertsimple.com/convert-yaml-to-toml/ to transfer yaml to toml
        config: |
          [replication]
          location-labels = [ "zone", "host" ]
          [schedule]
            merge-schedule-limit = 80
            max-store-down-time = "30m"
          [dashboard]
            internal-proxy = true  
        requests:
          cpu: 4000m
          memory: 8Gi
        limits:
          cpu: 4000m
          memory: 8Gi
        baseImage: '{{meta.parameters.pd_base_image}}'
        version: '{{meta.parameters.pd_component_version}}'
      tikv:
        replicas: 6
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
        # caution: topologySpreadConstraints only supports on k8s provider environment, it may don't work well on dbaas or some others
        # more info refers on: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
        topologySpreadConstraints:
          # means the tikv node is evenly distributed in three zone: zone1, zone2, zone3 in our test
        - topologyKey: zone
        # I suggest don't add the hostname topologyKey since the scale of our testing cluster is small
        # - topologyKey: kubernetes.io/hostname              
        baseImage: '{{meta.parameters.tikv_base_image}}'
        version: '{{meta.parameters.tikv_component_version}}'
      tidb:
        replicas: 3
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
           # caution: topologySpreadConstraints only supports on k8s provider environment, it may don't work well on dbaas or some others
           # more info refers on: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
        topologySpreadConstraints:
          # means the tikv node is evenly distributed in three zone: zone1, zone2, zone3 in our test
        - topologyKey: zone
          # I suggest don't add the hostname topologyKey since the scale of our testing cluster is small
          # - topologyKey: kubernetes.io/hostname               
        baseImage: '{{meta.parameters.tidb_base_image}}'
        version: '{{meta.parameters.tidb_component_version}}'
      version: '{{meta.parameters.base_image_version}}'
  - name: br
    type: BR_NODE
    spec:
      image: '{{meta.parameters.br_image}}'
      artifact:
        artifactPaths:
        - /tmp/br.log*
  - name: benchtoolset
    type: WORKLOAD_NODE
    spec:
      container:
        name: benchtoolset
        image: '{{meta.parameters.bench_toolset_image}}'
        command:
        - tail
        - "-f"
        - "/dev/null"
        resources:
          requests:
            cpu: 8000m
            memory: 16Gi
steps:
- name: pdFailover01
  caseName: pd-re-fail-01
  arguments:
  - name: tc
    value: '{{testbed.tc}}'
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
- name: pdFailover02
  caseName: pd-re-fail-02
  arguments:
  - name: tc
    value: '{{testbed.tc}}'
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
- name: pdFailover03
  caseName: pd-re-fail-03
  arguments:
  - name: tc
    value: '{{testbed.tc}}'
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
- name: pdFailover04
  caseName: pd-re-fail-04
  arguments:
  - name: tc
    value: '{{testbed.tc}}'
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
- name: pd-re-leader-01
  caseName: pd-re-leader-01
  arguments:
  - name: tc
    value: '{{testbed.tc}}'
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
- name: pd-re-leader-02
  caseName: pd-re-leader-02
  arguments:
  - name: tc
    value: '{{testbed.tc}}'
  - name: benchtoolset
    value: '{{testbed.benchtoolset}}'
  - name: br
    value: '{{testbed.br}}'
failFast: false
