From f980914c545fa506fb24f1415061a3a6d0ffb49b Mon Sep 17 00:00:00 2001 From: yupwei68 Date: Mon, 21 Sep 2020 14:52:31 +0800 Subject: [PATCH 1/2] update --- ...ource_data_share_dataset_kusto_database.go | 91 +++++++++ .../services/datashare/registration.go | 2 + ...rce_arm_data_share_dataset_blob_storage.go | 7 +- ...e_arm_data_share_dataset_data_lake_gen1.go | 8 +- ...e_arm_data_share_dataset_data_lake_gen2.go | 8 +- ...ce_arm_data_share_dataset_kusto_cluster.go | 8 +- ...e_arm_data_share_dataset_kusto_database.go | 186 ++++++++++++++++++ ..._data_share_dataset_kusto_database_test.go | 42 ++++ ..._data_share_dataset_kusto_database_test.go | 130 ++++++++++++ ...share_dataset_kusto_database.html.markdown | 54 +++++ ...share_dataset_kusto_database.html.markdown | 108 ++++++++++ 11 files changed, 640 insertions(+), 4 deletions(-) create mode 100644 azurerm/internal/services/datashare/data_source_data_share_dataset_kusto_database.go create mode 100644 azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_database.go create mode 100644 azurerm/internal/services/datashare/tests/data_source_data_share_dataset_kusto_database_test.go create mode 100644 azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go create mode 100644 website/docs/d/data_share_dataset_kusto_database.html.markdown create mode 100644 website/docs/r/data_share_dataset_kusto_database.html.markdown diff --git a/azurerm/internal/services/datashare/data_source_data_share_dataset_kusto_database.go b/azurerm/internal/services/datashare/data_source_data_share_dataset_kusto_database.go new file mode 100644 index 000000000000..12809e4e2a8a --- /dev/null +++ b/azurerm/internal/services/datashare/data_source_data_share_dataset_kusto_database.go @@ -0,0 +1,91 @@ +package datashare + +import ( + "fmt" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/datashare/helper" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/datashare/parse" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/datashare/validate" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts" +) + +func dataSourceDataShareDatasetKustoDatabase() *schema.Resource { + return &schema.Resource{ + Read: dataSourceArmDataShareDatasetKustoDatabaseRead, + + Timeouts: &schema.ResourceTimeout{ + Read: schema.DefaultTimeout(5 * time.Minute), + }, + + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validate.DatashareDataSetName(), + }, + + "share_id": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validate.DataShareID, + }, + + "kusto_database_id": { + Type: schema.TypeString, + Computed: true, + }, + + "display_name": { + Type: schema.TypeString, + Computed: true, + }, + + "kusto_cluster_location": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func dataSourceArmDataShareDatasetKustoDatabaseRead(d *schema.ResourceData, meta interface{}) error { + client := meta.(*clients.Client).DataShare.DataSetClient + ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d) + defer cancel() + + name := d.Get("name").(string) + shareID := d.Get("share_id").(string) + shareId, err := parse.DataShareID(shareID) + if err != nil { + return err + } + + respModel, err := client.Get(ctx, shareId.ResourceGroup, shareId.AccountName, shareId.Name, name) + if err != nil { + return fmt.Errorf("retrieving DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name, err) + } + + respId := helper.GetAzurermDataShareDataSetId(respModel.Value) + if respId == nil || *respId == "" { + return fmt.Errorf("empty or nil ID returned for DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q)", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name) + } + + d.SetId(*respId) + d.Set("name", name) + d.Set("share_id", shareID) + + resp, ok := respModel.Value.AsKustoDatabaseDataSet() + if !ok { + return fmt.Errorf("dataShare %q (Resource Group %q / accountName %q / shareName %q) is not kusto database dataset", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name) + } + if props := resp.KustoDatabaseDataSetProperties; props != nil { + d.Set("kusto_database_id", props.KustoDatabaseResourceID) + d.Set("display_name", props.DataSetID) + d.Set("kusto_cluster_location", props.Location) + } + + return nil +} diff --git a/azurerm/internal/services/datashare/registration.go b/azurerm/internal/services/datashare/registration.go index 699f7c3c8c4b..173a486d8c17 100644 --- a/azurerm/internal/services/datashare/registration.go +++ b/azurerm/internal/services/datashare/registration.go @@ -25,6 +25,7 @@ func (r Registration) SupportedDataSources() map[string]*schema.Resource { "azurerm_data_share_dataset_data_lake_gen1": dataSourceDataShareDatasetDataLakeGen1(), "azurerm_data_share_dataset_data_lake_gen2": dataSourceDataShareDatasetDataLakeGen2(), "azurerm_data_share_dataset_kusto_cluster": dataSourceDataShareDatasetKustoCluster(), + "azurerm_data_share_dataset_kusto_database": dataSourceDataShareDatasetKustoDatabase(), } } @@ -37,5 +38,6 @@ func (r Registration) SupportedResources() map[string]*schema.Resource { "azurerm_data_share_dataset_data_lake_gen1": resourceArmDataShareDataSetDataLakeGen1(), "azurerm_data_share_dataset_data_lake_gen2": resourceArmDataShareDataSetDataLakeGen2(), "azurerm_data_share_dataset_kusto_cluster": resourceArmDataShareDataSetKustoCluster(), + "azurerm_data_share_dataset_kusto_database": resourceArmDataShareDataSetKustoDatabase(), } } diff --git a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_blob_storage.go b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_blob_storage.go index 6e030c3ec699..96785c5d804b 100644 --- a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_blob_storage.go +++ b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_blob_storage.go @@ -264,9 +264,14 @@ func resourceArmDataShareDataSetBlobStorageDelete(d *schema.ResourceData, meta i return err } - if _, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name); err != nil { + future, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name) + if err != nil { return fmt.Errorf("deleting DataShare Blob Storage DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) } + + if err = future.WaitForCompletionRef(ctx, client.Client); err != nil { + return fmt.Errorf("waiting for deletion of DataShare Blob Storage DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } return nil } diff --git a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen1.go b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen1.go index 77df25952780..9defca9a1a05 100644 --- a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen1.go +++ b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen1.go @@ -216,8 +216,14 @@ func resourceArmDataShareDataSetDataLakeGen1Delete(d *schema.ResourceData, meta return err } - if _, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name); err != nil { + future, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name) + if err != nil { return fmt.Errorf("deleting DataShare DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) } + + if err = future.WaitForCompletionRef(ctx, client.Client); err != nil { + return fmt.Errorf("waiting for deletion of DataShare Data Lake Gen1 DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } + return nil } diff --git a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen2.go b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen2.go index 7b2656959116..83c52e098af0 100644 --- a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen2.go +++ b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_data_lake_gen2.go @@ -240,8 +240,14 @@ func resourceArmDataShareDataSetDataLakeGen2Delete(d *schema.ResourceData, meta return err } - if _, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name); err != nil { + future, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name) + if err != nil { return fmt.Errorf("deleting DataShare DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) } + + if err = future.WaitForCompletionRef(ctx, client.Client); err != nil { + return fmt.Errorf("waiting for deletion of DataShare Data Lake Gen2 DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } + return nil } diff --git a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_cluster.go b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_cluster.go index 9d0d5b58271b..f683d35bc3fb 100644 --- a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_cluster.go +++ b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_cluster.go @@ -171,8 +171,14 @@ func resourceArmDataShareDataSetKustoClusterDelete(d *schema.ResourceData, meta return err } - if _, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name); err != nil { + future, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name) + if err != nil { return fmt.Errorf("deleting DataShare Kusto Cluster DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) } + + if err = future.WaitForCompletionRef(ctx, client.Client); err != nil { + return fmt.Errorf("waiting for deletion of DataShare Kusto Cluster DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } + return nil } diff --git a/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_database.go b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_database.go new file mode 100644 index 000000000000..7076b406795c --- /dev/null +++ b/azurerm/internal/services/datashare/resource_arm_data_share_dataset_kusto_database.go @@ -0,0 +1,186 @@ +package datashare + +import ( + "fmt" + "log" + "time" + + "github.com/Azure/azure-sdk-for-go/services/datashare/mgmt/2019-11-01/datashare" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/datashare/helper" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/datashare/parse" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/datashare/validate" + azSchema "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tf/schema" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" +) + +func resourceArmDataShareDataSetKustoDatabase() *schema.Resource { + return &schema.Resource{ + Create: resourceArmDataShareDataSetKustoDatabaseCreate, + Read: resourceArmDataShareDataSetKustoDatabaseRead, + Delete: resourceArmDataShareDataSetKustoDatabaseDelete, + + Timeouts: &schema.ResourceTimeout{ + Create: schema.DefaultTimeout(30 * time.Minute), + Read: schema.DefaultTimeout(5 * time.Minute), + Delete: schema.DefaultTimeout(30 * time.Minute), + }, + + Importer: azSchema.ValidateResourceIDPriorToImport(func(id string) error { + _, err := parse.DataShareDataSetID(id) + return err + }), + + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validate.DatashareDataSetName(), + }, + + "share_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validate.DataShareID, + }, + + "kusto_database_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: azure.ValidateResourceID, + }, + + "display_name": { + Type: schema.TypeString, + Computed: true, + }, + + "kusto_cluster_location": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func resourceArmDataShareDataSetKustoDatabaseCreate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*clients.Client).DataShare.DataSetClient + ctx, cancel := timeouts.ForCreate(meta.(*clients.Client).StopContext, d) + defer cancel() + + name := d.Get("name").(string) + shareId, err := parse.DataShareID(d.Get("share_id").(string)) + if err != nil { + return err + } + + existing, err := client.Get(ctx, shareId.ResourceGroup, shareId.AccountName, shareId.Name, name) + if err != nil { + if !utils.ResponseWasNotFound(existing.Response) { + return fmt.Errorf("checking for present of existing DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name, err) + } + } + existingId := helper.GetAzurermDataShareDataSetId(existing.Value) + if existingId != nil && *existingId != "" { + return tf.ImportAsExistsError("azurerm_data_share_dataset_kusto_database", *existingId) + } + + dataSet := datashare.KustoDatabaseDataSet{ + Kind: datashare.KindKustoDatabase, + KustoDatabaseDataSetProperties: &datashare.KustoDatabaseDataSetProperties{ + KustoDatabaseResourceID: utils.String(d.Get("kusto_database_id").(string)), + }, + } + + if _, err := client.Create(ctx, shareId.ResourceGroup, shareId.AccountName, shareId.Name, name, dataSet); err != nil { + return fmt.Errorf("creating DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name, err) + } + + resp, err := client.Get(ctx, shareId.ResourceGroup, shareId.AccountName, shareId.Name, name) + if err != nil { + return fmt.Errorf("retrieving DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name, err) + } + + respId := helper.GetAzurermDataShareDataSetId(resp.Value) + if respId == nil || *respId == "" { + return fmt.Errorf("empty or nil ID returned for DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q)", name, shareId.ResourceGroup, shareId.AccountName, shareId.Name) + } + + d.SetId(*respId) + + return resourceArmDataShareDataSetKustoDatabaseRead(d, meta) +} + +func resourceArmDataShareDataSetKustoDatabaseRead(d *schema.ResourceData, meta interface{}) error { + client := meta.(*clients.Client).DataShare.DataSetClient + shareClient := meta.(*clients.Client).DataShare.SharesClient + ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d) + defer cancel() + + id, err := parse.DataShareDataSetID(d.Id()) + if err != nil { + return err + } + + respModel, err := client.Get(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name) + if err != nil { + if utils.ResponseWasNotFound(respModel.Response) { + log.Printf("[INFO] DataShare %q does not exist - removing from state", d.Id()) + d.SetId("") + return nil + } + return fmt.Errorf("retrieving DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } + + d.Set("name", id.Name) + shareResp, err := shareClient.Get(ctx, id.ResourceGroup, id.AccountName, id.ShareName) + if err != nil { + return fmt.Errorf("retrieving DataShare %q (Resource Group %q / accountName %q): %+v", id.ShareName, id.ResourceGroup, id.AccountName, err) + } + if shareResp.ID == nil || *shareResp.ID == "" { + return fmt.Errorf("empty or nil ID returned for DataShare %q (Resource Group %q / accountName %q)", id.ShareName, id.ResourceGroup, id.AccountName) + } + + d.Set("share_id", shareResp.ID) + + resp, ok := respModel.Value.AsKustoDatabaseDataSet() + if !ok { + return fmt.Errorf("dataShare %q (Resource Group %q / accountName %q) is not Kusto Database DataSet", id.ShareName, id.ResourceGroup, id.AccountName) + } + if props := resp.KustoDatabaseDataSetProperties; props != nil { + d.Set("kusto_database_id", props.KustoDatabaseResourceID) + d.Set("display_name", props.DataSetID) + d.Set("kusto_cluster_location", props.Location) + } + + return nil +} + +func resourceArmDataShareDataSetKustoDatabaseDelete(d *schema.ResourceData, meta interface{}) error { + client := meta.(*clients.Client).DataShare.DataSetClient + ctx, cancel := timeouts.ForDelete(meta.(*clients.Client).StopContext, d) + defer cancel() + + id, err := parse.DataShareDataSetID(d.Id()) + if err != nil { + return err + } + + future, err := client.Delete(ctx, id.ResourceGroup, id.AccountName, id.ShareName, id.Name) + if err != nil { + return fmt.Errorf("deleting DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } + + if err = future.WaitForCompletionRef(ctx, client.Client); err != nil { + return fmt.Errorf("waiting for deletion of DataShare Kusto Database DataSet %q (Resource Group %q / accountName %q / shareName %q): %+v", id.Name, id.ResourceGroup, id.AccountName, id.ShareName, err) + } + + return nil +} diff --git a/azurerm/internal/services/datashare/tests/data_source_data_share_dataset_kusto_database_test.go b/azurerm/internal/services/datashare/tests/data_source_data_share_dataset_kusto_database_test.go new file mode 100644 index 000000000000..c67e6d7700b5 --- /dev/null +++ b/azurerm/internal/services/datashare/tests/data_source_data_share_dataset_kusto_database_test.go @@ -0,0 +1,42 @@ +package tests + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/acceptance" +) + +func TestAccDataSourceAzureRMDataShareDatasetKustoDatabase_basic(t *testing.T) { + data := acceptance.BuildTestData(t, "data.azurerm_data_share_dataset_kusto_database", "test") + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acceptance.PreCheck(t) }, + Providers: acceptance.SupportedProviders, + CheckDestroy: testCheckAzureRMDataShareDataSetDestroy("azurerm_data_share_dataset_kusto_database"), + Steps: []resource.TestStep{ + { + Config: testAccDataSourceDataShareDatasetKustoDatabase_basic(data), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMDataShareDataSetExists(data.ResourceName), + resource.TestCheckResourceAttrSet(data.ResourceName, "kusto_database_id"), + resource.TestCheckResourceAttrSet(data.ResourceName, "display_name"), + resource.TestCheckResourceAttrSet(data.ResourceName, "kusto_cluster_location"), + ), + }, + }, + }) +} + +func testAccDataSourceDataShareDatasetKustoDatabase_basic(data acceptance.TestData) string { + config := testAccAzureRMDataShareDataSetKustoDatabase_basic(data) + return fmt.Sprintf(` +%s + +data "azurerm_data_share_dataset_kusto_database" "test" { + name = azurerm_data_share_dataset_kusto_database.test.name + share_id = azurerm_data_share_dataset_kusto_database.test.share_id +} +`, config) +} diff --git a/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go b/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go new file mode 100644 index 000000000000..37e733b5a6f0 --- /dev/null +++ b/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go @@ -0,0 +1,130 @@ +package tests + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/acceptance" +) + +func TestAccAzureRMDataShareDataSetKustoDatabase_basic(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_data_share_dataset_kusto_database", "test") + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acceptance.PreCheck(t) }, + Providers: acceptance.SupportedProviders, + CheckDestroy: testCheckAzureRMDataShareDataSetDestroy("azurerm_data_share_dataset_kusto_database"), + Steps: []resource.TestStep{ + { + Config: testAccAzureRMDataShareDataSetKustoDatabase_basic(data), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMDataShareDataSetExists(data.ResourceName), + resource.TestCheckResourceAttrSet(data.ResourceName, "display_name"), + resource.TestCheckResourceAttrSet(data.ResourceName, "kusto_cluster_location"), + ), + }, + data.ImportStep(), + }, + }) +} + +func TestAccAzureRMDataShareDataSetKustoDatabase_requiresImport(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_data_share_dataset_kusto_database", "test") + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acceptance.PreCheck(t) }, + Providers: acceptance.SupportedProviders, + CheckDestroy: testCheckAzureRMDataShareDataSetDestroy("azurerm_data_share_dataset_kusto_database"), + Steps: []resource.TestStep{ + { + Config: testAccAzureRMDataShareDataSetKustoDatabase_basic(data), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMDataShareDataSetExists(data.ResourceName), + ), + }, + data.RequiresImportErrorStep(testAccAzureRMDataShareDataSetKustoDatabase_requiresImport), + }, + }) +} + +func testAccAzureRMDataShareDataSetKustoDatabase_template(data acceptance.TestData) string { + return fmt.Sprintf(` +provider "azurerm" { + features {} +} + +resource "azurerm_resource_group" "test" { + name = "acctest-datashare-%[1]d" + location = "%[2]s" +} + +resource "azurerm_data_share_account" "test" { + name = "acctest-dsa-%[1]d" + location = azurerm_resource_group.test.location + resource_group_name = azurerm_resource_group.test.name + identity { + type = "SystemAssigned" + } +} + +resource "azurerm_data_share" "test" { + name = "acctest_ds_%[1]d" + account_id = azurerm_data_share_account.test.id + kind = "InPlace" +} + +resource "azurerm_kusto_cluster" "test" { + name = "acctestkc%[3]d" + location = azurerm_resource_group.test.location + resource_group_name = azurerm_resource_group.test.name + + sku { + name = "Dev(No SLA)_Standard_D11_v2" + capacity = 1 + } +} + +resource "azurerm_kusto_database" "test" { + name = "acctestkd-%[1]d" + resource_group_name = azurerm_resource_group.test.name + location = azurerm_resource_group.test.location + cluster_name = azurerm_kusto_cluster.test.name +} + +resource "azurerm_role_assignment" "test" { + scope = azurerm_kusto_cluster.test.id + role_definition_name = "Contributor" + principal_id = azurerm_data_share_account.test.identity.0.principal_id +} +`, data.RandomInteger, data.Locations.Primary, data.RandomIntOfLength(12)) +} + +func testAccAzureRMDataShareDataSetKustoDatabase_basic(data acceptance.TestData) string { + config := testAccAzureRMDataShareDataSetKustoDatabase_template(data) + return fmt.Sprintf(` +%s + +resource "azurerm_data_share_dataset_kusto_database" "test" { + name = "acctest-DSKD-%d" + share_id = azurerm_data_share.test.id + kusto_database_id = azurerm_kusto_database.test.id + depends_on = [ + azurerm_role_assignment.test, + ] +} +`, config, data.RandomInteger) +} + +func testAccAzureRMDataShareDataSetKustoDatabase_requiresImport(data acceptance.TestData) string { + config := testAccAzureRMDataShareDataSetKustoDatabase_basic(data) + return fmt.Sprintf(` +%s + +resource "azurerm_data_share_dataset_kusto_database" "import" { + name = azurerm_data_share_dataset_kusto_database.test.name + share_id = azurerm_data_share.test.id + kusto_database_id = azurerm_kusto_database.test.id +} +`, config) +} diff --git a/website/docs/d/data_share_dataset_kusto_database.html.markdown b/website/docs/d/data_share_dataset_kusto_database.html.markdown new file mode 100644 index 000000000000..09622d62f4b4 --- /dev/null +++ b/website/docs/d/data_share_dataset_kusto_database.html.markdown @@ -0,0 +1,54 @@ +--- +subcategory: "Data Share" +layout: "azurerm" +page_title: "Azure Resource Manager: Data Source: azurerm_data_share_dataset_kusto_database" +description: |- + Gets information about an existing Data Share Kusto Database Dataset. +--- + +# Data Source: azurerm_data_share_dataset_kusto_database + +Use this data source to access information about an existing Data Share Kusto Database Dataset. + +## Example Usage + +```hcl +provider "azurerm" { + features {} +} + +data "azurerm_data_share_dataset_kusto_database" "example" { + name = "example-dskdds" + share_id = "example-share-id" +} + +output "id" { + value = data.azurerm_data_share_dataset_kusto_database.example.id +} +``` + +## Arguments Reference + +The following arguments are supported: + +* `name` - (Required) The name of this Data Share Kusto Database Dataset. + +* `share_id` - (Required) The resource ID of the Data Share where this Data Share Kusto Database Dataset should be created. + +## Attributes Reference + +In addition to the Arguments listed above - the following Attributes are exported: + +* `id` - The resource ID of the Data Share Kusto Database Dataset. + +* `kusto_database_id` - The resource ID of the Kusto Cluster Database to be shared with the receiver. + +* `display_name` - The name of the Data Share Dataset. + +* `kusto_cluster_location` - The location of the Kusto Cluster. + +## Timeouts + +The `timeouts` block allows you to specify [timeouts](https://www.terraform.io/docs/configuration/resources.html#timeouts) for certain actions: + +* `read` - (Defaults to 5 minutes) Used when retrieving the Data Share Kusto Database Dataset. diff --git a/website/docs/r/data_share_dataset_kusto_database.html.markdown b/website/docs/r/data_share_dataset_kusto_database.html.markdown new file mode 100644 index 000000000000..280c56ebf8e5 --- /dev/null +++ b/website/docs/r/data_share_dataset_kusto_database.html.markdown @@ -0,0 +1,108 @@ +--- +subcategory: "Data Share" +layout: "azurerm" +page_title: "Azure Resource Manager: azurerm_data_share_dataset_kusto_database" +description: |- + Manages a Data Share Kusto Database Dataset. +--- + +# azurerm_data_share_dataset_kusto_database + +Manages a Data Share Kusto Database Dataset. + +## Example Usage + +```hcl +provider "azurerm" { + features {} +} + +resource "azurerm_resource_group" "example" { + name = "example-resources" + location = "West Europe" +} + +resource "azurerm_data_share_account" "example" { + name = "example-dsa" + location = azurerm_resource_group.example.location + resource_group_name = azurerm_resource_group.example.name + identity { + type = "SystemAssigned" + } +} + +resource "azurerm_data_share" "example" { + name = "example_ds" + account_id = azurerm_data_share_account.example.id + kind = "InPlace" +} + +resource "azurerm_kusto_cluster" "example" { + name = "examplekc" + location = azurerm_resource_group.example.location + resource_group_name = azurerm_resource_group.example.name + + sku { + name = "Dev(No SLA)_Standard_D11_v2" + capacity = 1 + } +} + +resource "azurerm_kusto_database" "example" { + name = "examplekd" + resource_group_name = azurerm_resource_group.example.name + location = azurerm_resource_group.example.location + cluster_name = azurerm_kusto_cluster.example.name +} + +resource "azurerm_role_assignment" "example" { + scope = azurerm_kusto_cluster.example.id + role_definition_name = "Contributor" + principal_id = azurerm_data_share_account.example.identity.0.principal_id +} + +resource "azurerm_data_share_dataset_kusto_database" "example" { + name = "example-dskd" + share_id = azurerm_data_share.example.id + kusto_database_id = azurerm_kusto_database.example.id + depends_on = [ + azurerm_role_assignment.example, + ] +} +``` + +## Arguments Reference + +The following arguments are supported: + +* `name` - (Required) The name which should be used for this Data Share Kusto Database Dataset. Changing this forces a new Data Share Kusto Database Dataset to be created. + +* `share_id` - (Required) The resource ID of the Data Share where this Data Share Kusto Database Dataset should be created. Changing this forces a new Data Share Kusto Database Dataset to be created. + +* `kusto_database_id` - (Required) The resource ID of the Kusto Cluster Database to be shared with the receiver. Changing this forces a new Data Share Kusto Database Dataset to be created. + +## Attributes Reference + +In addition to the Arguments listed above - the following Attributes are exported: + +* `id` - The resource ID of the Data Share Kusto Database Dataset. + +* `display_name` - The name of the Data Share Dataset. + +* `kusto_cluster_location` - The location of the Kusto Cluster. + +## Timeouts + +The `timeouts` block allows you to specify [timeouts](https://www.terraform.io/docs/configuration/resources.html#timeouts) for certain actions: + +* `create` - (Defaults to 30 minutes) Used when creating the Data Share Kusto Database Dataset. +* `read` - (Defaults to 5 minutes) Used when retrieving the Data Share Kusto Database Dataset. +* `delete` - (Defaults to 30 minutes) Used when deleting the Data Share Kusto Database Dataset. + +## Import + +Data Share Kusto Database Datasets can be imported using the `resource id`, e.g. + +```shell +terraform import azurerm_data_share_dataset_kusto_database.example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.DataShare/accounts/account1/shares/share1/dataSets/dataSet1 +``` From 179b3814ff065905acc9e1470c304160dbb8d9ae Mon Sep 17 00:00:00 2001 From: yupwei68 Date: Fri, 9 Oct 2020 10:16:33 +0800 Subject: [PATCH 2/2] add uppercase name for testing --- ...resource_arm_data_share_dataset_kusto_database_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go b/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go index 37e733b5a6f0..94e42691f03e 100644 --- a/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go +++ b/azurerm/internal/services/datashare/tests/resource_arm_data_share_dataset_kusto_database_test.go @@ -55,12 +55,12 @@ provider "azurerm" { } resource "azurerm_resource_group" "test" { - name = "acctest-datashare-%[1]d" + name = "acctestRG-datashare-%[1]d" location = "%[2]s" } resource "azurerm_data_share_account" "test" { - name = "acctest-dsa-%[1]d" + name = "acctest-DSA-%[1]d" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name identity { @@ -69,7 +69,7 @@ resource "azurerm_data_share_account" "test" { } resource "azurerm_data_share" "test" { - name = "acctest_ds_%[1]d" + name = "acctest_DS_%[1]d" account_id = azurerm_data_share_account.test.id kind = "InPlace" } @@ -86,7 +86,7 @@ resource "azurerm_kusto_cluster" "test" { } resource "azurerm_kusto_database" "test" { - name = "acctestkd-%[1]d" + name = "acctestKD-%[1]d" resource_group_name = azurerm_resource_group.test.name location = azurerm_resource_group.test.location cluster_name = azurerm_kusto_cluster.test.name