/*
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 recreateAzureRegionArgs = internal.RecreateAzureRegionArgs{}

// deployAwsRegionCmd represents the deploy command
var recreateAzureRegionCmd = &cobra.Command{
	Use:   "recreate-azure-region",
	Short: "Recreate Azure region K8s after destroy k8s",
	Long: `Recreate Azure 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 {
		recreateAzureRegionArgs.InstanceName = instance
		recreateAzureRegionArgs.OidcProviderType = oidcProvider
		metrics.AddQueuedDurationMetric()
		metrics.AddPrepareDurationMetric()
		return internal.RereateAzureRegion(recreateAzureRegionArgs)
	},
}

func init() {
	rootCmd.AddCommand(recreateAzureRegionCmd)
	recreateAzureRegionCmd.Flags().StringVarP(&recreateAzureRegionArgs.RegionName, "region-name", "n", "", "Deployed region name")
	recreateAzureRegionCmd.Flags().StringVarP(&recreateAzureRegionArgs.MetaURI, "meta-uri", "", "", "Where to store or read metadata of this region")
	recreateAzureRegionCmd.Flags().StringVarP(&recreateAzureRegionArgs.Region, "cloud-region", "r", "", "Cloud region (location) to recreate k8s, for example: us-west-2, eu-central-1")
	recreateAzureRegionCmd.Flags().StringVar(&recreateAzureRegionArgs.TenantId, "tenant-id", "", "Tenant id to create k8s")
	recreateAzureRegionCmd.Flags().StringVar(&recreateAzureRegionArgs.SubscriptionId, "subscription-id", "", "Subscription id to create k8s")
	recreateAzureRegionCmd.Flags().StringVar(&recreateAzureRegionArgs.ClientId, "client-id", "", "Client id to create k8s")
	// mark required flag
	for _, flag := range []string{"region-name", "meta-uri", "tenant-id", "subscription-id", "client-id", "cloud-region"} {
		recreateAzureRegionCmd.MarkFlagRequired(flag)
	}
}
