Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
6 changes: 6 additions & 0 deletions src/CosmosDB/CosmosDB/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion src/CosmosDB/CosmosDB/CosmosDB.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<Import Project="$(MSBuildThisFileDirectory)..\..\Az.props" />
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="1.0.1" />
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="1.0.2" />
</ItemGroup>

</Project>
50 changes: 32 additions & 18 deletions src/CosmosDB/CosmosDB/CosmosDBAccount/NewAzCosmosDBAccount.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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<Location> LocationCollection = new Collection<Location>();

Expand Down Expand Up @@ -185,15 +173,15 @@ public override void ExecuteCmdlet()
}

Collection<VirtualNetworkRule> virtualNetworkRule = new Collection<VirtualNetworkRule>();
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));
Expand All @@ -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<Capability> { new Capability { Name = "EnableCassandra" } };
break;
case "Gremlin":
databaseAccountCreateUpdateParameters.Capabilities = new List<Capability> { new Capability { Name = "EnableGremlin" } };
break;
case "Table":
databaseAccountCreateUpdateParameters.Capabilities = new List<Capability> { 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;
Expand Down
20 changes: 11 additions & 9 deletions src/CosmosDB/CosmosDB/CosmosDBAccount/UpdateAzCosmosDBAccount.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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> virtualNetworkRule = new Collection<VirtualNetworkRule>();

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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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; }

Expand All @@ -72,18 +72,21 @@ public override void ExecuteCmdlet()
}

List<Location> locations = new List<Location>();

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
Expand Down
2 changes: 1 addition & 1 deletion src/CosmosDB/CosmosDB/Helpers/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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 ";
Expand Down
17 changes: 17 additions & 0 deletions src/CosmosDB/CosmosDB/Models/PSCassandraSchema.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,23 @@ public PSCassandraSchema()

public PSCassandraSchema(CassandraSchema cassandraSchema)
{
Columns = new List<PSColumn>();
foreach (Column column in cassandraSchema.Columns)
{
Columns.Add(new PSColumn(column));
}

PartitionKeys = new List<PSCassandraPartitionKey>();
foreach (CassandraPartitionKey cassandraPartitionKey in cassandraSchema.PartitionKeys)
{
PartitionKeys.Add(new PSCassandraPartitionKey(cassandraPartitionKey));
}

ClusterKeys = new List<PSClusterKey>();
foreach (ClusterKey clusterKey in cassandraSchema.ClusterKeys)
{
ClusterKeys.Add(new PSClusterKey(clusterKey));
}
}

//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ public class PSMongoDBCollectionGetPropertiesResource
{
public PSMongoDBCollectionGetPropertiesResource(MongoDBCollectionGetPropertiesResource mongoDBCollectionGetPropertiesResource)
{
Id = mongoDBCollectionGetPropertiesResource.Id;
if (mongoDBCollectionGetPropertiesResource.ShardKey != null)
{
ShardKey = new Dictionary<string, string>(mongoDBCollectionGetPropertiesResource.ShardKey);
}
List<PSMongoIndex> psMongoIndex = new List<PSMongoIndex>();
if (mongoDBCollectionGetPropertiesResource.Indexes != null)
{
Expand Down
2 changes: 1 addition & 1 deletion src/CosmosDB/CosmosDB/help/Get-AzCosmosDBAccount.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 :
Expand Down
6 changes: 3 additions & 3 deletions src/CosmosDB/CosmosDB/help/New-AzCosmosDBAccount.md
Original file line number Diff line number Diff line change
@@ -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
---

Expand Down Expand Up @@ -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}
Expand All @@ -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
Expand Down