public override void ExecuteCmdlet() { ConsistencyPolicy consistencyPolicy = base.PopoulateConsistencyPolicy(DefaultConsistencyLevel, MaxStalenessIntervalInSeconds, MaxStalenessPrefix); string writeLocation = null; Collection <Location> LocationCollection = new Collection <Location>(); if (Location != null && Location.Length > 0) { int failoverPriority = 0; foreach (string l in Location) { Location loc = new Location(locationName: l, failoverPriority: failoverPriority); LocationCollection.Add(loc); if (failoverPriority == 0) { writeLocation = l; } failoverPriority++; } } else if (LocationObject != null && LocationObject.Length > 0) { if (writeLocation != null) { WriteWarning("Cannot accept Location and LocationObject simultaneously as parameters"); return; } foreach (PSLocation psLocation in LocationObject) { LocationCollection.Add(PSLocation.ToSDKModel(psLocation)); if (psLocation.FailoverPriority == 0) { writeLocation = psLocation.LocationName; } } } if (string.IsNullOrEmpty(writeLocation)) { WriteWarning("Cannot create Account without a Write Location."); return; } Dictionary <string, string> tags = new Dictionary <string, string>(); if (Tag != null) { tags = base.PopulateTags(Tag); } Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); 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.ToSDKModel(psVirtualNetworkRule)); } } DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters(locations: LocationCollection, location: writeLocation, name: Name, consistencyPolicy: consistencyPolicy, tags: tags); databaseAccountCreateUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; databaseAccountCreateUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; databaseAccountCreateUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; databaseAccountCreateUpdateParameters.VirtualNetworkRules = virtualNetworkRule; databaseAccountCreateUpdateParameters.DisableKeyBasedMetadataWriteAccess = DisableKeyBasedMetadataWriteAccess; databaseAccountCreateUpdateParameters.PublicNetworkAccess = PublicNetworkAccess; databaseAccountCreateUpdateParameters.EnableFreeTier = EnableFreeTier; databaseAccountCreateUpdateParameters.EnableAnalyticalStorage = EnableAnalyticalStorage; if (IpRule != null && IpRule.Length > 0) { databaseAccountCreateUpdateParameters.IpRules = base.PopulateIpRules(IpRule); } if (KeyVaultKeyUri != null) { databaseAccountCreateUpdateParameters.KeyVaultKeyUri = KeyVaultKeyUri; } if (!string.IsNullOrEmpty(ApiKind)) { if (ApiKind.Equals("MongoDB", StringComparison.OrdinalIgnoreCase)) { if (ServerVersion != null) { databaseAccountCreateUpdateParameters.ApiProperties = new ApiProperties { ServerVersion = ServerVersion }; } } else { 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; case "Sql": 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; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public override void ExecuteCmdlet() { if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = null; if (ParameterSetName.Equals(ResourceIdParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(ResourceId); } else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(InputObject.Id); } ResourceGroupName = resourceIdentifier.ResourceGroupName; Name = resourceIdentifier.ResourceName; } DatabaseAccountGetResults readDatabase = CosmosDBManagementClient.DatabaseAccounts.GetWithHttpMessagesAsync(ResourceGroupName, Name).GetAwaiter().GetResult().Body; DatabaseAccountUpdateParameters databaseAccountUpdateParameters = new DatabaseAccountUpdateParameters(locations: readDatabase.Locations, location: readDatabase.WriteLocations.ElementAt(0).LocationName); if (EnableMultipleWriteLocations != null) { databaseAccountUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; } if (EnableVirtualNetwork != null) { databaseAccountUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; } if (EnableAutomaticFailover != null) { databaseAccountUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; } if (DisableKeyBasedMetadataWriteAccess != null) { databaseAccountUpdateParameters.DisableKeyBasedMetadataWriteAccess = DisableKeyBasedMetadataWriteAccess; } if (PublicNetworkAccess != null) { databaseAccountUpdateParameters.PublicNetworkAccess = PublicNetworkAccess; } if (KeyVaultKeyUri != null) { databaseAccountUpdateParameters.KeyVaultKeyUri = KeyVaultKeyUri; } if (EnableAnalyticalStorage != null) { databaseAccountUpdateParameters.EnableAnalyticalStorage = EnableAnalyticalStorage; } if (!string.IsNullOrEmpty(DefaultConsistencyLevel)) { databaseAccountUpdateParameters.ConsistencyPolicy = base.PopoulateConsistencyPolicy(DefaultConsistencyLevel, MaxStalenessIntervalInSeconds, MaxStalenessPrefix); } if (Tag != null) { databaseAccountUpdateParameters.Tags = base.PopulateTags(Tag); } if (VirtualNetworkRule != null || VirtualNetworkRuleObject != null) { Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); 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.ToSDKModel(psVirtualNetworkRule)); } } databaseAccountUpdateParameters.VirtualNetworkRules = virtualNetworkRule; } if (IpRule != null) { // not checking IpRules.Length > 0, to handle the removal of IpRules case databaseAccountUpdateParameters.IpRules = base.PopulateIpRules(IpRule); } if (ShouldProcess(Name, "Updating Database Account")) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.UpdateWithHttpMessagesAsync(ResourceGroupName, Name, databaseAccountUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public override void ExecuteCmdlet() { DatabaseAccountGetResults databaseAccountGetResults = null; try { databaseAccountGetResults = CosmosDBManagementClient.DatabaseAccounts.Get(ResourceGroupName, Name); } catch (CloudException e) { if (e.Response.StatusCode != System.Net.HttpStatusCode.NotFound) { throw; } } if (databaseAccountGetResults != null) { throw new ConflictingResourceException(message: string.Format(ExceptionMessage.Conflict, Name)); } ConsistencyPolicy consistencyPolicy = base.PopoulateConsistencyPolicy(DefaultConsistencyLevel, MaxStalenessIntervalInSeconds, MaxStalenessPrefix); string writeLocation = null; Collection <Location> LocationCollection = new Collection <Location>(); if (Location != null && Location.Length > 0) { int failoverPriority = 0; foreach (string l in Location) { Location loc = new Location(locationName: l, failoverPriority: failoverPriority); LocationCollection.Add(loc); if (failoverPriority == 0) { writeLocation = l; } failoverPriority++; } } else if (LocationObject != null && LocationObject.Length > 0) { if (writeLocation != null) { WriteWarning("Cannot accept Location and LocationObject simultaneously as parameters"); return; } foreach (PSLocation psLocation in LocationObject) { LocationCollection.Add(PSLocation.ToSDKModel(psLocation)); if (psLocation.FailoverPriority == 0) { writeLocation = psLocation.LocationName; } } } if (string.IsNullOrEmpty(writeLocation)) { WriteWarning("Cannot create Account without a Write Location."); return; } Dictionary <string, string> tags = new Dictionary <string, string>(); if (Tag != null) { tags = base.PopulateTags(Tag); } Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); 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.ToSDKModel(psVirtualNetworkRule)); } } DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters(locations: LocationCollection, location: writeLocation, name: Name, tags: tags); if (FromPointInTimeBackup) { PSRestoreParameters restoreParameters = restoreContext.GetRestoreParameters(CosmosDBManagementClient); if (restoreParameters == null) { WriteWarning("Please provide valid parameters to restore"); return; } databaseAccountCreateUpdateParameters.CreateMode = CreateMode.Restore; databaseAccountCreateUpdateParameters.RestoreParameters = restoreParameters.ToSDKModel(); } databaseAccountCreateUpdateParameters.ConsistencyPolicy = consistencyPolicy; databaseAccountCreateUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; databaseAccountCreateUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; databaseAccountCreateUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; databaseAccountCreateUpdateParameters.VirtualNetworkRules = virtualNetworkRule; databaseAccountCreateUpdateParameters.DisableKeyBasedMetadataWriteAccess = DisableKeyBasedMetadataWriteAccess; databaseAccountCreateUpdateParameters.PublicNetworkAccess = PublicNetworkAccess; databaseAccountCreateUpdateParameters.EnableFreeTier = EnableFreeTier; databaseAccountCreateUpdateParameters.EnableAnalyticalStorage = EnableAnalyticalStorage; Collection <string> networkAclBypassResourceId = NetworkAclBypassResourceId != null ? new Collection <string>(NetworkAclBypassResourceId) : new Collection <string>(); databaseAccountCreateUpdateParameters.NetworkAclBypassResourceIds = networkAclBypassResourceId; if (IpRule != null && IpRule.Length > 0) { databaseAccountCreateUpdateParameters.IpRules = base.PopulateIpRules(IpRule); } if (KeyVaultKeyUri != null) { databaseAccountCreateUpdateParameters.KeyVaultKeyUri = KeyVaultKeyUri; } if (NetworkAclBypass != null) { databaseAccountCreateUpdateParameters.NetworkAclBypass = NetworkAclBypass == "AzureServices" ? SDKModel.NetworkAclBypass.AzureServices : SDKModel.NetworkAclBypass.None; } if (!string.IsNullOrEmpty(ApiKind)) { if (ApiKind.Equals("MongoDB", StringComparison.OrdinalIgnoreCase)) { if (ServerVersion != null) { databaseAccountCreateUpdateParameters.ApiProperties = new ApiProperties { ServerVersion = ServerVersion }; } } else { 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; case "Sql": break; } ApiKind = null; } } else { ApiKind = "GlobalDocumentDB"; } databaseAccountCreateUpdateParameters.Kind = ApiKind; if (!string.IsNullOrEmpty(BackupPolicyType)) { PSBackupPolicy backupPolicy = new PSBackupPolicy() { BackupType = BackupPolicyType, BackupIntervalInMinutes = BackupIntervalInMinutes, BackupRetentionIntervalInHours = BackupRetentionIntervalInHours, BackupStorageRedundancy = BackupStorageRedundancy }; if (BackupPolicyType.Equals(PSBackupPolicy.ContinuousModeBackupType, StringComparison.OrdinalIgnoreCase) && (BackupIntervalInMinutes.HasValue || BackupRetentionIntervalInHours.HasValue)) { WriteWarning("Cannot accept BackupInterval or BackupRetention parameters for ContinuousModeBackupType"); return; } databaseAccountCreateUpdateParameters.BackupPolicy = backupPolicy.ToSDKModel(); } else if (BackupIntervalInMinutes.HasValue || BackupRetentionIntervalInHours.HasValue || !string.IsNullOrEmpty(BackupStorageRedundancy)) { databaseAccountCreateUpdateParameters.BackupPolicy = new PeriodicModeBackupPolicy() { PeriodicModeProperties = new PeriodicModeProperties() { BackupIntervalInMinutes = BackupIntervalInMinutes, BackupRetentionIntervalInHours = BackupRetentionIntervalInHours, BackupStorageRedundancy = BackupStorageRedundancy } }; } // Update analytical storage schema type. databaseAccountCreateUpdateParameters.AnalyticalStorageConfiguration = CreateAnalyticalStorageConfiguration(AnalyticalStorageSchemaType); if (ShouldProcess(Name, "Creating Database Account")) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(ResourceGroupName, Name, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public override void ExecuteCmdlet() { DateTime utcRestoreDateTime; if (RestoreTimestampInUtc.Kind == DateTimeKind.Unspecified) { utcRestoreDateTime = RestoreTimestampInUtc; } else { utcRestoreDateTime = RestoreTimestampInUtc.ToUniversalTime(); } // Fail if provided restoretimesamp is greater than current timestamp if (utcRestoreDateTime > DateTime.UtcNow) { WriteWarning($"Restore timestamp {utcRestoreDateTime} should be less than current timestamp {DateTime.UtcNow}"); return; } List <RestorableDatabaseAccountGetResult> restorableDatabaseAccounts = CosmosDBManagementClient.RestorableDatabaseAccounts.ListWithHttpMessagesAsync().GetAwaiter().GetResult().Body.ToList(); RestorableDatabaseAccountGetResult sourceAccountToRestore = null; List <RestorableDatabaseAccountGetResult> accountsWithMatchingName = restorableDatabaseAccounts.Where(databaseAccount => databaseAccount.AccountName.Equals(SourceDatabaseAccountName, StringComparison.OrdinalIgnoreCase)).ToList(); if (accountsWithMatchingName.Count > 0) { foreach (RestorableDatabaseAccountGetResult restorableAccount in accountsWithMatchingName) { if (restorableAccount.CreationTime.HasValue && restorableAccount.CreationTime < utcRestoreDateTime) { if (!restorableAccount.DeletionTime.HasValue || restorableAccount.DeletionTime > utcRestoreDateTime) { sourceAccountToRestore = restorableAccount; break; } } } } if (sourceAccountToRestore == null) { WriteWarning($"No database accounts found with matching account name {SourceDatabaseAccountName} that was alive at given utc-timestamp {utcRestoreDateTime}"); return; } // Validate if source account is empty IEnumerable <DatabaseRestoreResource> restorableResources = null; if (sourceAccountToRestore.ApiType.Equals("Sql", StringComparison.OrdinalIgnoreCase)) { try { restorableResources = CosmosDBManagementClient.RestorableSqlResources.ListWithHttpMessagesAsync( sourceAccountToRestore.Location, sourceAccountToRestore.Name, Location, utcRestoreDateTime.ToString()).GetAwaiter().GetResult().Body; } catch (Exception) { WriteWarning($"No database accounts found with matching account name {SourceDatabaseAccountName} that was alive at given utc-timestamp {utcRestoreDateTime} in location {Location}"); return; } } else if (sourceAccountToRestore.ApiType.Equals("MongoDB", StringComparison.OrdinalIgnoreCase)) { try { restorableResources = CosmosDBManagementClient.RestorableMongodbResources.ListWithHttpMessagesAsync( sourceAccountToRestore.Location, sourceAccountToRestore.Name, Location, utcRestoreDateTime.ToString()).GetAwaiter().GetResult().Body; } catch (Exception) { WriteWarning($"No database accounts found with matching account name {SourceDatabaseAccountName} that was alive at given utc-timestamp {utcRestoreDateTime} in location {Location}"); return; } } else { WriteWarning($"Provided API Type {sourceAccountToRestore.ApiType} is not supported"); return; } if (restorableResources == null || !restorableResources.Any()) { WriteWarning($"Database account {SourceDatabaseAccountName} contains no restorable resources in location {Location} at given restore timestamp {utcRestoreDateTime} in location {Location}"); return; } // Trigger restore PSRestoreParameters restoreParameters = new PSRestoreParameters() { RestoreSource = sourceAccountToRestore.Id, RestoreTimestampInUtc = utcRestoreDateTime, DatabasesToRestore = DatabasesToRestore }; Collection <Location> LocationCollection = new Collection <Location>(); Location loc = new Location(locationName: Location, failoverPriority: 0); LocationCollection.Add(loc); string apiKind = "GlobalDocumentDB"; if (sourceAccountToRestore.ApiType.Equals("MongoDB", StringComparison.OrdinalIgnoreCase)) { apiKind = "MongoDB"; } DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters(locations: LocationCollection, location: sourceAccountToRestore.Location, name: TargetDatabaseAccountName) { Kind = apiKind, CreateMode = CreateMode.Restore, RestoreParameters = restoreParameters.ToSDKModel() }; if (ShouldProcess(TargetDatabaseAccountName, string.Format( "Creating Database Account by restoring Database Account with Name {0} and restorable database account Id {1} to the timestamp {2}", SourceDatabaseAccountName, sourceAccountToRestore.Id, RestoreTimestampInUtc))) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(TargetResourceGroupName, TargetDatabaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public override void ExecuteCmdlet() { if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = null; if (ParameterSetName.Equals(ResourceIdParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(ResourceId); } else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(InputObject.Id); } ResourceGroupName = resourceIdentifier.ResourceGroupName; Name = resourceIdentifier.ResourceName; } DatabaseAccountGetResults readDatabase = CosmosDBManagementClient.DatabaseAccounts.GetWithHttpMessagesAsync(ResourceGroupName, Name).GetAwaiter().GetResult().Body; DatabaseAccountUpdateParameters databaseAccountUpdateParameters = new DatabaseAccountUpdateParameters(locations: readDatabase.Locations, location: readDatabase.WriteLocations.ElementAt(0).LocationName); if (EnableMultipleWriteLocations != null) { databaseAccountUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; } if (EnableVirtualNetwork != null) { databaseAccountUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; } if (EnableAutomaticFailover != null) { databaseAccountUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; } if (DisableKeyBasedMetadataWriteAccess != null) { databaseAccountUpdateParameters.DisableKeyBasedMetadataWriteAccess = DisableKeyBasedMetadataWriteAccess; } if (PublicNetworkAccess != null) { databaseAccountUpdateParameters.PublicNetworkAccess = PublicNetworkAccess; } if (KeyVaultKeyUri != null) { databaseAccountUpdateParameters.KeyVaultKeyUri = KeyVaultKeyUri; } if (!string.IsNullOrEmpty(DefaultConsistencyLevel)) { ConsistencyPolicy consistencyPolicy = new ConsistencyPolicy(); { switch (DefaultConsistencyLevel) { case "Strong": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Strong; break; case "Session": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Session; break; case "Eventual": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Eventual; break; case "ConsistentPrefix": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.ConsistentPrefix; break; case "BoundedStaleness": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.BoundedStaleness; consistencyPolicy.MaxIntervalInSeconds = MaxStalenessIntervalInSeconds; consistencyPolicy.MaxStalenessPrefix = MaxStalenessPrefix; break; default: consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Session; break; } databaseAccountUpdateParameters.ConsistencyPolicy = consistencyPolicy; } } if (Tag != null) { Dictionary <string, string> tags = new Dictionary <string, string>(); foreach (string key in Tag.Keys) { tags.Add(key, Tag[key].ToString()); } databaseAccountUpdateParameters.Tags = tags; } if (VirtualNetworkRule != null || VirtualNetworkRuleObject != null) { Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); 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.ToSDKModel(psVirtualNetworkRule)); } } databaseAccountUpdateParameters.VirtualNetworkRules = virtualNetworkRule; } if (IpRangeFilter != null) { string IpRangeFilterAsString = IpRangeFilter?.Aggregate(string.Empty, (output, next) => string.Concat(output, (!string.IsNullOrWhiteSpace(output) && !string.IsNullOrWhiteSpace(next) ? "," : string.Empty), next)) ?? string.Empty; databaseAccountUpdateParameters.IpRangeFilter = IpRangeFilterAsString; } if (ShouldProcess(Name, "Updating Database Account")) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.UpdateWithHttpMessagesAsync(ResourceGroupName, Name, databaseAccountUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public void SqlCRUDTests() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler1); bool isDatabaseNameExists = cosmosDBManagementClient.DatabaseAccounts.CheckNameExistsWithHttpMessagesAsync(databaseAccountName).GetAwaiter().GetResult().Body; DatabaseAccountGetResults databaseAccount = null; if (!isDatabaseNameExists) { DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters { Location = location, Kind = DatabaseAccountKind.GlobalDocumentDB, Locations = new List <Location>() { { new Location(locationName: location) } } }; databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.Equal(databaseAccount.Name, databaseAccountName); } SqlDatabaseCreateUpdateParameters sqlDatabaseCreateUpdateParameters = new SqlDatabaseCreateUpdateParameters { Resource = new SqlDatabaseResource { Id = databaseName }, Options = new CreateUpdateOptions() }; SqlDatabaseGetResults sqlDatabaseGetResults = cosmosDBManagementClient.SqlResources.CreateUpdateSqlDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, sqlDatabaseCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(sqlDatabaseGetResults); Assert.Equal(databaseName, sqlDatabaseGetResults.Name); SqlDatabaseGetResults sqlDatabaseGetResults2 = cosmosDBManagementClient.SqlResources.GetSqlDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(sqlDatabaseGetResults2); Assert.Equal(databaseName, sqlDatabaseGetResults2.Name); VerifyEqualSqlDatabases(sqlDatabaseGetResults, sqlDatabaseGetResults2); SqlDatabaseCreateUpdateParameters sqlDatabaseCreateUpdateParameters2 = new SqlDatabaseCreateUpdateParameters { Location = location, Tags = tags, Resource = new SqlDatabaseResource { Id = databaseName2 }, Options = new CreateUpdateOptions { Throughput = sampleThroughput } }; SqlDatabaseGetResults sqlDatabaseGetResults3 = cosmosDBManagementClient.SqlResources.CreateUpdateSqlDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName2, sqlDatabaseCreateUpdateParameters2).GetAwaiter().GetResult().Body; Assert.NotNull(sqlDatabaseGetResults3); Assert.Equal(databaseName2, sqlDatabaseGetResults3.Name); IEnumerable <SqlDatabaseGetResults> sqlDatabases = cosmosDBManagementClient.SqlResources.ListSqlDatabasesWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(sqlDatabases); ThroughputSettingsGetResults throughputSettingsGetResults = cosmosDBManagementClient.SqlResources.GetSqlDatabaseThroughputWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName2).GetAwaiter().GetResult().Body; Assert.NotNull(throughputSettingsGetResults); Assert.NotNull(throughputSettingsGetResults.Name); Assert.Equal(sqlThroughputType, throughputSettingsGetResults.Type); SqlContainerCreateUpdateParameters sqlContainerCreateUpdateParameters = new SqlContainerCreateUpdateParameters { Resource = new SqlContainerResource { Id = containerName, PartitionKey = new ContainerPartitionKey { Kind = "Hash", Paths = new List <string> { "/address/zipCode" } }, IndexingPolicy = new IndexingPolicy { Automatic = true, IndexingMode = IndexingMode.Consistent, IncludedPaths = new List <IncludedPath> { new IncludedPath { Path = "/*" } }, ExcludedPaths = new List <ExcludedPath> { new ExcludedPath { Path = "/pathToNotIndex/*" } }, CompositeIndexes = new List <IList <CompositePath> > { new List <CompositePath> { new CompositePath { Path = "/orderByPath1", Order = CompositePathSortOrder.Ascending }, new CompositePath { Path = "/orderByPath2", Order = CompositePathSortOrder.Descending } }, new List <CompositePath> { new CompositePath { Path = "/orderByPath3", Order = CompositePathSortOrder.Ascending }, new CompositePath { Path = "/orderByPath4", Order = CompositePathSortOrder.Descending } } } } }, Options = new CreateUpdateOptions { Throughput = sampleThroughput } }; SqlContainerGetResults sqlContainerGetResults = cosmosDBManagementClient.SqlResources.CreateUpdateSqlContainerWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, sqlContainerCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(sqlContainerGetResults); IEnumerable <SqlContainerGetResults> sqlContainers = cosmosDBManagementClient.SqlResources.ListSqlContainersWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(sqlContainers); SqlStoredProcedureCreateUpdateParameters sqlStoredProcedureCreateUpdateParameters = new SqlStoredProcedureCreateUpdateParameters { Resource = new SqlStoredProcedureResource { Id = storedProcedureName, Body = "function () { var context = getContext(); " + "var response = context.getResponse();" + "response.setBody('Hello, World');" + "}" }, Options = new CreateUpdateOptions() }; SqlStoredProcedureGetResults sqlStoredProcedureGetResults = cosmosDBManagementClient.SqlResources.CreateUpdateSqlStoredProcedureWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, storedProcedureName, sqlStoredProcedureCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(sqlStoredProcedureGetResults); Assert.Equal(sqlStoredProcedureGetResults.Resource.Body, sqlStoredProcedureGetResults.Resource.Body); IEnumerable <SqlStoredProcedureGetResults> sqlStoredProcedures = cosmosDBManagementClient.SqlResources.ListSqlStoredProceduresWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName).GetAwaiter().GetResult().Body; Assert.NotNull(sqlStoredProcedures); foreach (SqlStoredProcedureGetResults sqlStoredProcedure in sqlStoredProcedures) { cosmosDBManagementClient.SqlResources.DeleteSqlStoredProcedureWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, sqlStoredProcedure.Name); } SqlUserDefinedFunctionCreateUpdateParameters sqlUserDefinedFunctionCreateUpdateParameters = new SqlUserDefinedFunctionCreateUpdateParameters { Resource = new SqlUserDefinedFunctionResource { Id = userDefinedFunctionName, Body = "function () { var context = getContext(); " + "var response = context.getResponse();" + "response.setBody('Hello, World');" + "}" }, Options = new CreateUpdateOptions() }; SqlUserDefinedFunctionGetResults sqlUserDefinedFunctionGetResults = cosmosDBManagementClient.SqlResources.CreateUpdateSqlUserDefinedFunctionWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, userDefinedFunctionName, sqlUserDefinedFunctionCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(sqlUserDefinedFunctionGetResults); Assert.Equal(sqlUserDefinedFunctionGetResults.Resource.Body, sqlUserDefinedFunctionGetResults.Resource.Body); IEnumerable <SqlUserDefinedFunctionGetResults> sqlUserDefinedFunctions = cosmosDBManagementClient.SqlResources.ListSqlUserDefinedFunctionsWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName).GetAwaiter().GetResult().Body; Assert.NotNull(sqlUserDefinedFunctions); foreach (SqlUserDefinedFunctionGetResults sqlUserDefinedFunction in sqlUserDefinedFunctions) { cosmosDBManagementClient.SqlResources.DeleteSqlUserDefinedFunctionWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, sqlUserDefinedFunction.Name); } SqlTriggerCreateUpdateParameters sqlTriggerCreateUpdateParameters = new SqlTriggerCreateUpdateParameters { Resource = new SqlTriggerResource { Id = triggerName, TriggerOperation = "All", TriggerType = "Pre", Body = "function () { var context = getContext(); " + "var response = context.getResponse();" + "response.setBody('Hello, World');" + "}" }, Options = new CreateUpdateOptions() }; SqlTriggerGetResults sqlTriggerGetResults = cosmosDBManagementClient.SqlResources.CreateUpdateSqlTriggerWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, triggerName, sqlTriggerCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(sqlTriggerGetResults); Assert.Equal(sqlTriggerGetResults.Resource.TriggerType, sqlTriggerCreateUpdateParameters.Resource.TriggerType); Assert.Equal(sqlTriggerGetResults.Resource.TriggerOperation, sqlTriggerCreateUpdateParameters.Resource.TriggerOperation); Assert.Equal(sqlTriggerGetResults.Resource.Body, sqlTriggerCreateUpdateParameters.Resource.Body); IEnumerable <SqlTriggerGetResults> sqlTriggers = cosmosDBManagementClient.SqlResources.ListSqlTriggersWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName).GetAwaiter().GetResult().Body; Assert.NotNull(sqlTriggers); foreach (SqlTriggerGetResults sqlTrigger in sqlTriggers) { cosmosDBManagementClient.SqlResources.DeleteSqlTriggerWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, containerName, sqlTrigger.Name); } foreach (SqlContainerGetResults sqlContainer in sqlContainers) { cosmosDBManagementClient.SqlResources.DeleteSqlContainerWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, sqlContainer.Name); } foreach (SqlDatabaseGetResults sqlDatabase in sqlDatabases) { cosmosDBManagementClient.SqlResources.DeleteSqlDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, sqlDatabase.Name); } } }
public void TableCRUDTests() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler1); ResourceManagementClient resourcesClient = CosmosDBTestUtilities.GetResourceManagementClient(context, handler2); string resourceGroupName = "CosmosDBResourceGroup2510";//CosmosDBTestUtilities.CreateResourceGroup(resourcesClient); string databaseAccountName = "db2527"; bool isDatabaseNameExists = cosmosDBManagementClient.DatabaseAccounts.CheckNameExistsWithHttpMessagesAsync(databaseAccountName).GetAwaiter().GetResult().Body; DatabaseAccountGetResults databaseAccount = null; if (!isDatabaseNameExists) { return; // SDK doesnt support creation of Cassandra, Table, Gremlin Accounts, use accounts created using Azure portal // List<Location> locations = new List<Location>(); // locations.Add(new Location(locationName: "East US")); // DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters // { // Location = "EAST US", // Locations = locations // }; //databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; } string tableName = "tableName2527"; string tableName2 = "tableName22527"; TableCreateUpdateParameters tableCreateUpdateParameters = new TableCreateUpdateParameters { Resource = new TableResource { Id = tableName }, Options = new Dictionary <string, string>() { { "foo", "bar" } } }; TableGetResults tableGetResults = cosmosDBManagementClient.TableResources.CreateUpdateTableWithHttpMessagesAsync(resourceGroupName, databaseAccountName, tableName, tableCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(tableGetResults); Assert.Equal(tableName, tableGetResults.Name); TableGetResults tableGetResults2 = cosmosDBManagementClient.TableResources.GetTableWithHttpMessagesAsync(resourceGroupName, databaseAccountName, tableName).GetAwaiter().GetResult().Body; Assert.NotNull(tableGetResults2); Assert.Equal(tableName, tableGetResults2.Name); VerifyEqualTables(tableGetResults, tableGetResults2); TableCreateUpdateParameters tableCreateUpdateParameters2 = new TableCreateUpdateParameters { Location = "EAST US", Tags = new Dictionary <string, string> { { "key3", "value3" }, { "key4", "value4" } }, Resource = new TableResource { Id = tableName2 }, Options = new Dictionary <string, string>() { { "Throughput", "700" } } }; TableGetResults tableGetResults3 = cosmosDBManagementClient.TableResources.CreateUpdateTableWithHttpMessagesAsync(resourceGroupName, databaseAccountName, tableName2, tableCreateUpdateParameters2).GetAwaiter().GetResult().Body; Assert.NotNull(tableGetResults3); Assert.Equal(tableName2, tableGetResults3.Name); IEnumerable <TableGetResults> tables = cosmosDBManagementClient.TableResources.ListTablesWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(tables); ThroughputSettingsGetResults throughputSettingsGetResults = cosmosDBManagementClient.TableResources.GetTableThroughputWithHttpMessagesAsync(resourceGroupName, databaseAccountName, tableName2).GetAwaiter().GetResult().Body; Assert.NotNull(throughputSettingsGetResults); Assert.NotNull(throughputSettingsGetResults.Name); Assert.Equal("Microsoft.DocumentDB/databaseAccounts/tables/throughputSettings", throughputSettingsGetResults.Type); foreach (TableGetResults table in tables) { cosmosDBManagementClient.TableResources.DeleteTableWithHttpMessagesAsync(resourceGroupName, databaseAccountName, table.Name); } } }
public async Task RestorableSqlTests() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler1); ResourceManagementClient resourcesClient = CosmosDBTestUtilities.GetResourceManagementClient(context, handler1); DatabaseAccountGetResults databaseAccount = await cosmosDBManagementClient.DatabaseAccounts.GetAsync(resourceGroupName, sourceDatabaseAccountName); RestorableDatabaseAccountGetResult restorableDatabaseAccount = (await cosmosDBManagementClient.RestorableDatabaseAccounts.GetByLocationAsync(location, sourceDatabaseAccountInstanceId)); Assert.Equal(databaseAccount.InstanceId, restorableDatabaseAccount.Name); Assert.Equal(databaseAccount.Name, restorableDatabaseAccount.AccountName); Assert.Equal(ApiType.Sql, restorableDatabaseAccount.ApiType); Assert.Equal(3, restorableDatabaseAccount.RestorableLocations.Count); foreach (var location in restorableDatabaseAccount.RestorableLocations) { Assert.NotNull(location.CreationTime); // Assert.Null(location.DeletionTime); Assert.False(string.IsNullOrEmpty(location.LocationName)); Assert.False(string.IsNullOrEmpty(location.RegionalDatabaseAccountInstanceId)); } List <RestorableSqlDatabaseGetResult> restorableSqlDatabases = (await cosmosDBManagementClient.RestorableSqlDatabases.ListAsync(location, restorableDatabaseAccount.Name)).ToList(); RestorableSqlDatabaseGetResult restorableSqlDatabase = restorableSqlDatabases.First(); Assert.Equal(2, restorableSqlDatabases.Count()); string dbRid = restorableSqlDatabase.Resource.OwnerResourceId; List <RestorableSqlContainerGetResult> restorableSqlContainers = (await cosmosDBManagementClient.RestorableSqlContainers.ListAsync(location, restorableDatabaseAccount.Name, dbRid)).ToList(); Assert.Equal(2, restorableSqlContainers.Count()); List <DatabaseRestoreResource> restorableSqlResources = (await cosmosDBManagementClient.RestorableSqlResources.ListAsync(location, restorableDatabaseAccount.Name, location, restoreTimestamp.ToString())).ToList(); DatabaseRestoreResource databaseRestoreResource1 = new DatabaseRestoreResource() { DatabaseName = "database1", CollectionNames = new List <string>() { "container1", "container2" } }; DatabaseRestoreResource databaseRestoreResource2 = new DatabaseRestoreResource() { DatabaseName = "databaseA", CollectionNames = new List <string>() }; List <DatabaseRestoreResource> resources = new List <DatabaseRestoreResource>() { databaseRestoreResource1, databaseRestoreResource2 }; ValidateDatabaseRestoreResource(resources, restorableSqlResources); } }
public override void ExecuteCmdlet() { ConsistencyPolicy consistencyPolicy = new ConsistencyPolicy(); { switch (DefaultConsistencyLevel) { case "Strong": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Strong; break; case "Session": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Session; break; case "Eventual": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Eventual; break; case "ConsistentPrefix": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.ConsistentPrefix; break; case "BoundedStaleness": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.BoundedStaleness; consistencyPolicy.MaxIntervalInSeconds = MaxStalenessIntervalInSeconds; consistencyPolicy.MaxStalenessPrefix = MaxStalenessPrefix; break; default: consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Session; break; } } string writeLocation = null; Collection <Location> LocationCollection = new Collection <Location>(); if (Location != null && Location.Length > 0) { int failoverPriority = 0; foreach (string l in Location) { Location loc = new Location(locationName: l, failoverPriority: failoverPriority); LocationCollection.Add(loc); if (failoverPriority == 0) { writeLocation = l; } failoverPriority++; } } else if (LocationObject != null && LocationObject.Length > 0) { if (writeLocation != null) { WriteWarning("Cannot accept Location and LocationObject simultaneously as parameters"); return; } foreach (PSLocation psLocation in LocationObject) { LocationCollection.Add(PSLocation.ToSDKModel(psLocation)); if (psLocation.FailoverPriority == 0) { writeLocation = psLocation.LocationName; } } } if (string.IsNullOrEmpty(writeLocation)) { WriteWarning("Cannot create Account without a Write Location."); return; } Dictionary <string, string> tags = new Dictionary <string, string>(); if (Tag != null) { foreach (string key in Tag.Keys) { tags.Add(key, Tag[key].ToString()); } } Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); 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.ToSDKModel(psVirtualNetworkRule)); } } string IpRangeFilterAsString = null; if (IpRangeFilter != null && IpRangeFilter.Length > 0) { IpRangeFilterAsString = IpRangeFilter?.Aggregate(string.Empty, (output, next) => string.Concat(output, (!string.IsNullOrWhiteSpace(output) && !string.IsNullOrWhiteSpace(next) ? "," : string.Empty), next)) ?? string.Empty; } 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; databaseAccountCreateUpdateParameters.DisableKeyBasedMetadataWriteAccess = DisableKeyBasedMetadataWriteAccess; databaseAccountCreateUpdateParameters.IpRangeFilter = IpRangeFilterAsString; databaseAccountCreateUpdateParameters.PublicNetworkAccess = PublicNetworkAccess; if (KeyVaultKeyUri != null) { databaseAccountCreateUpdateParameters.KeyVaultKeyUri = KeyVaultKeyUri; } if (!string.IsNullOrEmpty(ApiKind)) { if (!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; case "Sql": 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; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public override void ExecuteCmdlet() { if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = null; if (ParameterSetName.Equals(ResourceIdParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(ResourceId); } else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(InputObject.Id); } ResourceGroupName = resourceIdentifier.ResourceGroupName; Name = resourceIdentifier.ResourceName; } DatabaseAccountGetResults readDatabase = CosmosDBManagementClient.DatabaseAccounts.GetWithHttpMessagesAsync(ResourceGroupName, Name).GetAwaiter().GetResult().Body; DatabaseAccountUpdateParameters databaseAccountUpdateParameters = new DatabaseAccountUpdateParameters(locations: readDatabase.Locations, location: readDatabase.WriteLocations.ElementAt(0).LocationName); if (EnableMultipleWriteLocations != null) { databaseAccountUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; } if (EnableVirtualNetwork != null) { databaseAccountUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; } if (EnableAutomaticFailover != null) { databaseAccountUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; } if (DisableKeyBasedMetadataWriteAccess != null) { databaseAccountUpdateParameters.DisableKeyBasedMetadataWriteAccess = DisableKeyBasedMetadataWriteAccess; } if (PublicNetworkAccess != null) { databaseAccountUpdateParameters.PublicNetworkAccess = PublicNetworkAccess; } if (KeyVaultKeyUri != null) { databaseAccountUpdateParameters.KeyVaultKeyUri = KeyVaultKeyUri; } if (EnableAnalyticalStorage != null) { databaseAccountUpdateParameters.EnableAnalyticalStorage = EnableAnalyticalStorage; } if (NetworkAclBypass != null) { databaseAccountUpdateParameters.NetworkAclBypass = NetworkAclBypass == "AzureServices" ? SDKModel.NetworkAclBypass.AzureServices : SDKModel.NetworkAclBypass.None; } if (!string.IsNullOrEmpty(DefaultConsistencyLevel)) { databaseAccountUpdateParameters.ConsistencyPolicy = base.PopoulateConsistencyPolicy(DefaultConsistencyLevel, MaxStalenessIntervalInSeconds, MaxStalenessPrefix); } if (Tag != null) { databaseAccountUpdateParameters.Tags = base.PopulateTags(Tag); } if (VirtualNetworkRule != null || VirtualNetworkRuleObject != null) { Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); 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.ToSDKModel(psVirtualNetworkRule)); } } databaseAccountUpdateParameters.VirtualNetworkRules = virtualNetworkRule; } if (IpRule != null) { // not checking IpRules.Length > 0, to handle the removal of IpRules case databaseAccountUpdateParameters.IpRules = base.PopulateIpRules(IpRule); } if (ServerVersion != null) { if (databaseAccountUpdateParameters.ApiProperties == null) { databaseAccountUpdateParameters.ApiProperties = new ApiProperties(); } databaseAccountUpdateParameters.ApiProperties.ServerVersion = ServerVersion; } if (NetworkAclBypassResourceId != null) { Collection <string> networkAclBypassResourceId = new Collection <string>(NetworkAclBypassResourceId); databaseAccountUpdateParameters.NetworkAclBypassResourceIds = networkAclBypassResourceId; } if (BackupIntervalInMinutes.HasValue || BackupRetentionIntervalInHours.HasValue) { if (BackupPolicyType == "Continuous") { WriteWarning("Cannot set BackupPolicyType along with BackupInterval or BackupRetention parameters"); return; } if (readDatabase.BackupPolicy is PeriodicModeBackupPolicy) { databaseAccountUpdateParameters.BackupPolicy = new PeriodicModeBackupPolicy() { PeriodicModeProperties = new PeriodicModeProperties() { BackupIntervalInMinutes = BackupIntervalInMinutes, BackupRetentionIntervalInHours = BackupRetentionIntervalInHours } }; } else { WriteWarning("Can accept BackupInterval or BackupRetention parameters only for accounts with PeriodicMode backup policy"); return; } } // Update backup policy to ContinuousModeBackupPolicy if (BackupPolicyType == "Continuous" && readDatabase.BackupPolicy is PeriodicModeBackupPolicy) { databaseAccountUpdateParameters.BackupPolicy = new ContinuousModeBackupPolicy(); } // Update analytical storage schema type. databaseAccountUpdateParameters.AnalyticalStorageConfiguration = CreateAnalyticalStorageConfiguration(AnalyticalStorageSchemaType); if (ShouldProcess(Name, "Updating Database Account")) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.UpdateWithHttpMessagesAsync(ResourceGroupName, Name, databaseAccountUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDatabaseAccountGetResults(cosmosDBAccount)); } return; }
public void SqlAccountBackupPolicyTests() { using (var context = MockContext.Start(this.GetType())) { fixture.Init(context); CosmosDBManagementClient cosmosDBManagementClient = this.fixture.CosmosDBManagementClient; string location = this.fixture.Location; var databaseAccountName = this.fixture.GetDatabaseAccountName(TestFixture.AccountType.Sql); var resourceGroupName = this.fixture.ResourceGroupName; { DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters { Location = location, Kind = DatabaseAccountKind.GlobalDocumentDB, Locations = new List <Location>() { { new Location(locationName: location) } }, BackupPolicy = new PeriodicModeBackupPolicy() { PeriodicModeProperties = new PeriodicModeProperties() { BackupIntervalInMinutes = 60, BackupRetentionIntervalInHours = 8, BackupStorageRedundancy = BackupStorageRedundancy.Geo } } }; DatabaseAccountGetResults databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.Equal(databaseAccount.Name, databaseAccountName); PeriodicModeBackupPolicy backupPolicy = databaseAccount.BackupPolicy as PeriodicModeBackupPolicy; Assert.Equal(60, backupPolicy.PeriodicModeProperties.BackupIntervalInMinutes); Assert.Equal(8, backupPolicy.PeriodicModeProperties.BackupRetentionIntervalInHours); Assert.Equal(BackupStorageRedundancy.Geo, backupPolicy.PeriodicModeProperties.BackupStorageRedundancy); } { DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters { Location = location, Kind = DatabaseAccountKind.GlobalDocumentDB, Locations = new List <Location>() { { new Location(locationName: location) } }, BackupPolicy = new PeriodicModeBackupPolicy() { PeriodicModeProperties = new PeriodicModeProperties() { BackupIntervalInMinutes = 60, BackupRetentionIntervalInHours = 12, BackupStorageRedundancy = BackupStorageRedundancy.Local } } }; DatabaseAccountGetResults databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.Equal(databaseAccount.Name, databaseAccountName); PeriodicModeBackupPolicy backupPolicy = databaseAccount.BackupPolicy as PeriodicModeBackupPolicy; Assert.Equal(60, backupPolicy.PeriodicModeProperties.BackupIntervalInMinutes); Assert.Equal(12, backupPolicy.PeriodicModeProperties.BackupRetentionIntervalInHours); Assert.Equal(BackupStorageRedundancy.Local, backupPolicy.PeriodicModeProperties.BackupStorageRedundancy); } } }
public void GraphCRUDTests() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler1); ResourceManagementClient resourcesClient = CosmosDBTestUtilities.GetResourceManagementClient(context, handler2); string resourceGroupName = "CosmosDBResourceGroup2510"; string databaseAccountName = "db1002"; bool isDatabaseNameExists = cosmosDBManagementClient.DatabaseAccounts.CheckNameExistsWithHttpMessagesAsync(databaseAccountName).GetAwaiter().GetResult().Body; DatabaseAccountGetResults databaseAccount = null; if (!isDatabaseNameExists) { return; // SDK doesnt support creation of Cassandra, Table, Gremlin Accounts, use accounts created using Azure portal // List<Location> locations = new List<Location>(); // locations.Add(new Location(locationName: "East US")); // DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters // { // Location = "EAST US", // Locations = locations // }; //databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; } string databaseName = "databaseName1002"; string databaseName2 = "databaseName21002"; GremlinDatabaseCreateUpdateParameters gremlinDatabaseCreateUpdateParameters = new GremlinDatabaseCreateUpdateParameters { Resource = new GremlinDatabaseResource { Id = databaseName }, Options = new Dictionary <string, string>() { { "foo", "bar" } } }; GremlinDatabaseGetResults gremlinDatabaseGetResults = cosmosDBManagementClient.GremlinResources.CreateUpdateGremlinDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, gremlinDatabaseCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(gremlinDatabaseGetResults); Assert.Equal(databaseName, gremlinDatabaseGetResults.Name); GremlinDatabaseGetResults gremlinDatabaseGetResults1 = cosmosDBManagementClient.GremlinResources.GetGremlinDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(gremlinDatabaseGetResults1); Assert.Equal(databaseName, gremlinDatabaseGetResults1.Name); VerifyEqualGremlinDatabases(gremlinDatabaseGetResults, gremlinDatabaseGetResults1); GremlinDatabaseCreateUpdateParameters gremlinDatabaseCreateUpdateParameters2 = new GremlinDatabaseCreateUpdateParameters { Location = "EAST US", Tags = new Dictionary <string, string> { { "key3", "value3" }, { "key4", "value4" } }, Resource = new GremlinDatabaseResource { Id = databaseName2 }, Options = new Dictionary <string, string>() { { "Throughput", "700" } } }; GremlinDatabaseGetResults gremlinDatabaseGetResults2 = cosmosDBManagementClient.GremlinResources.CreateUpdateGremlinDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName2, gremlinDatabaseCreateUpdateParameters2).GetAwaiter().GetResult().Body; Assert.NotNull(gremlinDatabaseGetResults2); Assert.Equal(databaseName2, gremlinDatabaseGetResults2.Name); IEnumerable <GremlinDatabaseGetResults> gremlinDatabases = cosmosDBManagementClient.GremlinResources.ListGremlinDatabasesWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(gremlinDatabases); ThroughputSettingsGetResults throughputSettingsGetResults = cosmosDBManagementClient.GremlinResources.GetGremlinDatabaseThroughputWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName2).GetAwaiter().GetResult().Body; Assert.NotNull(throughputSettingsGetResults); Assert.NotNull(throughputSettingsGetResults.Name); Assert.Equal("Microsoft.DocumentDB/databaseAccounts/gremlinDatabases/throughputSettings", throughputSettingsGetResults.Type); string gremlinGraphName = "gremlinGraphName1002"; GremlinGraphCreateUpdateParameters gremlinGraphCreateUpdateParameters = new GremlinGraphCreateUpdateParameters { Resource = new GremlinGraphResource { Id = gremlinGraphName, PartitionKey = new ContainerPartitionKey { Kind = "Hash", Paths = new List <string> { "/address" } } }, Options = new Dictionary <string, string>() { { "Throughput", "700" } } }; GremlinGraphGetResults gremlinGraphGetResults = cosmosDBManagementClient.GremlinResources.CreateUpdateGremlinGraphWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, gremlinGraphName, gremlinGraphCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(gremlinGraphGetResults); IEnumerable <GremlinGraphGetResults> gremlinGraphs = cosmosDBManagementClient.GremlinResources.ListGremlinGraphsWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(gremlinGraphs); foreach (GremlinGraphGetResults gremlinGraph in gremlinGraphs) { cosmosDBManagementClient.GremlinResources.DeleteGremlinGraphWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, gremlinGraph.Name); } foreach (GremlinDatabaseGetResults gremlinDatabase in gremlinDatabases) { cosmosDBManagementClient.GremlinResources.DeleteGremlinDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, gremlinDatabase.Name); } } }
public void DatabaseAccountCRUDTests() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler1); ResourceManagementClient resourcesClient = CosmosDBTestUtilities.GetResourceManagementClient(context, handler2); string resourceGroupName = CosmosDBTestUtilities.CreateResourceGroup(resourcesClient); string databaseAccountName = TestUtilities.GenerateName(prefix: "accountname"); List <Location> locations = new List <Location>(); locations.Add(new Location(locationName: "East US")); DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters { Location = "EAST US", Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } }, Kind = "MongoDB", ConsistencyPolicy = new ConsistencyPolicy { DefaultConsistencyLevel = DefaultConsistencyLevel.BoundedStaleness, MaxStalenessPrefix = 300, MaxIntervalInSeconds = 1000 }, Locations = locations, IpRules = new List <IpAddressOrRange> { new IpAddressOrRange("23.43.230.120") }, IsVirtualNetworkFilterEnabled = true, EnableAutomaticFailover = false, EnableMultipleWriteLocations = true, EnableCassandraConnector = true, ConnectorOffer = "Small", DisableKeyBasedMetadataWriteAccess = false }; DatabaseAccountGetResults databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; VerifyCosmosDBAccount(databaseAccount, databaseAccountCreateUpdateParameters); Assert.Equal(databaseAccountName, databaseAccount.Name); DatabaseAccountGetResults readDatabaseAccount = cosmosDBManagementClient.DatabaseAccounts.GetWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; VerifyCosmosDBAccount(readDatabaseAccount, databaseAccountCreateUpdateParameters); Assert.Equal(databaseAccountName, readDatabaseAccount.Name); DatabaseAccountUpdateParameters databaseAccountUpdateParameters = new DatabaseAccountUpdateParameters { Location = "EAST US", Tags = new Dictionary <string, string> { { "key3", "value3" }, { "key4", "value4" } }, ConsistencyPolicy = new ConsistencyPolicy { DefaultConsistencyLevel = DefaultConsistencyLevel.Session, MaxStalenessPrefix = 1300, MaxIntervalInSeconds = 12000 }, Locations = locations, IpRules = new List <IpAddressOrRange> { new IpAddressOrRange("23.43.230.120") }, IsVirtualNetworkFilterEnabled = false, EnableAutomaticFailover = true, EnableCassandraConnector = true, ConnectorOffer = "Small", DisableKeyBasedMetadataWriteAccess = true }; DatabaseAccountGetResults updatedDatabaseAccount = cosmosDBManagementClient.DatabaseAccounts.UpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountUpdateParameters).GetAwaiter().GetResult().Body; VerifyCosmosDBAccount(updatedDatabaseAccount, databaseAccountUpdateParameters); Assert.Equal(databaseAccountName, databaseAccount.Name); IEnumerable <DatabaseAccountGetResults> databaseAccounts = cosmosDBManagementClient.DatabaseAccounts.ListWithHttpMessagesAsync().GetAwaiter().GetResult().Body; Assert.NotNull(databaseAccounts); IEnumerable <DatabaseAccountGetResults> databaseAccountsByResourceGroupName = cosmosDBManagementClient.DatabaseAccounts.ListByResourceGroupWithHttpMessagesAsync(resourceGroupName).GetAwaiter().GetResult().Body; Assert.NotNull(databaseAccountsByResourceGroupName); DatabaseAccountListKeysResult databaseAccountListKeysResult = cosmosDBManagementClient.DatabaseAccounts.ListKeysWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(databaseAccountListKeysResult.PrimaryMasterKey); Assert.NotNull(databaseAccountListKeysResult.SecondaryMasterKey); Assert.NotNull(databaseAccountListKeysResult.PrimaryReadonlyMasterKey); Assert.NotNull(databaseAccountListKeysResult.SecondaryReadonlyMasterKey); DatabaseAccountListConnectionStringsResult databaseAccountListConnectionStringsResult = cosmosDBManagementClient.DatabaseAccounts.ListConnectionStringsWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(databaseAccountListConnectionStringsResult); DatabaseAccountListReadOnlyKeysResult databaseAccountGetReadOnlyKeysResult = cosmosDBManagementClient.DatabaseAccounts.GetReadOnlyKeysWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(databaseAccountGetReadOnlyKeysResult); DatabaseAccountListReadOnlyKeysResult databaseAccountListReadOnlyKeysResult = cosmosDBManagementClient.DatabaseAccounts.ListReadOnlyKeysWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(databaseAccountListReadOnlyKeysResult); cosmosDBManagementClient.DatabaseAccounts.RegenerateKeyWithHttpMessagesAsync(resourceGroupName, databaseAccountName, new DatabaseAccountRegenerateKeyParameters { KeyKind = "primary" }); cosmosDBManagementClient.DatabaseAccounts.RegenerateKeyWithHttpMessagesAsync(resourceGroupName, databaseAccountName, new DatabaseAccountRegenerateKeyParameters { KeyKind = "secondary" }); cosmosDBManagementClient.DatabaseAccounts.RegenerateKeyWithHttpMessagesAsync(resourceGroupName, databaseAccountName, new DatabaseAccountRegenerateKeyParameters { KeyKind = "primaryReadonly" }); cosmosDBManagementClient.DatabaseAccounts.RegenerateKeyWithHttpMessagesAsync(resourceGroupName, databaseAccountName, new DatabaseAccountRegenerateKeyParameters { KeyKind = "secondaryReadonly" }); DatabaseAccountListKeysResult databaseAccountListRegeneratedKeysResult = cosmosDBManagementClient.DatabaseAccounts.ListKeysWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; bool isNameExists = cosmosDBManagementClient.DatabaseAccounts.CheckNameExistsWithHttpMessagesAsync(databaseAccountName).GetAwaiter().GetResult().Body; Assert.True(isNameExists); cosmosDBManagementClient.DatabaseAccounts.DeleteWithHttpMessagesAsync(resourceGroupName, databaseAccountName); } }
public void MongoCRUDTests() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler1); bool isDatabaseNameExists = cosmosDBManagementClient.DatabaseAccounts.CheckNameExistsWithHttpMessagesAsync(databaseAccountName).GetAwaiter().GetResult().Body; DatabaseAccountGetResults databaseAccount = null; if (!isDatabaseNameExists) { DatabaseAccountCreateUpdateParameters databaseAccountCreateUpdateParameters = new DatabaseAccountCreateUpdateParameters { Location = location, Kind = DatabaseAccountKind.MongoDB, Locations = new List <Location> { { new Location(locationName: location) } } }; databaseAccount = cosmosDBManagementClient.DatabaseAccounts.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseAccountCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.Equal(databaseAccount.Name, databaseAccountName); } MongoDBDatabaseCreateUpdateParameters mongoDBDatabaseCreateUpdateParameters = new MongoDBDatabaseCreateUpdateParameters { Resource = new MongoDBDatabaseResource { Id = databaseName }, Options = new CreateUpdateOptions() }; MongoDBDatabaseGetResults mongoDBDatabaseGetResults = cosmosDBManagementClient.MongoDBResources.CreateUpdateMongoDBDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, mongoDBDatabaseCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.Equal(databaseName, mongoDBDatabaseGetResults.Name); Assert.NotNull(mongoDBDatabaseGetResults); MongoDBDatabaseGetResults mongoDBDatabaseGetResults1 = cosmosDBManagementClient.MongoDBResources.GetMongoDBDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBDatabaseGetResults1); Assert.Equal(databaseName, mongoDBDatabaseGetResults1.Name); VerifyEqualMongoDBDatabases(mongoDBDatabaseGetResults, mongoDBDatabaseGetResults1); MongoDBDatabaseCreateUpdateParameters mongoDBDatabaseCreateUpdateParameters2 = new MongoDBDatabaseCreateUpdateParameters { Resource = new MongoDBDatabaseResource { Id = databaseName2 }, Options = new CreateUpdateOptions { Throughput = sampleThroughput } }; MongoDBDatabaseGetResults mongoDBDatabaseGetResults2 = cosmosDBManagementClient.MongoDBResources.CreateUpdateMongoDBDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName2, mongoDBDatabaseCreateUpdateParameters2).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBDatabaseGetResults2); Assert.Equal(databaseName2, mongoDBDatabaseGetResults2.Name); IEnumerable <MongoDBDatabaseGetResults> mongoDBDatabases = cosmosDBManagementClient.MongoDBResources.ListMongoDBDatabasesWithHttpMessagesAsync(resourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBDatabases); ThroughputSettingsGetResults throughputSettingsGetResults = cosmosDBManagementClient.MongoDBResources.GetMongoDBDatabaseThroughputWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName2).GetAwaiter().GetResult().Body; Assert.NotNull(throughputSettingsGetResults); Assert.NotNull(throughputSettingsGetResults.Name); Assert.Equal(throughputSettingsGetResults.Resource.Throughput, sampleThroughput); Assert.Equal(mongoDatabaseThroughputType, throughputSettingsGetResults.Type); Dictionary <string, string> dict = new Dictionary <string, string>(); dict.Add("partitionKey", PartitionKind.Hash.ToString()); MongoDBCollectionCreateUpdateParameters mongoDBCollectionCreateUpdateParameters = new MongoDBCollectionCreateUpdateParameters { Resource = new MongoDBCollectionResource { Id = collectionName, ShardKey = dict }, Options = new CreateUpdateOptions() }; MongoDBCollectionGetResults mongoDBCollectionGetResults = cosmosDBManagementClient.MongoDBResources.CreateUpdateMongoDBCollectionWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, collectionName, mongoDBCollectionCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBCollectionGetResults); VerfiyMongoCollectionCreation(mongoDBCollectionGetResults, mongoDBCollectionCreateUpdateParameters); IEnumerable <MongoDBCollectionGetResults> mongoDBCollections = cosmosDBManagementClient.MongoDBResources.ListMongoDBCollectionsWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBCollections); foreach (MongoDBCollectionGetResults mongoDBCollection in mongoDBCollections) { cosmosDBManagementClient.MongoDBResources.DeleteMongoDBCollectionWithHttpMessagesAsync(resourceGroupName, databaseAccountName, databaseName, mongoDBCollection.Name); } foreach (MongoDBDatabaseGetResults mongoDBDatabase in mongoDBDatabases) { cosmosDBManagementClient.MongoDBResources.DeleteMongoDBDatabaseWithHttpMessagesAsync(resourceGroupName, databaseAccountName, mongoDBDatabase.Name); } } }
public override void ExecuteCmdlet() { if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = null; if (ParameterSetName.Equals(ResourceIdParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(ResourceId); } else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(InputObject.Id); } ResourceGroupName = resourceIdentifier.ResourceGroupName; Name = resourceIdentifier.ResourceName; } DatabaseAccountGetResults readDatabase = CosmosDBManagementClient.DatabaseAccounts.GetWithHttpMessagesAsync(ResourceGroupName, Name).GetAwaiter().GetResult().Body; DatabaseAccountUpdateParameters databaseAccountUpdateParameters = new DatabaseAccountUpdateParameters(locations: readDatabase.ReadLocations, location: readDatabase.WriteLocations.ElementAt(0).LocationName); databaseAccountUpdateParameters.EnableMultipleWriteLocations = EnableMultipleWriteLocations; databaseAccountUpdateParameters.IsVirtualNetworkFilterEnabled = EnableVirtualNetwork; databaseAccountUpdateParameters.EnableAutomaticFailover = EnableAutomaticFailover; if (!string.IsNullOrEmpty(DefaultConsistencyLevel)) { ConsistencyPolicy consistencyPolicy = new ConsistencyPolicy(); { switch (DefaultConsistencyLevel) { case "Strong": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Strong; break; case "Session": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Session; break; case "Eventual": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Eventual; break; case "ConsistentPrefix": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.ConsistentPrefix; break; case "BoundedStaleness": consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.BoundedStaleness; consistencyPolicy.MaxIntervalInSeconds = MaxStalenessIntervalInSeconds; consistencyPolicy.MaxStalenessPrefix = MaxStalenessPrefix; break; default: consistencyPolicy.DefaultConsistencyLevel = Management.CosmosDB.Models.DefaultConsistencyLevel.Session; break; } databaseAccountUpdateParameters.ConsistencyPolicy = consistencyPolicy; } } if (Tag != null) { Dictionary <string, string> tags = new Dictionary <string, string>(); foreach (string key in Tag.Keys) { tags.Add(key, Tag[key].ToString()); } databaseAccountUpdateParameters.Tags = tags; } if ((VirtualNetworkRule != null && VirtualNetworkRule.Length > 0) || (VirtualNetworkRuleObject != null && VirtualNetworkRuleObject.Length > 0)) { Collection <VirtualNetworkRule> virtualNetworkRule = new Collection <VirtualNetworkRule>(); foreach (string id in VirtualNetworkRule) { virtualNetworkRule.Add(new VirtualNetworkRule(id: id)); } foreach (PSVirtualNetworkRule psVirtualNetworkRule in VirtualNetworkRuleObject) { virtualNetworkRule.Add(PSVirtualNetworkRule.ConvertPSVirtualNetworkRuleToVirtualNetworkRule(psVirtualNetworkRule)); } databaseAccountUpdateParameters.VirtualNetworkRules = virtualNetworkRule; } if (IpRangeFilter != null && IpRangeFilter.Length > 0) { string IpRangeFilterAsString = null; for (int i = 0; i < IpRangeFilter.Length; i++) { if (i == 0) { IpRangeFilterAsString = IpRangeFilter[0]; } else { IpRangeFilterAsString = string.Concat(IpRangeFilterAsString, ",", IpRangeFilter[i]); } } databaseAccountUpdateParameters.IpRangeFilter = IpRangeFilterAsString; } if (ShouldProcess(Name, "Updating Database Account")) { DatabaseAccountGetResults cosmosDBAccount = CosmosDBManagementClient.DatabaseAccounts.UpdateWithHttpMessagesAsync(ResourceGroupName, Name, databaseAccountUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDatabaseAccount(cosmosDBAccount)); } return; }