/// <summary>
 /// The Create Or Update Protection Policy Operation is used to create
 /// or modify a protection policy which is used in the context of a
 /// protected item.This is an asynchronous operation. To determine
 /// whether the backend service has finished processing the request,
 /// call the Get Policy Operation Result API.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. Resource group name of your recovery services vault.
 /// </param>
 /// <param name='resourceName'>
 /// Required. Name of your recovery services vault.
 /// </param>
 /// <param name='policyName'>
 /// Required. Name of the protection policy to be added/updated.
 /// </param>
 /// <param name='request'>
 /// Required. The protection policy creation request.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// Protection policy response.
 /// </returns>
 public static ProtectionPolicyResponse CreateOrUpdate(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, string policyName, ProtectionPolicyRequest request, CustomRequestHeaders customRequestHeaders)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IProtectionPolicyOperations)s).CreateOrUpdateAsync(resourceGroupName, resourceName, policyName, request, customRequestHeaders);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
 /// <summary>
 /// Lists all the protection policies in your Recovery Services Vault
 /// according to the query and pagination parameters supplied in the
 /// arguments.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. Resource group name of your recovery services vault.
 /// </param>
 /// <param name='resourceName'>
 /// Required. Name of your recovery services vault.
 /// </param>
 /// <param name='queryFilter'>
 /// Optional.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// List of protection policies as returned by the service with the
 /// list policies call.
 /// </returns>
 public static ProtectionPolicyListResponse List(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, ProtectionPolicyQueryParameters queryFilter, CustomRequestHeaders customRequestHeaders)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IProtectionPolicyOperations)s).ListAsync(resourceGroupName, resourceName, queryFilter, customRequestHeaders);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
 /// <summary>
 /// Fetches the result of any operation on the protection policy given
 /// the URL for tracking the operation as returned by APIs such as
 /// Create Or Update, Delete, Get etc.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='operationResultLink'>
 /// Required. Location value returned by operation.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// Protection policy response.
 /// </returns>
 public static ProtectionPolicyResponse GetProtectionPolicyResultByURL(this IProtectionPolicyOperations operations, string operationResultLink, CustomRequestHeaders customRequestHeaders)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IProtectionPolicyOperations)s).GetProtectionPolicyResultByURLAsync(operationResultLink, customRequestHeaders);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
 /// <summary>
 /// Lists all the protection policies in your Recovery Services Vault
 /// according to the query and pagination parameters supplied in the
 /// arguments.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. Resource group name of your recovery services vault.
 /// </param>
 /// <param name='resourceName'>
 /// Required. Name of your recovery services vault.
 /// </param>
 /// <param name='queryFilter'>
 /// Optional.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// List of protection policies as returned by the service with the
 /// list policies call.
 /// </returns>
 public static Task <ProtectionPolicyListResponse> ListAsync(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, ProtectionPolicyQueryParameters queryFilter, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.ListAsync(resourceGroupName, resourceName, queryFilter, customRequestHeaders, CancellationToken.None));
 }
 /// <summary>
 /// Fetches the result of any operation on the protection policy given
 /// the URL for tracking the operation as returned by APIs such as
 /// Create Or Update, Delete, Get etc.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='operationResultLink'>
 /// Required. Location value returned by operation.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// Protection policy response.
 /// </returns>
 public static Task <ProtectionPolicyResponse> GetProtectionPolicyResultByURLAsync(this IProtectionPolicyOperations operations, string operationResultLink, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.GetProtectionPolicyResultByURLAsync(operationResultLink, customRequestHeaders, CancellationToken.None));
 }
 /// <summary>
 /// Fetches the result of any operation on the protection policy given
 /// the ID of operation.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. Resource group name of your recovery services vault.
 /// </param>
 /// <param name='resourceName'>
 /// Required. Name of your recovery services vault.
 /// </param>
 /// <param name='policyName'>
 /// Required. Name of the protection policy to be added/updated.
 /// </param>
 /// <param name='operationId'>
 /// Required. ID of the operation whose result has to be fetched.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// Protection policy response.
 /// </returns>
 public static Task <ProtectionPolicyResponse> GetOperationResultAsync(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, string policyName, string operationId, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.GetOperationResultAsync(resourceGroupName, resourceName, policyName, operationId, customRequestHeaders, CancellationToken.None));
 }
 /// <summary>
 /// The Delete Protected Policy Operation is used to delete the
 /// specified policy from your Recovery Services Vault. This is an
 /// asynchronous operation. To determine whether the backend service
 /// has finished processing the request, call the Get Policy Operation
 /// Result API.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. Resource group name of your recovery services vault.
 /// </param>
 /// <param name='resourceName'>
 /// Required. Name of your recovery services vault.
 /// </param>
 /// <param name='policyName'>
 /// Required. Name of the protection policy to be added/updated.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// A standard service response including an HTTP status code and
 /// request ID.
 /// </returns>
 public static Task <AzureOperationResponse> DeleteAsync(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, string policyName, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.DeleteAsync(resourceGroupName, resourceName, policyName, customRequestHeaders, CancellationToken.None));
 }
 /// <summary>
 /// The Create Or Update Protection Policy Operation is used to create
 /// or modify a protection policy which is used in the context of a
 /// protected item.This is an asynchronous operation. To determine
 /// whether the backend service has finished processing the request,
 /// call the Get Policy Operation Result API.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. Resource group name of your recovery services vault.
 /// </param>
 /// <param name='resourceName'>
 /// Required. Name of your recovery services vault.
 /// </param>
 /// <param name='policyName'>
 /// Required. Name of the protection policy to be added/updated.
 /// </param>
 /// <param name='request'>
 /// Required. The protection policy creation request.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// Protection policy response.
 /// </returns>
 public static Task <ProtectionPolicyResponse> CreateOrUpdateAsync(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, string policyName, ProtectionPolicyRequest request, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.CreateOrUpdateAsync(resourceGroupName, resourceName, policyName, request, customRequestHeaders, CancellationToken.None));
 }