in pkg/cluster/delete.go [494:611]
func (m *manager) Delete(ctx context.Context) error {
m.log.Printf("running ensureResourceGroup")
err := m.ensureResourceGroup(ctx) // re-create RP RBAC if needed/missing on best-effort basics
if err != nil {
m.log.Error(err)
}
m.log.Printf("deleting dns")
err = m.dns.Delete(ctx, m.doc.OpenShiftCluster)
if err != nil {
return err
}
m.log.Print("deleting private endpoint")
err = m.fpPrivateEndpoints.DeleteAndWait(ctx, m.env.ResourceGroup(), env.RPPrivateEndpointPrefix+m.doc.ID)
if err != nil {
return err
}
if m.doc.OpenShiftCluster.UsesWorkloadIdentity() {
m.log.Printf("deleting OIDC configuration")
blobContainerURL := oidcbuilder.GenerateBlobContainerURL(m.env)
blobsClient, err := m.rpBlob.GetBlobsClient(blobContainerURL)
if err != nil {
return err
}
err = oidcbuilder.DeleteOidcFolder(ctx, oidcbuilder.GetBlobName(m.subscriptionDoc.Subscription.Properties.TenantID, m.doc.ID), blobsClient)
if err != nil {
return err
}
}
m.log.Printf("deleting role assignments")
err = m.deleteRoleAssignments(ctx)
if err != nil {
return err
}
m.log.Printf("deleting role definition")
err = m.deleteRoleDefinition(ctx)
if err != nil {
return err
}
// private endpoint LinkIDs are reused so we wait for the deletion of the
// gateway LinkID record before deleting the private endpoint
// this ensures that we don't delete a LinkID record that was previously in use
// on a newly created cluster
m.log.Printf("deleting gateway record")
err = m.deleteGatewayAndWait(ctx)
if err != nil {
return err
}
err = m.deleteResourcesAndResourceGroup(ctx)
if err != nil {
return err
}
if m.doc.OpenShiftCluster.UsesWorkloadIdentity() {
m.log.Printf("deleting platform managed identities' federated credentials")
err = m.deleteFederatedCredentials(ctx)
if err != nil {
return err
}
m.log.Printf("deleting cluster MSI certificate")
err = m.deleteClusterMsiCertificate(ctx)
if err != nil {
return err
}
}
if !m.env.FeatureIsSet(env.FeatureDisableSignedCertificates) {
managedDomain, err := dns.ManagedDomain(m.env, m.doc.OpenShiftCluster.Properties.ClusterProfile.Domain)
if err != nil {
return err
}
if managedDomain != "" {
m.log.Print("deleting signed apiserver certificate")
_, err = m.env.ClusterCertificates().DeleteCertificate(ctx, m.APICertName(), nil)
if err != nil && !azcertificates.IsCertificateNotFoundError(err) {
return err
}
m.log.Print("deleting signed ingress certificate")
_, err = m.env.ClusterCertificates().DeleteCertificate(ctx, m.IngressCertName(), nil)
if err != nil && !azcertificates.IsCertificateNotFoundError(err) {
return err
}
}
}
if !m.env.IsLocalDevelopmentMode() {
acrManager, err := acrtoken.NewManager(m.env, m.localFpAuthorizer)
if err != nil {
return err
}
rp := acrManager.GetRegistryProfile(m.doc.OpenShiftCluster)
if rp != nil {
err = acrManager.Delete(ctx, rp)
if err != nil {
return err
}
}
}
if m.adoptViaHive || m.installViaHive {
err = m.hiveDeleteResources(ctx)
if err != nil {
return err
}
}
return m.billing.Delete(ctx, m.doc)
}