diff --git a/src/CosmosDB/CosmosDB/Cassandra/GetAzCosmosDBCassandraTableThroughput.cs b/src/CosmosDB/CosmosDB/Cassandra/GetAzCosmosDBCassandraTableThroughput.cs index 0fb2434578f3..422e98e02a0a 100644 --- a/src/CosmosDB/CosmosDB/Cassandra/GetAzCosmosDBCassandraTableThroughput.cs +++ b/src/CosmosDB/CosmosDB/Cassandra/GetAzCosmosDBCassandraTableThroughput.cs @@ -58,7 +58,7 @@ public override void ExecuteCmdlet() } ThroughputSettingsGetResults throughputSettingsGetResults = CosmosDBManagementClient.CassandraResources.GetCassandraTableThroughputWithHttpMessagesAsync(ResourceGroupName, AccountName, KeyspaceName, Name).GetAwaiter().GetResult().Body; - WriteObject(throughputSettingsGetResults); + WriteObject(new PSThroughputSettingsGetResults(throughputSettingsGetResults)); return; } diff --git a/src/CosmosDB/CosmosDB/ChangeLog.md b/src/CosmosDB/CosmosDB/ChangeLog.md index 856c665ce1f2..22898a1c4b0f 100644 --- a/src/CosmosDB/CosmosDB/ChangeLog.md +++ b/src/CosmosDB/CosmosDB/ChangeLog.md @@ -19,6 +19,12 @@ --> ## Upcoming Release +* Allowing Account Creation for API Types: Gremlin, Cassandra and Table. +* Bug Fixes + +## Version 0.1.2 +* Updated the Azure.Management.CosmosDB Sdk Version to 1.0.2 + -Fix bugs related to https://github.com/Azure/azure-sdk-for-net/issues/10639 ## Version 0.1.1 * Added cmdlets for Gremlin, MongoDB, Cassandra and Table APIs. diff --git a/src/CosmosDB/CosmosDB/CosmosDB.csproj b/src/CosmosDB/CosmosDB/CosmosDB.csproj index f25ac6819763..bfeb992d5923 100644 --- a/src/CosmosDB/CosmosDB/CosmosDB.csproj +++ b/src/CosmosDB/CosmosDB/CosmosDB.csproj @@ -6,7 +6,7 @@ - + \ No newline at end of file diff --git a/src/CosmosDB/CosmosDB/CosmosDBAccount/NewAzCosmosDBAccount.cs b/src/CosmosDB/CosmosDB/CosmosDBAccount/NewAzCosmosDBAccount.cs index f529910f25be..3c8cf6ad5100 100644 --- a/src/CosmosDB/CosmosDB/CosmosDBAccount/NewAzCosmosDBAccount.cs +++ b/src/CosmosDB/CosmosDB/CosmosDBAccount/NewAzCosmosDBAccount.cs @@ -81,7 +81,7 @@ public class NewAzCosmosDBAccount : AzureCosmosDBCmdletBase public PSVirtualNetworkRule[] VirtualNetworkRuleObject { get; set; } [Parameter(Mandatory = false, HelpMessage = Constants.ApiKindHelpMessage)] - [PSArgumentCompleter("GlobalDocumentDB", "MongoDB", "Others")] + [PSArgumentCompleter("GlobalDocumentDB", "MongoDB", "Gremlin", "Cassandra", "Table")] public string ApiKind { get; set; } [Parameter(Mandatory = false, HelpMessage = Constants.AsJobHelpMessage)] @@ -121,18 +121,6 @@ public override void ExecuteCmdlet() } } - if(!string.IsNullOrEmpty(ApiKind)) - { - if (!ApiKind.Equals("GlobalDocumentDB", StringComparison.OrdinalIgnoreCase) && !ApiKind.Equals("MongoDB", StringComparison.OrdinalIgnoreCase)) - { - WriteWarning("Gremlin, Cassandra and Table account creation not supported" + - "in Azure Powershell"); - return; - } - } - else - ApiKind = "GlobalDocumentDB"; - string writeLocation = null; Collection LocationCollection = new Collection(); @@ -185,15 +173,15 @@ public override void ExecuteCmdlet() } Collection virtualNetworkRule = new Collection(); - if ((VirtualNetworkRule != null && VirtualNetworkRule.Length > 0) || - (VirtualNetworkRuleObject != null && VirtualNetworkRuleObject.Length > 0)) + if (VirtualNetworkRule != null && VirtualNetworkRule.Length > 0) { - foreach (string id in VirtualNetworkRule) { virtualNetworkRule.Add(new VirtualNetworkRule(id: id)); } - + } + if(VirtualNetworkRuleObject != null && VirtualNetworkRuleObject.Length > 0) + { foreach (PSVirtualNetworkRule psVirtualNetworkRule in VirtualNetworkRuleObject) { virtualNetworkRule.Add(PSVirtualNetworkRule.ConvertPSVirtualNetworkRuleToVirtualNetworkRule(psVirtualNetworkRule)); @@ -214,12 +202,38 @@ public override void ExecuteCmdlet() } } - DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters(locations:LocationCollection, location: writeLocation, name:Name, kind:ApiKind, consistencyPolicy:consistencyPolicy, tags:tags, ipRangeFilter:IpRangeFilterAsString); + DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters(locations:LocationCollection, location: writeLocation, name:Name, consistencyPolicy:consistencyPolicy, tags:tags, ipRangeFilter:IpRangeFilterAsString); databaseAccountCreateUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; databaseAccountCreateUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; databaseAccountCreateUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; databaseAccountCreateUpdateParameters.VirtualNetworkRules = virtualNetworkRule; + if (!string.IsNullOrEmpty(ApiKind)) + { + if (!ApiKind.Equals("GlobalDocumentDB", StringComparison.OrdinalIgnoreCase) && !ApiKind.Equals("MongoDB", StringComparison.OrdinalIgnoreCase)) + { + switch (ApiKind) + { + case "Cassandra": + databaseAccountCreateUpdateParameters.Capabilities = new List { new Capability { Name = "EnableCassandra" } }; + break; + case "Gremlin": + databaseAccountCreateUpdateParameters.Capabilities = new List { new Capability { Name = "EnableGremlin" } }; + break; + case "Table": + databaseAccountCreateUpdateParameters.Capabilities = new List { new Capability { Name = "EnableTable" } }; + break; + } + + ApiKind = null; + } + } + else + { + ApiKind = "GlobalDocumentDB"; + } + databaseAccountCreateUpdateParameters.Kind = ApiKind; + if (ShouldProcess(Name, "Creating Database Account")) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(ResourceGroupName, Name, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; diff --git a/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccount.cs b/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccount.cs index de65e8746947..8d0313c4d320 100644 --- a/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccount.cs +++ b/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccount.cs @@ -152,21 +152,23 @@ public override void ExecuteCmdlet() databaseAccountUpdateParameters.Tags = tags; } - if ( ( VirtualNetworkRule != null && VirtualNetworkRule.Length > 0) || - (VirtualNetworkRuleObject != null && VirtualNetworkRuleObject.Length > 0)) + if (VirtualNetworkRule != null || VirtualNetworkRuleObject != null) { Collection virtualNetworkRule = new Collection(); - - foreach (string id in VirtualNetworkRule) + if (VirtualNetworkRule != null && VirtualNetworkRule.Length > 0) { - virtualNetworkRule.Add(new VirtualNetworkRule(id:id)); + foreach (string id in VirtualNetworkRule) + { + virtualNetworkRule.Add(new VirtualNetworkRule(id: id)); + } } - - foreach (PSVirtualNetworkRule psVirtualNetworkRule in VirtualNetworkRuleObject) + if (VirtualNetworkRuleObject != null && VirtualNetworkRuleObject.Length > 0) { - virtualNetworkRule.Add(PSVirtualNetworkRule.ConvertPSVirtualNetworkRuleToVirtualNetworkRule(psVirtualNetworkRule)); + foreach (PSVirtualNetworkRule psVirtualNetworkRule in VirtualNetworkRuleObject) + { + virtualNetworkRule.Add(PSVirtualNetworkRule.ConvertPSVirtualNetworkRuleToVirtualNetworkRule(psVirtualNetworkRule)); + } } - databaseAccountUpdateParameters.VirtualNetworkRules = virtualNetworkRule; } diff --git a/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccountRegion.cs b/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccountRegion.cs index 8e24610e15e3..756a232ed407 100644 --- a/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccountRegion.cs +++ b/src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccountRegion.cs @@ -46,7 +46,7 @@ public class UpdateAzCosmosDBAccountRegion : AzureCosmosDBCmdletBase [ValidateNotNullOrEmpty] public string ResourceId { get; set; } - [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ObjectParameterSet, HelpMessage = Constants.ResourceIdHelpMessage)] + [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ObjectParameterSet, HelpMessage = Constants.AccountObjectHelpMessage)] [ValidateNotNull] public PSDatabaseAccount InputObject { get; set; } @@ -72,18 +72,21 @@ public override void ExecuteCmdlet() } List locations = new List(); - - if( (Location != null && Location.Length > 0) || - (LocationObject != null && LocationObject.Length > 0)) + if (Location != null || LocationObject != null) { - foreach (string location in Location) + if (Location != null && Location.Length > 0) { - locations.Add(new Location(location)); + foreach (string location in Location) + { + locations.Add(new Location(location)); + } } - - foreach (PSLocation psLocation in LocationObject) + if (LocationObject != null && LocationObject.Length > 0) { - locations.Add(PSLocation.ConvertPSLocationToLocation(psLocation)); + foreach (PSLocation psLocation in LocationObject) + { + locations.Add(PSLocation.ConvertPSLocationToLocation(psLocation)); + } } } else diff --git a/src/CosmosDB/CosmosDB/Helpers/Constants.cs b/src/CosmosDB/CosmosDB/Helpers/Constants.cs index c8a6f0914585..b86f153fa2b3 100644 --- a/src/CosmosDB/CosmosDB/Helpers/Constants.cs +++ b/src/CosmosDB/CosmosDB/Helpers/Constants.cs @@ -26,7 +26,7 @@ internal static class Constants public const string AccountKeyKindHelpMessage = "The access key to regenerate. Accepted values: primary, primaryReadonly, secondary, secondaryReadonly "; public const string AccountFailoverPolicyHelpMessage = "Array of strings having region names, ordered by failover priority. E.g eastus, westus"; public const string AccountObjectHelpMessage = "CosmosDB Account object"; - public const string AccountUpdateLocationHelpMessage = "Name of the location to be added."; + public const string AccountUpdateLocationHelpMessage = "The georeplication location to be enabled for the Cosmos DB account, can be a single string or an array of strings."; public const string DefaultConsistencyLevelHelpMessage = "Default consistency level of the Cosmos DB database account. Accepted values: BoundedStaleness, ConsistentPrefix, Eventual, Session, Strong. Default is Session."; public const string EnableAutomaticFailoverHelpMessage = "Enables automatic failover of the write region in the rare event that the region is unavailable due to an outage. Automatic failover will result" + " in a new write region for the account and is chosen based on the failover priorities configured for the account. Accepted values: false, true "; diff --git a/src/CosmosDB/CosmosDB/Models/PSCassandraSchema.cs b/src/CosmosDB/CosmosDB/Models/PSCassandraSchema.cs index b26b6e02dd0f..d97b950c5ee2 100644 --- a/src/CosmosDB/CosmosDB/Models/PSCassandraSchema.cs +++ b/src/CosmosDB/CosmosDB/Models/PSCassandraSchema.cs @@ -25,6 +25,23 @@ public PSCassandraSchema() public PSCassandraSchema(CassandraSchema cassandraSchema) { + Columns = new List(); + foreach (Column column in cassandraSchema.Columns) + { + Columns.Add(new PSColumn(column)); + } + + PartitionKeys = new List(); + foreach (CassandraPartitionKey cassandraPartitionKey in cassandraSchema.PartitionKeys) + { + PartitionKeys.Add(new PSCassandraPartitionKey(cassandraPartitionKey)); + } + + ClusterKeys = new List(); + foreach (ClusterKey clusterKey in cassandraSchema.ClusterKeys) + { + ClusterKeys.Add(new PSClusterKey(clusterKey)); + } } // diff --git a/src/CosmosDB/CosmosDB/Models/PSMongoDBCollectionGetPropertiesResource.cs b/src/CosmosDB/CosmosDB/Models/PSMongoDBCollectionGetPropertiesResource.cs index 7efc4f992e3a..d85f674bb659 100644 --- a/src/CosmosDB/CosmosDB/Models/PSMongoDBCollectionGetPropertiesResource.cs +++ b/src/CosmosDB/CosmosDB/Models/PSMongoDBCollectionGetPropertiesResource.cs @@ -21,6 +21,11 @@ public class PSMongoDBCollectionGetPropertiesResource { public PSMongoDBCollectionGetPropertiesResource(MongoDBCollectionGetPropertiesResource mongoDBCollectionGetPropertiesResource) { + Id = mongoDBCollectionGetPropertiesResource.Id; + if (mongoDBCollectionGetPropertiesResource.ShardKey != null) + { + ShardKey = new Dictionary(mongoDBCollectionGetPropertiesResource.ShardKey); + } List psMongoIndex = new List(); if (mongoDBCollectionGetPropertiesResource.Indexes != null) { diff --git a/src/CosmosDB/CosmosDB/help/Get-AzCosmosDBAccount.md b/src/CosmosDB/CosmosDB/help/Get-AzCosmosDBAccount.md index 72168d8f57ca..11ee832c8966 100644 --- a/src/CosmosDB/CosmosDB/help/Get-AzCosmosDBAccount.md +++ b/src/CosmosDB/CosmosDB/help/Get-AzCosmosDBAccount.md @@ -39,7 +39,7 @@ FailoverPolicies : {databaseAccountName-region1} ReadLocations : {databaseAccountName-region1} WriteLocations : {databaseAccountName-region1} Capabilities : {} -ConsistencyPolicy : Microsoft.Azure.Management.CosmosDB.Fluent.Models.ConsistencyPolicy +ConsistencyPolicy : Microsoft.Azure.Management.CosmosDB.Models.ConsistencyPolicy EnableAutomaticFailover : False IsVirtualNetworkFilterEnabled : False IpRangeFilter : diff --git a/src/CosmosDB/CosmosDB/help/New-AzCosmosDBAccount.md b/src/CosmosDB/CosmosDB/help/New-AzCosmosDBAccount.md index 60b20e7fb6a6..858ff6c0dcda 100644 --- a/src/CosmosDB/CosmosDB/help/New-AzCosmosDBAccount.md +++ b/src/CosmosDB/CosmosDB/help/New-AzCosmosDBAccount.md @@ -1,7 +1,7 @@ --- external help file: Microsoft.Azure.PowerShell.Cmdlets.CosmosDB.dll-Help.xml Module Name: Az.CosmosDB -online version: https://docs.microsoft.com/en-us/powershell/module/az.cosmosdb/new-azcosmosdbaccountkey +online version: https://docs.microsoft.com/en-us/powershell/module/az.cosmosdb/new-azcosmosdbaccount schema: 2.0.0 --- @@ -37,7 +37,7 @@ DatabaseAccountOfferType : Standard IpRangeFilter : IsVirtualNetworkFilterEnabled : False EnableAutomaticFailover : False -ConsistencyPolicy : Microsoft.Azure.Management.CosmosDB.Fluent.Models.ConsistencyPolicy +ConsistencyPolicy : Microsoft.Azure.Management.CosmosDB.Models.ConsistencyPolicy Capabilities : {} WriteLocations : {databaseAccountName-eastus} ReadLocations : {databaseAccountName-eastus} @@ -57,7 +57,7 @@ A new CosmosDB Account with name databaseAccountName is created in the ResourceG ### -ApiKind The type of Cosmos DB database account to create. -Accepted values: GlobalDocumentDB, Sql, MongoDB, Gremlin, Table, Cassandra. +Accepted values: GlobalDocumentDB, MongoDB, Gremlin, Table, Cassandra. Default value: GlobalDocumentDB ```yaml