public DifferentialRestoreJobInfo(ClusterRecoveryJob jobInfo, ConfigurationServer configurationServer) { Cluster = string.Empty; Shard = string.Empty; _job = jobInfo; _parent = configurationServer; }
RecoveryOperationStatus IRecoveryManager.SubmitRecoveryJob(RecoveryConfiguration config, object additionalParams) { RecoveryOperationStatus state = new RecoveryOperationStatus(RecoveryStatus.Failure); state.Message = "Failure during submission state"; try { // Ensure the prereqs provided are valid RecoveryOperationStatus valid = this.EnsurePreRequisites(config, additionalParams); if (valid.Status == RecoveryStatus.Success) { // 1. create and register clustered job ClusterRecoveryJob _clusteredJob = new ClusterRecoveryJob(this.AssignJobUID(), config, this, _configurationStore); _clusteredJob.RegisterRecoveryCommunicationHandler(this); _runningClusteredJobMap.Add(_clusteredJob.JobIdentifier, _clusteredJob); state.JobIdentifier = _clusteredJob.JobIdentifier; // create rootfolder for recovery switch (config.JobType) { case RecoveryJobType.ConfigBackup: case RecoveryJobType.DataBackup: case RecoveryJobType.FullBackup: // RecoveryOperationStatus folderStatus = _clusteredJob.CreateRecoveryFolder(config.RecoveryPath, config.UserName, config.Password); if (folderStatus.Status == RecoveryStatus.Failure) { RemoveRunningJob(_clusteredJob.JobIdentifier); _clusteredJob.Dispose(); return(folderStatus); } break; } //2. call prepare for this job state = _clusteredJob.Initialize(config, additionalParams); //3. verify status if (state.Status == RecoveryStatus.Failure) { RemoveRunningJob(_clusteredJob.JobIdentifier); return(state); } if (state.Status == RecoveryStatus.Failure) { // remove job from active config RemoveRunningJob(_clusteredJob.JobIdentifier); return(state); } else { state = _clusteredJob.Start(config); } } else { state = valid; } } catch (Exception ex) { if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsErrorEnabled) { LoggerManager.Instance.RecoveryLogger.Error("RecoveryManager.Submit()", ex.ToString()); } state.Message = ex.Message; // log exception } return(state); }