private string FormatRolloutInfoHeader(PSRollout rollout) { StringBuilder sb = new StringBuilder(); sb.InvariantAppend($"\n\nStatus: {rollout.Status}"); if (rollout.Status == RolloutCmdletBase.FailedStatus) { verboseBuilder.InvariantAppend(sb.ToString()); sb.Clear(); } sb.Append(RolloutCmdletBase.FormatRolloutDetails(rollout)); sb.AppendFormatWithLeftIndentAndNewLineIfNotNull( RolloutCmdletBase.NoIndent, "Total Retry Attempts", rollout.TotalRetryAttempts.HasValue && rollout.TotalRetryAttempts > 0 ? rollout.TotalRetryAttempts.Value.ToString(CultureInfo.InvariantCulture) : null); if (rollout.OperationInfo != null) { sb.AppendFormatWithLeftIndentAndNewLine(NoIndent, RolloutCmdletBase.FormatOperationInfo(rollout.OperationInfo, RolloutCmdletBase.NoIndent)); } return(sb.ToString()); }
private void PrintServiceUnits(PSServiceUnit serviceUnit, StringBuilder eb) { StringBuilder sb = new StringBuilder(); if (serviceUnit != null) { sb.AppendLine(); sb.AppendFormatWithLeftIndentAndNewLine( RolloutCmdletBase.ServiceUnitIndentFactor, $"ServiceUnit: {serviceUnit.Name}"); sb.AppendFormatWithLeftIndentAndNewLineIfNotNull( RolloutCmdletBase.StepIndentFactor, "TargetResourceGroup", serviceUnit.TargetResourceGroup); foreach (var step in serviceUnit.Steps) { if (step.Status != null && step.Status.Equals("Failed", StringComparison.OrdinalIgnoreCase)) { verboseBuilder.InvariantAppend(sb.ToString()); sb.Clear(); } sb.AppendLine(); sb.AppendFormatWithLeftIndentAndNewLine(RolloutCmdletBase.StepIndentFactor, $"Step: {step.Name}"); sb.AppendFormatWithLeftIndentAndNewLine(RolloutCmdletBase.StepPropertiesIndentFactor, $"Status: {step.Status}"); sb.AppendFormatWithLeftIndentAndNewLine(RolloutCmdletBase.StepPropertiesIndentFactor, $"StepGroup: {step.StepGroup}"); sb.AppendFormatWithLeftIndentAndNewLineIfNotNull( RolloutCmdletBase.StepPropertiesIndentFactor, "Message", RolloutCmdletBase.ActionMessagesToDisplayString(step.Messages)); if (step.OperationInfo != null) { string formatOperationInfo = RolloutCmdletBase.FormatOperationInfo(step.OperationInfo, RolloutCmdletBase.StepPropertiesIndentFactor); sb.Append(formatOperationInfo); } if (step.Status != null && step.Status.Equals("Failed", StringComparison.OrdinalIgnoreCase)) { verboseBuilder.InvariantAppend(sb.ToString()); eb.InvariantAppend(sb.ToString()); } else { verboseBuilder.InvariantAppend(sb.ToString()); } sb.Clear(); this.PrintResourceOperations(step.ResourceOperations, eb); } } }
protected static string FormatOperationInfo(PSBaseOperationInfo operationInfo, int indentFactor) { string formattedString = string.Empty; int indentFactorForDetails = indentFactor < int.MaxValue ? indentFactor + 1 : indentFactor; if (operationInfo != null) { StringBuilder sb = new StringBuilder(); var rolloutOperationInfo = operationInfo as PSRolloutOperationInfo; if (rolloutOperationInfo != null) { sb.AppendFormatWithLeftIndentAndNewLine(indentFactorForDetails, $"Retry Attempt: {rolloutOperationInfo.RetryAttempt}"); sb.AppendFormatWithLeftIndentAndNewLine(indentFactorForDetails, $"Skip Succeeded: {rolloutOperationInfo.SkipSucceededOnRetry}"); } var stepOperationInfo = operationInfo as PSStepOperationInfo; if (stepOperationInfo != null) { sb.AppendFormatWithLeftIndentAndNewLineIfNotNull(indentFactorForDetails, "DeploymentName", stepOperationInfo.DeploymentName); sb.AppendFormatWithLeftIndentAndNewLineIfNotNull(indentFactorForDetails, "CorrelationId", stepOperationInfo.CorrelationId); } if (operationInfo?.StartTime != null && operationInfo.StartTime.HasValue) { sb.AppendFormatWithLeftIndentAndNewLine(indentFactorForDetails, $"Start Time: {operationInfo.StartTime.Value.ToLocalTimeForUserDisplay()}"); } if (operationInfo?.EndTime != null && operationInfo.EndTime.HasValue) { sb.AppendFormatWithLeftIndentAndNewLine(indentFactorForDetails, $"End Time: {operationInfo.EndTime.Value.ToLocalTimeForUserDisplay()}"); if (operationInfo?.StartTime != null && operationInfo.StartTime.HasValue) { sb.AppendFormatWithLeftIndentAndNewLine( indentFactorForDetails, "Total Duration: {0}", (operationInfo.EndTime.Value - operationInfo.StartTime.Value).ToDisplayFormat()); } } sb.InvariantAppend(RolloutCmdletBase.FormatErrorInfo(operationInfo, indentFactorForDetails)); formattedString = sb.ToString(); if (!StringUtilities.IsNullOrWhiteSpace(formattedString)) { sb.Clear(); sb.AppendFormatWithLeftIndentAndNewLine(indentFactor, "Operation Info:"); formattedString = string.Concat(sb.ToString(), formattedString); } } return(formattedString); }
private static string FormatErrorInfo(PSBaseOperationInfo operationInfo, int indentFactor) { StringBuilder sb = new StringBuilder(); if (operationInfo != null && operationInfo.Error != null) { sb.AppendFormatWithLeftIndentAndNewLineIfNotNull( indentFactor, "Error", RolloutCmdletBase.AppendError(operationInfo.Error, indentFactor + 1)); sb.AppendFormatWithLeftIndentAndNewLineIfNotNull( indentFactor + 1, "Details", operationInfo.Error?.Details?.ToList().Select(e => RolloutCmdletBase.AppendError(e, indentFactor + 2)).ToCommaDelimitedString()); } return(sb.ToString()); }