public async Task MongoDBCollectionCreateAndUpdate()
        {
            var collection = await CreateMongoDBCollection(null);

            Assert.AreEqual(_collectionName, collection.Data.Resource.Id);
            // Seems bug in swagger definition
            //Assert.AreEqual(TestThroughput1, collection.Data.Options.Throughput);

            bool ifExists = await MongoDBCollectionCollection.ExistsAsync(_collectionName);

            Assert.True(ifExists);

            // NOT WORKING API
            //ThroughputSettingsData throughtput = await collection.GetMongoDBCollectionThroughputAsync();
            MongoDBCollectionResource collection2 = await MongoDBCollectionCollection.GetAsync(_collectionName);

            Assert.AreEqual(_collectionName, collection2.Data.Resource.Id);
            //Assert.AreEqual(TestThroughput1, collection2.Data.Options.Throughput);

            VerifyMongoDBCollections(collection, collection2);

            var updateOptions = new MongoDBCollectionCreateOrUpdateContent(collection.Id, _collectionName, collection.Data.ResourceType, null,
                                                                           new Dictionary <string, string>(),// TODO: use original tags see defect: https://github.com/Azure/autorest.csharp/issues/1590
                                                                           AzureLocation.WestUS, collection.Data.Resource, new CreateUpdateOptions {
                Throughput = TestThroughput2
            });

            collection = await(await MongoDBCollectionCollection.CreateOrUpdateAsync(WaitUntil.Started, _collectionName, updateOptions)).WaitForCompletionAsync();
            Assert.AreEqual(_collectionName, collection.Data.Resource.Id);
            collection2 = await MongoDBCollectionCollection.GetAsync(_collectionName);

            VerifyMongoDBCollections(collection, collection2);
        }
 private void VerifyMongoDBCollections(MongoDBCollectionResource expectedValue, MongoDBCollectionResource actualValue)
 {
     Assert.AreEqual(expectedValue.Data.Id, actualValue.Data.Id);
     Assert.AreEqual(expectedValue.Data.Name, actualValue.Data.Name);
     Assert.AreEqual(expectedValue.Data.Resource.Id, actualValue.Data.Resource.Id);
     Assert.AreEqual(expectedValue.Data.Resource.Rid, actualValue.Data.Resource.Rid);
     Assert.AreEqual(expectedValue.Data.Resource.Ts, actualValue.Data.Resource.Ts);
     Assert.AreEqual(expectedValue.Data.Resource.Etag, actualValue.Data.Resource.Etag);
 }
 public async Task TearDown()
 {
     if (await MongoDBCollectionCollection.ExistsAsync(_collectionName))
     {
         var id = MongoDBCollectionCollection.Id;
         id = MongoDBCollectionResource.CreateResourceIdentifier(id.SubscriptionId, id.ResourceGroupName, id.Parent.Name, id.Name, _collectionName);
         MongoDBCollectionResource collection = this.ArmClient.GetMongoDBCollectionResource(id);
         await collection.DeleteAsync(WaitUntil.Completed);
     }
 }
Example #4
0
        public override void ExecuteCmdlet()
        {
            if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal))
            {
                ResourceIdentifier resourceIdentifier = new ResourceIdentifier(InputObject.Id);
                ResourceGroupName = resourceIdentifier.ResourceGroupName;
                DatabaseName      = resourceIdentifier.ResourceName;
                AccountName       = ResourceIdentifierExtensions.GetDatabaseAccountName(resourceIdentifier);
            }

            MongoDBCollectionResource mongoDBCollectionResource = new MongoDBCollectionResource
            {
                Id = Name
            };

            if (Shard != null)
            {
                mongoDBCollectionResource.ShardKey = new Dictionary <string, string> {
                    { Shard, "Hash" }
                };
            }

            if (Index != null)
            {
                List <MongoIndex> Indexes = new List <MongoIndex>();
                foreach (PSMongoIndex psMongoIndex in Index)
                {
                    Indexes.Add(PSMongoIndex.ConvertPSMongoIndexToMongoIndex(psMongoIndex));
                }

                mongoDBCollectionResource.Indexes = Indexes;
            }

            CreateUpdateOptions options = new CreateUpdateOptions();

            if (Throughput != null)
            {
                options.Throughput = Throughput.ToString();
            }

            MongoDBCollectionCreateUpdateParameters mongoDBCollectionCreateUpdateParameters = new MongoDBCollectionCreateUpdateParameters
            {
                Resource = mongoDBCollectionResource,
                Options  = options
            };

            if (ShouldProcess(Name, "Setting CosmosDB MongoDB Collection"))
            {
                MongoDBCollectionGetResults mongoDBCollectionGetResults = CosmosDBManagementClient.MongoDBResources.CreateUpdateMongoDBCollectionWithHttpMessagesAsync(ResourceGroupName, AccountName, DatabaseName, Name, mongoDBCollectionCreateUpdateParameters).GetAwaiter().GetResult().Body;
                WriteObject(new PSMongoDBCollectionGetResults(mongoDBCollectionGetResults));
            }

            return;
        }
Example #5
0
        public async Task MongoDBCollectionListTest()
        {
            List <MongoDBCollectionResource> mongoDBCollections =
                await CosmosDBManagementClient.MongoDBResources.ListMongoDBCollectionsAsync(resourceGroupName, databaseAccountName, databaseName).ToEnumerableAsync();

            Assert.IsNotNull(mongoDBCollections);
            Assert.AreEqual(1, mongoDBCollections.Count);
            MongoDBCollectionResource mongoDBCollection =
                await CosmosDBManagementClient.MongoDBResources.GetMongoDBCollectionAsync(resourceGroupName, databaseAccountName, databaseName, collectionName);

            Assert.IsNotNull(mongoDBCollection);
            VerifyMongoDBCollections(mongoDBCollection, mongoDBCollections[0]);
        }
Example #6
0
        public async Task MongoDBCollectionCreateAndUpdateTest()
        {
            MongoDBCollectionResource mongoDBCollection1 = await WaitForCompletionAsync(
                await CosmosDBManagementClient.MongoDBResources.StartCreateUpdateMongoDBCollectionAsync(
                    resourceGroupName,
                    databaseAccountName,
                    databaseName,
                    collectionName,
                    new MongoDBCollectionCreateUpdateParameters(
                        new MongoDBCollectionResource(collectionName), new CreateUpdateOptions(sampleThroughput1, new AutoscaleSettings()))));

            Assert.IsNotNull(mongoDBCollection1);
            Assert.AreEqual(collectionName, mongoDBCollection1.Resource.Id);
            ThroughputSettingsData throughputSettings1 =
                await CosmosDBManagementClient.MongoDBResources.GetMongoDBCollectionThroughputAsync(resourceGroupName, databaseAccountName, databaseName, collectionName);

            Assert.IsNotNull(throughputSettings1);
            Assert.AreEqual(sampleThroughput1, throughputSettings1.Resource.Throughput);
            Assert.AreEqual(mongoDBCollectionsThroughputType, throughputSettings1.Type);

            MongoDBCollectionResource mongoDBCollection =
                await CosmosDBManagementClient.MongoDBResources.GetMongoDBCollectionAsync(resourceGroupName, databaseAccountName, databaseName, collectionName);

            Assert.IsNotNull(mongoDBCollection);
            VerifyMongoDBCollections(mongoDBCollection1, mongoDBCollection);

            MongoDBCollectionResource mongoDBCollection2 = await WaitForCompletionAsync(
                await CosmosDBManagementClient.MongoDBResources.StartCreateUpdateMongoDBCollectionAsync(
                    resourceGroupName,
                    databaseAccountName,
                    databaseName,
                    collectionName,
                    new MongoDBCollectionCreateUpdateParameters(
                        new MongoDBCollectionResource(collectionName), new CreateUpdateOptions(sampleThroughput2, new AutoscaleSettings()))));

            Assert.IsNotNull(mongoDBCollection2);
            Assert.AreEqual(collectionName, mongoDBCollection2.Resource.Id);
            ThroughputSettingsData throughputSettings2 =
                await CosmosDBManagementClient.MongoDBResources.GetMongoDBCollectionThroughputAsync(resourceGroupName, databaseAccountName, databaseName, collectionName);

            Assert.IsNotNull(throughputSettings2);
            Assert.AreEqual(sampleThroughput2, throughputSettings2.Resource.Throughput);
            Assert.AreEqual(mongoDBCollectionsThroughputType, throughputSettings2.Type);

            mongoDBCollection =
                await CosmosDBManagementClient.MongoDBResources.GetMongoDBCollectionAsync(resourceGroupName, databaseAccountName, databaseName, collectionName);

            Assert.IsNotNull(mongoDBCollection);
            VerifyMongoDBCollections(mongoDBCollection2, mongoDBCollection);
        }
Example #7
0
        public override void ExecuteCmdlet()
        {
            if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal))
            {
                ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id);
                ResourceGroupName = resourceIdentifier.ResourceGroupName;
                DatabaseName      = resourceIdentifier.ResourceName;
                AccountName       = ResourceIdentifierExtensions.GetDatabaseAccountName(resourceIdentifier);
            }
            else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal))
            {
                ResourceIdentifier resourceIdentifier = new ResourceIdentifier(InputObject.Id);
                ResourceGroupName = resourceIdentifier.ResourceGroupName;
                Name         = resourceIdentifier.ResourceName;
                DatabaseName = ResourceIdentifierExtensions.GetMongoDBDatabaseName(resourceIdentifier);
                AccountName  = ResourceIdentifierExtensions.GetDatabaseAccountName(resourceIdentifier);
            }

            MongoDBCollectionGetResults readMongoDBCollectionGetResults = null;

            try
            {
                readMongoDBCollectionGetResults = CosmosDBManagementClient.MongoDBResources.GetMongoDBCollection(ResourceGroupName, AccountName, DatabaseName, Name);
            }
            catch (CloudException e)
            {
                if (e.Response.StatusCode == System.Net.HttpStatusCode.NotFound)
                {
                    throw new ResourceNotFoundException(message: string.Format(ExceptionMessage.NotFound, Name), innerException: e);
                }
            }

            MongoDBCollectionResource mongoDBCollectionResource = PopulateMongoDBResource(readMongoDBCollectionGetResults.Resource);

            if (Shard != null)
            {
                mongoDBCollectionResource.ShardKey = new Dictionary <string, string> {
                    { Shard, "Hash" }
                };
            }

            if (Index != null)
            {
                List <MongoIndex> Indexes = new List <MongoIndex>();
                foreach (PSMongoIndex psMongoIndex in Index)
                {
                    Indexes.Add(PSMongoIndex.ToSDKModel(psMongoIndex));
                }

                mongoDBCollectionResource.Indexes = Indexes;
            }

            if (AnalyticalStorageTtl != null)
            {
                mongoDBCollectionResource.AnalyticalStorageTtl = AnalyticalStorageTtl;
            }

            CreateUpdateOptions options = ThroughputHelper.PopulateCreateUpdateOptions(Throughput, AutoscaleMaxThroughput);

            MongoDBCollectionCreateUpdateParameters mongoDBCollectionCreateUpdateParameters = new MongoDBCollectionCreateUpdateParameters
            {
                Resource = mongoDBCollectionResource,
                Options  = options
            };

            if (ShouldProcess(Name, "Updating an existing CosmosDB MongoDB Collection"))
            {
                MongoDBCollectionGetResults mongoDBCollectionGetResults = CosmosDBManagementClient.MongoDBResources.CreateUpdateMongoDBCollectionWithHttpMessagesAsync(ResourceGroupName, AccountName, DatabaseName, Name, mongoDBCollectionCreateUpdateParameters).GetAwaiter().GetResult().Body;
                WriteObject(new PSMongoDBCollectionGetResults(mongoDBCollectionGetResults));
            }

            return;
        }