public void RunComputeCloudExceptionTests()
        {
            // Message Only
            var ex1 = new Rest.Azure.CloudException("Test1");
            var cx1 = new ComputeCloudException(ex1);
            Assert.True(string.Equals(cx1.Message, ex1.Message));
            Assert.True(cx1.InnerException is Rest.Azure.CloudException);
            Assert.True(string.Equals(cx1.InnerException.Message, ex1.Message));

            // Message + Inner Exception
            var ex2 = new Rest.Azure.CloudException("Test2", ex1);
            var cx2 = new ComputeCloudException(ex2);
            Assert.True(string.Equals(cx2.Message, ex2.Message));
            Assert.True(cx2.InnerException is Rest.Azure.CloudException);
            Assert.True(string.Equals(cx2.InnerException.Message, ex2.Message));

            // Empty Message
            var ex3 = new Rest.Azure.CloudException(string.Empty);
            var cx3 = new ComputeCloudException(ex3);
            Assert.True(string.IsNullOrEmpty(cx3.Message));
            Assert.True(cx3.InnerException is Rest.Azure.CloudException);
            Assert.True(string.IsNullOrEmpty(cx3.InnerException.Message));

            // Default message is used, if 'null' passed to the constructor.
            var ex4 = new Rest.Azure.CloudException(null);
            var cx4 = new ComputeCloudException(ex4);
            Assert.True(!string.IsNullOrEmpty(cx4.Message));
            Assert.True(cx4.InnerException is Rest.Azure.CloudException);
            Assert.True(!string.IsNullOrEmpty(cx4.InnerException.Message));

            ComputeTestController.NewInstance.RunPsTest("Run-ComputeCloudExceptionTests");
        }
Пример #2
0
        protected static string GetErrorMessageWithRequestIdInfo(Rest.Azure.CloudException cloudException)
        {
            if (cloudException == null)
            {
                throw new ArgumentNullException("cloudException");
            }

            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(cloudException.Message))
            {
                sb.Append(cloudException.Message);
            }

            if (cloudException.Response == null)
            {
                return(sb.ToString());
            }

            if (cloudException.Response.StatusCode.Equals(HttpStatusCode.OK) &&
                cloudException.Response.Content != null)
            {
                var errorReturned = JsonConvert.DeserializeObject <ComputeLongRunningOperationError>(cloudException.Response.Content);

                sb.AppendLine().AppendFormat("StartTime: {0}", errorReturned.StartTime);
                sb.AppendLine().AppendFormat("EndTime: {0}", errorReturned.EndTime);
                sb.AppendLine().AppendFormat("OperationID: {0}", errorReturned.OperationId);
                sb.AppendLine().AppendFormat("Status: {0}", errorReturned.Status);
                if (errorReturned.Error == null)
                {
                    return(sb.ToString());
                }

                sb.AppendLine().AppendFormat("ErrorCode: {0}", errorReturned.Error.Code);
                sb.AppendLine().AppendFormat("ErrorMessage: {0}", errorReturned.Error.Message);
            }
            else
            {
                sb.AppendLine().AppendFormat("StatusCode: {0}", cloudException.Response.StatusCode.GetHashCode());
                sb.AppendLine().AppendFormat("ReasonPhrase: {0}", cloudException.Response.ReasonPhrase);

                if (cloudException.Response.Headers == null ||
                    !cloudException.Response.Headers.ContainsKey(RequestIdHeaderInResponse))
                {
                    return(sb.ToString());
                }

                var headers = cloudException.Response.Headers;

                var match = Regex.Match(headers.ToString(),
                                        @"x-ms-request-id: ([a-z0-9]{8}\-[a-z0-9]{4}\-[a-z0-9]{4}\-[a-z0-9]{4}\-[a-z0-9]{12})",
                                        RegexOptions.IgnoreCase);
                string operationId = (match.Success) ? match.Groups[1].Value : "";

                sb.AppendLine().AppendFormat(
                    "OperationID : '{0}'",
                    operationId);
            }
            return(sb.ToString());
        }
        protected static string GetErrorMessageWithRequestIdInfo(Rest.Azure.CloudException cloudException)
        {
            if (cloudException == null)
            {
                throw new ArgumentNullException("cloudException");
            }

            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(cloudException.Message))
            {
                sb.Append(cloudException.Message);
            }

            if (cloudException.Response == null)
            {
                return(sb.ToString());
            }

            if (cloudException.Response.StatusCode.Equals(HttpStatusCode.OK) &&
                cloudException.Response.Content != null)
            {
                var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(
                    cloudException.Response.Content);

                sb.AppendLine().AppendFormat("StartTime: {0}", errorReturned.StartTime);
                sb.AppendLine().AppendFormat("EndTime: {0}", errorReturned.EndTime);
                sb.AppendLine().AppendFormat("OperationID: {0}", errorReturned.OperationId);
                sb.AppendLine().AppendFormat("Status: {0}", errorReturned.Status);
                if (errorReturned.Error == null)
                {
                    return(sb.ToString());
                }

                sb.AppendLine().AppendFormat("ErrorCode: {0}", errorReturned.Error.Code);
                sb.AppendLine().AppendFormat("ErrorMessage: {0}", errorReturned.Error.Message);
            }
            else
            {
                sb.AppendLine().AppendFormat("StatusCode: {0}", cloudException.Response.StatusCode.GetHashCode());
                sb.AppendLine().AppendFormat("ReasonPhrase: {0}", cloudException.Response.ReasonPhrase);
                if (cloudException.Response.Headers == null ||
                    !cloudException.Response.Headers.ContainsKey(RequestIdHeaderInResponse))
                {
                    return(sb.ToString());
                }

                string operationId = cloudException.RequestId;

                sb.AppendLine().AppendFormat(
                    "OperationID : '{0}'",
                    operationId);
            }
            return(sb.ToString());
        }
 public static Rest.Azure.CloudException CreateFormattedException(this Rest.Azure.CloudException cloudException)
 {
     return(new Rest.Azure.CloudException(
                string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.FormattedCloudExceptionMessageTemplate,
                    cloudException.Response.StatusCode,
                    cloudException.Message,
                    cloudException.RequestId,
                    DateTime.UtcNow)));
 }
Пример #5
0
        protected override void WriteExceptionError(Exception exception)
        {
            // Override the default error message into a formatted message which contains Request Id
            Rest.Azure.CloudException cloudException = exception as Rest.Azure.CloudException;
            if (cloudException != null)
            {
                exception = cloudException.CreateFormattedException();
            }

            base.WriteExceptionError(exception);
        }
Пример #6
0
        /// <summary>
        /// Gets the error message with request identifier information.
        /// </summary>
        /// <param name="cloudException">The cloud exception.</param>
        /// <returns>System.String.</returns>
        protected static string GetErrorMessageWithRequestIdInfo(Rest.Azure.CloudException cloudException)
        {
            if (cloudException == null)
            {
                return(StorageSyncResources.CloudNoInformationError);
            }

            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(cloudException.Message))
            {
                sb.Append(cloudException.Message);
            }

            if (cloudException.Response == null)
            {
                return(sb.ToString());
            }

            if (cloudException.Response.Content != null)
            {
                StorageSyncError storageSyncError = JsonConvert.DeserializeObject <StorageSyncError>(cloudException.Response.Content);

                if (storageSyncError.Error != null)
                {
                    sb.AppendLine().AppendFormat($"{nameof(storageSyncError.Error.Code)}: {storageSyncError.Error.Code}");
                    sb.AppendLine().AppendFormat($"{nameof(storageSyncError.Error.Message)}: {storageSyncError.Error.Message}");
                    sb.AppendLine().AppendFormat($"{nameof(storageSyncError.Error.Target)}: {storageSyncError.Error.Target}");
                }
            }

            if (!cloudException.Response.StatusCode.Equals(HttpStatusCode.OK))
            {
                sb.AppendLine().AppendFormat($"{nameof(cloudException.Response.StatusCode)}: {cloudException.Response.StatusCode.GetHashCode()}");
                sb.AppendLine().AppendFormat($"{nameof(cloudException.Response.ReasonPhrase)}: {cloudException.Response.ReasonPhrase}");

                if (cloudException.Response.Headers == null ||
                    !cloudException.Response.Headers.ContainsKey(RequestIdHeaderInResponse))
                {
                    return(sb.ToString());
                }

                sb.AppendLine().AppendFormat($"{nameof(cloudException.RequestId)} : {cloudException.RequestId}");
            }

            return(sb.ToString());
        }
        protected override void WriteExceptionError(Exception exception)
        {
            // Override the default error message into a formatted message which contains Request Id
            Rest.Azure.CloudException cloudException = exception as Rest.Azure.CloudException;
            if (cloudException != null)
            {
                exception = cloudException.CreateFormattedException();
            }

            // Override the default error message so it will include information passed from Backend
            Management.OperationalInsights.Models.ErrorResponseException errorException = exception as Management.OperationalInsights.Models.ErrorResponseException;
            if (errorException != null)
            {
                exception = new Exception(string.Format("{0}\n{1}", errorException.Message, errorException.Response.ReasonPhrase), errorException);
            }
            base.WriteExceptionError(exception);
        }
Пример #8
0
 public override void ExecuteCmdlet()
 {
     base.ExecuteCmdlet();
     try
     {
         Execute();
     }
     catch (Rest.Azure.CloudException ex)
     {
         throw new NetworkCloudException(ex);
     }
     catch (Microsoft.Azure.Management.Network.Models.ErrorException ex)
     {
         Rest.Azure.CloudException rex = NetworkResourceManagerProfile.Mapper.Map <Rest.Azure.CloudException>(ex);
         throw new NetworkCloudException(rex);
     }
 }
        protected static string GetErrorMessageWithRequestIdInfo(Rest.Azure.CloudException cloudException)
        {
            if (cloudException == null)
            {
                return("No information in the cloud exception.");
            }

            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(cloudException.Message))
            {
                sb.Append(cloudException.Message);
            }

            if (cloudException.Response == null)
            {
                return(sb.ToString());
            }

            if (!cloudException.Response.StatusCode.Equals(HttpStatusCode.OK))
            {
                sb.AppendLine().AppendFormat("StatusCode: {0}", cloudException.Response.StatusCode.GetHashCode());
                sb.AppendLine().AppendFormat("ReasonPhrase: {0}", cloudException.Response.ReasonPhrase);
                if (cloudException.Response.Headers == null ||
                    !cloudException.Response.Headers.ContainsKey(RequestIdHeaderInResponse))
                {
                    return(sb.ToString());
                }

                string operationId = cloudException.RequestId;

                sb.AppendLine().AppendFormat(
                    "OperationID : {0}",
                    operationId);
            }
            return(sb.ToString());
        }
Пример #10
0
 public ComputeCloudException(Rest.Azure.CloudException ex)
     : base(GetErrorMessageWithRequestIdInfo(ex), ex)
 {
 }
Пример #11
0
        protected static string GetErrorMessageWithRequestIdInfo(Rest.Azure.CloudException cloudException)
        {
            if (cloudException == null)
            {
                throw new ArgumentNullException("cloudException");
            }

            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(cloudException.Message))
            {
                sb.Append(cloudException.Message);
            }

            if (cloudException.Response != null)
            {
                sb.AppendLine().AppendFormat("StatusCode: {0}", cloudException.Response.StatusCode.GetHashCode());

                if (cloudException.Response.ReasonPhrase != null)
                {
                    sb.AppendLine().AppendFormat("ReasonPhrase: {0}", cloudException.Response.ReasonPhrase);
                }

                if (cloudException.Response.Content != null)
                {
                    var errorReturned = JsonConvert.DeserializeObject <PSNetworkLongRunningOperation>(
                        cloudException.Response.Content);

                    if (!string.IsNullOrEmpty(errorReturned.Status))
                    {
                        sb.AppendLine().AppendFormat("Status: {0}", errorReturned.Status);
                    }

                    if (errorReturned.Error != null)
                    {
                        if (!string.IsNullOrEmpty(errorReturned.Error.Code))
                        {
                            sb.AppendLine().AppendFormat("ErrorCode: {0}", errorReturned.Error.Code);
                        }

                        if (!string.IsNullOrEmpty(errorReturned.Error.Target))
                        {
                            sb.AppendLine().AppendFormat("Target: {0}", errorReturned.Error.Target);
                        }

                        if (!string.IsNullOrEmpty(errorReturned.Error.Message))
                        {
                            sb.AppendLine().AppendFormat("ErrorMessage: {0}", errorReturned.Error.Message);
                        }
                    }
                }
            }

            if (cloudException.Body != null && cloudException.Body.Details != null)
            {
                if (cloudException.Body.Details.Count != 0)
                {
                    sb.AppendLine().Append("Additional details:");

                    for (int i = 0, l = cloudException.Body.Details.Count; i < l; i++)
                    {
                        var    details = cloudException.Body.Details[i];
                        string index   = l == 1 ? string.Empty : string.Format("{0}. ", i + 1);

                        if (!string.IsNullOrEmpty(details.Code))
                        {
                            sb.AppendLine().AppendFormat("    {0}Code: {1}", index, details.Code);
                        }

                        if (!string.IsNullOrEmpty(details.Message))
                        {
                            sb.AppendLine().AppendFormat("    {0}Message: {1}", index, details.Message);
                        }
                    }
                }
            }

            if (!string.IsNullOrEmpty(cloudException.RequestId))
            {
                sb.AppendLine().AppendFormat("OperationID : {0}", cloudException.RequestId);
            }

            return(sb.ToString());
        }
 public ResourceManagerCloudException(Rest.Azure.CloudException ex)
     : base(GetErrorMessageWithRequestIdInfo(ex), ex)
 {
 }
Пример #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StorageSyncCloudException" /> class.
 /// </summary>
 /// <param name="ex">The ex.</param>
 public StorageSyncCloudException(Rest.Azure.CloudException ex)
     : base(GetErrorMessageWithRequestIdInfo(ex), ex)
 {
 }
 public MaintenanceCloudException(Rest.Azure.CloudException ex)
     : base(GetErrorMessageWithRequestIdInfo(ex), ex)
 {
 }