Skip to content

Commit

Permalink
Merge pull request #1219 from paktek123/add-adls-accounts
Browse files Browse the repository at this point in the history
New Resource: azurerm_data_lake_store
  • Loading branch information
katbyte authored May 20, 2018
2 parents 9a9db40 + 47bb571 commit a836939
Show file tree
Hide file tree
Showing 18 changed files with 4,488 additions and 0 deletions.
11 changes: 11 additions & 0 deletions azurerm/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2017-10-01/containerregistry"
"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2017-09-30/containerservice"
"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2015-04-08/documentdb"
"github.com/Azure/azure-sdk-for-go/services/datalake/store/mgmt/2016-11-01/account"
"github.com/Azure/azure-sdk-for-go/services/dns/mgmt/2016-04-01/dns"
"github.com/Azure/azure-sdk-for-go/services/eventgrid/mgmt/2017-09-15-preview/eventgrid"
"github.com/Azure/azure-sdk-for-go/services/eventhub/mgmt/2017-04-01/eventhub"
Expand Down Expand Up @@ -138,6 +139,9 @@ type ArmClient struct {
sqlServerAzureADAdministratorsClient sql.ServerAzureADAdministratorsClient
sqlVirtualNetworkRulesClient sql.VirtualNetworkRulesClient

// Data Lake Store
dataLakeStoreAccountClient account.AccountsClient

// KeyVault
keyVaultClient keyvault.VaultsClient
keyVaultManagementClient keyVault.BaseClient
Expand Down Expand Up @@ -374,6 +378,7 @@ func getArmClient(c *authentication.Config) (*ArmClient, error) {
client.registerContainerServicesClients(endpoint, c.SubscriptionID, auth)
client.registerCosmosDBClients(endpoint, c.SubscriptionID, auth, sender)
client.registerDatabases(endpoint, c.SubscriptionID, auth, sender)
client.registerDataLakeStoreAccountClients(endpoint, c.SubscriptionID, auth, sender)
client.registerDeviceClients(endpoint, c.SubscriptionID, auth, sender)
client.registerDNSClients(endpoint, c.SubscriptionID, auth, sender)
client.registerEventGridClients(endpoint, c.SubscriptionID, auth, sender)
Expand Down Expand Up @@ -633,6 +638,12 @@ func (c *ArmClient) registerDatabases(endpoint, subscriptionId string, auth auto
c.sqlVirtualNetworkRulesClient = sqlVNRClient
}

func (c *ArmClient) registerDataLakeStoreAccountClients(endpoint, subscriptionId string, auth autorest.Authorizer, sender autorest.Sender) {
dataLakeStoreAccountClient := account.NewAccountsClientWithBaseURI(endpoint, subscriptionId)
c.configureClient(&dataLakeStoreAccountClient.Client, auth)
c.dataLakeStoreAccountClient = dataLakeStoreAccountClient
}

func (c *ArmClient) registerDeviceClients(endpoint, subscriptionId string, auth autorest.Authorizer, sender autorest.Sender) {
iotClient := devices.NewIotHubResourceClientWithBaseURI(endpoint, subscriptionId)
c.configureClient(&iotClient.Client, auth)
Expand Down
67 changes: 67 additions & 0 deletions azurerm/data_source_data_lake_store.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package azurerm

import (
"fmt"
"log"

"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,
Computed: true,
},

"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) {
log.Printf("[WARN] DataLakeStoreAccount '%s' was not found (resource group '%s')", name, resourceGroup)
d.SetId("")
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 properties := resp.DataLakeStoreAccountProperties; properties != nil {
d.Set("tier", string(properties.CurrentTier))
}

flattenAndSetTags(d, resp.Tags)

return nil
}
97 changes: 97 additions & 0 deletions azurerm/data_source_data_lake_store_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package azurerm

import (
"fmt"
"testing"

"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
)

func TestAccDataSourceAzureRMDataLakeStore_basic(t *testing.T) {
dataSourceName := "data.azurerm_data_lake_store.test"
rInt := acctest.RandInt()
rs := acctest.RandString(4)
location := testLocation()

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccDataSourceDataLakeStore_basic(rInt, rs, location),
Check: resource.ComposeTestCheckFunc(
testCheckAzureRMDataLakeStoreExists(dataSourceName),
resource.TestCheckResourceAttr(dataSourceName, "tier", "Consumption"),
),
},
},
})
}

func TestAccDataSourceAzureRMDataLakeStore_tier(t *testing.T) {
dataSourceName := "data.azurerm_data_lake_store.test"
rInt := acctest.RandInt()
rs := acctest.RandString(4)
location := testLocation()

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccDataSourceDataLakeStore_tier(rInt, rs, location),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "tier", "Commitment_1TB"),
resource.TestCheckResourceAttr(dataSourceName, "tags.%", "1"),
resource.TestCheckResourceAttr(dataSourceName, "tags.hello", "world"),
),
},
},
})
}

func testAccDataSourceDataLakeStore_basic(rInt int, rs string, location string) string {
return fmt.Sprintf(`
resource "azurerm_resource_group" "test" {
name = "acctestRG_%d"
location = "%s"
}
resource "azurerm_data_lake_store" "test" {
name = "unlikely23exst2acct%s"
location = "%s"
resource_group_name = "${azurerm_resource_group.test.name}"
}
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, rs, location)
}

func testAccDataSourceDataLakeStore_tier(rInt int, rs string, location string) string {
return fmt.Sprintf(`
resource "azurerm_resource_group" "test" {
name = "acctestRG_%d"
location = "%s"
}
resource "azurerm_data_lake_store" "test" {
name = "unlikely23exst2acct%s"
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, rs, location)
}
3 changes: 3 additions & 0 deletions azurerm/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ func Provider() terraform.ResourceProvider {
"azurerm_cdn_profile": dataSourceArmCdnProfile(),
"azurerm_client_config": dataSourceArmClientConfig(),
"azurerm_cosmosdb_account": dataSourceArmCosmosDBAccount(),
"azurerm_data_lake_store": dataSourceArmDataLakeStoreAccount(),
"azurerm_dns_zone": dataSourceArmDnsZone(),
"azurerm_eventhub_namespace": dataSourceEventHubNamespace(),
"azurerm_image": dataSourceArmImage(),
Expand Down Expand Up @@ -132,6 +133,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(),
Expand Down Expand Up @@ -333,6 +335,7 @@ func determineAzureResourceProvidersToRegister(providerList []resources.Provider
"Microsoft.ContainerInstance": {},
"Microsoft.ContainerRegistry": {},
"Microsoft.ContainerService": {},
"Microsoft.DataLakeStore": {},
"Microsoft.DBforMySQL": {},
"Microsoft.DBforPostgreSQL": {},
"Microsoft.Devices": {},
Expand Down
Loading

0 comments on commit a836939

Please sign in to comment.