Skip to content

Commit c84b700

Browse files
author
Hovsep
committed
Merge pull request Azure#2127 from llali/dev2
Fixed a bug in Azure SQL database import/export operation
2 parents 874c8c2 + c9af07f commit c84b700

File tree

6 files changed

+97
-29
lines changed

6 files changed

+97
-29
lines changed

src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/Common.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,5 +295,9 @@ function Get-SqlDatabaseImportExportTestEnvironmentParameters ($testSuffix)
295295
importBacpacUri = $importBacpacUri;
296296
location = "Australia East";
297297
version = "12.0";
298+
databaseEdition = "Standard";
299+
serviceObjectiveName = "S0";
300+
databaseMaxSizeBytes = "5000000";
301+
authType = "Sql";
298302
}
299303
}

src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ImportExportTests.ps1

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,36 @@ function Test-ImportDatabase
7676

7777
if($operationName -eq $export){
7878
# Export database.
79-
$exportResponse = New-AzureRmSqlDatabaseExport -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -StorageKeyType $params.storageKeyType -StorageKey $params.storageKey -StorageUri $params.exportBacpacUri -AdministratorLogin $params.userName -AdministratorLoginPassword $secureString -AuthenticationType Sql
79+
$exportResponse = New-AzureRmSqlDatabaseExport -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -StorageKeyType $params.storageKeyType -StorageKey $params.storageKey -StorageUri $params.exportBacpacUri -AdministratorLogin $params.userName -AdministratorLoginPassword $secureString -AuthenticationType $params.authType
8080
Assert-NotNull $exportResponse
81-
$operationStatusLink = $exportResponse.OperationStatusLink
81+
$operationStatusLink = $exportResponse.OperationStatusLink
82+
Assert-AreEqual $exportResponse.ResourceGroupName $params.rgname
83+
Assert-AreEqual $exportResponse.ServerName $params.serverName
84+
Assert-AreEqual $exportResponse.DatabaseName $params.databaseName
85+
Assert-AreEqual $exportResponse.StorageKeyType $params.storageKeyType
86+
Assert-Null $exportResponse.StorageKey
87+
Assert-AreEqual $exportResponse.StorageUri $params.exportBacpacUri
88+
Assert-AreEqual $exportResponse.AdministratorLogin $params.userName
89+
Assert-Null $exportResponse.AdministratorLoginPassword
90+
Assert-AreEqual $exportResponse.AuthenticationType $params.authType
8291
}
8392

8493
if($operationName -eq $import){
85-
$importResponse = New-AzureRmSqlDatabaseImport -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -StorageKeyType $params.storageKeyType -StorageKey $params.storageKey -StorageUri $params.importBacpacUri -AdministratorLogin $params.userName -AdministratorLoginPassword $secureString -Edition Standard -ServiceObjectiveName S0 -DatabaseMaxSizeBytes 5000000 -AuthenticationType Sql
94+
$importResponse = New-AzureRmSqlDatabaseImport -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -StorageKeyType $params.storageKeyType -StorageKey $params.storageKey -StorageUri $params.importBacpacUri -AdministratorLogin $params.userName -AdministratorLoginPassword $secureString -Edition $params.databaseEdition -ServiceObjectiveName $params.serviceObjectiveName -DatabaseMaxSizeBytes $params.databaseMaxSizeBytes -AuthenticationType $params.authType
8695
Assert-NotNull $importResponse
8796
$operationStatusLink = $importResponse.OperationStatusLink
97+
Assert-AreEqual $importResponse.ResourceGroupName $params.rgname
98+
Assert-AreEqual $importResponse.ServerName $params.serverName
99+
Assert-AreEqual $importResponse.DatabaseName $params.databaseName
100+
Assert-AreEqual $importResponse.StorageKeyType $params.storageKeyType
101+
Assert-Null $importResponse.StorageKey
102+
Assert-AreEqual $importResponse.StorageUri $params.importBacpacUri
103+
Assert-AreEqual $importResponse.AdministratorLogin $params.userName
104+
Assert-Null $importResponse.AdministratorLoginPassword
105+
Assert-AreEqual $importResponse.AuthenticationType $params.authType
106+
Assert-AreEqual $importResponse.Edition $params.databaseEdition
107+
Assert-AreEqual $importResponse.ServiceObjectiveName $params.serviceObjectiveName
108+
Assert-AreEqual $importResponse.DatabaseMaxSizeBytes $params.databaseMaxSizeBytes
88109
}
89110

90111
Assert-NotNull $operationStatusLink
@@ -98,8 +119,14 @@ function Test-ImportDatabase
98119
Write-Output "Getting Status"
99120
while($status -eq $statusInProgress){
100121
$statusResponse = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $operationStatusLink
101-
Write-Output "Import Export Status Message:" + $statusResponse.StatusMessage
122+
Write-Output "Import Export Status Message:" + $statusResponse.StatusMessage
123+
Assert-AreEqual $statusResponse.OperationStatusLink $operationStatusLink
102124
$status = $statusResponse.Status
125+
if($status -eq $statusInProgress){
126+
Assert-NotNull $statusResponse.LastModifiedTime
127+
Assert-NotNull $statusResponse.QueuedTime
128+
Assert-NotNull $statusResponse.StatusMessage
129+
}
103130
}
104131
Assert-AreEqual $status $statusSucceeded
105132
Write-Output "ImportExportStatus:" + $status

src/ResourceManager/Sql/Commands.Sql/ImportExport/Model/AzureSqlDatabaseImportExportBaseModel.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,5 +109,22 @@ public string OperationStatusLink
109109
/// Gets or sets the error message returned from the server.
110110
/// </summary>
111111
public string ErrorMessage { get; set; }
112+
113+
/// <summary>
114+
/// Copies the model to a new class
115+
/// </summary>
116+
internal virtual AzureSqlDatabaseImportExportBaseModel Copy()
117+
{
118+
return new AzureSqlDatabaseImportExportBaseModel()
119+
{
120+
ResourceGroupName = ResourceGroupName,
121+
ServerName = ServerName,
122+
AdministratorLogin = AdministratorLogin,
123+
AuthenticationType = AuthenticationType,
124+
DatabaseName = DatabaseName,
125+
StorageKeyType = StorageKeyType,
126+
StorageUri = StorageUri
127+
};
128+
}
112129
}
113130
}

src/ResourceManager/Sql/Commands.Sql/ImportExport/Model/AzureSqlDatabaseImportModel.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,26 @@ public string ServiceObjectiveName
4848
public int DatabaseMaxSizeBytes
4949
{
5050
get; set;
51-
}
51+
}
52+
53+
/// <summary>
54+
/// Copies the model to a new class
55+
/// </summary>
56+
internal override AzureSqlDatabaseImportExportBaseModel Copy()
57+
{
58+
return new AzureSqlDatabaseImportModel()
59+
{
60+
ResourceGroupName = ResourceGroupName,
61+
ServerName = ServerName,
62+
AdministratorLogin = AdministratorLogin,
63+
AuthenticationType = AuthenticationType,
64+
DatabaseName = DatabaseName,
65+
StorageKeyType = StorageKeyType,
66+
StorageUri = StorageUri,
67+
Edition = Edition,
68+
ServiceObjectiveName = ServiceObjectiveName,
69+
DatabaseMaxSizeBytes = DatabaseMaxSizeBytes
70+
};
71+
}
5272
}
5373
}

src/ResourceManager/Sql/Commands.Sql/ImportExport/Service/ImportExportDatabaseAdapter.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public ImportExportDatabaseAdapter(AzureContext context)
4848
/// Creates a new export request
4949
/// </summary>
5050
/// <param name="exportRequest">Export request parameters</param>
51-
/// <returns>Oprtation response including the OperationStatusLink to get the operation status</returns>
51+
/// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
5252
public AzureSqlDatabaseImportExportBaseModel Export(AzureSqlDatabaseImportExportBaseModel exportRequest)
5353
{
5454
ExportRequestParameters parameters = new ExportRequestParameters()
@@ -67,14 +67,14 @@ public AzureSqlDatabaseImportExportBaseModel Export(AzureSqlDatabaseImportExport
6767

6868
ImportExportResponse response = Communicator.Export(exportRequest.ResourceGroupName, exportRequest.ServerName,
6969
exportRequest.DatabaseName, parameters, Util.GenerateTracingId());
70-
return CreateImportExportResponse(response);
70+
return CreateImportExportResponse(response, exportRequest);
7171
}
7272

7373
/// <summary>
7474
/// Creates a new import request
7575
/// </summary>
7676
/// <param name="importRequest">Import request parameters</param>
77-
/// <returns>Oprtation response including the OperationStatusLink to get the operation status</returns>
77+
/// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
7878
public AzureSqlDatabaseImportExportBaseModel Import(AzureSqlDatabaseImportModel importRequest)
7979
{
8080
ImportRequestParameters parameters = new ImportRequestParameters()
@@ -97,14 +97,14 @@ public AzureSqlDatabaseImportExportBaseModel Import(AzureSqlDatabaseImportModel
9797

9898
ImportExportResponse response = Communicator.Import(importRequest.ResourceGroupName, importRequest.ServerName, parameters, Util.GenerateTracingId());
9999

100-
return CreateImportExportResponse(response);
100+
return CreateImportExportResponse(response, importRequest);
101101
}
102102

103103
/// <summary>
104104
/// Gets the status of an import/export operation
105105
/// </summary>
106106
/// <param name="operationStatusLink">The operation status link</param>
107-
/// <returns>Oprtation status response</returns>
107+
/// <returns>Operation status response</returns>
108108
public AzureSqlDatabaseImportExportStatusModel GetStatus(string operationStatusLink)
109109
{
110110
ImportExportOperationStatusResponse resposne = Communicator.GetStatus(operationStatusLink, Util.GenerateTracingId());
@@ -115,7 +115,8 @@ public AzureSqlDatabaseImportExportStatusModel GetStatus(string operationStatusL
115115
LastModifiedTime = resposne.LastModifiedTime,
116116
QueuedTime = resposne.QueuedTime,
117117
StatusMessage = resposne.StatusMessage,
118-
Status = resposne.Status.ToString()
118+
Status = resposne.Status.ToString(),
119+
OperationStatusLink = operationStatusLink
119120
};
120121

121122
return status;
@@ -126,14 +127,13 @@ public AzureSqlDatabaseImportExportStatusModel GetStatus(string operationStatusL
126127
/// </summary>
127128
/// <param name="response">Server Response</param>
128129
/// <returns>Response Model</returns>
129-
private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportResponse response)
130+
private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportResponse response, AzureSqlDatabaseImportExportBaseModel originalModel)
130131
{
131-
return new AzureSqlDatabaseImportExportBaseModel()
132-
{
133-
OperationStatusLink = response.OperationStatusLink,
134-
Status = response.Status.ToString(),
135-
ErrorMessage = response.Error == null ? "" : response.Error.Message
136-
};
132+
AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy();
133+
model.OperationStatusLink = response.OperationStatusLink;
134+
model.Status = response.Status.ToString();
135+
model.ErrorMessage = response.Error == null ? "" : response.Error.Message;
136+
return model;
137137
}
138138
}
139139
}

src/ResourceManager/Sql/Commands.Sql/Microsoft.Azure.Commands.Sql.dll-Help.xml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8390,13 +8390,13 @@ Tags :</maml:para>
83908390
<maml:para>This command creates an export request for a database.</maml:para>
83918391
<maml:para />
83928392
<maml:para />
8393-
<maml:para>ResourceGroupName :
8394-
ServerName :
8395-
DatabaseName :
8393+
<maml:para>ResourceGroupName : resourcegroup01
8394+
ServerName : server01
8395+
DatabaseName : database01
83968396
StorageKeyType : StorageAccessKey
83978397
StorageKey :
8398-
StorageUri :
8399-
AdministratorLogin :
8398+
StorageUri : http://account01.blob.core.windows.net/bacpacs/database01.bacpac
8399+
AdministratorLogin : user
84008400
AdministratorLoginPassword :
84018401
AuthenticationType : None
84028402
OperationStatusLink : https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource01/providers/Microsoft.Sql/servers/server01/databases/database01/importExportOperationResults/00000000-00
@@ -8757,13 +8757,13 @@ ErrorMessage :</maml:para>
87578757
<maml:para>This command creates an import request to import a bacpac to a new database.</maml:para>
87588758
<maml:para />
87598759
<maml:para />
8760-
<maml:para>ResourceGroupName :
8761-
ServerName :
8762-
DatabaseName :
8760+
<maml:para>ResourceGroupName : resourcegroup01
8761+
ServerName : server01
8762+
DatabaseName : database01
87638763
StorageKeyType : StorageAccessKey
8764-
StorageKey :
8765-
StorageUri :
8766-
AdministratorLogin :
8764+
StorageKey :
8765+
StorageUri : http://account01.blob.core.windows.net/bacpacs/database01.bacpac
8766+
AdministratorLogin : user
87678767
AdministratorLoginPassword :
87688768
AuthenticationType : None
87698769
OperationStatusLink : https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource01/providers/Microsoft.Sql/servers/server01/databases/database01/importExportOperationResults/00000000-00

0 commit comments

Comments
 (0)