public PSServiceBusMigrationConfigurationAttributes(MigrationConfigProperties mcResource) { if (mcResource != null) { Name = mcResource.Name; Id = mcResource.Id; Type = mcResource.Type; ProvisioningState = mcResource.ProvisioningState; TargetNamespace = mcResource.TargetNamespace; PostMigrationName = mcResource.PostMigrationName; PendingReplicationOperationsCount = mcResource.PendingReplicationOperationsCount; } }
/// <summary> /// Creates Migration configuration and starts migration of entities from /// Standard to Premium namespace /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// Name of the Resource group within the Azure subscription. /// </param> /// <param name='namespaceName'> /// The namespace name /// </param> /// <param name='parameters'> /// Parameters required to create Migration Configuration /// </param> public static MigrationConfigProperties CreateAndStartMigration(this IMigrationConfigsOperations operations, string resourceGroupName, string namespaceName, MigrationConfigProperties parameters) { return(operations.CreateAndStartMigrationAsync(resourceGroupName, namespaceName, parameters).GetAwaiter().GetResult()); }
public async Task StandardToPremiumMigration() { IgnoreTestInLiveMode(); //create namespace with premium _resourceGroup = await CreateResourceGroupAsync(); ServiceBusNamespaceCollection namespaceCollection = _resourceGroup.GetServiceBusNamespaces(); string namespaceName1 = await CreateValidNamespaceName(namespacePrefix); ServiceBusNamespaceData createParameters1 = new ServiceBusNamespaceData(DefaultLocation); createParameters1.Sku = new Models.Sku(SkuName.Premium) { Tier = SkuTier.Premium }; ServiceBusNamespace serviceBusNamespace1 = (await namespaceCollection.CreateOrUpdateAsync(true, namespaceName1, createParameters1)).Value; //create namespace with standard string namespaceName2 = await CreateValidNamespaceName(namespacePrefix); ServiceBusNamespaceData createParameters2 = new ServiceBusNamespaceData(AzureLocation.EastUS); createParameters2.Sku = new Models.Sku(SkuName.Standard) { Tier = SkuTier.Standard }; ServiceBusNamespace serviceBusNamespace2 = (await namespaceCollection.CreateOrUpdateAsync(true, namespaceName2, createParameters2)).Value; //add 10 queues to standard namespace for (int i = 0; i < 10; i++) { string queueName = Recording.GenerateAssetName("queue" + i); _ = await serviceBusNamespace2.GetServiceBusQueues().CreateOrUpdateAsync(true, queueName, new ServiceBusQueueData()); } //add 10 topics to standard namespace for (int i = 0; i < 10; i++) { string topicName = Recording.GenerateAssetName("topic" + i); _ = await serviceBusNamespace2.GetServiceBusTopics().CreateOrUpdateAsync(true, topicName, new ServiceBusTopicData()); } //create the migration config, it's name should always be $default string postMigrationName = Recording.GenerateAssetName("postmigration"); var migrationParameters = new MigrationConfigPropertiesData() { PostMigrationName = postMigrationName, TargetNamespace = serviceBusNamespace1.Id.ToString() }; _ = await serviceBusNamespace2.GetMigrationConfigProperties().CreateOrUpdateAsync(true, MigrationConfigurationName.Default, migrationParameters); //wait for migration state MigrationConfigProperties migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); int count = 0; while (count < 100 && (migrationConfig.Data.MigrationState != "Active" || (migrationConfig.Data.PendingReplicationOperationsCount.HasValue && migrationConfig.Data.PendingReplicationOperationsCount != 0))) { if (Mode != RecordedTestMode.Playback) { await Task.Delay(30000); } migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); count++; } Assert.NotNull(migrationConfig); List <MigrationConfigProperties> migrationConfigs = await serviceBusNamespace2.GetMigrationConfigProperties().GetAllAsync().ToEnumerableAsync(); Assert.AreEqual(1, migrationConfigs.Count); //complete migration await migrationConfig.CompleteMigrationAsync(); //validate migration List <ServiceBusTopic> topics = await serviceBusNamespace1.GetServiceBusTopics().GetAllAsync().ToEnumerableAsync(); Assert.AreEqual(10, topics.Count); List <ServiceBusQueue> queues = await serviceBusNamespace1.GetServiceBusQueues().GetAllAsync().ToEnumerableAsync(); Assert.AreEqual(10, queues.Count); //wait for migration config and premium namespace migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); count = 0; while (count < 100 && migrationConfig.Data.MigrationState != "Active") { if (Mode != RecordedTestMode.Playback) { await Task.Delay(30000); } migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); count++; } await GetSucceededNamespace(serviceBusNamespace1); }
/// <summary> /// Creates Migration configuration and starts migration of entities from /// Standard to Premium namespace /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// Name of the Resource group within the Azure subscription. /// </param> /// <param name='namespaceName'> /// The namespace name /// </param> /// <param name='parameters'> /// Parameters required to create Migration Configuration /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <MigrationConfigProperties> BeginCreateAndStartMigrationAsync(this IMigrationConfigsOperations operations, string resourceGroupName, string namespaceName, MigrationConfigProperties parameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginCreateAndStartMigrationWithHttpMessagesAsync(resourceGroupName, namespaceName, parameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }