package networkpeer

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

func GetNetworkPeerTasks(r *NetworkPeerReconciler, c *task.Context) []deploy.Task {

	switch c.ProviderType {
	case consts.ProviderTypeEKS:
		return GetEKSNetworkPeerTasks(r, c)
	case consts.ProviderTypeGKE:
		return GetGKENetworkPeerTasks(r, c)
	}

	return nil
}

func GetEKSNetworkPeerTasks(r *NetworkPeerReconciler, c *task.Context) []deploy.Task {
	return []deploy.Task{
		commontask.NewGuardian(c),
		ekstask.NewPeer(c),
	}
}

func GetGKENetworkPeerTasks(r *NetworkPeerReconciler, c *task.Context) []deploy.Task {
	return []deploy.Task{
		commontask.NewGuardian(c),
		gketask.NewPeer(c),
	}
}
