package main

import (
	"github.com/juju/errors"
	"github.com/pingcap/schrodinger/pkg/test_client"
	"github.com/pingcap/schrodinger/pkg/types"
)

func replaceCat(cli *client.Client, version *Version) error {
	pdConfig := cli.CatConfig().PDConfig
	pdConfig.Version = version.Pd

	tikvConfig := cli.CatConfig().TiKVConfig
	tikvConfig.Version = version.Tikv

	tidbConfig := cli.CatConfig().TiDBConfig
	tidbConfig.Version = version.Tidb
	cat := &types.Cat{
		PDConfig:   pdConfig,
		TiKVConfig: tikvConfig,
		TiDBConfig: tidbConfig,
	}

	err := cli.ReplaceCat(cat)
	if err != nil {
		return errors.Trace(err)
	}
	return nil
}

func upgradeCat(cli *client.Client, version *Version) error {
	pdConfig := cli.CatConfig().PDConfig
	pdConfig.Version = version.Pd

	tikvConfig := cli.CatConfig().TiKVConfig
	tikvConfig.Version = version.Tikv

	tidbConfig := cli.CatConfig().TiDBConfig
	tidbConfig.Version = version.Tidb
	newCat := &types.Cat{
		PDConfig:   pdConfig,
		TiDBConfig: tidbConfig,
		TiKVConfig: tikvConfig,
	}

	err := cli.UpgradeCat(newCat)
	if err != nil {
		return errors.Trace(err)
	}
	return nil
}
