apiVersion: api/v1
kind: Plan
name: dm-sharding-optimistic-add-index
schedule: "@daily"
failFast: false
tags: ["dm"]
testbed:
  generateName: dm-sharding-optimistic-add-index-testbed
  resourcePool: "{{meta.parameters.dm_resource_pool}}"
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: "{{meta.parameters.onFailureReserveDurationOnWorkingHour}}"
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/0328b785-00bf-49d7-8857-26e132715c51
      onSuccess:
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/0328b785-00bf-49d7-8857-26e132715c51
  items:
    - name: upstream1
      type: MYSQL_NODE
      spec:
        image: "{{meta.parameters.mysql_binlog_image}}"
        port: 3306
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
          MYSQL_ROOT_HOST: "%"
        resources:
          requests:
            memory: 4Gi
            cpu: 4000m
            storage: 500Gi
        volumeMount:
          mountPath: "/var/lib/mysql" # mountPath of "storage" request
    - name: upstream2
      type: MYSQL_NODE
      spec:
        image: "{{meta.parameters.mysql_binlog_image}}"
        port: 3306
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
          MYSQL_ROOT_HOST: "%"
        resources:
          requests:
            memory: 4Gi
            cpu: 4000m
            storage: 500Gi
        volumeMount:
          mountPath: "/var/lib/mysql" # mountPath of "storage" request
    - name: downstream
      type: TIDB_CLUSTER
      spec:
        imagePullPolicy: Always
        pd:
          replicas: 1
          requests:
            cpu: 1000m
            memory: 4Gi
          limits:
            cpu: 1000m
            memory: 4Gi
          baseImage: "{{meta.parameters.pd_base_image}}"
          version: "{{meta.parameters.pd_component_version}}"
        tikv:
          storageClassName: fast-disks
          replicas: 1
          requests:
            cpu: 8000m
            memory: 16Gi
          limits:
            cpu: 8000m
            memory: 16Gi
          baseImage: "{{meta.parameters.tikv_base_image}}"
          version: "{{meta.parameters.tikv_component_version}}"
        tidb:
          replicas: 1
          requests:
            cpu: 8000m
            memory: 16Gi
          limits:
            cpu: 8000m
            memory: 16Gi
          baseImage: "{{meta.parameters.tidb_base_image}}"
          version: "{{meta.parameters.tidb_component_version}}"
        version: "{{meta.parameters.base_image_version}}"
    - name: dm
      type: DM_CLUSTER
      spec:
        version: "{{meta.parameters.dm_version}}"
        imagePullPolicy: Always
        master:
          baseImage: "{{meta.parameters.dm_base_image}}"
          replicas: 3
        worker:
          baseImage: "{{meta.parameters.dm_base_image}}"
          replicas: 3
    - name: workload
      type: WORKLOAD_NODE
      spec:
        container:
          name: sysbench
          image: hub-new.pingcap.net/jianxu/go-ycsb
          command:
            - tail
            - "-f"
            - /dev/null
          resources:
            requests:
              memory: 4Gi
              cpu: 8000m
    - name: syncdiff
      type: WORKLOAD_NODE
      spec:
        container:
          name: syncdiff
          image: pingcap/tidb-enterprise-tools:nightly
          command:
            - tail
            - "-f"
            - "/dev/null"
          resources:
            requests:
              memory: 4Gi
              cpu: 4000m
steps:
  - name: dm-sharding-optimistic-add-index
    caseName: dm_sharding_optimistic_add_index
    arguments:
      - name: upstream1
        value: "{{testbed.upstream1}}"
      - name: upstream2
        value: "{{testbed.upstream2}}"
      - name: downstream
        value: "{{testbed.downstream}}"
      - name: dm
        value: "{{testbed.dm}}"
      - name: workload
        value: "{{testbed.workload}}"
      - name: syncdiff
        value: "{{testbed.syncdiff}}"
