private void GetCustomer(Customer customer, MediaServicesSetConfig mediaServicesSet)
        {
            var dataAccess = new AzureDataAccess(mediaServicesSet.DataStorageConnections);

            customer.Accounts = mediaServicesSet.MediaServicesAccounts.Select((mediaServicesAccount, index) =>
            {
                var account = GetMediaAccountFromCache(customer, mediaServicesAccount);
                if (account == null)
                {
                    if (index == 0)
                    {
                        FillCustomerDetails(customer, mediaServicesAccount);
                    }
                    // TODO: this logic is wrong and needs to be replaced.
                    var globalAerts = dataAccess.GetAccountGlobalAlerts(mediaServicesAccount.AccountName);
                    return(new MediaService
                    {
                        Id = mediaServicesAccount.Id,
                        Name = mediaServicesAccount.AccountName,
                        Datacenter = mediaServicesAccount.MetaData.Location,
                        Health = GetMaxLevel(globalAerts),
                    });
                }
                return(account);
            }).ToList();
            customer.Health = customer.Accounts.Max(m => m.Health);
        }
Exemplo n.º 2
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);
        }
        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();
            var alertstring = CloudCache.Get(origId + "Alerts");
            List <OriginAlert> alerts;

            if (alertstring != null)
            {
                alerts = JsonConvert.DeserializeObject <List <OriginAlert> >(alertstring);
            }
            else
            {
                var dataAccess = new AzureDataAccess(config.DataStorageConnections);
                alerts = dataAccess.ExecuteReadQuery(context =>
                {
                    var dbAlerts = context.OriginAlerts.Where(alert =>
                                                              alert.OriginId == originId &&
                                                              alert.Timestamp >= startTime &&
                                                              alert.Timestamp <= endTime);

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

            return(alerts.Select(alert => new MetricAlert
            {
                Name = alert.OriginId,
                Date = alert.Timestamp,
                Description = alert.Details,
                Status = alert.ErrorLevel
            }).OrderByDescending(alt => alt.Date));
        }
Exemplo n.º 4
0
        private static MediaPipeline MapMediaServicesSet(MediaServicesSetConfig configMediaServiceSet)
        {
            var mediaPipeline = new MediaPipeline();

            mediaPipeline.Name        = configMediaServiceSet.Name;
            mediaPipeline.Deployments = configMediaServiceSet.MediaServicesAccounts
                                        .Denull()
                                        .Select(MapMediaServicesAccounts)
                                        .Where(ad => null != ad)
                                        .ToList();

            return(mediaPipeline);
        }
        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.º 6
0
        private IEnumerable <MetricAlert> GetOriginAlerts(MediaServicesSetConfig config, string originId, AlertsQuery query)
        {
            var controller = new OriginAlertsController();

            return(controller.Get(config, originId, query));
        }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
0
        private static void CleanupDatabase(MediaServicesSetConfig mediaServicesSet)
        {
            var rententionPeriod = TimeSpan.FromDays(SqlRetentionPeriod);
            var earliestDate     = DateTime.UtcNow - rententionPeriod;

            Trace.TraceInformation("Earliest date before which the record will be removed: {0}", earliestDate);
            foreach (var databaseConfig in mediaServicesSet.DataStorageConnections)
            {
                Trace.TraceInformation(
                    "Cleaning database account on Server:{0} Accont:{1} Catalog:{2}",
                    databaseConfig.AzureServer,
                    databaseConfig.AcctName,
                    databaseConfig.InitialCatalog);
            }

            // Clean channel and origin alerts older than 30 days.
            var dataAccess = new AzureDataAccess(mediaServicesSet.DataStorageConnections);
            int removed    = dataAccess.CleanOutOldData(earliestDate);

            Trace.TraceInformation("Total of {0} records removed on {1} ", removed, DateTime.UtcNow);

            #region Not Used
            //dataAccess.ExecuteWriteQuery( dataContext =>
            //{
            //    foreach (AlertType at in dataContext.AlertTypes)
            //    {
            //        //start with GlobalAlerts
            //        var records = dataContext.Alerts.Where(alert => (alert.AlertDate < earliestDate.Date) &&
            //        alert.AlertTypeID == at.AlertTypeID).ToList();
            //        switch (at.AlertTypeID)
            //        {
            //            case 1:
            //                Trace.TraceInformation("Removing {0} records from Global Alerts...", records.Count);
            //                break;
            //            case 2:
            //                Trace.TraceInformation("Removing {0} records from Channel Alerts...", records.Count);
            //                break;
            //            case 3:
            //                Trace.TraceInformation("Removing {0} records from Origin Alerts...", records.Count);
            //                break;
            //            case 4:
            //                Trace.TraceInformation("Removing {0} records from Archive Alerts...", records.Count);
            //                break;
            //        }
            //        dataContext.Alerts.RemoveRange(records);
            //        dataContext.SaveChanges();
            //    }

            //});

            //dataAccess.ExecuteWriteQuery(dataContext =>
            //{
            //    var records = dataContext.Alerts.Where(alert => (alert.AlertDate < earliestDate.Date) &&
            //    alert.AlertTypeID == 2).ToList();

            //    dataContext.Alerts.RemoveRange(records);
            //    dataContext.SaveChanges();
            //});

            //dataAccess.ExecuteWriteQuery(dataContext =>
            //{
            //    var records = dataContext.Alerts.Where(alert => (alert.AlertDate < earliestDate.Date) &&
            //    alert.AlertTypeID == 3).ToList();

            //    dataContext.Alerts.RemoveRange(records);
            //    dataContext.SaveChanges();
            //});

            //dataAccess.ExecuteWriteQuery(dataContext =>
            //{
            //    var records = dataContext.Alerts.Where(alert => (alert.AlertDate < earliestDate.Date) &&
            //    alert.AlertTypeID == 4).ToList();

            //    dataContext.Alerts.RemoveRange(records);
            //    dataContext.SaveChanges();
            //});
            #endregion
        }
 public static AzureDataAccess GetDataAccess(MediaServicesSetConfig config)
 {
     return(new AzureDataAccess(config.DataStorageConnections));
 }
        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);
        }