public DeployBatchRequest UpdateBatchDeploymentStatus(string deployBatchRequestId, EnumDeployStatus status, Exception err = null, string statusMessage = null, bool addToMessageHistory = true) { lock(_fileLocker) { var batchRequest = _deploymentRun.DeployBatchRequest; var oldStatus = batchRequest.Status; batchRequest.Status = status; switch (status) { case EnumDeployStatus.Success: case EnumDeployStatus.Error: batchRequest.CompleteDateTimeUtc = DateTime.UtcNow; break; case EnumDeployStatus.InProcess: batchRequest.ResumeRequested = false; break; case EnumDeployStatus.Cancelled: batchRequest.CancelRequested = false; break; } if (err != null) { batchRequest.ErrorDetails = err.ToString(); } if (addToMessageHistory) { batchRequest.MessageList.Add(statusMessage); } batchRequest.LastStatusMessage = statusMessage; batchRequest.UpdatedDateTimeUtc = DateTime.UtcNow; batchRequest.UpdatedByUserName = _userIdentity.UserName; this.SaveRunToFile(); } return _deploymentRun.DeployBatchRequest; }
public void SetStatus(EnumDeployStatus status) { this.StatusDisplayValue = EnumHelper.GetDisplayValue(status); switch(status) { case EnumDeployStatus.NotStarted: this.StatusIconImage = Properties.Resources.StatusAnnotations_Help_and_inconclusive_32xSM_color; break; case EnumDeployStatus.InProcess: this.StatusIconImage = Properties.Resources.StatusAnnotations_Play_32xSM_color; break; case EnumDeployStatus.Error: this.StatusIconImage = Properties.Resources.StatusAnnotations_Critical_32xSM_color; break; case EnumDeployStatus.Success: this.StatusIconImage = Properties.Resources.StatusAnnotations_Complete_and_ok_32xSM_color; break; default: this.StatusIconImage = Properties.Resources.StatusAnnotations_Alert_32xSM_color; break; } }
public DeployBatchRequest CreateBatchRequest(List<DeployBatchRequestItem> itemList, EnumDeployStatus status, string deploymentLabel) { if(itemList == null || itemList.Count == 0) { throw new ArgumentNullException("itemList"); } foreach (var item in itemList) { if(string.IsNullOrEmpty(item.Id)) { item.Id = Guid.NewGuid().ToString(); } } if(status == EnumDeployStatus.Unknown) { status = EnumDeployStatus.NotStarted; } string message = string.Format("{0} created deployment request with status of {1} at {2} UTC.", _userIdentity.UserName, EnumHelper.GetDisplayValue(status), DateTime.UtcNow); var request = new DeployBatchRequest { Id = Guid.NewGuid().ToString(), SubmittedDateTimeUtc = DateTime.UtcNow, SubmittedByUserName = _userIdentity.UserName, DeploymentLabel = deploymentLabel, ItemList = itemList, LastStatusMessage = message, Status = status, CreatedDateTimeUtc = DateTime.UtcNow, CreatedByUserName = _userIdentity.UserName, UpdatedDateTimeUtc = DateTime.UtcNow, UpdatedByUserName = _userIdentity.UserName }; request.MessageList.Add(message); _documentSession.StoreSaveEvict(request); return request; }
public DeployBatchRequest CreateDeployBatchRequest(List<DeployBatchRequestItem> itemList, EnumDeployStatus initialStatus, string deploymentLabel) { switch (initialStatus) { case EnumDeployStatus.Unknown: initialStatus = EnumDeployStatus.NotStarted; break; case EnumDeployStatus.NotStarted: case EnumDeployStatus.Requested: case EnumDeployStatus.OfflineRequested: //OK break; case EnumDeployStatus.Error: case EnumDeployStatus.InProcess: case EnumDeployStatus.Success: case EnumDeployStatus.Warning: throw new ArgumentException(EnumHelper.GetDisplayValue(initialStatus) + " is not a valid initial status for a batch deployment request"); default: throw new UnknownEnumValueException(initialStatus); } var request = _deployRepository.CreateBatchRequest(itemList, initialStatus, deploymentLabel); _projectNotifier.SendDeployRequestedNotification(request); return request; }
public DeployBatchRequest RequeueDeployment(string deployBatchRequestId, EnumDeployStatus enumDeployStatus, string statusMessage) { throw new NotSupportedException(); }
public DeployBatchRequest UpdateBatchDeploymentStatus(string deployBatchRequestId, EnumDeployStatus status, Exception err = null, string statusMessage = null, bool addToMessageHistory = true) { return _offlineDataProvider.UpdateBatchDeploymentStatus(deployBatchRequestId, status, err, statusMessage, addToMessageHistory); }
public DeployBatchRequest CreateBatchRequest(List<DeployBatchRequestItem> itemList, EnumDeployStatus status, string deploymentLabel) { throw new NotSupportedException(); }
private string BuildStatusChangeMessage(EnumDeployStatus newStatus, string userMessage) { string message = string.Format("{0} changed status to {1} at {2} UTC.", _userIdentity.UserName, EnumHelper.GetDisplayValue(newStatus), DateTime.UtcNow); if (!string.IsNullOrEmpty(userMessage) && userMessage != "null") { message += " Notes: " + userMessage; } return message; }
public DeployBatchRequest UpdateDeployBatchStatus(string deployBatchRequestId, EnumDeployStatus newStatus, string userMessage) { var item = _deployRepository.GetBatchRequest(deployBatchRequestId); _validator.ValidateStatusTransition(item.Status, newStatus); switch(newStatus) { case EnumDeployStatus.Approved: _projectNotifier.SendDeployApprovedNotification(item); break; case EnumDeployStatus.Rejected: _projectNotifier.SendDeployRejectedNotification(item); break; } string statusMessage = BuildStatusChangeMessage(newStatus, userMessage); return _deployRepository.UpdateBatchDeploymentStatus(deployBatchRequestId, newStatus, statusMessage:statusMessage); }
public DeployState UpdateDeploymentStatus(string deployStateId, EnumDeployStatus status, Exception err = null) { var state = _documentSession.LoadEnsure<DeployState>(deployStateId); if (state.MessageList == null || state.MessageList.Count == 0) { _documentSession.Advanced.Evict(state); state = _documentSession.LoadEnsure<DeployState>(deployStateId); } state.Status = status; switch (status) { case EnumDeployStatus.InProcess: if(state.Status == EnumDeployStatus.NotStarted || state.Status == EnumDeployStatus.Cancelled || state.DeploymentStartedDateTimeUtc.HasValue) { state.DeploymentStartedDateTimeUtc = DateTime.UtcNow; } break; case EnumDeployStatus.Success: case EnumDeployStatus.Error: if(!state.DeploymentCompleteDateTimeUtc.HasValue) { state.DeploymentCompleteDateTimeUtc = DateTime.UtcNow; } break; } if (err != null) { state.ErrorDetails = err.ToString(); } state.UpdatedDateTimeUtc = DateTime.UtcNow; state.UpdatedByUserName = _userIdentity.UserName; this._documentSession.SaveEvict(state); return state; }
public DeployState UpdateDeploymentStatus(string deployStateId, EnumDeployStatus status, Exception err = null) { var state = _offlineDataProvider.GetDeployState(deployStateId); state.Status = status; if (err != null) { var message = new DeployStateMessage { Id = Guid.NewGuid().ToString(), DateTimeUtc = DateTime.UtcNow, DeployStateId = state.Id, Message = "ERROR: " + err.ToString(), MessageUserName = _userIdentity.UserName }; state.MessageList.Add(message); state.ErrorDetails = err.ToString(); } state.UpdatedDateTimeUtc = DateTime.UtcNow; state.UpdatedByUserName = _userIdentity.UserName; _offlineDataProvider.SaveDeployState(state); return state; }
public DeployState UpdateDeploymentStatus(string deployStateId, EnumDeployStatus status, Exception err = null) { VerifyDeployStateExists(deployStateId); using(var db = _sqlConnectionInfo.GetDB()) { var sql = PetaPoco.Sql.Builder .Append("UPDATE DeployState") .Append("SET EnumDeployStatusID=@0, UpdatedByUserName=@1, UpdatedDateTimeUtc=@2", (int)status, _userIdentity.UserName, DateTime.UtcNow); if(err != null) { sql = sql.Append(", ErrorDetails=@0", err.ToString()); } switch (status) { case EnumDeployStatus.Success: case EnumDeployStatus.Error: sql = sql.Append(", DeploymentCompleteDateTimeUtc=ISNULL(DeploymentCompleteDateTimeUtc, @0)", DateTime.UtcNow); break; } sql = sql.Append("WHERE ID=@0", deployStateId); db.Execute(sql); } return GetDeployState(deployStateId); }
public void ValidateStatusTransition(EnumDeployStatus oldStatus, EnumDeployStatus newStatus) { //OK }
public DeployBatchRequest RequeueDeployment(string deployBatchRequestId, EnumDeployStatus newStatus, string userMessage) { var batchRequest = _documentSession.LoadEnsure<DeployBatchRequest>(deployBatchRequestId); string statusMessage = string.Format("{0} requested deployment to be requeued at {1} UTC", _userIdentity.UserName, DateTime.UtcNow); if (!string.IsNullOrEmpty(userMessage)) { statusMessage += ". Notes: " + userMessage; } batchRequest.Status = newStatus; batchRequest.StartedDateTimeUtc = null; batchRequest.LastStatusMessage = statusMessage; batchRequest.UpdatedDateTimeUtc = DateTime.UtcNow; batchRequest.UpdatedByUserName = _userIdentity.UserName; batchRequest.MessageList.Add(batchRequest.LastStatusMessage); this._documentSession.SaveEvict(batchRequest); return batchRequest; }