/// <summary>
        /// Creates the response model given server response
        /// </summary>
        /// <param name="response">Server Response</param>
        /// <returns>Response Model</returns>
        private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportOperationResult response, AzureSqlDatabaseImportExportBaseModel originalModel, Uri statusLink)
        {
            AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy();

            model.OperationStatusLink = statusLink?.ToString();
            return(model);
        }
        /// <summary>
        /// Creates a new export request
        /// </summary>
        /// <param name="exportRequest">Export request parameters</param>
        /// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
        public AzureSqlDatabaseImportExportBaseModel Export(AzureSqlDatabaseImportExportBaseModel exportRequest)
        {
            ExportDatabaseDefinition parameters = new ExportDatabaseDefinition()
            {
                AdministratorLogin         = exportRequest.AdministratorLogin,
                AdministratorLoginPassword = AzureSqlServerAdapter.Decrypt(exportRequest.AdministratorLoginPassword),
                StorageKey     = exportRequest.StorageKey,
                StorageKeyType = exportRequest.StorageKeyType.ToString(),
                StorageUri     = exportRequest.StorageUri.ToString()
            };

            if (exportRequest.AuthenticationType != AuthenticationType.None)
            {
                parameters.AuthenticationType = exportRequest.AuthenticationType.ToString().ToLowerInvariant();
            }

            Uri azureAsyncOperation = null;
            ImportExportOperationResult response;

            response = Communicator.BeginExport(
                exportRequest.ResourceGroupName,
                exportRequest.ServerName,
                exportRequest.DatabaseName,
                parameters,
                out azureAsyncOperation);

            return(CreateImportExportResponse(response, exportRequest, azureAsyncOperation));
        }
        /// <summary>
        /// Creates the response model given server response
        /// </summary>
        /// <param name="response">Server Response</param>
        /// <returns>Response Model</returns>
        private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportOperationResult response, AzureSqlDatabaseImportExportBaseModel originalModel, Uri statusLink)
        {
            AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy();

            model.OperationStatusLink = statusLink?.ToString();
            ////model.Status = response.Status.ToString();
            ////model.ErrorMessage = response.Error == null ? "" : response.Error.Message;
            return(model);
        }
        /// <summary>
        /// Creates a new import request
        /// </summary>
        /// <param name="entity">Import Request Model</param>
        /// <returns>Import Request Response</returns>
        protected override AzureSqlDatabaseImportExportBaseModel PersistChanges(AzureSqlDatabaseImportExportBaseModel entity)
        {
            AzureSqlDatabaseImportModel importModel = entity as AzureSqlDatabaseImportModel;

            if (importModel == null)
            {
                throw new ArgumentNullException("importModel");
            }
            return(ModelAdapter.Import(importModel));
        }
        /// <summary>
        /// Creates the response model given server response
        /// </summary>
        /// <param name="response">Server Response</param>
        /// <returns>Response Model</returns>
        private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportOperationResult response, AzureSqlDatabaseImportExportBaseModel originalModel, Uri statusLink)
        {
            AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy();

            model.OperationStatusLink = statusLink?.ToString();

            // It looks like the ExportDatabase SDK call is currently broken (and returns "null" instead of the response object).
            // I need to check in a sev2 hotfix now. Once the SDK issue has been resolved, un-comment this and the asserts in
            // the test code
            // Also can probably remove the "LastLocationHeader" hack and just rely on the header in the returned results
            // model.Status = response.Status;
            return(model);
        }
        /// <summary>
        /// Updates the given model element with the cmdlet specific operation
        /// </summary>
        /// <param name="model">A model object</param>
        protected override AzureSqlDatabaseImportExportBaseModel ApplyUserInputToModel(AzureSqlDatabaseImportExportBaseModel model)
        {
            AzureSqlDatabaseImportExportBaseModel exportRequest = new AzureSqlDatabaseImportExportBaseModel()
            {
                ResourceGroupName          = ResourceGroupName,
                AdministratorLogin         = AdministratorLogin,
                AdministratorLoginPassword = AdministratorLoginPassword,
                AuthenticationType         = AuthenticationType,
                DatabaseName   = DatabaseName,
                ServerName     = ServerName,
                StorageKey     = StorageKey,
                StorageKeyType = StorageKeyType,
                StorageUri     = StorageUri
            };

            return(exportRequest);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Updates the given model element with the cmdlet specific operation
        /// </summary>
        /// <param name="model">A model object</param>
        protected override AzureSqlDatabaseImportExportBaseModel ApplyUserInputToModel(AzureSqlDatabaseImportExportBaseModel model)
        {
            NetworkIsolationSettings networkIsolationSettings = ValidateAndGetNetworkIsolationSettings();

            AzureSqlDatabaseImportExportBaseModel exportRequest = new AzureSqlDatabaseImportExportBaseModel()
            {
                ResourceGroupName          = ResourceGroupName,
                AdministratorLogin         = AdministratorLogin,
                AdministratorLoginPassword = AdministratorLoginPassword,
                AuthenticationType         = AuthenticationType,
                DatabaseName             = DatabaseName,
                ServerName               = ServerName,
                StorageKey               = StorageKey,
                StorageKeyType           = StorageKeyType,
                StorageUri               = StorageUri,
                NetworkIsolationSettings = networkIsolationSettings
            };

            return(exportRequest);
        }
        /// <summary>
        /// Creates a new export request
        /// </summary>
        /// <param name="exportRequest">Export request parameters</param>
        /// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
        public AzureSqlDatabaseImportExportBaseModel Export(AzureSqlDatabaseImportExportBaseModel exportRequest)
        {
            ExportRequestParameters parameters = new ExportRequestParameters()
            {
                AdministratorLogin         = exportRequest.AdministratorLogin,
                AdministratorLoginPassword = AzureSqlServerAdapter.Decrypt(exportRequest.AdministratorLoginPassword),
                StorageKey     = exportRequest.StorageKey,
                StorageKeyType = exportRequest.StorageKeyType.ToString(),
                StorageUri     = exportRequest.StorageUri
            };

            if (exportRequest.AuthenticationType != AuthenticationType.None)
            {
                parameters.AuthenticationType = exportRequest.AuthenticationType.ToString().ToLowerInvariant();
            }

            ImportExportResponse response = Communicator.Export(exportRequest.ResourceGroupName, exportRequest.ServerName,
                                                                exportRequest.DatabaseName, parameters, Util.GenerateTracingId());

            return(CreateImportExportResponse(response, exportRequest));
        }
        /// <summary>
        /// Creates a new export request
        /// </summary>
        /// <param name="exportRequest">Export request parameters</param>
        /// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
        public AzureSqlDatabaseImportExportBaseModel Export(AzureSqlDatabaseImportExportBaseModel exportRequest)
        {
            ExportDatabaseDefinition parameters = new ExportDatabaseDefinition()
            {
                AdministratorLogin         = exportRequest.AdministratorLogin,
                AdministratorLoginPassword = AzureSqlServerAdapter.Decrypt(exportRequest.AdministratorLoginPassword),
                StorageKey       = exportRequest.StorageKey,
                StorageKeyType   = exportRequest.StorageKeyType.ToString(),
                StorageUri       = exportRequest.StorageUri.ToString(),
                NetworkIsolation = null
            };

            if (!string.IsNullOrEmpty(exportRequest.NetworkIsolationSettings.SqlServerResourceId) ||
                !string.IsNullOrEmpty(exportRequest.NetworkIsolationSettings.StorageAccountResourceId))
            {
                parameters.NetworkIsolation = new Management.Sql.Models.NetworkIsolationSettings()
                {
                    SqlServerResourceId      = exportRequest.NetworkIsolationSettings.SqlServerResourceId,
                    StorageAccountResourceId = exportRequest.NetworkIsolationSettings.StorageAccountResourceId
                };
            }

            if (exportRequest.AuthenticationType != AuthenticationType.None)
            {
                parameters.AuthenticationType = exportRequest.AuthenticationType.ToString().ToLowerInvariant();
            }

            Uri azureAsyncOperation = null;
            ImportExportOperationResult response;

            response = Communicator.BeginExport(
                exportRequest.ResourceGroupName,
                exportRequest.ServerName,
                exportRequest.DatabaseName,
                parameters,
                out azureAsyncOperation);

            return(CreateImportExportResponse(response, exportRequest, azureAsyncOperation));
        }
 /// <summary>
 /// Creates a new export request
 /// </summary>
 /// <param name="entity">Import Request Model</param>
 /// <returns>Import Request Response</returns>
 protected override AzureSqlDatabaseImportExportBaseModel PersistChanges(AzureSqlDatabaseImportExportBaseModel entity)
 {
     return(ModelAdapter.Export(entity));
 }