Skip to content

Commit

Permalink
[InAccountRestore] Introducing new PowerShell commands for InAccount …
Browse files Browse the repository at this point in the history
…Restore of Deleted Database/ Containers feature (#19601)

* Cosmos DB: Update to 2.0.0 and Add support for NetworkAclBypass in Account (#14211)

* Make changes for Network Acl Bypass

* Add help file updates

* Changes with enum not as string

* rerun tests

* Remove extra line

* rerun gremlin test with updated

* Update ChangeLog.md

Co-authored-by: Yabo Hu <yabhu@microsoft.com>

* InAccount Restore feature powershell support

* update session records

* update session records and help files

* address comments for validation and in changelog.md

* add session records for new tests and update help files

* add update help files

* update session records after rebase

* updated New-AzCosmosDBAccount.md and session records

* update session records with subscription id in variables and added ExampleIssues.csv

* update nuget package version and remove localfeed files

Co-authored-by: amar-sagare <45947937+amar-sagare@users.noreply.github.com>
Co-authored-by: Yabo Hu <yabhu@microsoft.com>
  • Loading branch information
3 people authored Sep 29, 2022
1 parent 482a460 commit d1ac42c
Show file tree
Hide file tree
Showing 92 changed files with 396,333 additions and 24,913 deletions.
4 changes: 2 additions & 2 deletions src/CosmosDB/CosmosDB.Test/CosmosDB.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PsModuleName>CosmosDB</PsModuleName>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)..\..\Az.Test.props" />
<ItemGroup>
<PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.1" />
<PackageReference Include="Microsoft.Azure.Management.Network" Version="23.0.0" />
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="3.7.0-preview" />
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="3.9.1-preview" />
</ItemGroup>
</Project>
28 changes: 28 additions & 0 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/MongoOperationsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,33 @@ public void TestMongoMigrateThroughputCmdlets()
{
TestRunner.RunTestScript("Test-MongoMigrateThroughputCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoInAccountRestoreOperationsCmdlets()
{
TestRunner.RunTestScript("Test-MongoInAccountRestoreOperationsCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoInAccountRestoreOperationsSharedRUResourcesCmdlets()
{
TestRunner.RunTestScript("Test-MongoInAccountRestoreOperationsSharedRUResourcesCmdlets");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoDBCollectionThroughputRedistributionCmdlet()
{
TestRunner.RunTestScript("Test-MongoDBCollectionAdaptiveRUCmdlets");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoDBCollectionMergeCmdlet()
{
TestRunner.RunTestScript("Test-MongoDBCollectionMergeCmdlet");
}
}
}
381 changes: 381 additions & 0 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/MongoOperationsTests.ps1

Large diffs are not rendered by default.

18 changes: 16 additions & 2 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/RestoreTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,23 @@ public void TestMongoDBCollectionBackupInformationCmdLets()

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestUpdateCosmosDBAccountBackupPolicyCmdLet()
public void TestUpdateCosmosDBAccountBackupPolicyToContinuous30DaysCmdLets()
{
TestRunner.RunTestScript("Test-UpdateCosmosDBAccountBackupPolicyCmdLet");
TestRunner.RunTestScript( "Test-UpdateCosmosDBAccountBackupPolicyToContinuous30DaysCmdLets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestUpdateCosmosDBAccountBackupPolicyToContinuous7DaysCmdLets()
{
TestRunner.RunTestScript("Test-UpdateCosmosDBAccountBackupPolicyToContinuous7DaysCmdLets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestProvisionCosmosDBAccountBackupPolicyWithContinuous7DaysCmdLets()
{
TestRunner.RunTestScript("Test-ProvisionCosmosDBAccountBackupPolicyWithContinuous7DaysCmdLets");
}
}
}
134 changes: 124 additions & 10 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/RestoreTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ function Test-RestoreFromNewAccountCmdlets {
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime

$restorableSqlDatabases = Get-AzCosmosDBSqlRestorableDatabase -Location $sourceCosmosDBAccount.Location -DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $restorableSqlDatabases
Expand Down Expand Up @@ -139,6 +140,7 @@ function Test-MongoRestoreAccountCmdlets {
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime

$NewDatabase = New-AzCosmosDBMongoDBDatabase -AccountName $sourceCosmosDBAccountName -ResourceGroupName $rgName -Name $databaseName -Throughput $ThroughputValue
$NewCollection = New-AzCosmosDBMongoDBCollection -AccountName $sourceCosmosDBAccountName -ResourceGroupName $rgName -DatabaseName $databaseName -Throughput $CollectionThroughputValue -Name $CollectionName -Shard $ShardKey
Expand Down Expand Up @@ -218,6 +220,7 @@ function Test-RestoreFailuresAccountCmdlets {
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime

$restorableSqlDatabases = Get-AzCosmosDBSqlRestorableDatabase -Location $sourceCosmosDBAccount.Location -DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $restorableSqlDatabases
Expand Down Expand Up @@ -246,9 +249,9 @@ function Test-RestoreFailuresAccountCmdlets {
}

function Test-SqlContainerBackupInformationCmdLets {
$rgName = "CosmosDBResourceGroup14"
$rgName = "CosmosDBResourceGroup52"
$location = "Central US"
$cosmosDBAccountName = "cosmosdb-1214"
$cosmosDBAccountName = "cosmosdb-1252"
$databaseName = "TestDB1";
$collectionName = "TestCollectionInDB1";
$apiKind = "Sql"
Expand Down Expand Up @@ -326,10 +329,10 @@ function Test-MongoDBCollectionBackupInformationCmdLets {
Assert-NotNull $backupInfo.LatestRestorableTimestamp
}

function Test-UpdateCosmosDBAccountBackupPolicyCmdLet {
$rgName = "CosmosDBResourceGroup20"
function Test-UpdateCosmosDBAccountBackupPolicyToContinuous30DaysCmdLets {
$rgName = "PSCosmosDBResourceGroup20"
$location = "Central US"
$cosmosDBAccountName = "cosmosdb-1220"
$cosmosDBAccountName = "ps-cosmosdb-1220"
$apiKind = "Sql"
$consistencyLevel = "Session"
$locations = @()
Expand All @@ -345,11 +348,122 @@ function Test-UpdateCosmosDBAccountBackupPolicyCmdLet {
}

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous
Start-TestSleep -Seconds 50
Start-Sleep -s (60)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.TargetType
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.StartTime
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.TargetType
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.StartTime

Start-Sleep -s (60 * 5)

while (
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Completed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Failed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupType -ne "Continuous")
{
Start-Sleep -s 60

# keep polling the migration Status
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
}

Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous30Days" $updatedCosmosDBAccount.BackupPolicy.Tier

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous -ContinuousTier Continuous7Days
Start-Sleep -s (60 * 2)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous7Days" $updatedCosmosDBAccount.BackupPolicy.Tier
}

function Test-UpdateCosmosDBAccountBackupPolicyToContinuous7DaysCmdLets {
$rgName = "PSCosmosDBResourceGroup50"
$location = "Central US"
$cosmosDBAccountName = "ps-cosmosdb-1250"
$apiKind = "Sql"
$consistencyLevel = "Session"
$locations = @()
$locations += New-AzCosmosDBLocationObject -Location $location -FailoverPriority 0 -IsZoneRedundant 0

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

Try {
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $cosmosDBAccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel
}
Catch {
Assert-AreEqual $_.Exception.Message ("Resource with Name " + $cosmosDBAccountName + " already exists.")
}

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous -ContinuousTier Continuous7Days
Start-Sleep -s (60)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.TargetType
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.StartTime

Start-Sleep -s (60 * 5)

while (
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Completed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Failed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupType -ne "Continuous")
{
Start-Sleep -s 60

# keep polling the migration Status
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
}

Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous7Days" $updatedCosmosDBAccount.BackupPolicy.Tier

# If we don't provide the continuoustier, it should not trigger the update to continuous30days
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Start-Sleep -s (60 * 2)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual "Continuous7Days" $updatedCosmosDBAccount.BackupPolicy.Tier

# Provide continuoustier explicitly, it should triggered the update to continuous30days
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous -ContinuousTier Continuous30Days
Start-Sleep -s (60 * 2)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous30Days" $updatedCosmosDBAccount.BackupPolicy.Tier
}

function Test-ProvisionCosmosDBAccountBackupPolicyWithContinuous7DaysCmdLets {
#use an existing account with the following information
$rgName = "PSCosmosDBResourceGroup51"
$location = "West US"
$sourceCosmosDBAccountName = "ps-cosmosdb-1251"
$consistencyLevel = "Session"
$apiKind = "Sql"
$locations = @()
$locations += New-AzCosmosDBLocationObject -Location "West Us" -FailoverPriority 0 -IsZoneRedundant 0

$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $sourceCosmosDBAccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel -BackupPolicyType Continuous -ContinuousTier Continuous7Days

$sourceCosmosDBAccount = Get-AzCosmosDBAccount -Name $sourceCosmosDBAccountName -ResourceGroupName $rgName
Assert-AreEqual "Continuous" $sourceCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous7Days" $sourceCosmosDBAccount.BackupPolicy.Tier

$sourceRestorableAccount = Get-AzCosmosDBRestorableDatabaseAccount -Location $sourceCosmosDBAccount.Location -DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.Id
Assert-NotNull $sourceRestorableAccount.Location
Assert-NotNull $sourceRestorableAccount.DatabaseAccountInstanceId
Assert-NotNull $sourceRestorableAccount.RestorableLocations
Assert-AreEqual $sourceRestorableAccount.RestorableLocations.Count 1
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime
}
28 changes: 28 additions & 0 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/SqlOperationsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,20 @@ public void TestSqlOperationsCmdletsUsingInputObject()
TestRunner.RunTestScript("Test-SqlOperationsCmdletsUsingInputObject");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlInAccountRestoreOperationsCmdlets()
{
TestRunner.RunTestScript("Test-SqlInAccountRestoreOperationsCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlInAccountRestoreOperationsSharedResourcesCmdlets()
{
TestRunner.RunTestScript("Test-SqlInAccountRestoreOperationsSharedResourcesCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlThroughputCmdlets()
Expand Down Expand Up @@ -71,5 +85,19 @@ public void TestClientEncryptionKeyCmdletsUsingInputObject()
{
TestRunner.RunTestScript("Test-ClientEncryptionKeyCmdletsUsingInputObject");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlContainerMergeCmdlet()
{
TestRunner.RunTestScript("Test-SqlContainerMergeCmdlet");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlContainerAdaptiveRUCmdlets()
{
TestRunner.RunTestScript("Test-SqlContainerAdaptiveRUCmdlets");
}
}
}
Loading

0 comments on commit d1ac42c

Please sign in to comment.