package nodepool

import (
	"github.com/tidbcloud/infra-provider/regional-server/pkg/consts"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/nodepool/task"
	acktask "github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/nodepool/task/ack"
	akstask "github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/nodepool/task/aks"
	ekstask "github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/nodepool/task/eks"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/deploy"
)

func GetNodePoolTasks(c *task.Context) []deploy.Task {
	tasks := []deploy.Task{
		task.NewGuardian(c),
	}

	switch c.Config.Provider {
	case consts.ProviderTypeEKS:
		tasks = append(tasks, ekstask.NewPlacementGroup(c), ekstask.NewNodeGroup(c))
	case consts.ProviderTypeACK:
		tasks = append(tasks, acktask.NewNodePool(c))
	case consts.ProviderTypeAKS:
		tasks = append(tasks, akstask.NewNodePool(c))
	}

	return tasks
}
