-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Resource: azurerm_data_lake_store #1219
Changes from 16 commits
a7a4050
9b4590c
0f434d8
6d3c508
d50f52a
56e9a01
dd3022f
5ef2472
242dfcc
7e430a4
4c487a1
16c79f2
0046546
0eb9490
e0722f1
fe30e5d
b663c43
1641e01
3d4c9f8
915a968
d014b3a
9bc6096
8d74125
59dee53
36e3882
47bb571
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package azurerm | ||
|
||
import ( | ||
"fmt" | ||
|
||
"github.com/hashicorp/terraform/helper/schema" | ||
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" | ||
) | ||
|
||
func dataSourceArmDataLakeStoreAccount() *schema.Resource { | ||
return &schema.Resource{ | ||
Read: dataSourceArmDateLakeStoreAccountRead, | ||
|
||
Schema: map[string]*schema.Schema{ | ||
"name": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
}, | ||
|
||
"resource_group_name": resourceGroupNameForDataSourceSchema(), | ||
|
||
"location": locationForDataSourceSchema(), | ||
|
||
"tier": { | ||
Type: schema.TypeString, | ||
Optional: true, | ||
Default: false, | ||
}, | ||
|
||
"tags": tagsForDataSourceSchema(), | ||
}, | ||
} | ||
} | ||
|
||
func dataSourceArmDateLakeStoreAccountRead(d *schema.ResourceData, meta interface{}) error { | ||
client := meta.(*ArmClient).dataLakeStoreAccountClient | ||
ctx := meta.(*ArmClient).StopContext | ||
|
||
name := d.Get("name").(string) | ||
resourceGroup := d.Get("resource_group_name").(string) | ||
|
||
resp, err := client.Get(ctx, resourceGroup, name) | ||
if err != nil { | ||
if utils.ResponseWasNotFound(resp.Response) { | ||
d.SetId("") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you add a warning message here that it wasn't found? Something like... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done, in next commit |
||
return nil | ||
} | ||
return fmt.Errorf("Error making Read request on Azure Data Lake %q (Resource Group %q): %+v", name, resourceGroup, err) | ||
} | ||
|
||
d.SetId(*resp.ID) | ||
|
||
d.Set("name", name) | ||
d.Set("resource_group_name", resourceGroup) | ||
if location := resp.Location; location != nil { | ||
d.Set("location", azureRMNormalizeLocation(*location)) | ||
} | ||
|
||
if tier := resp.DataLakeStoreAccountProperties; tier != nil { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. could we assign this to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
d.Set("tier", string(tier.CurrentTier)) | ||
} | ||
|
||
flattenAndSetTags(d, resp.Tags) | ||
|
||
return nil | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
package azurerm | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform/helper/acctest" | ||
"github.com/hashicorp/terraform/helper/resource" | ||
) | ||
|
||
func TestAccDataSourceAzureRMDataLakeStore_payasyougo(t *testing.T) { | ||
dataSourceName := "data.azurerm_data_lake_store.test" | ||
rInt := acctest.RandIntRange(1, 999999) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we use There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. there is a limitation on the name for an ADLS account which has to be between 3 to 24 characters. I wanted to restrict the length of the name to within that limit. RandInt() generates a larger string if I am not mistaken. I will use random string and revert the resource group name to randInt() |
||
location := testLocation() | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccDataSourceDataLakeStore_payasyougo(rInt, location), | ||
Check: resource.ComposeTestCheckFunc( | ||
testCheckAzureRMDataLakeStoreExists(dataSourceName), | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we also check to make sure that
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done in next commit |
||
), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func TestAccDataSourceAzureRMDataLakeStore_monthlycommitment(t *testing.T) { | ||
dataSourceName := "data.azurerm_data_lake_store.test" | ||
rInt := acctest.RandIntRange(1, 999999) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same as above There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. there is a limitation on the name for an ADLS account which has to be between 3 to 24 characters. I wanted to restrict the length of the name to within that limit. RandInt() generates a larger string if I am not mistaken.I will use random string and revert the resource group name to randInt() |
||
location := testLocation() | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccDataSourceDataLakeStore_monthlycommitment(rInt, location), | ||
Check: resource.ComposeTestCheckFunc( | ||
resource.TestCheckResourceAttr(dataSourceName, "tier", "Commitment_1TB"), | ||
resource.TestCheckResourceAttr(dataSourceName, "tags.%", "1"), | ||
resource.TestCheckResourceAttr(dataSourceName, "tags.hello", "world"), | ||
), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func testAccDataSourceDataLakeStore_payasyougo(rInt int, location string) string { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we change this to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done, renamed to basic in next commit |
||
return fmt.Sprintf(` | ||
resource "azurerm_resource_group" "test" { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we formate the terraform in all the tests?
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. moved to 2 spaces (I think thats what I think that means) |
||
name = "acctestRG_%d" | ||
location = "%s" | ||
} | ||
|
||
resource "azurerm_data_lake_store" "test" { | ||
name = "acctest%d" | ||
location = "%s" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
tags { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we should only be checking required fields in the basic test. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yup makes sensem, removed tags |
||
hello = "world" | ||
} | ||
} | ||
|
||
data "azurerm_data_lake_store" "test" { | ||
name = "${azurerm_data_lake_store.test.name}" | ||
resource_group_name = "${azurerm_data_lake_store.test.resource_group_name}" | ||
} | ||
`, rInt, location, rInt, location) | ||
} | ||
|
||
func testAccDataSourceDataLakeStore_monthlycommitment(rInt int, location string) string { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we change this to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done in next commit |
||
return fmt.Sprintf(` | ||
resource "azurerm_resource_group" "test" { | ||
name = "acctestRG_%d" | ||
location = "%s" | ||
} | ||
|
||
resource "azurerm_data_lake_store" "test" { | ||
name = "acctest%d" | ||
location = "%s" | ||
tier = "Commitment_1TB" | ||
resource_group_name = "${azurerm_resource_group.test.name}" | ||
tags { | ||
hello = "world" | ||
} | ||
} | ||
|
||
data "azurerm_data_lake_store" "test" { | ||
name = "${azurerm_data_lake_store.test.name}" | ||
resource_group_name = "${azurerm_data_lake_store.test.resource_group_name}" | ||
} | ||
`, rInt, location, rInt, location) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package azurerm | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are moving away from a separate import test. Lets remove this file and add the following to all the resource tests:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done, in next commit |
||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform/helper/acctest" | ||
"github.com/hashicorp/terraform/helper/resource" | ||
) | ||
|
||
func TestAccAzureRMDataLakeStore_importPayAsYouGo(t *testing.T) { | ||
resourceName := "azurerm_data_lake_store.test" | ||
|
||
ri := acctest.RandIntRange(1, 999999) | ||
config := testAccAzureRMDataLakeStore_payasyougo(ri, testLocation()) | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
CheckDestroy: testCheckAzureRMDataLakeStoreDestroy, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: config, | ||
}, | ||
{ | ||
ResourceName: resourceName, | ||
ImportState: true, | ||
ImportStateVerify: true, | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func TestAccAzureRMDataLakeStore_importTags(t *testing.T) { | ||
resourceName := "azurerm_data_lake_store.test" | ||
|
||
ri := acctest.RandIntRange(1, 999999) | ||
config := testAccAzureRMDataLakeStore_withTags(ri, testLocation()) | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
CheckDestroy: testCheckAzureRMDataLakeStoreDestroy, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: config, | ||
}, | ||
{ | ||
ResourceName: resourceName, | ||
ImportState: true, | ||
ImportStateVerify: true, | ||
}, | ||
}, | ||
}) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -85,6 +85,7 @@ func Provider() terraform.ResourceProvider { | |
"azurerm_client_config": dataSourceArmClientConfig(), | ||
"azurerm_cosmosdb_account": dataSourceArmCosmosDBAccount(), | ||
"azurerm_dns_zone": dataSourceArmDnsZone(), | ||
"azurerm_data_lake_store": dataSourceArmDataLakeStoreAccount(), | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor: alphabetically this should be above There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. moved, in next commit |
||
"azurerm_eventhub_namespace": dataSourceEventHubNamespace(), | ||
"azurerm_image": dataSourceArmImage(), | ||
"azurerm_key_vault_access_policy": dataSourceArmKeyVaultAccessPolicy(), | ||
|
@@ -130,6 +131,7 @@ func Provider() terraform.ResourceProvider { | |
"azurerm_container_service": resourceArmContainerService(), | ||
"azurerm_container_group": resourceArmContainerGroup(), | ||
"azurerm_cosmosdb_account": resourceArmCosmosDBAccount(), | ||
"azurerm_data_lake_store": resourceArmDataLakeStore(), | ||
"azurerm_dns_a_record": resourceArmDnsARecord(), | ||
"azurerm_dns_aaaa_record": resourceArmDnsAAAARecord(), | ||
"azurerm_dns_cname_record": resourceArmDnsCNameRecord(), | ||
|
@@ -334,6 +336,7 @@ func determineAzureResourceProvidersToRegister(providerList []resources.Provider | |
"Microsoft.DBforPostgreSQL": {}, | ||
"Microsoft.Devices": {}, | ||
"Microsoft.DocumentDB": {}, | ||
"Microsoft.DataLakeStore": {}, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor: alphabetically this should be higher up There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. moved in next commit |
||
"Microsoft.EventGrid": {}, | ||
"Microsoft.EventHub": {}, | ||
"Microsoft.KeyVault": {}, | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe this should be
computed
with no default?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yup has to be computed