internal ContinuousModeBackupPolicy(BackupPolicyType backupPolicyType, BackupPolicyMigrationState migrationState) : base(backupPolicyType, migrationState) { BackupPolicyType = backupPolicyType; }
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; } } } 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; }
internal BackupPolicy(BackupPolicyType policyType, BackupPolicyMigrationState migrationState) { PolicyType = policyType; MigrationState = migrationState; }
/// <summary> /// Constructor /// </summary> /// <param name="policyType"></param> protected BackupPolicy(BackupPolicyType policyType) { this.PolicyType = policyType; }
internal PeriodicModeBackupPolicy(BackupPolicyType policyType, BackupPolicyMigrationState migrationState, PeriodicModeProperties periodicModeProperties) : base(policyType, migrationState) { PeriodicModeProperties = periodicModeProperties; PolicyType = policyType; }