/*
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
*/
package cmd

import (
	"github.com/spf13/cobra"
	"github.com/tidbcloud/auto-deploy/internal"
	"github.com/tidbcloud/auto-deploy/internal/metrics"
)

var recreateAwsRegionArgs = internal.RecreateAwsRegionK8sArgs{}

// deployAwsRegionCmd represents the deploy command
var recreateAwsRegionK8sCmd = &cobra.Command{
	Use:   "recreate-aws-region-k8s",
	Short: "Recreate AWS region K8s after destroy k8s",
	Long: `Recreate AWS region K8s after destroy k8s

For example:
deploy-cli recreate-aws-region-k8s \
    --region-name us-west-2-test1 \
`,
	RunE: func(cmd *cobra.Command, _ []string) error {
		recreateAwsRegionArgs.InstanceName = instance
		recreateAwsRegionArgs.OidcProviderType = oidcProvider
		metrics.AddQueuedDurationMetric()
		metrics.AddPrepareDurationMetric()
		return internal.RereateAwsRegionK8s(recreateAwsRegionArgs)
	},
}

func init() {
	rootCmd.AddCommand(recreateAwsRegionK8sCmd)
	recreateAwsRegionK8sCmd.Flags().StringVarP(&recreateAwsRegionArgs.RegionName, "region-name", "n", "", "Deployed region name")
	recreateAwsRegionK8sCmd.Flags().StringVarP(&recreateAwsRegionArgs.MetaURI, "meta-uri", "", "", "Where to store or read metadata of this region")
	recreateAwsRegionK8sCmd.Flags().StringVarP(&recreateAwsRegionArgs.RoleArn, "role-arn", "", "", "AWS role arn to read meta")
	recreateAwsRegionK8sCmd.Flags().StringVarP(&recreateAwsRegionArgs.Region, "cloud-region", "r", "", "Cloud region (location) to recreate k8s, for example: us-west-2, eu-central-1")

	// mark required flag
	for _, flag := range []string{"region-name", "role-arn", "cloud-region"} {
		recreateAwsRegionK8sCmd.MarkFlagRequired(flag)
	}
}
