Пример #1
0
        /// <summary>
        /// Asynchronously accesses the local machine's diagnostic information.
        /// </summary>
        /// <param name="level"></param>
        /// <returns>a DiagnosticStatus Task.</returns>
        private async Task <DiagnosticStatus> GetDiagnosticStatusObjectAsync(int level)
        {
            Task <SystemStatus>        systemStatus          = GetSystemStatusAsync(level);
            Task <ConfigurationStatus> configurationStatus   = GetConfigurationStatusAsync(level);
            Task <DependencyStatus>    depenedencyStatusTask = GetDependencyStatusAsync(level);
            Task <AccessStatus>        accessStatusTask      = GetAccessStatusAsync(level);

            var diagnosticStatus = new DiagnosticStatus
            {
                Level               = level,
                Unit                = "webserver",
                CreationTime        = DateTime.UtcNow,
                AccessStatus        = await accessStatusTask,
                SystemStatus        = await systemStatus,
                ConfigurationStatus = await configurationStatus,
                DependencyStatus    = await depenedencyStatusTask
            };

            List <int?> childStatusRatings = new List <int?>()
            {
                diagnosticStatus.SystemStatus?.StatusRating,
                diagnosticStatus.AccessStatus?.StatusRating,
                diagnosticStatus.ConfigurationStatus?.StatusRating,
                diagnosticStatus.DependencyStatus?.StatusRating
            };

            int?minStatus = childStatusRatings.Where(t => t.HasValue).Min();

            if (minStatus.HasValue)
            {
                diagnosticStatus.StatusRating = minStatus.Value;
            }

            return(diagnosticStatus);
        }
Пример #2
0
 public Diagnostic(DiagnosticStatus status, string type, string message, IReadOnlyList <Range> ranges)
 {
     this.Status  = status;
     this.Type    = type;
     this.Message = message;
     this.Ranges  = ranges;
 }
Пример #3
0
 /// <summary>
 ///   Инициализирует экземпляр передаваемыми параметрами
 /// </summary>
 /// <param name="name">Имя диагностируемой функции</param>
 /// <param name="url">URL диагностируемой функции, если применимо</param>
 /// <param name="status">Статус диагностики</param>
 /// <param name="version">Версия диагностируемой функции. Необязательное поле</param>
 /// <param name="error">Ошибка диагностики</param>
 /// <param name="isSkipResult">Пропустить результат диагностики</param>
 public DiagnosticInfo(
     string name, string url, DiagnosticStatus status = DiagnosticStatus.Ok, string version = "", string error = "", bool isSkipResult = false)
 {
     Name         = name;
     Url          = url;
     Version      = version;
     Status       = status;
     Error        = error;
     IsSkipResult = isSkipResult;
 }
Пример #4
0
        /// <summary>
        /// Queries each AWS node for local diagnostic status xml string.
        /// </summary>
        /// <param name="ipAddress"></param>
        /// <param name="level"></param>
        /// <returns>a Task<DiagnosticStatus>.</returns>
        private async Task <DiagnosticStatus> QueryAwsNode(string ipAddress, int level)
        {
            string              statusUrl = context.AppSettings.SettingsConfig.StatusUrl;
            string              uri       = $"http://{ipAddress}/{statusUrl}{level}";
            HttpClient          client    = new HttpClient();
            HttpResponseMessage response  = await client.GetAsync(uri);

            XmlSerializer serializer = new XmlSerializer(typeof(DiagnosticStatus));
            var           stream     = await response.Content.ReadAsStreamAsync();

            DiagnosticStatus status = (DiagnosticStatus)serializer.Deserialize(stream);

            return(status);
        }
Пример #5
0
        /// <summary>
        /// Asynchronously accesses the local machine's diagnostic information
        /// and serializes it as an XML string.
        /// </summary>
        /// <param name="level"></param>
        /// <returns>a Task<string> of a serialized DiagnosticStatus object.</returns>
        public async Task <string> GetDiagnosticStatusAsync(int level)
        {
            DiagnosticStatus diagnosticStatus = await GetDiagnosticStatusObjectAsync(level);

            return(Serialize(diagnosticStatus));
        }