diff --git a/azurerm/resource_arm_databricks_workspace.go b/azurerm/resource_arm_databricks_workspace.go index ca5baf781be7e..4f64577b7c329 100644 --- a/azurerm/resource_arm_databricks_workspace.go +++ b/azurerm/resource_arm_databricks_workspace.go @@ -57,6 +57,12 @@ func resourceArmDatabricksWorkspace() *schema.Resource { ValidateFunc: validate.NoEmptyStrings, }, + "parameters": { + Type: schema.TypeMap, + Optional: true, + ForceNew: true, + }, + "managed_resource_group_id": { Type: schema.TypeString, Computed: true, @@ -105,6 +111,20 @@ func resourceArmDatabricksWorkspaceCreateUpdate(d *schema.ResourceData, meta int managedResourceGroupID = fmt.Sprintf("/subscriptions/%s/resourceGroups/%s", subscriptionID, managedResourceGroupName) } + var newParams map[string]interface{} + if v, ok := d.GetOk("parameters"); ok { + params := v.(map[string]interface{}) + + newParams = make(map[string]interface{}, len(params)) + for key, val := range params { + newParams[key] = struct { + Value interface{} + }{ + Value: val, + } + } + } + workspace := databricks.Workspace{ Sku: &databricks.Sku{ Name: utils.String(skuName), @@ -112,6 +132,7 @@ func resourceArmDatabricksWorkspaceCreateUpdate(d *schema.ResourceData, meta int Location: utils.String(location), WorkspaceProperties: &databricks.WorkspaceProperties{ ManagedResourceGroupID: &managedResourceGroupID, + Parameters: &newParams, }, Tags: expandedTags, } @@ -179,6 +200,8 @@ func resourceArmDatabricksWorkspaceRead(d *schema.ResourceData, meta interface{} } d.Set("managed_resource_group_id", props.ManagedResourceGroupID) d.Set("managed_resource_group_name", managedResourceGroupID.ResourceGroup) + + d.Set("parameters", props.Parameters) } flattenAndSetTags(d, resp.Tags) diff --git a/azurerm/resource_arm_databricks_workspace_test.go b/azurerm/resource_arm_databricks_workspace_test.go index 74633eff730e9..bb21b9d28e8b4 100644 --- a/azurerm/resource_arm_databricks_workspace_test.go +++ b/azurerm/resource_arm_databricks_workspace_test.go @@ -137,6 +137,9 @@ func TestAccAzureRMDatabricksWorkspace_complete(t *testing.T) { testCheckAzureRMDatabricksWorkspaceExists(resourceName), resource.TestCheckResourceAttrSet(resourceName, "managed_resource_group_id"), resource.TestCheckResourceAttrSet(resourceName, "managed_resource_group_name"), + resource.TestCheckResourceAttr(resourceName, "parameters.%", "2"), + resource.TestCheckResourceAttr(resourceName, "parameters.customPrivateSubnetName", "privateSubnet"), + resource.TestCheckResourceAttr(resourceName, "parameters.customPublicSubnetName", "publicSubnet"), resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), resource.TestCheckResourceAttr(resourceName, "tags.Environment", "Production"), resource.TestCheckResourceAttr(resourceName, "tags.Pricing", "Standard"), @@ -148,6 +151,7 @@ func TestAccAzureRMDatabricksWorkspace_complete(t *testing.T) { testCheckAzureRMDatabricksWorkspaceExists(resourceName), resource.TestCheckResourceAttrSet(resourceName, "managed_resource_group_id"), resource.TestCheckResourceAttrSet(resourceName, "managed_resource_group_name"), + resource.TestCheckNoResourceAttr(resourceName, "parameters"), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.Pricing", "Standard"), ), @@ -258,6 +262,11 @@ resource "azurerm_databricks_workspace" "test" { sku = "standard" managed_resource_group_name = "acctestRG-%d-managed" + parameters = { + "customPrivateSubnetName" = "privateSubnet", + "customPublicSubnetName" = "publicSubnet" + } + tags = { Environment = "Production" Pricing = "Standard" diff --git a/website/docs/r/databricks_workspace.html.markdown b/website/docs/r/databricks_workspace.html.markdown index c200849e8574b..482186d71b834 100644 --- a/website/docs/r/databricks_workspace.html.markdown +++ b/website/docs/r/databricks_workspace.html.markdown @@ -46,6 +46,8 @@ The following arguments are supported: ~> **NOTE** Azure requires that this Resource Group does not exist in this Subscription (and that the Azure API creates it) - otherwise the deployment will fail. +* `parameters` - (Optional) Specifies name and value pairs that define the workspace parameters. Allowed names include `customPrivateSubnetName`, `customPublicSubnetName`, `customVirtualNetworkId`, `enableNoPublicIp`, `relayNamespaceName`, `storageAccountName`, `storageAccountSkuName`, `vnetAddressPrefix`, `resourceTags`, `amlWorkspaceId`. + * `tags` - (Optional) A mapping of tags to assign to the resource. ## Attributes Reference