/// <summary> /// Performs the call to export database using the server data service context channel. /// </summary> /// <param name="serverName">The name of the server to connect to.</param> /// <param name="userName">The username for authentication</param> /// <param name="password">The password for authentication</param> /// <param name="requestId">The request Id of the operation to query</param> /// <returns>The status of the import/export operation</returns> internal ArrayOfStatusInfo GetAzureSqlDatabaseImportExportStatusProcess( string serverName, string userName, string password, string requestId) { ArrayOfStatusInfo result = null; try { this.InvokeInOperationContext(() => { result = RetryCall(subscription => this.Channel.GetImportExportStatus( subscription, serverName, serverName + DataServiceConstants.AzureSqlDatabaseDnsSuffix, userName, password, requestId)); Operation operation = WaitForSqlDatabaseOperation(); }); } catch (CommunicationException ex) { this.WriteErrorDetails(ex); } return(result); }
/// <summary> /// Process the export request /// </summary> protected override void ProcessRecord() { this.WriteVerbose("Starting to process the record"); try { base.ProcessRecord(); string serverName = null; string userName = null; string password = null; string requestId = null; switch (this.ParameterSetName) { case ByRequestObjectParameterSet: serverName = this.Request.ServerName; userName = this.Request.SqlCredentials.UserName; password = this.Request.SqlCredentials.Password; requestId = this.Request.RequestGuid; break; case ByConnectionInfoParameterSet: serverName = this.ServerName; userName = this.Username; password = this.Password; requestId = this.RequestId; break; } ArrayOfStatusInfo status = this.GetAzureSqlDatabaseImportExportStatusProcess( serverName, userName, password, requestId); if (status == null) { this.WriteVerbose("The result is null"); } this.WriteVerbose("Status: " + status[0].Status); this.WriteObject(status); } catch (Exception ex) { this.WriteDebug("There was an error: " + ex.Message); this.WriteWindowsAzureError( new ErrorRecord(ex, string.Empty, ErrorCategory.CloseError, null)); this.WriteExceptionError(ex); } }
public void GetAzureSqlDatabaseImportExportStatusProcessTest() { string serverName = "TestServer"; string userName = "******"; string password = "******"; string requestId = Guid.NewGuid().ToString(); string blobUri = "test.dummy.blob/container/blob.bacpac"; string databaseName = "dummyDB"; DateTime lastModified = DateTime.UtcNow; DateTime queuedTime = new DateTime(1, 2, 3, 4, 5, 6); string requestType = "Export"; string requestStatus = "Complete"; string errorMessage = "errormessage"; MockCommandRuntime commandRuntime = new MockCommandRuntime(); SimpleSqlDatabaseManagement channel = new SimpleSqlDatabaseManagement(); channel.GetImportExporStatusThunk = ar => { Assert.AreEqual(serverName, (string)ar.Values["serverName"]); Assert.AreEqual(userName, (string)ar.Values["userName"]); Assert.AreEqual(password, (string)ar.Values["password"]); Assert.AreEqual(requestId, (string)ar.Values["requestId"]); StatusInfo status = new StatusInfo(); status.BlobUri = blobUri; status.DatabaseName = databaseName; status.ErrorMessage = errorMessage; status.LastModifiedTime = lastModified; status.QueuedTime = queuedTime; status.RequestId = requestId; status.RequestType = requestType; status.ServerName = serverName; status.Status = requestStatus; ArrayOfStatusInfo operationResult = new ArrayOfStatusInfo(); operationResult.Add(status); return(operationResult); }; GetAzureSqlDatabaseImportExportStatus getImportExportStatus = new GetAzureSqlDatabaseImportExportStatus(channel) { ShareChannel = true }; getImportExportStatus.CurrentSubscription = UnitTestHelper.CreateUnitTestSubscription(); getImportExportStatus.CommandRuntime = commandRuntime; var result = getImportExportStatus.GetAzureSqlDatabaseImportExportStatusProcess( serverName, userName, password, requestId); Assert.AreEqual(blobUri, result[0].BlobUri); Assert.AreEqual(databaseName, result[0].DatabaseName); Assert.AreEqual(errorMessage, result[0].ErrorMessage); Assert.AreEqual(lastModified, result[0].LastModifiedTime); Assert.AreEqual(queuedTime, result[0].QueuedTime); Assert.AreEqual(requestId, result[0].RequestId); Assert.AreEqual(requestType, result[0].RequestType); Assert.AreEqual(serverName, result[0].ServerName); Assert.AreEqual(requestStatus, result[0].Status); Assert.AreEqual(0, commandRuntime.ErrorStream.Count); }
public void GetAzureSqlDatabaseImportExportStatusProcessTest() { string serverName = "TestServer"; string userName = "******"; string password = "******"; string requestId = Guid.NewGuid().ToString(); string blobUri = "test.dummy.blob/container/blob.bacpac"; string databaseName = "dummyDB"; DateTime lastModified = DateTime.UtcNow; DateTime queuedTime = new DateTime(1, 2, 3, 4, 5, 6); string requestType = "Export"; string requestStatus = "Complete"; string errorMessage = "errormessage"; MockCommandRuntime commandRuntime = new MockCommandRuntime(); SimpleSqlDatabaseManagement channel = new SimpleSqlDatabaseManagement(); channel.GetImportExporStatusThunk = ar => { Assert.AreEqual(serverName, (string)ar.Values["serverName"]); Assert.AreEqual(userName, (string)ar.Values["userName"]); Assert.AreEqual(password, (string)ar.Values["password"]); Assert.AreEqual(requestId, (string)ar.Values["requestId"]); StatusInfo status = new StatusInfo(); status.BlobUri = blobUri; status.DatabaseName = databaseName; status.ErrorMessage = errorMessage; status.LastModifiedTime = lastModified; status.QueuedTime = queuedTime; status.RequestId = requestId; status.RequestType = requestType; status.ServerName = serverName; status.Status = requestStatus; ArrayOfStatusInfo operationResult = new ArrayOfStatusInfo(); operationResult.Add(status); return operationResult; }; GetAzureSqlDatabaseImportExportStatus getImportExportStatus = new GetAzureSqlDatabaseImportExportStatus(channel) { ShareChannel = true }; getImportExportStatus.CurrentSubscription = UnitTestHelper.CreateUnitTestSubscription(); getImportExportStatus.CommandRuntime = commandRuntime; var result = getImportExportStatus.GetAzureSqlDatabaseImportExportStatusProcess( serverName, userName, password, requestId); Assert.AreEqual(blobUri, result[0].BlobUri); Assert.AreEqual(databaseName, result[0].DatabaseName); Assert.AreEqual(errorMessage, result[0].ErrorMessage); Assert.AreEqual(lastModified, result[0].LastModifiedTime); Assert.AreEqual(queuedTime, result[0].QueuedTime); Assert.AreEqual(requestId, result[0].RequestId); Assert.AreEqual(requestType, result[0].RequestType); Assert.AreEqual(serverName, result[0].ServerName); Assert.AreEqual(requestStatus, result[0].Status); Assert.AreEqual(0, commandRuntime.ErrorStream.Count); }