package main

import (
	"fmt"

	"github.com/juju/errors"
	"github.com/ngaut/log"
	client "github.com/pingcap/schrodinger/pkg/test_client"
	"k8s.io/api/core/v1"
)

func setUpDrainer(cli *client.Client, drainerVersion string, mysqlAddr string) (string, error) {
	log.Debug("get pds")
	pd := cli.PdService()
	log.Debugf("pd addr %s", pd)

	log.Debug("start drainer")
	drainer, err := startDrainer(cli, drainerVersion, pd, mysqlAddr)

	if err != nil {
		log.Errorf("start drainer failed %v", err)
		return "", errors.Trace(err)
	}
	return drainer, nil
}

func startDrainer(cli *client.Client, drainerVersion string, pdAddr string, mysqlHost string) (string, error) {
	url := getDrainerURL(drainerVersion)
	env := []v1.EnvVar{
		{
			Name:  "MYSQL_HOST",
			Value: mysqlHost,
		},
	}
	app, err := cli.CreateTool(url, "drainer", "drainer", fmt.Sprintf("--L=debug --txn-batch=300 --c=1 --pd-urls=http://%s --metrics-addr=%s", pdAddr, ""), "", env)
	return app.Host, errors.Trace(err)
}

func getDrainerURL(drainerVersion string) string {
	return fmt.Sprintf("https://download.pingcap.org/tidb-binlog-%s-linux-amd64.tar.gz", drainerVersion)
}
