package main

import (
	"context"

	"github.com/spf13/cobra"
	"k8s.io/klog/v2"

	"source.monogon.dev/cloud/equinix/wrapngo"
	clicontext "source.monogon.dev/metropolis/cli/pkg/context"
)

var moveCmd = &cobra.Command{
	Use:   "move [source] [target]",
	Short: "Move all reserved hardware from one to another project",
	Args:  cobra.ExactArgs(2),
	Run:   doMove,
}

func init() {
	rootCmd.AddCommand(moveCmd)
}

func doMove(cmd *cobra.Command, args []string) {
	ctx := clicontext.WithInterrupt(context.Background())
	api := wrapngo.New(&c)

	klog.Infof("Listing reservations for %q", args[0])
	reservations, err := api.ListReservations(ctx, args[0])
	if err != nil {
		klog.Exitf("failed listing reservations: %v", err)
	}

	klog.Infof("Got %d reservations. Moving machines", len(reservations))
	for _, r := range reservations {
		_, err := api.MoveReservation(ctx, r.ID, args[1])
		if err != nil {
			klog.Errorf("failed moving reservation: %v", err)
			continue
		}
		klog.Infof("Moved Device %s", r.ID)
	}
}
