Functions/Remove-DatabricksClustersFromWorkspace.ps1

<#
.SYNOPSIS
Removes DataBricks Clusters from a workspace.
 
.DESCRIPTION
Removes DataBricks Clusters from a workspace.
 
.PARAMETER config
Configuration json file from the environment to use for possible clusters to remove.
 
.EXAMPLE
Remove-DatabricksClustersFromWorkspace -config $config -bearerToken 'dapi1234567890'
 
.NOTES
Author: Sabin IO
 
#>
 
Function Remove-DatabricksClustersFromWorkspace {
    [cmdletbinding()]
    Param(
        [parameter(Mandatory = $true)]$config
    )
    
    try {
        $clusters = Get-DatabricksClusters
        $noneExistantClusters = @()
        $existentClusters = @()
    
        if ($config.removeClustersByName) {
            Write-Output "removeClustersByName config key supplied"
            if ($config.removeClustersByName.Length -ge 1) {
                if ($config.removeClustersByName[0].ToString().ToUpper() -eq "ALL") {
                    Write-Error "Removing all clusters is not recommended. "
                }
                else {
                    # Check if clusters exist in the first place
                    foreach ($cluster in $config.removeClustersByName) {
                        if ($cluster -notin $clusters.cluster_name) {
                            $noneExistantClusters += $cluster
                        }      
                        else {
                            $existentClusters += $cluster
                        }          
                    }
                    if ($noneExistantClusters) {
                        Write-Warning "There are clusters that do not exist to remove, These will be skipped. `n`n $($noneExistantClusters)"

                    }
                    # If we've got this far, it should mean we are good to remove all the known clusters by name
                    foreach ($cluster in $existentClusters) {
                        Remove-DatabricksCluster -ClusterName $cluster -Verbose           
                    }
                }           
            } 
        }     
        else {
            Write-Output "removeClustersByName config key not supplied"
        }
    }    
    catch {
        #uh oh
        throw $_.Exception
    }
}