cmd/e2e-test/cleanup/cleanup.go (58 lines of code) (raw):
package cleanup
import (
"context"
"fmt"
"os"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/integrii/flaggy"
"go.uber.org/zap"
"gopkg.in/yaml.v2"
"github.com/aws/eks-hybrid/internal/cli"
"github.com/aws/eks-hybrid/test/e2e"
"github.com/aws/eks-hybrid/test/e2e/cluster"
)
type Command struct {
flaggy *flaggy.Subcommand
resourcesFilePath string
}
func NewCommand() *Command {
cmd := Command{}
cleanup := flaggy.NewSubcommand("cleanup")
cleanup.Description = "Delete the E2E test infrastructure"
cleanup.AdditionalHelpPrepend = "This command will cleanup E2E test infrastructure."
cleanup.String(&cmd.resourcesFilePath, "f", "filename", "Path to resources file")
cmd.flaggy = cleanup
return &cmd
}
func (c *Command) Flaggy() *flaggy.Subcommand {
return c.flaggy
}
func (c *Command) Commands() []cli.Command {
return []cli.Command{c}
}
func (s *Command) Run(log *zap.Logger, opts *cli.GlobalOptions) error {
ctx := context.Background()
logger := e2e.NewLogger()
file, err := os.ReadFile(s.resourcesFilePath)
if err != nil {
return fmt.Errorf("failed to open configuration file: %w", err)
}
deleteCluster := cluster.DeleteInput{}
if err = yaml.Unmarshal(file, &deleteCluster); err != nil {
return fmt.Errorf("unmarshaling cleanup config: %w", err)
}
aws, err := e2e.NewAWSConfig(ctx,
config.WithRegion(deleteCluster.ClusterRegion),
// We use a custom AppId so the requests show that they were
// made by this cleanup in the user-agent
config.WithAppID("nodeadm-e2e-test-cleanup-cmd"),
)
if err != nil {
return fmt.Errorf("reading AWS configuration: %w", err)
}
delete := cluster.NewDelete(aws, logger, deleteCluster.Endpoint)
logger.Info("Cleaning up E2E cluster resources...")
if err = delete.Run(ctx, deleteCluster); err != nil {
return fmt.Errorf("error cleaning up e2e resources: %w", err)
}
logger.Info("Cleanup completed successfully!")
return nil
}