package key

import (
	"github.com/tidbcloud/infra-provider/regional-server/pkg/consts"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/key/task"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/key/task/alicloud"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/key/task/aws"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/key/task/common"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/deploy"
)

func GetKeyTasks(r *Reconciler, c *task.Context) []deploy.Task {
	switch c.Key.Spec.Provider {
	case consts.ProviderTypeEKS:
		return GetAWSKeyTasks(r, c)
	case consts.ProviderTypeACK:
		return GetACKKeyTasks(r, c)
	}

	return nil
}

func GetAWSKeyTasks(r *Reconciler, c *task.Context) []deploy.Task {
	tasks := []deploy.Task{
		common.NewGuardian(c),
		aws.NewKey(c),
	}

	return tasks
}

func GetACKKeyTasks(r *Reconciler, c *task.Context) []deploy.Task {
	tasks := []deploy.Task{
		common.NewGuardian(c),
		alicloud.NewKey(c),
	}

	return tasks
}
