diff --git a/features/deployment_versioning/aa_clean_old_deployments/feature.go b/features/deployment_versioning/aa_clean_old_deployments/feature.go index ad816ed7..60a18c2b 100644 --- a/features/deployment_versioning/aa_clean_old_deployments/feature.go +++ b/features/deployment_versioning/aa_clean_old_deployments/feature.go @@ -68,10 +68,11 @@ func ListOldDeployments(ctx context.Context) ([]string, error) { } func DeleteDeployment(ctx context.Context, deploymentName string) error { - client := activity.GetClient(ctx) + tClient := activity.GetClient(ctx) ns := activity.GetInfo(ctx).WorkflowNamespace - deploymentInfo, err := client.WorkflowService().DescribeWorkerDeployment( + // Describe to get version summaries + deploymentInfo, err := tClient.WorkflowService().DescribeWorkerDeployment( ctx, &workflowservice.DescribeWorkerDeploymentRequest{ Namespace: ns, @@ -81,55 +82,10 @@ func DeleteDeployment(ctx context.Context, deploymentName string) error { if err != nil { return fmt.Errorf("failed to describe worker deployment %s: %w", deploymentName, err) } - // Unset current/ramping versions so things can be deleted - _, err = client.WorkflowService().SetWorkerDeploymentCurrentVersion(ctx, &workflowservice.SetWorkerDeploymentCurrentVersionRequest{ - Namespace: ns, - DeploymentName: deploymentName, - Identity: "feature-deployment-deleter", - IgnoreMissingTaskQueues: true, - AllowNoPollers: true, - }) - if err != nil { - // Try using unversioned string (needed if deployment was very old) - _, err = client.WorkflowService().SetWorkerDeploymentCurrentVersion(ctx, &workflowservice.SetWorkerDeploymentCurrentVersionRequest{ - Namespace: ns, - DeploymentName: deploymentName, - Version: "__unversioned__", - BuildId: "__unversioned__", - Identity: "feature-deployment-deleter", - IgnoreMissingTaskQueues: true, - AllowNoPollers: true, - }) - if err != nil { - return fmt.Errorf("failed to unset current version for deployment %s: %w", deploymentName, err) - } - } - _, err = client.WorkflowService().SetWorkerDeploymentRampingVersion(ctx, &workflowservice.SetWorkerDeploymentRampingVersionRequest{ - Namespace: ns, - DeploymentName: deploymentName, - Identity: "feature-deployment-deleter", - IgnoreMissingTaskQueues: true, - AllowNoPollers: true, - }) - if err != nil { - // Try using unversioned string (needed if deployment was very old) - _, err = client.WorkflowService().SetWorkerDeploymentRampingVersion(ctx, &workflowservice.SetWorkerDeploymentRampingVersionRequest{ - Namespace: ns, - DeploymentName: deploymentName, - Version: "__unversioned__", - BuildId: "__unversioned__", - Identity: "feature-deployment-deleter", - IgnoreMissingTaskQueues: true, - AllowNoPollers: true, - }) - if err != nil { - return fmt.Errorf("failed to unset ramping version for deployment %s: %w", deploymentName, err) - } - return fmt.Errorf("failed to unset ramping version for deployment %s: %w", deploymentName, err) - } + // Delete all versions (with SkipDrainage to force delete) for _, version := range deploymentInfo.WorkerDeploymentInfo.VersionSummaries { - _, err = client.WorkflowService().DeleteWorkerDeploymentVersion(ctx, + _, err = tClient.WorkflowService().DeleteWorkerDeploymentVersion(ctx, &workflowservice.DeleteWorkerDeploymentVersionRequest{ Namespace: ns, DeploymentVersion: version.DeploymentVersion, @@ -143,12 +99,16 @@ func DeleteDeployment(ctx context.Context, deploymentName string) error { } } - client.WorkflowService().DeleteWorkerDeployment(ctx, + // Delete the deployment itself + _, err = tClient.WorkflowService().DeleteWorkerDeployment(ctx, &workflowservice.DeleteWorkerDeploymentRequest{ Namespace: ns, DeploymentName: deploymentName, Identity: "features-deployment-deleter", }, ) + if err != nil { + return fmt.Errorf("failed to delete deployment %s: %w", deploymentName, err) + } return nil }