Public/Connect-Databricks.ps1
Function Connect-Databricks { [cmdletbinding(DefaultParameterSetName='Bearer')] param ( [parameter(Mandatory = $true, ParameterSetName='Bearer')] [string]$BearerToken, [parameter(Mandatory = $true, ParameterSetName='Bearer')] [parameter(Mandatory = $true, ParameterSetName='AADwithOrgId')] [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$Region, [parameter(Mandatory = $true, ParameterSetName='AADwithOrgId')] [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$ClientId, [parameter(Mandatory = $true, ParameterSetName='AADwithOrgId')] [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$Secret, [parameter(Mandatory = $true, ParameterSetName='AADwithOrgId')] [string]$DatabricksOrgId, [parameter(Mandatory = $true, ParameterSetName='AADwithOrgId')] [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$TenantId, [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$SubscriptionId, [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$ResourceGroupName, [parameter(Mandatory = $true, ParameterSetName='AADwithResource')] [string]$WorkspaceName, [parameter(Mandatory = $false, ParameterSetName='AADwithOrgId')] [parameter(Mandatory = $false, ParameterSetName='AADwithResource')] [switch]$Force ) Write-Verbose "Globals at start of Connect:" Write-Globals if ($Force){ Write-Verbose "-Force set - clearing global variables" Set-GlobalsNull } [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $AzureRegion = $Region.Replace(" ","") $URI = "https://login.microsoftonline.com/$tenantId/oauth2/token/" if ($PSCmdlet.ParameterSetName -eq "Bearer"){ Set-GlobalsNull # Use Databricks Bearer Token Method $global:DatabricksAccessToken = "Bearer $BearerToken" # Basically do not expire the token $global:DatabricksTokenExpires = (Get-Date).AddDays(90) $global:Headers = @{"Authorization"="$global:DatabricksAccessToken"} } elseif($PSCmdlet.ParameterSetName -eq "AADwithOrgId"){ Get-AADDatabricksToken $global:Headers = @{"Authorization"="Bearer $DatabricksAccessToken"; "X-Databricks-Org-Id"="$DatabricksOrgId" } $global:DatabricksOrgId = $DatabricksOrgId } elseif($PSCmdlet.ParameterSetName -eq "AADwithResource"){ Get-AADManagementToken Get-AADDatabricksToken $global:Headers = @{"Authorization"="Bearer $global:DatabricksAccessToken"; "X-Databricks-Azure-SP-Management-Token"=$global:ManagementAccessToken; "X-Databricks-Azure-Workspace-Resource-Id"="/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Databricks/workspaces/$WorkspaceName" } } $global:DatabricksURI = "https://$AzureRegion.azuredatabricks.net" Write-Verbose "Globals at end of Connect:" Write-Globals } |