apiVersion: api/v1
kind: Plan
name: endless-upgrade-with-tools
#type: ONE_SHOT
schedule: "@daily"
tags: [upgrade]
testbed:
  generateName: testbed-upgrade-
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: '{{meta.parameters.onFailureReserveDurationOnWorkingHour}}'
  items:
  - name: tiup
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /root/result/
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 8Gi
            cpu: 2000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: tidb
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/tidb-14000/log
        - /tiup/deploy/tidb-4000/log
        - /tiup/deploy/tidb-5000/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 6Gi
            cpu: 2000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: tikv
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/tikv-20160/log
        - /tiup/deploy/tikv-20260/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 6Gi
            cpu: 2000m
            storage: 200Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: tikv2
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/tikv-20360/log
        - /tiup/deploy/tikv-20460/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 4Gi
            cpu: 2000m
            storage: 200Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: pd
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/pd-12379/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 4Gi
            cpu: 2000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: pd2
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/pd-2379/log
        - /tiup/deploy/pd-22379/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 4Gi
            cpu: 2000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: tiflash
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/tiflash-9000/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 6Gi
            cpu: 1000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"
  - name: cdc
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/cdc-8300/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 2Gi
            cpu: 1000m
            storage: 40Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

  - name: wkload
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /root/wkload/
      container:
        name: node
        image: "{{meta.parameters.tiup_upgrade_workload_image}}"
        imagePullPolicy: Always
        resources:
          requests:
            memory: 2Gi
            cpu: 1000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"
        command:
        - tail
        - "-F"
        - "/dev/null"
  - name: stmt
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /root/wkload/
      container:
        name: node
        image: hub-new.pingcap.net/test-store/stmtflow:latest
        imagePullPolicy: Always
        resources:
          requests:
            memory: 2Gi
            cpu: 1000m
            storage: 50Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"
        command:
        - tail
        - "-F"
        - "/dev/null"
  - name: dbdeployer
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /root/wkload/
      container:
        name: node
        image: hub.pingcap.net/migration-test/dbdeployer-amd64:latest
        imagePullPolicy: Always
        resources:
          requests:
            memory: 2Gi
            cpu: 1000m
            storage: 50Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"
        command:
        - tail
        - "-F"
        - "/dev/null"
  - name: cluster2
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /tiup/deploy/tidb-14000/log
      container:
        name: node
        image: hub.pingcap.net/qa/base-image
        imagePullPolicy: Always
        resources:
          requests:
            memory: 4Gi
            cpu: 2000m
            storage: 100Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"
  - name: mysql
    type: WORKLOAD_NODE     # 测试资源类型: WORKLOAD_NODE
    spec:
      artifact:
        artifactPaths:         # 测试结束后会打包的目录, 每个目录一个 tarball 传到 minio
        - /root/result
      container:
        name: node
        image: hub.pingcap.net/ehco/mysql:5.7-dm-gtid-server-id-1
        imagePullPolicy: Always
        port: 3306
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
          MYSQL_ROOT_HOST: "%"
        resources:
          requests:
            memory: 2Gi
            cpu: 1000m
            storage: 50Gi

        securityContext:
          capabilities:
            add: ["SYS_ADMIN", "SYS_PTRACE", "NET_ADMIN"]
        volumeMount:
          mountPath: "/tiup"

steps:
- name: UPGRADE-with-tools
  caseName: tiup_upgrade_with_tools
  arguments:
  - name: tiup
    value: "{{testbed.tiup}}"
  - name: tidb
    value: "{{testbed.tidb}}"
  - name: tikv
    value: "{{testbed.tikv}}"
  - name: tikv2
    value: "{{testbed.tikv2}}"
  - name: pd
    value: "{{testbed.pd}}"
  - name: tiflash
    value: "{{testbed.tiflash}}"
  - name: cdc
    value: "{{testbed.cdc}}"
  - name: wkload
    value: "{{testbed.wkload}}"
  - name: mysql
    value: "{{testbed.mysql}}"
  - name: cluster2
    value: "{{testbed.cluster2}}"
  - name: stmt
    value: "{{testbed.stmt}}"
  - name: dbdeployer
    value: "{{testbed.dbdeployer}}"
  - name: init_version
    value: "{{meta.parameters.tiup_src_verion}}"
  - name: target_version
    value: "{{meta.parameters.tiup_target_version}}"
  - name: expression_index
    value: "false"
  - name: tiup_mirror
    value: "{{meta.parameters.tiup_mirror}}"


failFast: false
