Skip to content

[CosmosDB]Updating with recent features: Autoscale, EnableFreeTier, ServerVersion, EnableAnalyticalStorage #12066

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

Merged
merged 10 commits into from
Jun 12, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion src/CosmosDB/CosmosDB.Test/CosmosDB.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)..\..\Az.Test.props" />
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="1.1.1" />
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="1.2.0" />
<PackageReference Include="Microsoft.Azure.Management.Network" Version="19.21.1-preview" />
</ItemGroup>
</Project>
124 changes: 63 additions & 61 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/AccountTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -14,51 +14,44 @@

function Test-AccountRelatedCmdlets
{
$rgName = "CosmosDBResourceGroup3"
$rgName = "CosmosDBResourceGroup89"
$location = "East US"
$locationlist = "East US", "West US"
$locationlist2 = "East US", "UK South", "UK West", "South India"
$locationlist3 = "West US", "East US"

$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location

$cosmosDBAccountName = "cosmosdb671"
$cosmosDBAccountName = "cosmosdb67"

#use an existing account with the following information for Account Update Operations
$cosmosDBExistingAccountName = "dbaccount27"
$existingResourceGroupName = "CosmosDBResourceGroup27"

$ipRangeFilter = "192.168.0.1"
$IpRule = "201.168.50.1"
$tags = @{ name = "test"; Shape = "Square"; Color = "Blue"}
$publicNetworkAccess = "Enabled"

$cosmosDBAccount = New-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -Location $location -IpRangeFilter $ipRangeFilter -Tag $tags -EnableVirtualNetwork -EnableMultipleWriteLocations -EnableAutomaticFailover -ApiKind "MongoDB" -PublicNetworkAccess $publicNetworkAccess
do
{
$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
} while ($cosmosDBAccount.ProvisioningState -ne "Succeeded")
$cosmosDBAccount = New-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -Location $location -IpRule $IpRule -Tag $tags -EnableVirtualNetwork -EnableMultipleWriteLocations -EnableAutomaticFailover -ApiKind "MongoDB" -PublicNetworkAccess $publicNetworkAccess -EnableFreeTier 0 -EnableAnalyticalStorage 0 -ServerVersion "3.2"

Assert-AreEqual $cosmosDBAccountName $cosmosDBAccount.Name
Assert-AreEqual "BoundedStaleness" $cosmosDBAccount.ConsistencyPolicy.DefaultConsistencyLevel
Assert-AreEqual 10 $cosmosDBAccount.ConsistencyPolicy.MaxIntervalInSeconds
Assert-AreEqual 20 $cosmosDBAccount.ConsistencyPolicy.MaxStalenessPrefix
Assert-AreEqual $ipRangeFilter $cosmosDBAccount.IpRangeFilter
Assert-AreEqual $cosmosDBAccount.EnableAutomaticFailover 1
Assert-AreEqual $cosmosDBAccount.EnableMultipleWriteLocations 1
Assert-AreEqual $cosmosDBAccount.IsVirtualNetworkFilterEnabled 1
Assert-AreEqual $cosmosDBAccount.PublicNetworkAccess $publicNetworkAccess
Assert-AreEqual $cosmosDBAccount.ApiProperties.ServerVersion "3.2"
Assert-AreEqual $cosmosDBAccount.EnableAnalyticalStorage 0
Assert-AreEqual $cosmosDBAccount.EnableFreeTier 0

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -IpRangeFilter $ipRangeFilter -Tag $tags -EnableVirtualNetwork 1 -EnableAutomaticFailover 1 -PublicNetworkAccess $publicNetworkAccess
do
{
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName
} while ($cosmosDBAccount.ProvisioningState -ne "Succeeded")
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -IpRule $IpRule -Tag $tags -EnableVirtualNetwork 1 -EnableAutomaticFailover 1 -PublicNetworkAccess $publicNetworkAccess

Assert-AreEqual $cosmosDBExistingAccountName $updatedCosmosDBAccount.Name
Assert-AreEqual "BoundedStaleness" $updatedCosmosDBAccount.ConsistencyPolicy.DefaultConsistencyLevel
Assert-AreEqual 10 $updatedCosmosDBAccount.ConsistencyPolicy.MaxIntervalInSeconds
Assert-AreEqual 20 $updatedCosmosDBAccount.ConsistencyPolicy.MaxStalenessPrefix
Assert-AreEqual $ipRangeFilter $updatedCosmosDBAccount.IpRangeFilter
Assert-AreEqual $updatedCosmosDBAccount.EnableAutomaticFailover 1
Assert-AreEqual $updatedCosmosDBAccount.IsVirtualNetworkFilterEnabled 1
Assert-AreEqual $updatedCosmosDBAccount.PublicNetworkAccess $publicNetworkAccess
Expand Down Expand Up @@ -88,7 +81,7 @@ function Test-AccountRelatedCmdletsUsingRid
$cosmosDBExistingAccountName = "dbaccount27"
$existingResourceGroupName = "CosmosDBResourceGroup27"

$ipRangeFilter = "192.168.0.1"
$IpRule = "201.168.50.1"
$tags = @{ name = "test"; Shape = "Square"; Color = "Blue"}

$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName
Expand All @@ -98,12 +91,11 @@ function Test-AccountRelatedCmdletsUsingRid
Assert-AreEqual $cosmosDBAccountByRid.ConsistencyPolicy.DefaultConsistencyLevel $cosmosDBAccount.ConsistencyPolicy.DefaultConsistencyLevel
Assert-AreEqual $cosmosDBAccountByRid.ConsistencyPolicy.MaxIntervalInSeconds $cosmosDBAccount.ConsistencyPolicy.MaxIntervalInSeconds
Assert-AreEqual $cosmosDBAccountByRid.ConsistencyPolicy.MaxStalenessPrefix $cosmosDBAccount.ConsistencyPolicy.MaxStalenessPrefix
Assert-AreEqual $cosmosDBAccountByRid.IpRangeFilter $cosmosDBAccount.IpRangeFilter
Assert-AreEqual $cosmosDBAccountByRid.EnableAutomaticFailover $cosmosDBAccount.EnableAutomaticFailover
Assert-AreEqual $cosmosDBAccountByRid.EnableMultipleWriteLocations $cosmosDBAccount.EnableMultipleWriteLocations
Assert-AreEqual $cosmosDBAccountByRid.IsVirtualNetworkFilterEnabled $cosmosDBAccount.IsVirtualNetworkFilterEnabled

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceId $cosmosDBAccount.Id -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -IpRangeFilter $ipRangeFilter -Tag $tags -EnableVirtualNetwork 1 -EnableAutomaticFailover 1
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceId $cosmosDBAccount.Id -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -IpRule $IpRule -Tag $tags -EnableVirtualNetwork 1 -EnableAutomaticFailover 1
do
{
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName
Expand All @@ -113,7 +105,6 @@ function Test-AccountRelatedCmdletsUsingRid
Assert-AreEqual "BoundedStaleness" $updatedCosmosDBAccount.ConsistencyPolicy.DefaultConsistencyLevel
Assert-AreEqual 10 $updatedCosmosDBAccount.ConsistencyPolicy.MaxIntervalInSeconds
Assert-AreEqual 20 $updatedCosmosDBAccount.ConsistencyPolicy.MaxStalenessPrefix
Assert-AreEqual $ipRangeFilter $updatedCosmosDBAccount.IpRangeFilter
Assert-AreEqual $updatedCosmosDBAccount.EnableAutomaticFailover 1
Assert-AreEqual $updatedCosmosDBAccount.IsVirtualNetworkFilterEnabled 1

Expand All @@ -136,12 +127,12 @@ function Test-AccountRelatedCmdletsUsingObject
$cosmosDBExistingAccountName = "dbaccount27"
$existingResourceGroupName = "CosmosDBResourceGroup27"

$ipRangeFilter = "192.168.0.1"
$IpRule = "201.168.50.1"
$tags = @{ name = "test"; Shape = "Square"; Color = "Blue"}

$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -InputObject $cosmosDBAccount -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -IpRangeFilter $ipRangeFilter -Tag $tags -EnableVirtualNetwork 1 -EnableAutomaticFailover 1
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -InputObject $cosmosDBAccount -DefaultConsistencyLevel "BoundedStaleness" -MaxStalenessIntervalInSeconds 10 -MaxStalenessPrefix 20 -IpRule $IpRule -Tag $tags -EnableVirtualNetwork 1 -EnableAutomaticFailover 1
do
{
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $existingResourceGroupName -Name $cosmosDBExistingAccountName
Expand All @@ -151,7 +142,6 @@ function Test-AccountRelatedCmdletsUsingObject
Assert-AreEqual "BoundedStaleness" $updatedCosmosDBAccount.ConsistencyPolicy.DefaultConsistencyLevel
Assert-AreEqual 10 $updatedCosmosDBAccount.ConsistencyPolicy.MaxIntervalInSeconds
Assert-AreEqual 20 $updatedCosmosDBAccount.ConsistencyPolicy.MaxStalenessPrefix
Assert-AreEqual $ipRangeFilter $updatedCosmosDBAccount.IpRangeFilter
Assert-AreEqual $updatedCosmosDBAccount.EnableAutomaticFailover 1
Assert-AreEqual $updatedCosmosDBAccount.IsVirtualNetworkFilterEnabled 1

Expand All @@ -173,21 +163,27 @@ function Test-AccountRelatedCmdletsUsingObject

function Test-AddRegionOperation
{
$rgName = "CosmosDBResourceGroup2"
$rgName = "CosmosDBResourceGroup3"
$location = "East US"
$locationlist = "East US", "West US"
$cosmosDBAccountName = "testupdateregion"
$cosmosDBAccountName = "testupdateregionpowershell2"
$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location

try{
$cosmosDBAccount = New-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -Location $location -EnableMultipleWriteLocations -EnableAutomaticFailover
do
{
$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
} while ($cosmosDBAccount.ProvisioningState -ne "Succeeded")

$updatedCosmosDBAccount = Update-AzCosmosDBAccountRegion -ResourceGroupName $rgName -Name $cosmosDBAccountName -Location $locationlist
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual $cosmosDBAccount.Locations.Count $updatedCosmosDBAccount.Locations.Count - 1

$updatedCosmosDBAccount = Update-AzCosmosDBAccountRegion -ResourceGroupName $rgName -Name $cosmosDBAccountName -Location $locationlist
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual $cosmosDBAccount.Locations.Count $updatedCosmosDBAccount.Locations.Count - 1
}
finally{
#unable to delete account immediately after adding region
#Remove-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
}
}

function Test-PrivateEndpoint
Expand All @@ -196,41 +192,47 @@ function Test-PrivateEndpoint
$location = "East US"
$peName = "mype";
$storageAccount = "xdmsa2";
$vnetName = "MyVnetPE"

#use an existing account with the following properties
$cosmosDBExistingAccountName = "db9934121"
$cosmosDBAccountName = "db945"
$rgname = "CosmosDBResourceGroup9507"

$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgname -Name $cosmosDBExistingAccountName
$resourceId = $cosmosDBAccount.Id
try{
$cosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgname -Name $cosmosDBAccountName
$resourceId = $cosmosDBAccount.Id

$peSubnet = New-AzVirtualNetworkSubnetConfig -Name peSubnet -AddressPrefix "11.0.1.0/24" -PrivateEndpointNetworkPolicies "Disabled"
$vnetPE = New-AzVirtualNetwork -Name "vnetPE" -ResourceGroupName $rgname -Location $location -AddressPrefix "11.0.0.0/16" -Subnet $peSubnet
$peSubnet = New-AzVirtualNetworkSubnetConfig -Name peSubnet -AddressPrefix "11.0.1.0/24" -PrivateEndpointNetworkPolicies "Disabled"
$vnetPE = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix "11.0.0.0/16" -Subnet $peSubnet

$plsConnection= New-AzPrivateLinkServiceConnection -Name plsConnection -PrivateLinkServiceId $resourceId -GroupId 'Sql'
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgname -Name $peName -Location $location -Subnet $vnetPE.subnets[0] -PrivateLinkServiceConnection $plsConnection -ByManualRequest

$pecGet = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
Assert-NotNull $pecGet;
Assert-AreEqual "Pending" $pecGet.PrivateLinkServiceConnectionState.Status

# Approve Private Endpoint Connection
$pecApprove = Approve-AzPrivateEndpointConnection -ResourceId $pecGet.Id
Assert-NotNull $pecApprove;

$pecGet2 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
do
{
$pecGet2 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
} while ($pecGet2.PrivateLinkServiceConnectionState.Status -ne "Approved")

# Remove Private Endpoint Connection
$pecRemove = Remove-AzPrivateEndpointConnection -ResourceId $pecGet.Id -PassThru -Force
Assert-AreEqual true $pecRemove

$pecGet3 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
do
{
$pecGet3 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
} while (($pecGet3) -ne $null)
$plsConnection= New-AzPrivateLinkServiceConnection -Name plsConnection -PrivateLinkServiceId $resourceId -GroupId 'Sql'
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgname -Name $peName -Location $location -Subnet $vnetPE.subnets[0] -PrivateLinkServiceConnection $plsConnection -ByManualRequest

$pecGet = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
Assert-NotNull $pecGet;
Assert-AreEqual "Pending" $pecGet.PrivateLinkServiceConnectionState.Status

# Approve Private Endpoint Connection
$pecApprove = Approve-AzPrivateEndpointConnection -ResourceId $pecGet.Id
Assert-NotNull $pecApprove;

$pecGet2 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
do
{
$pecGet2 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
} while ($pecGet2.PrivateLinkServiceConnectionState.Status -ne "Approved")

# Remove Private Endpoint Connection
$pecRemove = Remove-AzPrivateEndpointConnection -ResourceId $pecGet.Id -PassThru -Force
Assert-AreEqual true $pecRemove

$pecGet3 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
do
{
$pecGet3 = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $resourceId
} while (($pecGet3) -ne $null)
}
finally{
Remove-AzPrivateEndpoint -ResourceGroupName $rgname -Name $peName -Force
Remove-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Force
}
}
31 changes: 29 additions & 2 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/SqlOperationsTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,13 @@ function Test-SqlThroughputCmdlets
$UpdatedContainerThroughputValue2 = 600
$UpdatedContainerThroughputValue3 = 500

$DatabaseName2 = "dbName4"
$ContainerName2 = "containerName3"
$AutoscaleContainerThroughput = 5000
$AutoscaleUpdatedContainerThroughput = 10000
$AutoscaleDatabaseThroughput = 8000
$AutoscaleUpdatedDatabaseThroughput = 12000

Try{
$NewDatabase = New-AzCosmosDBSqlDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName -Throughput $ThroughputValue
$Throughput = Get-AzCosmosDBSqlDatabaseThroughput -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
Expand Down Expand Up @@ -535,11 +542,31 @@ function Test-SqlThroughputCmdlets
$UpdatedContainerThroughput = Update-AzCosmosDBSqlContainerThroughput -ParentObject $NewDatabase -Name $ContainerName -Throughput $UpdatedContainerThroughputValue3
Assert-AreEqual $UpdatedContainerThroughput.Throughput $UpdatedContainerThroughputValue3

# autoscale scenarios
$AutoscaleDatabase = New-AzCosmosDBSqlDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName2 -AutoscaleMaxThroughput $AutoscaleDatabaseThroughput
$Throughput = Get-AzCosmosDBSqlDatabaseThroughput -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName2
Assert-AreEqual $Throughput.AutoscaleSettings.MaxThroughput $AutoscaleDatabaseThroughput

$AutoscaleContainer = New-AzCosmosDBSqlContainer -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName2 -AutoscaleMaxThroughput $AutoscaleContainerThroughput -Name $ContainerName2 -PartitionKeyPath $PartitionKeyPathValue -PartitionKeyKind $PartitionKeyKindValue
$ContainerThroughput = Get-AzCosmosDBSqlContainerThroughput -InputObject $AutoscaleContainer
Assert-AreEqual $ContainerThroughput.AutoscaleSettings.MaxThroughput $AutoscaleContainerThroughput

$UpdatedContainerThroughput = Update-AzCosmosDBSqlContainerThroughput -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName2 -Name $ContainerName2 -AutoscaleMaxThroughput $AutoscaleUpdatedContainerThroughput
Assert-AreEqual $UpdatedContainerThroughput.AutoscaleSettings.MaxThroughput $AutoscaleUpdatedContainerThroughput

# can only update throughput of database if it has atleast one container with shared throughput
# $UpdatedThroughput = Update-AzCosmosDBSqlDatabaseThroughput -InputObject $AutoscaleDatabase -AutoscaleMaxThroughput $AutoscaleUpdatedDatabaseThroughput
# Assert-AreEqual $UpdatedThroughput.AutoscaleSettings.MaxThroughput $AutoscaleUpdatedDatabaseThroughput

Remove-AzCosmosDBSqlContainer -InputObject $NewContainer
Remove-AzCosmosDBSqlDatabase -InputObject $NewDatabase
Remove-AzCosmosDBSqlDatabase -InputObject $NewDatabase
Remove-AzCosmosDBSqlContainer -InputObject $AutoscaleContainer
Remove-AzCosmosDBSqlDatabase -InputObject $AutoscaleDatabase
}
Finally{
Remove-AzCosmosDBSqlContainer -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
Remove-AzCosmosDBSqlDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
Remove-AzCosmosDBSqlDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
Remove-AzCosmosDBSqlContainer -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName2 -Name $ContainerName2
Remove-AzCosmosDBSqlDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName2
}
}
Loading