in pkg/infrastructure/authorizationCheckers/ARMTemplateDeployment/armTemplateAuthorizationChecker.go [227:264]
func (a *armDeploymentConfig) cancelDeployment(ctx context.Context, deploymentName string, mpfConfig domain.MPFConfig) error {
// Get deployments status. If status is "Running", cancel deployment, then delete deployment
getResp, err := a.azAPIClient.DeploymentsClient.Get(ctx, mpfConfig.ResourceGroup.ResourceGroupName, deploymentName, nil)
if err != nil {
// Error indicates deployment does not exist, so cancelling deployment not needed
if strings.Contains(err.Error(), "DeploymentNotFound") {
log.Infof("Could not get deployment %s: ,Error :%s \n", deploymentName, err)
return nil
}
}
log.Infof("Deployment status: %s\n", *getResp.DeploymentExtended.Properties.ProvisioningState)
if *getResp.DeploymentExtended.Properties.ProvisioningState == armresources.ProvisioningStateRunning {
retryCount := 0
for _, err := a.azAPIClient.DeploymentsClient.Cancel(ctx, mpfConfig.ResourceGroup.ResourceGroupName, deploymentName, nil); err != nil; {
// cancel deployment
if err != nil {
// return err
log.Warnf("Could not cancel deployment %s: %s, retrying in a bit", deploymentName, err)
time.Sleep(5 * time.Second)
retryCount++
if retryCount >= 24 {
log.Warnf("Could not cancel deployment %s: %s, giving up", deploymentName, err)
return errors.New("could not cancel deployment")
}
}
}
log.Infof("Cancelled deployment %s", deploymentName)
return nil
}
return nil
}