public override string UpdateDatabaseRecord(DatabaseRecord record, long etag)
        {
            if (Watcher == null)
            {
                return(null);
            }

            if (Watcher.TaskId == 0)
            {
                Watcher.TaskId = etag;
            }
            else
            {
                //modified watcher, remove the old one
                ExternalReplication.RemoveWatcher(record.ExternalReplications, Watcher.TaskId);
            }
            //this covers the case of a new watcher and edit of an old watcher
            if (string.IsNullOrEmpty(Watcher.Name))
            {
                Watcher.Name = Watcher.GetDefaultTaskName();
            }
            record.EnsureTaskNameIsNotUsed(Watcher.Name);
            record.ExternalReplications.Add(Watcher);
            return(null);
        }
Example #2
0
 public override string UpdateDatabaseRecord(DatabaseRecord record, long etag)
 {
     record.EnsureTaskNameIsNotUsed(Configuration.Name);
     Configuration.TaskId = etag;
     Add(ref record.SqlEtls, Configuration);
     return(null);
 }
 public static void EnsureTaskNameIsNotUsed(DatabaseRecord record, string name)
 {
     try
     {
         record.EnsureTaskNameIsNotUsed(name);
     }
     catch (Exception e)
     {
         throw new RachisApplyException($"Task name `{name}` is already in use", e);
     }
 }
        public override void UpdateDatabaseRecord(DatabaseRecord record, long etag)
        {
            if (PullReplicationAsSink == null)
            {
                return;
            }

            if (PullReplicationAsSink.TaskId == 0)
            {
                PullReplicationAsSink.TaskId = etag;
            }
            else
            {
                // if new definition doesn't have certificate but there is old one with cert
                // it means we want to use existing cert or the server certificate
                if (PullReplicationAsSink.CertificateWithPrivateKey == null)
                {
                    if (UseServerCertificate == true)
                    {
                        PullReplicationAsSink.CertificateWithPrivateKey = null;
                    }
                    else
                    {
                        var existingDefinition = record.SinkPullReplications.Find(x => x.TaskId == PullReplicationAsSink.TaskId);
                        if (existingDefinition?.CertificateWithPrivateKey != null)
                        {
                            // retain existing certificate
                            PullReplicationAsSink.CertificateWithPrivateKey = existingDefinition.CertificateWithPrivateKey;
                            PullReplicationAsSink.CertificatePassword       = existingDefinition.CertificatePassword;
                        }
                    }
                }

                ExternalReplicationBase.RemoveExternalReplication(record.SinkPullReplications, PullReplicationAsSink.TaskId);
            }

            if (string.IsNullOrEmpty(PullReplicationAsSink.Name))
            {
                PullReplicationAsSink.Name = record.EnsureUniqueTaskName(PullReplicationAsSink.GetDefaultTaskName());
            }

            if (string.IsNullOrEmpty(PullReplicationAsSink.ConnectionStringName))
            {
                throw new ArgumentNullException(nameof(PullReplicationAsSink.ConnectionStringName));
            }

            record.EnsureTaskNameIsNotUsed(PullReplicationAsSink.Name);
            record.SinkPullReplications.Add(PullReplicationAsSink);
        }
        public override string UpdateDatabaseRecord(DatabaseRecord record, long etag)
        {
            if (Definition.TaskId == 0)
            {
                Definition.TaskId = etag;
            }
            else
            {
                PullReplicationDefinition.RemoveHub(record.HubPullReplications, Definition.TaskId);
            }

            record.EnsureTaskNameIsNotUsed(Definition.Name);
            record.HubPullReplications.Add(Definition);
            return(null);
        }
        public override string UpdateDatabaseRecord(DatabaseRecord record, long etag)
        {
            if (Configuration.TaskId == 0)
            {
                // this is a new backup configuration
                Configuration.TaskId = etag;
                if (string.IsNullOrEmpty(Configuration.Name))
                {
                    Configuration.Name = Configuration.GetDefaultTaskName();
                }
                record.EnsureTaskNameIsNotUsed(Configuration.Name);
            }

            record.AddPeriodicBackupConfiguration(Configuration);
            return(null);
        }
Example #7
0
        protected void Add(ref List <T> etls, DatabaseRecord record, long etag)
        {
            if (string.IsNullOrEmpty(Configuration.Name))
            {
                Configuration.Name = record.EnsureUniqueTaskName(Configuration.GetDefaultTaskName());
            }

            record.EnsureTaskNameIsNotUsed(Configuration.Name);

            Configuration.TaskId = etag;

            if (etls == null)
            {
                etls = new List <T>();
            }

            etls.Add(Configuration);
        }
        public override void UpdateDatabaseRecord(DatabaseRecord record, long etag)
        {
            if (Definition.TaskId == 0)
            {
                Definition.TaskId = etag;
            }
            else
            {
                foreach (var task in record.HubPullReplications)
                {
                    if (task.TaskId != Definition.TaskId)
                    {
                        continue;
                    }
                    record.HubPullReplications.Remove(task);
                    break;
                }
            }

            record.EnsureTaskNameIsNotUsed(Definition.Name);
            record.HubPullReplications.Add(Definition);
        }
        public override string UpdateDatabaseRecord(DatabaseRecord record, long etag)
        {
            if (Configuration.TaskId == 0)
            {
                // this is a new backup configuration
                Configuration.TaskId = etag;
            }
            else
            {
                // modified periodic backup, remove the old one
                record.DeletePeriodicBackupConfiguration(Configuration.TaskId);
            }

            if (string.IsNullOrEmpty(Configuration.Name))
            {
                Configuration.Name = record.EnsureUniqueTaskName(Configuration.GetDefaultTaskName());
            }

            record.EnsureTaskNameIsNotUsed(Configuration.Name);

            record.PeriodicBackups.Add(Configuration);
            return(null);
        }