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

Update Azure Cosmos DB API to to 2020-04-01 from 2015-04-08 #7597

Merged
merged 43 commits into from
Jul 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
de2cf8e
Upgrade CosmosDB SDK to 2019-08-01 from 2015-04-08
jackbatzner Mar 25, 2020
07cc41a
Parse new and old SDK IDs.
jackbatzner Mar 26, 2020
d9a4cbf
Update import statements to reflect new API Resource ID
jackbatzner Mar 26, 2020
91569d2
Properly reference old SDK Resource IDs
jackbatzner Mar 26, 2020
8a73962
Properly retrieve Gremlin Graph
jackbatzner Mar 26, 2020
82fd2ff
Create StateMigration for old SDK to new SDK
jackbatzner Mar 26, 2020
fce09bd
Format error messages
jackbatzner Mar 26, 2020
feefa15
Create common helper for getting throughput value
jackbatzner Mar 26, 2020
cd690af
Properly generate error when importing ID
jackbatzner Mar 26, 2020
23f2995
fix migration logic
katbyte Apr 15, 2020
00e3be4
Get latest version of Cosmos SDK
jackbatzner Apr 15, 2020
48bcaf6
Clean up duplicate resources
marc-sensenich Jul 7, 2020
ce39a50
Update Cosmos DB SDK to 2020-04-01
marc-sensenich Jul 7, 2020
71b202f
Add common Cosmos utility for IPRules to IPFilter changes
marc-sensenich Jul 7, 2020
c615726
fixup! Clean up duplicate resources
marc-sensenich Jul 7, 2020
108e58c
Update Azure Cosmos DB Resources and Data Source to 2020-04-01
marc-sensenich Jul 7, 2020
4b3769f
fixup! Update Azure Cosmos DB Resources and Data Source to 2020-04-01
marc-sensenich Jul 7, 2020
e9d9cd3
Check for 3 locations in Azure Cosmos DB Account Data Source
marc-sensenich Jul 9, 2020
d619031
Update EnableMultipleWriteLocations on Cosmos DB resource independently
marc-sensenich Jul 9, 2020
f18994b
Create utility for conversion of throughput from ResourceData
marc-sensenich Jul 9, 2020
6447ade
Run go mod tidy and go mod vendor
marc-sensenich Jul 9, 2020
a90efe0
Update Cosmos DB delete StateChangeConf Refresh check for not found
marc-sensenich Jul 10, 2020
df86b75
Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
888622d
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
a016100
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
00c2ec5
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
866fc11
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
dcef797
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
de09753
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
5453fa7
fixup! Update Cosmos DB EnableMultipleWriteLocations independently
marc-sensenich Jul 10, 2020
0ad547f
Have Cosmos DB consistency tests use BoundedStaleness
marc-sensenich Jul 10, 2020
fea3123
Raise an error if staleness values are set for anything but bounded s…
marc-sensenich Jul 10, 2020
cd93826
go mod tidy and go mod vendor
marc-sensenich Jul 11, 2020
1f01cda
Update Cosmos DB EnableMultipleWriteLocations after Locations
marc-sensenich Jul 11, 2020
d6f24d8
fixup! Raise an error if staleness values are set for anything but bo…
marc-sensenich Jul 11, 2020
ec10270
Correct parameter ordering in Gremlin Graph resource tests
marc-sensenich Jul 11, 2020
d2c2a56
Utilize DiffSuppressFunc for Consistency staleness configuration
marc-sensenich Jul 11, 2020
c23b1fd
Bring in changes from #7588: Deprecate prefix property of azure_cosmo…
marc-sensenich Jul 12, 2020
6c7995b
Set Cosmos DB Mongo coolection TTL from options in flattenCosmosMongo…
marc-sensenich Jul 12, 2020
ac7ce89
fixup! Bring in changes from #7588: Deprecate prefix property of azur…
marc-sensenich Jul 12, 2020
71e649c
Align cosmosdb_mongo_collection_resource with 1e37be88d7
marc-sensenich Jul 12, 2020
1fa29d3
Fix inversion of defaults for max_staleness_prefix and max_interval_i…
marc-sensenich Jul 12, 2020
c50f049
fixup! Bring in changes from #7588: Deprecate prefix property of azur…
marc-sensenich Jul 13, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/2020-04-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,
}
}
32 changes: 32 additions & 0 deletions azurerm/internal/services/cosmos/common/ip_rules.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package common

import (
"strings"

"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2020-04-01/documentdb"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
)

func CosmosDBIpRulesToIpRangeFilter(ipRules *[]documentdb.IPAddressOrRange) string {
ipRangeFilter := make([]string, 0)
if ipRules != nil {
for _, ipRule := range *ipRules {
ipRangeFilter = append(ipRangeFilter, *ipRule.IPAddressOrRange)
}
}

return strings.Join(ipRangeFilter, ",")
}

func CosmosDBIpRangeFilterToIpRules(ipRangeFilter string) *[]documentdb.IPAddressOrRange {
ipRules := make([]documentdb.IPAddressOrRange, 0)
if len(ipRangeFilter) > 0 {
for _, ipRange := range strings.Split(ipRangeFilter, ",") {
ipRules = append(ipRules, documentdb.IPAddressOrRange{
IPAddressOrRange: utils.String(ipRange),
})
}
}

return &ipRules
}
91 changes: 91 additions & 0 deletions azurerm/internal/services/cosmos/common/ip_rules_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package common

import (
"reflect"
"testing"

"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2020-04-01/documentdb"
)

var (
ipAddressOne = "127.0.0.1/32"
ipAddressTwo = "168.63.129.16/32"
)

func TestCosmosDBIpRulesToIpRangeFilter(t *testing.T) {
testData := []struct {
Name string
Input *[]documentdb.IPAddressOrRange
Expected string
}{
{
Name: "Nil",
Input: nil,
Expected: "",
},
{
Name: "One element",
Input: &[]documentdb.IPAddressOrRange{
{IPAddressOrRange: &ipAddressOne},
},
Expected: "127.0.0.1/32",
},
{
Name: "Multiple elements",
Input: &[]documentdb.IPAddressOrRange{
{IPAddressOrRange: &ipAddressOne},
{IPAddressOrRange: &ipAddressTwo},
},
Expected: "127.0.0.1/32,168.63.129.16/32",
},
}

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

actual := CosmosDBIpRulesToIpRangeFilter(v.Input)

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

func TestCosmosDBIpRangeFilterToIpRules(t *testing.T) {
testData := []struct {
Name string
Input string
Expected *[]documentdb.IPAddressOrRange
}{
{
Name: "Empty",
Input: "",
Expected: &[]documentdb.IPAddressOrRange{},
},
{
Name: "One element",
Input: ipAddressOne,
Expected: &[]documentdb.IPAddressOrRange{
{IPAddressOrRange: &ipAddressOne},
},
},
{
Name: "Multiple elements",
Input: "127.0.0.1/32,168.63.129.16/32",
Expected: &[]documentdb.IPAddressOrRange{
{IPAddressOrRange: &ipAddressOne},
{IPAddressOrRange: &ipAddressTwo},
},
},
}

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

actual := CosmosDBIpRangeFilterToIpRules(v.Input)

if !reflect.DeepEqual(actual, v.Expected) {
t.Fatalf("Expected %+v but got %+v", v.Expected, actual)
}
}
}
24 changes: 24 additions & 0 deletions azurerm/internal/services/cosmos/common/throughput.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package common

import (
"github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2020-04-01/documentdb"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
)

func GetThroughputFromResult(throughputResponse documentdb.ThroughputSettingsGetResults) *int32 {
props := throughputResponse.ThroughputSettingsGetProperties
if props == nil {
return nil
}

res := props.Resource
if res == nil {
return nil
}

return res.Throughput
}

func ConvertThroughputFromResourceData(throughput interface{}) *int32 {
return utils.Int32(int32(throughput.(int)))
}
Loading