{
  "templates": [
    {
      "name": "case-3-2",
      "inputs": {
        "parameters": [
          {
            "name": "target"
          },
          {
            "name": "case-3-2-timeout",
            "default": "2h0m0s"
          }
        ]
      },
      "outputs": {
        "artifacts": [
          {
            "name": "archive",
            "path": "/tmp/case-3-2",
            "optional": true
          },
          {
            "name": "output",
            "path": "/tmp/case-3-2.out",
            "archive": {
              "none": {}
            },
            "optional": true
          }
        ]
      },
      "metadata": {
        "labels": {
          "caseExecID": "3",
          "caseID": "3",
          "role": "case",
          "rootPlanExecID": "0"
        }
      },
      "container": {
        "name": "",
        "image": "hub.pingcap.net/qa/schrddl:v0.1.0-debug",
        "command": [
          "schrddl",
          "-mode=parallel"
        ],
        "env": [
          {
            "name": "TI_ARCHIVE",
            "value": "/tmp/case-3-2"
          },
          {
            "name": "TI_CASE_EXEC_ID",
            "value": "3"
          },
          {
            "name": "TI_OUTPUT",
            "value": "/tmp/case-3-2.out"
          },
          {
            "name": "TI_PARAM_RES_target",
            "value": "{{inputs.parameters.target}}"
          }
        ],
        "resources": {},
        "imagePullPolicy": "IfNotPresent"
      },
      "timeout": "{{inputs.parameters.case-3-2-timeout}}"
    },
    {
      "name": "pipeline",
      "inputs": {
        "parameters": [
          {
            "name": "tidb"
          }
        ]
      },
      "outputs": {},
      "metadata": {},
      "dag": {
        "target": "main",
        "tasks": [
          {
            "name": "main",
            "template": "case-3-2",
            "arguments": {
              "parameters": [
                {
                  "name": "target",
                  "value": "{{inputs.parameters.tidb}}"
                },
                {
                  "name": "case-3-2-timeout",
                  "value": "1h0m0s"
                }
              ]
            }
          }
        ],
        "failFast": false
      }
    },
    {
      "name": "plan-1-1-setup",
      "inputs": {},
      "outputs": {
        "parameters": [
          {
            "name": "plan-1-1-setup-output",
            "valueFrom": {
              "path": "/tmp/plan-1-1/output"
            },
            "globalName": "testbed-output"
          },
          {
            "name": "tidb",
            "valueFrom": {
              "path": "/tmp/plan-1-1/items/tidb"
            }
          }
        ]
      },
      "metadata": {
        "labels": {
          "planID": "1",
          "role": "setUp",
          "rootPlanExecID": "0"
        }
      },
      "container": {
        "name": "",
        "image": "{{workflow.parameters.setupImage}}",
        "command": [
          "/bin/bash",
          "-c"
        ],
        "args": [
          "total=1\nallocated=1\niter=0\nwhile true\ndo\n    printenv TESTBED_INPUT_SPEC | tcctl testbed create --wait-timeout=30m --output-spec=\"${TESTBED_OUTPUT_SPEC}\" --credential=\"\" -f - -r http://rms-apiserver-service.test-infra\n    allocated=$?\n    iter=$(($iter + 1))\n    if [ $allocated = 0 ] || [ $iter -ge $total ]\n    then break\n    fi\n    sleepSeconds=$(( ( $RANDOM % 10 +  10 * $iter ) * 60 ))\n    echo sleep ${sleepSeconds}\n    sleep ${sleepSeconds}\ndone\nif [ $allocated != 0 ]\nthen exit $allocated\nfi"
        ],
        "env": [
          {
            "name": "TESTBED_INPUT_SPEC",
            "value": "{\"items\":[{\"name\":\"tidb\",\"spec\":{\"version\":\"v5.0.0\"},\"type\":\"TIDB_CLUSTER\"}],\"meta\":{\"to\":[{\"name\":\"tipocket-runner\",\"kind\":\"ServiceAccount\",\"namespace\":\"testground\"}],\"accounting\":{\"name\":\"0\",\"kind\":\"ID\",\"namespace\":\"\"}},\"name\":\"testbed-\",\"physicalResourceRequest\":{\"cpu\":{},\"memory\":{}},\"resourcePool\":\"default\", \"rmsUrl\":\"http://rms-apiserver-service.test-infra\",\"reclaimPolicy\":{\"gcStrategy\":{},\"lease\":\"\"}}"
          },
          {
            "name": "TESTBED_OUTPUT_SPEC",
            "value": "{\"output\":\"/tmp/plan-1-1/output\",\"items\":[{\"name\":\"tidb\",\"path\":\"/tmp/plan-1-1/items/tidb\"}]}"
          },
          {
            "name": "TOKEN",
            "valueFrom": {
              "secretKeyRef": {
                "name": "rms-secret",
                "key": "token"
              }
            }
          }
        ],
        "resources": {
          "requests": {
            "cpu": "100m"
          }
        },
        "imagePullPolicy": "Always"
      }
    },
    {
      "name": "teardown",
      "inputs": {},
      "outputs": {},
      "metadata": {
        "labels": {
          "role": "tearDown"
        }
      },
      "container": {
        "name": "",
        "image": "{{workflow.parameters.setupImage}}",
        "command": [
          "/bin/sh",
          "-c"
        ],
        "args": [
          "\nif [ {{workflow.status}} = \"Succeeded\" ]; then\n\ttcctl testbed complete $(printenv TESTBED_SETUP_OUTPUT | jq '.name' -r) --type Success  -r http://rms-apiserver-service.test-infra\nelse\n\ttcctl testbed complete $(printenv TESTBED_SETUP_OUTPUT | jq '.name' -r) --type Failure  -r http://rms-apiserver-service.test-infra\nfi\n"
        ],
        "env": [
          {
            "name": "TESTBED_SETUP_OUTPUT",
            "value": "{{workflow.outputs.parameters.testbed-output}}"
          },
          {
            "name": "TOKEN",
            "valueFrom": {
              "secretKeyRef": {
                "name": "rms-secret",
                "key": "token"
              }
            }
          }
        ],
        "resources": {},
        "imagePullPolicy": "Always"
      }
    },
    {
      "name": "plan-1-1",
      "inputs": {},
      "outputs": {},
      "metadata": {},
      "dag": {
        "target": "pipeline",
        "tasks": [
          {
            "name": "plan-1-1-setup",
            "template": "plan-1-1-setup",
            "arguments": {}
          },
          {
            "name": "pipeline",
            "template": "pipeline",
            "arguments": {
              "parameters": [
                {
                  "name": "tidb",
                  "value": "{{tasks.plan-1-1-setup.outputs.parameters.tidb}}"
                }
              ]
            },
            "dependencies": [
              "plan-1-1-setup"
            ]
          }
        ]
      }
    }
  ],
  "entrypoint": "plan-1-1",
  "arguments": {"parameters":  [{"name": "setupImage", "value":"setup:latest"}]},
  "onExit": "teardown"
}
