示例#1
0
 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());
 }
示例#3
0
        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);
     }
 }