Beispiel #1
0
        /// <summary>
        /// ProcessRecord of the command.
        /// </summary>
        public override void ExecuteSiteRecoveryCmdlet()
        {
            base.ExecuteSiteRecoveryCmdlet();

            string armName = string.Format(
                "StrgMap_{0}_{1}_{2}",
                PrimaryStorageClassification.Name,
                RecoveryStorageClassification.Name,
                Guid.NewGuid());

            var props = new StorageClassificationMappingInputProperties()
            {
                TargetStorageClassificationId = RecoveryStorageClassification.Id
            };

            var input = new StorageClassificationMappingInput()
            {
                Properties = props
            };

            LongRunningOperationResponse operationResponse =
                RecoveryServicesClient.MapStorageClassification(
                    PrimaryStorageClassification,
                    input,
                    armName);

            JobResponse jobResponse =
                RecoveryServicesClient.GetAzureSiteRecoveryJobDetails(
                    PSRecoveryServicesClient.GetJobIdFromReponseLocation(operationResponse.Location));

            base.WriteObject(new ASRJob(jobResponse.Job));
        }
        /// <summary>
        ///     ProcessRecord of the command.
        /// </summary>
        public override void ExecuteSiteRecoveryCmdlet()
        {
            base.ExecuteSiteRecoveryCmdlet();

            if (this.ShouldProcess(
                    this.Name,
                    VerbsCommon.New))
            {
                var mappingName = this.Name;

                var props = new StorageMappingInputProperties
                {
                    TargetStorageClassificationId = this.RecoveryStorageClassification.Id
                };

                var input = new StorageClassificationMappingInput {
                    Properties = props
                };

                var operationResponse = this.RecoveryServicesClient.MapStorageClassification(
                    this.PrimaryStorageClassification,
                    input,
                    mappingName);

                var jobResponse = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails(
                    PSRecoveryServicesClient
                    .GetJobIdFromReponseLocation(operationResponse.Location));

                this.WriteObject(new ASRJob(jobResponse));
            }
        }
Beispiel #3
0
        public void PairUnpairStorageClassifications()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var client = GetSiteRecoveryClient(CustomHttpHandler);

                FabricListResponse responseServers = client.Fabrics.List(RequestHeaders);

                foreach (Fabric fabric in responseServers.Fabrics)
                {
                    if (fabric.Properties.CustomDetails.InstanceType == "VMM")
                    {
                        var storageClassifications = client.StorageClassification.List(fabric.Name, RequestHeaders);

                        if (storageClassifications.StorageClassifications.Count > 1)
                        {
                            StorageClassificationMappingInputProperties mapProps = new StorageClassificationMappingInputProperties()
                            {
                                TargetStorageClassificationId = storageClassifications.StorageClassifications[1].Id
                            };

                            StorageClassificationMappingInput mapInput = new StorageClassificationMappingInput()
                            {
                                Properties = mapProps
                            };

                            string mappingName = "StorageClassificationMapping-" + (new Random()).Next();

                            var pairResp = client.StorageClassificationMapping.PairStorageClassification(
                                fabric.Name,
                                storageClassifications.StorageClassifications[0].Name,
                                mappingName,
                                mapInput,
                                RequestHeaders);

                            var mappings = client.StorageClassificationMapping.List(
                                fabric.Name,
                                storageClassifications.StorageClassifications[0].Name,
                                RequestHeaders);

                            var mapping = client.StorageClassificationMapping.Get(
                                fabric.Name,
                                storageClassifications.StorageClassifications[0].Name,
                                mappings.StorageClassificationMappings[0].Name,
                                RequestHeaders);

                            var unpairResp = client.StorageClassificationMapping.UnpairStorageClassification(
                                fabric.Name,
                                storageClassifications.StorageClassifications[0].Name,
                                mappingName,
                                RequestHeaders);
                        }
                    }
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Starts job for mapping storage classification.
        /// </summary>
        /// <param name="primaryClassification">Primary classification.</param>
        /// <param name="input">Mapping input.</param>
        /// <param name="armName">Optional. ARM name of the mapping.</param>
        /// <returns>Operation response.</returns>
        public LongRunningOperationResponse MapStorageClassification(
            ASRStorageClassification primaryClassification,
            StorageClassificationMappingInput input,
            string armName)
        {
            string[] tokens = primaryClassification.Id.UnFormatArmId(
                ARMResourceIdPaths.StorageClassificationResourceIdPath);

            return(this.GetSiteRecoveryClient().StorageClassificationMapping
                   .BeginPairStorageClassification(
                       tokens[0],
                       tokens[1],
                       armName,
                       input,
                       this.GetRequestHeaders()));
        }
Beispiel #5
0
        /// <summary>
        ///     Starts job for mapping storage classification.
        /// </summary>
        /// <param name="primaryClassification">Primary classification.</param>
        /// <param name="input">Mapping input.</param>
        /// <param name="armName">Optional. ARM name of the mapping.</param>
        /// <returns>Operation response.</returns>
        public PSSiteRecoveryLongRunningOperation MapStorageClassification(
            ASRStorageClassification primaryClassification,
            StorageClassificationMappingInput input,
            string armName)
        {
            var tokens =
                primaryClassification.Id.UnFormatArmId(
                    ARMResourceIdPaths.StorageClassificationResourceIdPath);

            var op = this.GetSiteRecoveryClient()
                     .ReplicationStorageClassificationMappings.BeginCreateWithHttpMessagesAsync(
                tokens[0],
                tokens[1],
                armName,
                input,
                this.GetRequestHeaders(true))
                     .GetAwaiter()
                     .GetResult();
            var result = SiteRecoveryAutoMapperProfile.Mapper.Map <PSSiteRecoveryLongRunningOperation>(op);

            return(result);
        }
Beispiel #6
0
        public static StorageClassificationMappingOperationResponse PairStorageClassification(
            this SiteRecoveryManagementClient client,
            Fabric primaryFabric,
            StorageClassification primaryClassification,
            StorageClassification recoveryClassification,
            string armResourceName)
        {
            StorageClassificationMappingInputProperties props = new StorageClassificationMappingInputProperties()
            {
                TargetStorageClassificationId = recoveryClassification.Id
            };

            StorageClassificationMappingInput input = new StorageClassificationMappingInput()
            {
                Properties = props
            };

            return(client.StorageClassificationMapping.PairStorageClassification(
                       primaryFabric.Name,
                       primaryClassification.Name,
                       armResourceName,
                       input,
                       GetRequestHeaders()) as StorageClassificationMappingOperationResponse);
        }
Beispiel #7
0
 /// <summary>
 /// Pairs storage to a given storage.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.SiteRecovery.IStorageClassificationMappingOperations.
 /// </param>
 /// <param name='fabricName'>
 /// Required. Fabric name.
 /// </param>
 /// <param name='storageClassificationName'>
 /// Required. Storage name.
 /// </param>
 /// <param name='storageClassificationMappingName'>
 /// Required. Storage mapping name.
 /// </param>
 /// <param name='input'>
 /// Required. Create mapping input.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// A standard service response for long running operations.
 /// </returns>
 public static Task <LongRunningOperationResponse> BeginPairStorageClassificationAsync(this IStorageClassificationMappingOperations operations, string fabricName, string storageClassificationName, string storageClassificationMappingName, StorageClassificationMappingInput input, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.BeginPairStorageClassificationAsync(fabricName, storageClassificationName, storageClassificationMappingName, input, customRequestHeaders, CancellationToken.None));
 }
Beispiel #8
0
 /// <summary>
 /// Pairs storage to a given storage.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.SiteRecovery.IStorageClassificationMappingOperations.
 /// </param>
 /// <param name='fabricName'>
 /// Required. Fabric name.
 /// </param>
 /// <param name='storageClassificationName'>
 /// Required. Storage name.
 /// </param>
 /// <param name='storageClassificationMappingName'>
 /// Required. Storage mapping name.
 /// </param>
 /// <param name='input'>
 /// Required. Create mapping input.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// A standard service response for long running operations.
 /// </returns>
 public static LongRunningOperationResponse BeginPairStorageClassification(this IStorageClassificationMappingOperations operations, string fabricName, string storageClassificationName, string storageClassificationMappingName, StorageClassificationMappingInput input, CustomRequestHeaders customRequestHeaders)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IStorageClassificationMappingOperations)s).BeginPairStorageClassificationAsync(fabricName, storageClassificationName, storageClassificationMappingName, input, customRequestHeaders);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
 /// <summary>
 /// Create storage classification mapping.
 /// </summary>
 /// <remarks>
 /// The operation to create a storage classification mapping.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='fabricName'>
 /// Fabric name.
 /// </param>
 /// <param name='storageClassificationName'>
 /// Storage classification name.
 /// </param>
 /// <param name='storageClassificationMappingName'>
 /// Storage classification mapping name.
 /// </param>
 /// <param name='pairingInput'>
 /// Pairing input.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <StorageClassificationMapping> BeginCreateAsync(this IReplicationStorageClassificationMappingsOperations operations, string fabricName, string storageClassificationName, string storageClassificationMappingName, StorageClassificationMappingInput pairingInput, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.BeginCreateWithHttpMessagesAsync(fabricName, storageClassificationName, storageClassificationMappingName, pairingInput, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Create storage classification mapping.
 /// </summary>
 /// <remarks>
 /// The operation to create a storage classification mapping.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='fabricName'>
 /// Fabric name.
 /// </param>
 /// <param name='storageClassificationName'>
 /// Storage classification name.
 /// </param>
 /// <param name='storageClassificationMappingName'>
 /// Storage classification mapping name.
 /// </param>
 /// <param name='pairingInput'>
 /// Pairing input.
 /// </param>
 public static StorageClassificationMapping BeginCreate(this IReplicationStorageClassificationMappingsOperations operations, string fabricName, string storageClassificationName, string storageClassificationMappingName, StorageClassificationMappingInput pairingInput)
 {
     return(operations.BeginCreateAsync(fabricName, storageClassificationName, storageClassificationMappingName, pairingInput).GetAwaiter().GetResult());
 }