Exemple #1
0
 /// <summary>
 /// Gets protection policy operation status using the operation tracking URL
 /// </summary>
 /// <param name="url">Operation tracking URL</param>
 /// <returns>Operation status response returned by the service</returns>
 public BackUpOperationStatusResponse GetProtectionPolicyOperationStatusByURL(string url)
 {
     return(BmsAdapter.Client.GetOperationStatusByURLAsync(
                url,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result);
 }
Exemple #2
0
        public BaseRecoveryServicesJobResponse RestoreDisk(AzureVmRecoveryPoint rp, string storageAccountId,
                                                           string storageAccountLocation, string storageAccountType)
        {
            string resourceGroupName = BmsAdapter.GetResourceGroupName();
            string resourceName      = BmsAdapter.GetResourceName();
            string vaultLocation     = BmsAdapter.GetResourceLocation();
            string containerName     = rp.ContainerName;
            string protectedItemName = rp.ItemName;
            string recoveryPointId   = rp.RecoveryPointId;

            //validtion block
            if (storageAccountLocation != vaultLocation)
            {
                throw new Exception(Resources.RestoreDiskIncorrectRegion);
            }
            string vmType = containerName.Split(';')[1].Equals("iaasvmcontainer", StringComparison.OrdinalIgnoreCase)
                ? "Classic" : "Compute";
            string strType = storageAccountType.Equals("Microsoft.ClassicStorage/StorageAccounts",
                                                       StringComparison.OrdinalIgnoreCase) ? "Classic" : "Compute";

            if (vmType != strType)
            {
                throw new Exception(String.Format(Resources.RestoreDiskStorageTypeError, vmType));
            }

            IaasVMRestoreRequest restoreRequest = new IaasVMRestoreRequest()
            {
                AffinityGroup = String.Empty,
                CloudServiceOrResourceGroup = String.Empty,
                CreateNewCloudService       = false,
                RecoveryPointId             = recoveryPointId,
                RecoveryType       = RecoveryType.RestoreDisks,
                Region             = vaultLocation,
                StorageAccountId   = storageAccountId,
                SubnetId           = string.Empty,
                VirtualMachineName = string.Empty,
                VirtualNetworkId   = string.Empty,
            };

            TriggerRestoreRequest triggerRestoreRequest = new TriggerRestoreRequest();

            triggerRestoreRequest.Item            = new RestoreRequestResource();
            triggerRestoreRequest.Item.Properties = new RestoreRequest();
            triggerRestoreRequest.Item.Properties = restoreRequest;

            var response = BmsAdapter.Client.Restores.TriggerRestoreAsync(
                resourceGroupName,
                resourceName,
                BmsAdapter.GetCustomRequestHeaders(),
                AzureFabricName,
                containerName,
                protectedItemName,
                recoveryPointId,
                triggerRestoreRequest,
                BmsAdapter.CmdletCancellationToken).Result;

            return(response);
        }
Exemple #3
0
 /// <summary>
 /// Gets a protection policy given the name
 /// </summary>
 /// <param name="policyName">Name of the policy</param>
 /// <returns>Policy response returned by the service</returns>
 public ProtectionPolicyResponse GetProtectionPolicy(string policyName)
 {
     return(BmsAdapter.Client.ProtectionPolicies.GetAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                policyName,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result);
 }
Exemple #4
0
 /// <summary>
 /// Lists protection policies according to the input query filter
 /// </summary>
 /// <param name="queryFilter">Query filter</param>
 /// <returns>List of protection policies</returns>
 public ProtectionPolicyListResponse ListProtectionPolicy(
     ProtectionPolicyQueryParameters queryFilter)
 {
     return(BmsAdapter.Client.ProtectionPolicies.ListAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                queryFilter,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result);
 }
Exemple #5
0
 /// <summary>
 /// Deletes protection policy from the vault specified by the name
 /// </summary>
 /// <param name="policyName">Name of the policy to be deleted</param>
 public AzureOperationResponse RemoveProtectionPolicy(
     string policyName)
 {
     return(BmsAdapter.Client.ProtectionPolicies.DeleteAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                policyName,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result);
 }
 public BaseRecoveryServicesJobResponse TriggerBackup(string containerName, string itemName)
 {
     return(BmsAdapter.Client.Backups.TriggerBackupAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                BmsAdapter.GetCustomRequestHeaders(),
                ServiceClientAdapter.AzureFabricName,
                containerName,
                itemName,
                BmsAdapter.CmdletCancellationToken).Result);
 }
        public BackUpOperationStatusResponse GetProtectedItemOperationStatusByURL(
            string operationResultLink)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            return(BmsAdapter.Client.GetOperationStatusByURLAsync(
                       operationResultLink,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #8
0
 /// <summary>
 /// Creates a new policy or updates an already existing policy
 /// </summary>
 /// <param name="policyName">Name of the policy</param>
 /// <param name="request">Policy create or update request</param>
 /// <returns>Policy created by this operation</returns>
 public ProtectionPolicyResponse CreateOrUpdateProtectionPolicy(
     string policyName,
     ProtectionPolicyRequest request)
 {
     return(BmsAdapter.Client.ProtectionPolicies.CreateOrUpdateAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                policyName,
                request,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result);
 }
Exemple #9
0
        /// <summary>
        /// Fetches protection containers in the vault according to the query params
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public IEnumerable <ProtectionContainerResource> ListContainers(
            ProtectionContainerListQueryParams queryParams)
        {
            var listResponse = BmsAdapter.Client.Containers.ListAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                queryParams,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result;

            return(listResponse.ItemList.ProtectionContainers);
        }
Exemple #10
0
        /// <summary>
        /// Cancels a job
        /// </summary>
        /// <param name="jobId">ID of the job to cancel</param>
        /// <returns>Cancelled job response from the service</returns>
        public BaseRecoveryServicesJobResponse CancelJob(string jobId)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            return(BmsAdapter.Client.Jobs.CancelJobAsync(
                       resourceGroupName,
                       resourceName,
                       jobId,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #11
0
        /// <summary>
        /// Gets the job operation status
        /// </summary>
        /// <param name="jobId">ID of the job</param>
        /// <param name="operationId">ID of the operation associated with the job</param>
        /// <returns>Job response returned by the service</returns>
        public JobResponse GetJobOperationStatus(string jobId, string operationId)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            return(BmsAdapter.Client.Jobs.GetOperationResultAsync(
                       resourceGroupName,
                       resourceName,
                       jobId,
                       operationId,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #12
0
        /// <summary>
        /// Triggers refresh of container catalog in service
        /// </summary>
        /// <returns></returns>
        public BaseRecoveryServicesJobResponse RefreshContainers()
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();
            var    response          = BmsAdapter.Client.Containers.RefreshAsync(
                resourceGroupName,
                resourceName,
                BmsAdapter.GetCustomRequestHeaders(),
                AzureFabricName,
                BmsAdapter.CmdletCancellationToken).Result;

            return(response);
        }
Exemple #13
0
        /// <summary>
        /// Unregister a container in service
        /// </summary>
        /// <returns></returns>
        public AzureOperationResponse UnregisterContainers(string containerName)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            var response = BmsAdapter.Client.Containers.UnregisterAsync(
                resourceGroupName,
                resourceName,
                containerName,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result;

            return(response);
        }
Exemple #14
0
        /// <summary>
        /// List protected items protected by the Recovery Services vault according to the query params
        /// and pagination params.
        /// </summary>
        /// <param name="queryFilter">Query params</param>
        /// <param name="paginationParams">Pagination params</param>
        /// <returns>List of protected items</returns>
        public ProtectedItemListResponse ListProtectedItem(
            ProtectedItemListQueryParam queryFilter,
            PaginationRequest paginationParams = null)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            return(BmsAdapter.Client.ProtectedItems.ListAsync(
                       resourceGroupName,
                       resourceName,
                       queryFilter,
                       paginationParams,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #15
0
        /// <summary>
        /// Fetches backup engine in the vault according to the query params
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public IEnumerable <BackupEngineResource> ListBackupEngines(BackupEngineListQueryParams queryParams)
        {
            PaginationRequest paginationParam = new PaginationRequest();

            paginationParam.Top = "200";
            var listResponse = BmsAdapter.Client.BackupEngines.ListAsync(
                BmsAdapter.GetResourceGroupName(),
                BmsAdapter.GetResourceName(),
                queryParams,
                paginationParam,
                BmsAdapter.GetCustomRequestHeaders(),
                BmsAdapter.CmdletCancellationToken).Result;

            return(listResponse.ItemList.BackupEngines);
        }
Exemple #16
0
        /// <summary>
        /// Deletes a protected item
        /// </summary>
        /// <param name="containerName">Name of the container which this item belongs to</param>
        /// <param name="protectedItemName">Name of the item</param>
        /// <returns>Job created in the service for this operation</returns>
        public BaseRecoveryServicesJobResponse DeleteProtectedItem(
            string containerName,
            string protectedItemName)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            return(BmsAdapter.Client.ProtectedItems.DeleteProtectedItemAsync(
                       resourceGroupName,
                       resourceName,
                       AzureFabricName,
                       containerName,
                       protectedItemName,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #17
0
        /// <summary>
        /// Gets a protected item
        /// </summary>
        /// <param name="containerName">Name of the container which this item belongs to</param>
        /// <param name="protectedItemName">Name of the item</param>
        /// <param name="queryFilter">Query filter</param>
        /// <returns>Protected item</returns>
        public ProtectedItemResponse GetProtectedItem(
            string containerName,
            string protectedItemName,
            GetProtectedItemQueryParam queryFilter)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            return(BmsAdapter.Client.ProtectedItems.GetAsync(
                       resourceGroupName,
                       resourceName,
                       AzureFabricName,
                       containerName,
                       protectedItemName,
                       queryFilter,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #18
0
        /// <summary>
        /// Lists jobs according to the parameters
        /// </summary>
        /// <param name="jobId">ID of the job</param>
        /// <param name="status">Status of the job</param>
        /// <param name="operation">Operation represented by the job</param>
        /// <param name="startTime">Time when the job started</param>
        /// <param name="endTime">Time when the job finished</param>
        /// <param name="backupManagementType">Backup management type of the item represented by the job</param>
        /// <param name="top">Top pagination param</param>
        /// <param name="skipToken">Skip token pagination param</param>
        /// <returns>Job list response from the service</returns>
        public JobListResponse GetJobs(
            string jobId,
            string status,
            string operation,
            DateTime startTime,
            DateTime endTime,
            string backupManagementType,
            int?top          = null,
            string skipToken = null)
        {
            string resourceName      = BmsAdapter.GetResourceName();
            string resourceGroupName = BmsAdapter.GetResourceGroupName();

            // build pagination request
            PaginationRequest pagReq = new PaginationRequest()
            {
                SkipToken = skipToken
            };

            // respecting top if provided
            if (top.HasValue)
            {
                pagReq.Top = top.ToString();
            }

            CommonJobQueryFilters commonFilters = GetQueryObject(
                backupManagementType,
                startTime,
                endTime,
                jobId,
                status,
                operation);

            return(BmsAdapter.Client.Jobs.ListAsync(
                       resourceGroupName,
                       resourceName,
                       commonFilters,
                       pagReq,
                       BmsAdapter.GetCustomRequestHeaders(),
                       BmsAdapter.CmdletCancellationToken).Result);
        }
Exemple #19
0
        /// <summary>
        /// Lists recovery points according to the input parameters
        /// </summary>
        /// <param name="containerName">Name of the container which the item belongs to</param>
        /// <param name="protectedItemName">Name of the item</param>
        /// <param name="queryFilter">Query filter</param>
        /// <returns>List of recovery points</returns>
        public RecoveryPointListResponse GetRecoveryPoints
        (
            string containerName,
            string protectedItemName,
            RecoveryPointQueryParameters queryFilter
        )
        {
            string resourceGroupName = BmsAdapter.GetResourceGroupName();
            string resourceName      = BmsAdapter.GetResourceName();

            var response = BmsAdapter.Client.RecoveryPoints.ListAsync(
                resourceGroupName,
                resourceName,
                BmsAdapter.GetCustomRequestHeaders(),
                AzureFabricName,
                containerName,
                protectedItemName,
                queryFilter,
                BmsAdapter.CmdletCancellationToken).Result;

            return(response);
        }
Exemple #20
0
        /// <summary>
        /// Triggers backup on the specified item
        /// </summary>
        /// <param name="containerName">Name of the container which this item belongs to</param>
        /// <param name="itemName">Name of the item</param>
        /// <returns>Job created by this operation</returns>
        public BaseRecoveryServicesJobResponse TriggerBackup(
            string containerName,
            string itemName,
            DateTime?expiryDateTimeUtc)
        {
            TriggerBackupRequest triggerBackupRequest = new TriggerBackupRequest();

            triggerBackupRequest.Item = new BackupRequestResource();
            IaaSVMBackupRequest iaasVmBackupRequest = new IaaSVMBackupRequest();

            iaasVmBackupRequest.RecoveryPointExpiryTimeInUTC = expiryDateTimeUtc;
            triggerBackupRequest.Item.Properties             = iaasVmBackupRequest;

            return(BmsAdapter.Client.Backups.TriggerBackupAsync(
                       BmsAdapter.GetResourceGroupName(),
                       BmsAdapter.GetResourceName(),
                       BmsAdapter.GetCustomRequestHeaders(),
                       ServiceClientAdapter.AzureFabricName,
                       containerName,
                       itemName,
                       triggerBackupRequest,
                       BmsAdapter.CmdletCancellationToken).Result);
        }