Exemplo n.º 1
0
        public UpdateResult DoRollback(Guid UpdateInstructionID, Guid RollbackUpdateBackupID)
        {
            UpdateInstruction UpdateInstruction = _UpdateRepository.GetUpdateInstructionByID(UpdateInstructionID);
            UpdateBackupEntry UpdateBackupEntry = _UpdateRepository.GetUpdateBackupEntryFromUpdateID(UpdateInstruction, RollbackUpdateBackupID);

            string AnalyticsMessageResult = "";
            var    updateResultReturn     = new UpdateResult()
            {
                ID        = UpdateInstruction.ID,
                IsSuccess = false,
                //Message = "No update found. Nothing to update!",
                UpdateInstructionID = UpdateInstruction.ID
            };

            try
            {
                Version   CurrentVersionBeforeRollback = this.GetCurrentAssemblyVersion(UpdateInstruction);
                JobStatus JobStatus = _JobService.GetQueuePosition(new JobStatus()
                {
                    ID = UpdateInstruction.ID
                });

                updateResultReturn = ExecuteRollback(UpdateInstruction, UpdateBackupEntry);

                AnalyticsMessageResult = !updateResultReturn.IsSuccess ? $"Job '{JobStatus.QueuePosition}' Failed to rollback '{UpdateInstruction.Name}' from '{CurrentVersionBeforeRollback}' to '{UpdateBackupEntry.BackupVersion}'. Alepsed time is: {this.ConvertMillisecondsToTimeString(updateResultReturn.TimeSpentMilliseconds)}.\r\nSee details:\r\n\r\n{ JsonConvert.SerializeObject(updateResultReturn.Messages, Formatting.Indented)}"
                        : $"Job '{JobStatus.QueuePosition}' rollback success for product '{UpdateInstruction.Name}' from '{CurrentVersionBeforeRollback}' to '{UpdateBackupEntry.BackupVersion}'. Alepsed time is: {this.ConvertMillisecondsToTimeString(updateResultReturn.TimeSpentMilliseconds)}.";
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                _JobService.CreateUpdateJobStatus(new JobStatus()
                {
                    ID = UpdateInstruction.ID, CurrentStatus = JobStatusTyes.Completed
                });
            }

            this.SendAnalyticsData("UpdateService.DoRollback.Results", AnalyticsMessageResult);
            return(updateResultReturn);
        }