pkg/workflows/management/delete.go (63 lines of code) (raw):
package management
import (
"context"
"github.com/aws/eks-anywhere/pkg/cluster"
"github.com/aws/eks-anywhere/pkg/filewriter"
"github.com/aws/eks-anywhere/pkg/providers"
"github.com/aws/eks-anywhere/pkg/task"
"github.com/aws/eks-anywhere/pkg/types"
"github.com/aws/eks-anywhere/pkg/workflows/interfaces"
)
// Delete is the workflow that deletes a workload clusters.
type Delete struct {
bootstrapper interfaces.Bootstrapper
provider providers.Provider
writer filewriter.FileWriter
clusterManager interfaces.ClusterManager
gitopsManager interfaces.GitOpsManager
clusterDeleter interfaces.ClusterDeleter
eksdInstaller interfaces.EksdInstaller
eksaInstaller interfaces.EksaInstaller
clientFactory interfaces.ClientFactory
clusterMover interfaces.ClusterMover
}
// NewDelete builds a new delete construct.
func NewDelete(bootstrapper interfaces.Bootstrapper,
provider providers.Provider,
writer filewriter.FileWriter,
clusterManager interfaces.ClusterManager,
gitopsManager interfaces.GitOpsManager,
clusterDeleter interfaces.ClusterDeleter,
eksdInstaller interfaces.EksdInstaller,
eksaInstaller interfaces.EksaInstaller,
clientFactory interfaces.ClientFactory,
mover interfaces.ClusterMover,
) *Delete {
return &Delete{
bootstrapper: bootstrapper,
provider: provider,
writer: writer,
clusterManager: clusterManager,
gitopsManager: gitopsManager,
clusterDeleter: clusterDeleter,
eksdInstaller: eksdInstaller,
eksaInstaller: eksaInstaller,
clientFactory: clientFactory,
clusterMover: mover,
}
}
// Run executes the tasks to delete a management cluster.
func (c *Delete) Run(ctx context.Context, workload *types.Cluster, clusterSpec *cluster.Spec) error {
commandContext := &task.CommandContext{
Bootstrapper: c.bootstrapper,
Provider: c.provider,
Writer: c.writer,
ClusterManager: c.clusterManager,
ClusterSpec: clusterSpec,
WorkloadCluster: workload,
GitOpsManager: c.gitopsManager,
ClusterDeleter: c.clusterDeleter,
EksdInstaller: c.eksdInstaller,
EksaInstaller: c.eksaInstaller,
ClientFactory: c.clientFactory,
ClusterMover: c.clusterMover,
}
return task.NewTaskRunner(&setupAndValidateDelete{}, c.writer).RunTask(ctx, commandContext)
}