public IEnumerable <MetricAlert> Get(string account, string id, [FromUri] AlertsQuery query, string originId = null)
        {
            var config = App.Config.GetMediaServicesSet(account);

            if (config == null)
            {
                throw new HttpResponseException(System.Net.HttpStatusCode.NotFound);
            }

            var channelAlerts = Get(config, id, query);

            if (originId != null && (query.MetricTypes == null || query.MetricTypes.Contains(MetricType.Origin)))
            {
                try
                {
                    query.MetricTypes = null;
                    var originAlerts = GetOriginAlerts(config, originId, query);
                    if (originAlerts != null)
                    {
                        channelAlerts = channelAlerts.Concat(originAlerts);
                    }
                }catch (Exception qryEx)
                {
                    throw qryEx;
                }
            }
            return((channelAlerts != null)? channelAlerts : new List <MetricAlert>());
        }
Exemplo n.º 2
0
        protected bool ValidateQuery(AlertsQuery query)
        {
            if (query != null)
            {
                if (query.EndTime != default(DateTime))
                {
                    query.EndTime = query.EndTime.ToUniversalTime();
                }
                else
                {
                    query.EndTime = DateTime.UtcNow;
                }

                if (query.StartTime != default(DateTime))
                {
                    query.StartTime = query.StartTime.ToUniversalTime();
                }
                else
                {
                    query.StartTime = query.EndTime.AddHours(-1);
                }

                if (query.EndTime <= query.StartTime)
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 3
0
        //accounts/nbcsgliveprodwestms/channelalerts/01fb2778-02c5-4247-9ac3-50169126fa47
        public IEnumerable <MetricAlert> Get(string account, string id, [FromUri] AlertsQuery query)
        {
            var config = App.Config.GetMediaServicesSet(account);

            if (config == null)
            {
                throw new HttpResponseException(System.Net.HttpStatusCode.NotFound);
            }

            return(Get(config, id, query));
        }
        public IActionResult Get(string account, string id, [FromQuery] AlertsQuery query)
        {
            var config = App.Config.GetMediaServicesSet(account);

            if (config == null)
            {
                return(NotFound());
            }

            if (!ValidateQuery(query))
            {
                return(BadRequest());
            }

            return(Ok(Get(config, id, query)));
        }
Exemplo n.º 5
0
        public IEnumerable <MetricAlert> Get(string account, string id, [FromUri] AlertsQuery query, string originId = null)
        {
            var config = App.Config.GetMediaServicesSet(account);

            if (config == null)
            {
                throw new HttpResponseException(System.Net.HttpStatusCode.NotFound);
            }

            var channelAlerts = Get(config, id, query);

            if (originId != null && (query.MetricTypes == null || query.MetricTypes.Contains(MetricType.Origin)))
            {
                query.MetricTypes = null;
                channelAlerts     = channelAlerts.Concat(GetOriginAlerts(config, originId, query));
            }
            return(channelAlerts.OrderByDescending(alert => alert.Date));
        }
Exemplo n.º 6
0
        public void GetOriginAlertsTest()
        {
            var account        = App.Config.GetDefaultAccount();
            var context        = account.GetContext();
            var origins        = context.StreamingEndpoints.ToList();
            var runningOrigins = origins.Where(s => s.State == StreamingEndpointState.Running);
            var controller     = new OriginAlertsController();

            var query = new AlertsQuery
            {
                EndTime      = DateTime.UtcNow,
                StartTime    = DateTime.UtcNow - TimeSpan.FromHours(1),
                StatusLevels = new[] { HealthStatus.Warning, HealthStatus.Critical }
            };

            foreach (var origin in runningOrigins)
            {
                var alerts = controller.Get(account.AccountName, origin.Id.NimbusIdToRawGuid(), query).ToList();
                Trace.TraceInformation("Channe:{0}, Alerts:{1}", origin.Id, alerts.Count);
            }
        }
Exemplo n.º 7
0
        public void GetChannelAlertsWithTimeRangeTest()
        {
            var account         = App.Config.GetDefaultAccount();
            var context         = account.GetContext();
            var channels        = context.Channels.ToList();
            var runningChannels = channels.Where(c => c.State == ChannelState.Running);
            var controller      = new ChannelAlertsController();

            var query = new AlertsQuery
            {
                EndTime      = DateTime.UtcNow,
                StartTime    = DateTime.UtcNow - TimeSpan.FromHours(1),
                MetricTypes  = new[] { MetricType.Archive, MetricType.Encoding, MetricType.Ingest },
                StatusLevels = new [] { HealthStatus.Warning, HealthStatus.Critical }
            };

            foreach (var channel in runningChannels)
            {
                var alerts = controller.Get(account.AccountName, channel.Id.NimbusIdToRawGuid(), query).ToList();
                Trace.TraceInformation("Channe:{0}, Alerts:{1}", channel.Id, alerts.Count);
            }
        }
Exemplo n.º 8
0
        public IActionResult Get(string account, string id, [FromQuery] AlertsQuery query, string originId = null)
        {
            var config = App.Config.GetMediaServicesSet(account);

            if (config == null)
            {
                return(NotFound());
            }

            if (!ValidateQuery(query))
            {
                return(BadRequest());
            }

            var channelAlerts = Get(config, id, query);

            if (originId != null && (query.MetricTypes == null || query.MetricTypes.Contains(MetricType.Origin)))
            {
                try
                {
                    query.MetricTypes = null;
                    var originAlerts = GetOriginAlerts(config, originId, query);
                    if (originAlerts != null)
                    {
                        channelAlerts = channelAlerts.Concat(originAlerts);
                    }
                }
                catch (Exception qryEx)
                {
                    throw qryEx;
                }
            }

            var alerts = channelAlerts ?? new List <MetricAlert>();

            return(Ok(alerts));
        }
        internal List <MetricAlert> Get(MediaServicesSetConfig config, string originId, AlertsQuery query)
        {
            //var origId = originId.GuidToOriginId();
            var originAlerts = GetAlertsFromCache <OriginAlert>(originId);

            if (originAlerts == null)
            {
                var dataAccess = new AzureDataAccess(config.DataStorageConnections);
                if (query.StatusLevels == null)
                {
                    originAlerts = dataAccess.GetOriginAlerts(originId);
                }
                else
                {
                    originAlerts = dataAccess.GetOriginAlerts(originId, query.StatusLevels);
                }
            }

            List <MetricAlert> alerts = new List <MetricAlert>();

            if (originAlerts != null && originAlerts.Count > 0)
            {
                foreach (var orgAlt in originAlerts)
                {
                    alerts.Add(new MetricAlert
                    {
                        AlertID     = orgAlt.AlertID,
                        Name        = orgAlt.OriginName,
                        Date        = orgAlt.AlertDate.AddTicks(orgAlt.AlertTime.Ticks),
                        Description = orgAlt.Details,
                        Status      = orgAlt.ErrorLevel
                    });
                }
            }

            return(alerts);
        }
Exemplo n.º 10
0
        private IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string channelId, AlertsQuery query)
        {
            var endTime   = DateTime.UtcNow;
            var startTime = endTime.AddHours(-1);

            HealthStatus[] healthLevels = null;
            MetricType[]   metricTypes  = null;

            if (query != null)
            {
                if (query.StartTime != default(DateTime))
                {
                    startTime = query.StartTime.ToUniversalTime();
                }
                if (query.EndTime != default(DateTime))
                {
                    endTime = query.EndTime.ToUniversalTime();
                }
                if (endTime <= startTime)
                {
                    throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest);
                }
                metricTypes  = query.MetricTypes;
                healthLevels = query.StatusLevels;
            }

            var chid        = channelId.GuidToChannelId();
            var alertstring = CloudCache.Get(chid + "Alerts");
            List <ChannelAlert> channelAlerts;

            if (alertstring != null)
            {
                channelAlerts = JsonConvert.DeserializeObject <List <ChannelAlert> >(alertstring);
            }
            else
            {
                var dataAccess = new AzureDataAccess(config.DataStorageConnections);
                channelAlerts = dataAccess.ExecuteReadQuery(context =>
                {
                    var dbAlerts = context.ChannelAlerts.Where(alert =>
                                                               alert.ChannelId == channelId &&
                                                               alert.Timestamp >= startTime &&
                                                               alert.Timestamp <= endTime);

                    if (healthLevels != null)
                    {
                        var predicate = CreatePredicate(healthLevels, "ErrorLevel");
                        dbAlerts      = dbAlerts.Where(predicate);
                    }

                    if (metricTypes != null)
                    {
                        var condition = CreatePredicate(metricTypes, "MetricType");
                        dbAlerts      = dbAlerts.Where(condition);
                    }
                    return(dbAlerts.ToList());
                });
            }

            IEnumerable <MetricAlert> alerts = null;

            if (channelAlerts != null)
            {
                alerts = channelAlerts.Select(alert => new MetricAlert
                {
                    Name        = alert.ChannelId,
                    Date        = alert.Timestamp,
                    Description = alert.Details,
                    Status      = alert.ErrorLevel
                });
            }
            return(alerts);
        }
Exemplo n.º 11
0
        private IEnumerable <MetricAlert> GetOriginAlerts(MediaServicesSetConfig config, string originId, AlertsQuery query)
        {
            var controller = new OriginAlertsController();

            return(controller.Get(config, originId, query));
        }
Exemplo n.º 12
0
        internal IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string originId, AlertsQuery query)
        {
            var endTime   = DateTime.UtcNow;
            var startTime = endTime.AddHours(-1);

            HealthStatus[] healthLevels = null;

            if (query != null)
            {
                if (query.StartTime != default(DateTime))
                {
                    startTime = query.StartTime.ToUniversalTime();
                }
                if (query.EndTime != default(DateTime))
                {
                    endTime = query.EndTime.ToUniversalTime();
                }
                if (endTime <= startTime)
                {
                    throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest);
                }
                healthLevels = query.StatusLevels;
            }

            //var origId = originId.GuidToOriginId();
            string             alertstring = CloudCache.Get(originId + "Alerts");
            List <OriginAlert> originAlerts;

            if (alertstring != null)
            {
                originAlerts = JsonConvert.DeserializeObject <List <OriginAlert> >(alertstring);
            }
            else
            {
                var dataAccess = new AzureDataAccess(config.DataStorageConnections);
                if (healthLevels == null)
                {
                    originAlerts = dataAccess.GetOriginAlerts(originId);
                }
                else
                {
                    originAlerts = dataAccess.GetOriginAlerts(originId, healthLevels);
                }
            }

            List <MetricAlert> alerts = new List <MetricAlert>();

            if (originAlerts != null && originAlerts.Count > 0)
            {
                foreach (var orgAlt in originAlerts)
                {
                    alerts.Add(new MetricAlert
                    {
                        AlertID     = orgAlt.AlertID,
                        Name        = orgAlt.OriginName,
                        Date        = orgAlt.AlertDate.AddTicks(orgAlt.AlertTime.Ticks),
                        Description = orgAlt.Details,
                        Status      = orgAlt.ErrorLevel
                    });
                }
            }
            return(alerts);
        }
        private IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string channelId, AlertsQuery query)
        {
            var endTime   = DateTime.UtcNow;
            var startTime = endTime.AddHours(-1);

            HealthStatus[] healthLevels = null;
            MetricType[]   metricTypes  = null;

            if (query != null)
            {
                if (query.StartTime != default(DateTime))
                {
                    startTime = query.StartTime.ToUniversalTime();
                }
                if (query.EndTime != default(DateTime))
                {
                    endTime = query.EndTime.ToUniversalTime();
                }
                if (endTime <= startTime)
                {
                    throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest);
                }
                metricTypes  = query.MetricTypes;
                healthLevels = query.StatusLevels;
            }

            var    chid        = channelId.NimbusIdToGuid();
            string alertstring = CloudCache.Get(chid + "Alerts");
            List <ChannelAlert> channelAlerts;

            if (alertstring != null)
            {
                channelAlerts = JsonConvert.DeserializeObject <List <ChannelAlert> >(alertstring);
            }
            else
            {
                var dataAccess = new AzureDataAccess(config.DataStorageConnections);
                channelAlerts = dataAccess.GetChannelAlerts(chid.ToString(), healthLevels, metricTypes);
                #region Not used
                //channelAlerts = dataAccess.ExecuteReadQuery(context =>
                //{
                //    var dbAlerts = context.ChannelAlerts.Where(alert =>
                //       alert.ChannelId == channelId &&
                //       alert.AlertDate >= startTime.AddTicks(alert.AlertTime.Ticks) &&
                //       alert.AlertDate <= endTime);

                //    if (healthLevels != null)
                //    {
                //        var predicate = CreatePredicate(healthLevels, "ErrorLevel");
                //        dbAlerts = dbAlerts.Where(predicate);
                //    }
                //    if (metricTypes != null)
                //    {
                //        var condition = CreatePredicate(metricTypes, "MetricType");
                //        dbAlerts = dbAlerts.Where(condition);
                //    }



                //    return dbAlerts.ToList();
                //});
                #endregion
            }
            List <MetricAlert> alerts = new List <MetricAlert>();
            if (channelAlerts != null)
            {
                foreach (var chAlt in channelAlerts)
                {
                    alerts.Add(new MetricAlert
                    {
                        AlertID     = chAlt.AlertID,
                        Name        = chAlt.ChannelName,
                        Date        = chAlt.AlertDate.AddTicks(chAlt.AlertTime.Ticks),
                        Description = chAlt.Details,
                        Status      = chAlt.ErrorLevel
                    });
                }
            }
            return(alerts);
        }
Exemplo n.º 14
0
        private IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string channelId, AlertsQuery query)
        {
            var chid          = channelId.NimbusIdToGuid();
            var channelAlerts = GetAlertsFromCache <ChannelAlert>(chid.ToString());

            if (channelAlerts == null)
            {
                var dataAccess = new AzureDataAccess(config.DataStorageConnections);
                channelAlerts = dataAccess.GetChannelAlerts(chid.ToString(), query.StatusLevels, query.MetricTypes);
            }


            IEnumerable <MetricAlert> alerts = null;

            if (channelAlerts != null)
            {
                alerts = channelAlerts.Select(chAlt => new MetricAlert
                {
                    AlertID     = chAlt.AlertID,
                    Name        = chAlt.ChannelName,
                    Date        = chAlt.AlertDate.AddTicks(chAlt.AlertTime.Ticks),
                    Description = chAlt.Details,
                    Status      = chAlt.ErrorLevel
                });
            }
            return(alerts);
        }