Exemplo n.º 1
0
        private IActionResult Get(MediaServicesAccountConfig accountConfig, string id)
        {
            var chid = string.Format("nb:chid:UUID:{0}", id);
            AventusTelemetry telemetry = null;

            var context = accountConfig.GetContext();
            var channel = context.Channels.Where(ch => ch.Id == chid).FirstOrDefault();

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

            if (channel.EncodingType != ChannelEncodingType.None)
            {
                var aventusHelper = new AventusHelper(accountConfig);
                telemetry = aventusHelper.GetTelemetryInfo(channel);
            }
            return(Ok(telemetry));
        }
        private AventusTelemetry Get(MediaServicesAccountConfig accountConfig, string id)
        {
            var chid = string.Format("nb:chid:UUID:{0}", id);
            AventusTelemetry telemetry = null;

            var context = accountConfig.GetContext();
            var channel = context.Channels.Where(ch => ch.Id == chid).FirstOrDefault();

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

            if (channel.EncodingType != ChannelEncodingType.None)
            {
                var aventusHelper = new AventusHelper(accountConfig);
                telemetry = aventusHelper.GetTelemetryInfo(channel);
            }
            return(telemetry);
        }
Exemplo n.º 3
0
        private List <Alert> GetEncodingAlerts(MediaChannel channel, AventusTelemetry telemetry)
        {
            var alerts = new List <Alert>();
            var ticks  = DateTime.UtcNow.Ticks;

            if (telemetry != null)
            {
                channel.EncodingHealth = telemetry.ChannelHealth.HealthLevel.GetHealthStatus();
                var receivers = telemetry.Inputs.Receivers;
                // Add all the alerts from receivers.
                alerts.AddRange(receivers.SelectMany((receiver, index) =>
                {
                    string source = string.Format(
                        "Receivers[{0}], TaskIndex:{1} TaskGroupId:{2}",
                        index,
                        receiver.TaskIndex,
                        receiver.TaskGroupId);
                    return(GetAlertsFromHealth(receiver.Health, source, ref ticks));
                }));

                // Add all the alerts from decoders.
                var transcoders = telemetry.Transcoders;
                var decoders    = transcoders.VideoDecoders;
                alerts.AddRange(decoders.SelectMany((decoder, index) =>
                {
                    var source = string.Format(
                        "Decoders[{0}], TaskIndex: {1}, TaskGroupId:{2}",
                        index,
                        decoder.TaskIndex,
                        decoder.TaskGroupId);
                    var decoderAlerts = GetAlertsFromHealth(decoder.Health, source, ref ticks);
                    var encoderAlerts = decoder.VideoEncoders.SelectMany((encoder, encoderIndex) =>
                    {
                        source = string.Format(
                            "Decoders[{0}]/Encoders[{1}], TaskIndex:{2}, TaskGroupId:{3}",
                            index,
                            encoderIndex,
                            decoder.TaskIndex,
                            decoder.TaskGroupId);
                        return(GetAlertsFromHealth(decoder.Health, source, ref ticks));
                    });
                    return(decoderAlerts.Concat(encoderAlerts));
                }));

                // Add all the alerts from packagers and the publishers.
                var packagers = telemetry.Outputs.Packagers;
                alerts.AddRange(packagers.SelectMany((packager, index) =>
                {
                    var source         = string.Format("Packagers[{0}]", index);
                    var packagerAlerts = GetAlertsFromHealth(packager.Health, source, ref ticks);

                    var publishinerAlerts = packager.Publishers.SelectMany((publisher, pindex) =>
                    {
                        source = string.Format("Packager[{0}]/Publisher[{1}]", index, pindex);
                        return(GetAlertsFromHealth(publisher.Health, source, ref ticks));
                    });
                    return(packagerAlerts.Concat(publishinerAlerts));
                }));
            }
            alerts.ForEach(alert => alert.ChannelID = channel.Id);
            return(alerts);
        }