Skip to content
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

Upgrade CosmosDB SDK to 2019-08-01 from 2015-04-08 #6253

Closed
wants to merge 12 commits into from
179 changes: 0 additions & 179 deletions azurerm/helpers/azure/cosmos.go

This file was deleted.

31 changes: 28 additions & 3 deletions azurerm/internal/services/cosmos/client/client.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,44 @@
package client

import (
"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2015-04-08/documentdb"
"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2019-08-01/documentdb"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/common"
)

type Client struct {
DatabaseClient *documentdb.DatabaseAccountsClient
CassandraClient *documentdb.CassandraResourcesClient
DatabaseClient *documentdb.DatabaseAccountsClient
GremlinClient *documentdb.GremlinResourcesClient
MongoDbClient *documentdb.MongoDBResourcesClient
SqlClient *documentdb.SQLResourcesClient
TableClient *documentdb.TableResourcesClient
}

func NewClient(o *common.ClientOptions) *Client {
cassandraClient := documentdb.NewCassandraResourcesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&cassandraClient.Client, o.ResourceManagerAuthorizer)

databaseClient := documentdb.NewDatabaseAccountsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&databaseClient.Client, o.ResourceManagerAuthorizer)

gremlinClient := documentdb.NewGremlinResourcesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&gremlinClient.Client, o.ResourceManagerAuthorizer)

mongoDbClient := documentdb.NewMongoDBResourcesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&mongoDbClient.Client, o.ResourceManagerAuthorizer)

sqlClient := documentdb.NewSQLResourcesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&sqlClient.Client, o.ResourceManagerAuthorizer)

tableClient := documentdb.NewTableResourcesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&tableClient.Client, o.ResourceManagerAuthorizer)

return &Client{
DatabaseClient: &databaseClient,
CassandraClient: &cassandraClient,
DatabaseClient: &databaseClient,
GremlinClient: &gremlinClient,
MongoDbClient: &mongoDbClient,
SqlClient: &sqlClient,
TableClient: &tableClient,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"log"
"time"

"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2015-04-08/documentdb"
"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2019-08-01/documentdb"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tags"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts"
Expand Down Expand Up @@ -211,7 +211,7 @@ func dataSourceArmCosmosDbAccountRead(d *schema.ResourceData, meta interface{})
}
d.Set("kind", string(resp.Kind))

if props := resp.DatabaseAccountProperties; props != nil {
if props := resp.DatabaseAccountGetProperties; props != nil {
d.Set("offer_type", string(props.DatabaseAccountOfferType))
d.Set("ip_range_filter", props.IPRangeFilter)
d.Set("endpoint", props.DocumentEndpoint)
Expand Down
29 changes: 29 additions & 0 deletions azurerm/internal/services/cosmos/parse/account.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package parse

import (
"fmt"

"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
)

type DatabaseAccountId struct {
ResourceGroup string
Name string
}

func DatabaseAccountID(input string) (*DatabaseAccountId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, fmt.Errorf("[ERROR] Unable to parse Account ID %q: %+v", input, err)
}

databaseAccount := DatabaseAccountId{
ResourceGroup: id.ResourceGroup,
}

if databaseAccount.Name, err = id.PopSegment("databaseAccounts"); err != nil {
return nil, err
}

return &databaseAccount, nil
}
75 changes: 75 additions & 0 deletions azurerm/internal/services/cosmos/parse/account_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package parse

import (
"testing"
)

func TestDatabaseAccountID(t *testing.T) {
testData := []struct {
Name string
Input string
Error bool
Expect *DatabaseAccountId
}{
{
Name: "Empty",
Input: "",
Error: true,
},
{
Name: "No Resource Groups Segment",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000",
Error: true,
},
{
Name: "No Resource Groups Value",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/",
Error: true,
},
{
Name: "Resource Group ID",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foo/",
Error: true,
},
{
Name: "Missing Database Account Value",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.DocumentDB/databaseAccounts/",
Error: true,
},
{
Name: "Account ID",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.DocumentDB/databaseAccounts/acc1",
Error: false,
Expect: &DatabaseAccountId{
ResourceGroup: "resGroup1",
Name: "acc1",
},
},
{
Name: "Wrong Casing",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.DocumentDB/DatabaseAccounts/acc1/",
Error: true,
},
}

for _, v := range testData {
t.Logf("[DEBUG] Testing %q", v.Name)

actual, err := DatabaseAccountID(v.Input)
if err != nil {
if v.Error {
continue
}

t.Fatalf("Expected a value but got an error: %s", err)
}

if actual.Name != v.Expect.Name {
t.Fatalf("Expected %q but got %q for Name", v.Expect.Name, actual.Name)
}

if actual.ResourceGroup != v.Expect.ResourceGroup {
t.Fatalf("Expected %q but got %q for Resource Group", v.Expect.ResourceGroup, actual.ResourceGroup)
}
}
}
37 changes: 37 additions & 0 deletions azurerm/internal/services/cosmos/parse/cassandra_keyspace.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package parse

import (
"fmt"

"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
)

type CassandraKeyspaceId struct {
ResourceGroup string
Account string
Name string
}

func CassandraKeyspaceID(input string) (*CassandraKeyspaceId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, fmt.Errorf("[ERROR] Unable to parse Cassandra Keyspace ID %q: %+v", input, err)
}

cassandraKeyspace := CassandraKeyspaceId{
ResourceGroup: id.ResourceGroup,
}

if cassandraKeyspace.Account, err = id.PopSegment("databaseAccounts"); err != nil {
return nil, err
}

if cassandraKeyspace.Name, err = id.PopSegment("cassandraKeyspaces"); err != nil {
// Handle existing resources created with the 2015-04-08 SDK
if cassandraKeyspace.Name, err = id.PopSegment("keyspaces"); err != nil {
return nil, err
}
}

return &cassandraKeyspace, nil
}
Loading