pkg/workflows/workload/delete.go (44 lines of code) (raw):
package workload
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 {
provider providers.Provider
writer filewriter.FileWriter
clusterManager interfaces.ClusterManager
clusterDeleter interfaces.ClusterDeleter
gitopsManager interfaces.GitOpsManager
}
// NewDelete builds a new delete construct.
func NewDelete(provider providers.Provider,
writer filewriter.FileWriter,
clusterManager interfaces.ClusterManager,
clusterDeleter interfaces.ClusterDeleter,
gitopsManager interfaces.GitOpsManager,
) *Delete {
return &Delete{
provider: provider,
writer: writer,
clusterManager: clusterManager,
clusterDeleter: clusterDeleter,
gitopsManager: gitopsManager,
}
}
// Run executes the tasks to delete a workload cluster.
func (c *Delete) Run(ctx context.Context, workload *types.Cluster, clusterSpec *cluster.Spec) error {
commandContext := &task.CommandContext{
Provider: c.provider,
Writer: c.writer,
ClusterManager: c.clusterManager,
ClusterSpec: clusterSpec,
ManagementCluster: clusterSpec.ManagementCluster,
WorkloadCluster: workload,
ClusterDeleter: c.clusterDeleter,
GitOpsManager: c.gitopsManager,
}
return task.NewTaskRunner(&setupAndValidateDelete{}, c.writer).RunTask(ctx, commandContext)
}