package dumpling

import (
	"github.com/tidbcloud/eks-provider/controllers/dumpling/task"
	commontask "github.com/tidbcloud/eks-provider/controllers/dumpling/task/common"
	ekstask "github.com/tidbcloud/eks-provider/controllers/dumpling/task/eks"
	gketask "github.com/tidbcloud/eks-provider/controllers/dumpling/task/gke"
	"github.com/tidbcloud/infra-provider/pkg/consts"
	"github.com/tidbcloud/infra-provider/pkg/deploy"
)

func GetDumplingTasks(dumpling *DumplingReconciler, context *task.Context) []deploy.Task {
	switch context.Provider.GetProviderType() {
	case consts.ProviderTypeEKS:
		return GetEKSDumplingTasks(dumpling, context)
	case consts.ProviderTypeGKE:
		return GetGKEDumplingTasks(dumpling, context)
	}
	return nil
}

func GetEKSDumplingTasks(dumpling *DumplingReconciler, context *task.Context) (tasks []deploy.Task) {
	tasks = []deploy.Task{
		ekstask.NewNodegroup(context),
		commontask.NewDumpling(context),
		commontask.NewObserve(context),
	}
	return tasks
}

func GetGKEDumplingTasks(dumpling *DumplingReconciler, context *task.Context) (tasks []deploy.Task) {
	tasks = []deploy.Task{
		gketask.NewNodePool(context),
		commontask.NewDumpling(context),
		commontask.NewObserve(context),
	}
	return tasks
}
