public void WriteDatabaseRecord(DatabaseRecord databaseRecord, SmugglerProgressBase.DatabaseRecordProgress progress, AuthorizationStatus authorizationStatus) { _writer.WritePropertyName(nameof(databaseRecord.DatabaseName)); _writer.WriteString(databaseRecord.DatabaseName); _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Encrypted)); _writer.WriteBool(databaseRecord.Encrypted); _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Revisions)); WriteRevisions(databaseRecord.Revisions); _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Expiration)); WriteExpiration(databaseRecord.Expiration); _writer.WriteComma(); if (authorizationStatus == AuthorizationStatus.DatabaseAdmin) { _writer.WritePropertyName(nameof(databaseRecord.RavenConnectionStrings)); WriteRavenConnectionStrings(databaseRecord.RavenConnectionStrings); _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.SqlConnectionStrings)); WriteSqlConnectionStrings(databaseRecord.SqlConnectionStrings); _writer.WriteComma(); } _writer.WritePropertyName(nameof(databaseRecord.Client)); WriteClientConfiguration(databaseRecord.Client); }
public void WriteDatabaseRecord(DatabaseRecord databaseRecord, SmugglerProgressBase.DatabaseRecordProgress progress, AuthorizationStatus authorizationStatus) { var currentDatabaseRecord = _database.ReadDatabaseRecord(); var tasks = new List <Task>(); if (currentDatabaseRecord?.Revisions == null && databaseRecord?.Revisions != null) { if (_log.IsInfoEnabled) { _log.Info("Configuring revisions from smuggler"); } tasks.Add(_database.ServerStore.SendToLeaderAsync(new EditRevisionsConfigurationCommand(databaseRecord.Revisions, _database.Name))); progress.RevisionsConfigurationUpdated = true; } if (currentDatabaseRecord?.Expiration == null && databaseRecord?.Expiration != null) { if (_log.IsInfoEnabled) { _log.Info("Configuring expiration from smuggler"); } tasks.Add(_database.ServerStore.SendToLeaderAsync(new EditExpirationCommand(databaseRecord.Expiration, _database.Name))); progress.ExpirationConfigurationUpdated = true; } if (currentDatabaseRecord?.RavenConnectionStrings.Count == 0 && databaseRecord?.RavenConnectionStrings.Count > 0) { if (_log.IsInfoEnabled) { _log.Info("Configuring Raven connection strings configuration from smuggler"); } foreach (var connectionString in databaseRecord.RavenConnectionStrings) { tasks.Add(_database.ServerStore.SendToLeaderAsync(new PutRavenConnectionStringCommand(connectionString.Value, _database.Name))); } progress.RavenConnectionStringsUpdated = true; } if (currentDatabaseRecord?.SqlConnectionStrings.Count == 0 && databaseRecord?.SqlConnectionStrings.Count > 0) { if (_log.IsInfoEnabled) { _log.Info("Configuring SQL connection strings from smuggler"); } foreach (var connectionString in databaseRecord.SqlConnectionStrings) { tasks.Add(_database.ServerStore.SendToLeaderAsync(new PutSqlConnectionStringCommand(connectionString.Value, _database.Name))); } progress.SqlConnectionStringsUpdated = true; } if (currentDatabaseRecord?.Client == null && databaseRecord?.Client != null) { if (_log.IsInfoEnabled) { _log.Info("Configuring client configuration from smuggler"); } tasks.Add(_database.ServerStore.SendToLeaderAsync(new PutClientConfigurationCommand(databaseRecord.Client))); progress.ClientConfigurationUpdated = true; } foreach (var task in tasks) { AsyncHelpers.RunSync(() => task); } tasks.Clear(); }
public void WriteDatabaseRecord(DatabaseRecord databaseRecord, SmugglerProgressBase.DatabaseRecordProgress progress, AuthorizationStatus authorizationStatus, DatabaseRecordItemType databaseRecordItemType) { _writer.WritePropertyName(nameof(databaseRecord.DatabaseName)); _writer.WriteString(databaseRecord.DatabaseName); _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Encrypted)); _writer.WriteBool(databaseRecord.Encrypted); if (databaseRecordItemType.Contain(DatabaseRecordItemType.ConflictSolverConfig)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.ConflictSolverConfig)); WriteConflictSolver(databaseRecord.ConflictSolverConfig); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.Settings)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Settings)); WriteSettings(databaseRecord.Settings); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.Revisions)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Revisions)); WriteRevisions(databaseRecord.Revisions); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.Expiration)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Expiration)); WriteExpiration(databaseRecord.Expiration); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.Client)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Client)); WriteClientConfiguration(databaseRecord.Client); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.Sorters)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.Sorters)); WriteSorters(databaseRecord.Sorters); } switch (authorizationStatus) { case AuthorizationStatus.DatabaseAdmin: case AuthorizationStatus.Operator: case AuthorizationStatus.ClusterAdmin: if (databaseRecordItemType.Contain(DatabaseRecordItemType.RavenConnectionStrings)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.RavenConnectionStrings)); WriteRavenConnectionStrings(databaseRecord.RavenConnectionStrings); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.SqlConnectionStrings)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.SqlConnectionStrings)); WriteSqlConnectionStrings(databaseRecord.SqlConnectionStrings); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.PeriodicBackups)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.PeriodicBackups)); WritePeriodicBackups(databaseRecord.PeriodicBackups); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.ExternalReplications)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.ExternalReplications)); WriteExternalReplications(databaseRecord.ExternalReplications); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.RavenEtls)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.RavenEtls)); WriteRavenEtls(databaseRecord.RavenEtls); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.SqlEtls)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.SqlEtls)); WriteSqlEtls(databaseRecord.SqlEtls); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.HubPullReplications)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.HubPullReplications)); WriteHubPullReplications(databaseRecord.HubPullReplications); } if (databaseRecordItemType.Contain(DatabaseRecordItemType.SinkPullReplications)) { _writer.WriteComma(); _writer.WritePropertyName(nameof(databaseRecord.SinkPullReplications)); WriteSinkPullReplications(databaseRecord.SinkPullReplications); } break; } }
public void WriteDatabaseRecord(DatabaseRecord databaseRecord, SmugglerProgressBase.DatabaseRecordProgress progress, AuthorizationStatus authorizationStatus) { var currentDatabaseRecord = _database.ReadDatabaseRecord(); var tasks = new List <Task <(long Index, object Result)> >(); if (currentDatabaseRecord?.Revisions == null && databaseRecord?.Revisions != null) { if (_log.IsInfoEnabled) { _log.Info("Configuring revisions from smuggler"); } tasks.Add(_database.ServerStore.SendToLeaderAsync(new EditRevisionsConfigurationCommand(databaseRecord.Revisions, _database.Name))); progress.RevisionsConfigurationUpdated = true; } if (currentDatabaseRecord?.Expiration == null && databaseRecord?.Expiration != null) { if (_log.IsInfoEnabled) { _log.Info("Configuring expiration from smuggler"); } tasks.Add(_database.ServerStore.SendToLeaderAsync(new EditExpirationCommand(databaseRecord.Expiration, _database.Name))); progress.ExpirationConfigurationUpdated = true; } if (currentDatabaseRecord?.RavenConnectionStrings.Count == 0 && databaseRecord?.RavenConnectionStrings.Count > 0) { if (_log.IsInfoEnabled) { _log.Info("Configuring Raven connection strings configuration from smuggler"); } foreach (var connectionString in databaseRecord.RavenConnectionStrings) { tasks.Add(_database.ServerStore.SendToLeaderAsync(new PutRavenConnectionStringCommand(connectionString.Value, _database.Name))); } progress.RavenConnectionStringsUpdated = true; } if (currentDatabaseRecord?.SqlConnectionStrings.Count == 0 && databaseRecord?.SqlConnectionStrings.Count > 0) { if (_log.IsInfoEnabled) { _log.Info("Configuring SQL connection strings from smuggler"); } foreach (var connectionString in databaseRecord.SqlConnectionStrings) { tasks.Add(_database.ServerStore.SendToLeaderAsync(new PutSqlConnectionStringCommand(connectionString.Value, _database.Name))); } progress.SqlConnectionStringsUpdated = true; } if (currentDatabaseRecord?.Client == null && databaseRecord?.Client != null) { if (_log.IsInfoEnabled) { _log.Info("Configuring client configuration from smuggler"); } tasks.Add(_database.ServerStore.SendToLeaderAsync(new PutClientConfigurationCommand(databaseRecord.Client))); progress.ClientConfigurationUpdated = true; } if (tasks.Count == 0) { return; } long maxIndex = 0; foreach (var task in tasks) { var(index, _) = AsyncHelpers.RunSync(() => task); if (index > maxIndex) { maxIndex = index; } } AsyncHelpers.RunSync(() => _database.RachisLogIndexNotifications.WaitForIndexNotification(maxIndex, _database.ServerStore.Engine.OperationTimeout)); tasks.Clear(); }