package vpcpeering

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

func BuildVPCPeeringTasks(c *task.Context) []deploy.Task {
	switch c.VPCPeering.Spec.Provider {
	case consts.ProviderTypeEKS:
		return BuildEKSVPCPeeringTasks(c)
	case consts.ProviderTypeACK:
		return BuildACKVPCPeeringTasks(c)
	}
	return nil
}

func BuildEKSVPCPeeringTasks(c *task.Context) []deploy.Task {
	return []deploy.Task{
		commontask.NewGuardian(c),
		awstask.NewVPCPeeringConnection(c),
	}
}

func BuildACKVPCPeeringTasks(c *task.Context) []deploy.Task {
	return []deploy.Task{
		commontask.NewGuardian(c),
		alitask.NewVPCPeeringConnection(c),
	}
}
