public QueuesModel QueryQueues()
        {
            var queueStorage          = _storage.QueueStorage;
            var inspector             = new CloudApplicationInspector(_storage.BlobStorage);
            var applicationDefinition = inspector.Inspect();
            var runtimeSerializer     = new CloudFormatter();

            var failingMessages = queueStorage.ListPersisted(FailingMessagesStoreName)
                                  .Select(key => queueStorage.GetPersisted(FailingMessagesStoreName, key, runtimeSerializer))
                                  .Where(m => m.HasValue)
                                  .Select(m => m.Value)
                                  .OrderByDescending(m => m.PersistenceTime)
                                  .Take(50)
                                  .ToList();

            return(new QueuesModel
            {
                Queues = queueStorage.List(null).Select(queueName => new AzureQueue
                {
                    QueueName = queueName,
                    MessageCount = queueStorage.GetApproximateCount(queueName),
                    Latency = queueStorage.GetApproximateLatency(queueName).Convert(ts => ts.PrettyFormat(), string.Empty),
                    Services = applicationDefinition.Convert(cd => cd.QueueServices.Where(d => d.QueueName == queueName).ToArray(), new QueueServiceDefinition[0])
                }).ToArray(),

                HasQuarantinedMessages = failingMessages.Count > 0,

                Quarantine = failingMessages
                             .GroupBy(m => m.QueueName)
                             .Select(group => new AzureQuarantineQueue
                {
                    QueueName = group.Key,
                    Messages = group.OrderByDescending(m => m.PersistenceTime)
                               .Select(m => new AzureQuarantineMessage
                    {
                        Inserted = (DateTime.UtcNow - m.InsertionTime.UtcDateTime).PrettyFormat() + " ago",
                        Persisted = (DateTime.UtcNow - m.PersistenceTime.UtcDateTime).PrettyFormat() + " ago",
                        Reason = HttpUtility.HtmlEncode(m.Reason),
                        Content = FormatQuarantinedLogEntryXmlContent(m),
                        Key = m.Key,
                        HasData = m.IsDataAvailable,
                        HasXml = m.DataXml.HasValue
                    })
                               .ToArray()
                })
                             .ToArray()
            });
        }
        public QueuesModel QueryQueues()
        {
            var queueStorage = _runtimeProviders.QueueStorage;
            var inspector = new CloudApplicationInspector(_runtimeProviders);
            var applicationDefinition = inspector.Inspect();

            var failingMessages = queueStorage.ListPersisted(FailingMessagesStoreName)
                .Select(key => queueStorage.GetPersisted(FailingMessagesStoreName, key))
                .Where(m => m.HasValue)
                .Select(m => m.Value)
                .OrderByDescending(m => m.PersistenceTime)
                .Take(50)
                .ToList();

            return new QueuesModel
                {
                    Queues = queueStorage.List(null).Select(queueName => new AzureQueue
                    {
                        QueueName = queueName,
                        MessageCount = queueStorage.GetApproximateCount(queueName),
                        Latency = queueStorage.GetApproximateLatency(queueName).Convert(ts => ts.PrettyFormat(), string.Empty),
                        Services = applicationDefinition.Convert(cd => cd.QueueServices.Where(d => d.QueueName == queueName).ToArray(), new QueueServiceDefinition[0])
                    }).ToArray(),

                    HasQuarantinedMessages = failingMessages.Count > 0,

                    Quarantine = failingMessages
                        .GroupBy(m => m.QueueName)
                        .Select(group => new AzureQuarantineQueue
                        {
                            QueueName = group.Key,
                            Messages = group.OrderByDescending(m => m.PersistenceTime)
                                .Select(m => new AzureQuarantineMessage
                                {
                                    Inserted = FormatUtil.TimeOffsetUtc(m.InsertionTime.UtcDateTime),
                                    Persisted = FormatUtil.TimeOffsetUtc(m.PersistenceTime.UtcDateTime),
                                    Reason = HttpUtility.HtmlEncode(m.Reason),
                                    Content = FormatQuarantinedLogEntryXmlContent(m),
                                    Key = m.Key,
                                    HasData = m.IsDataAvailable,
                                    HasXml = m.DataXml.HasValue
                                })
                                .ToArray()
                        })
                        .ToArray()
                };
        }
        public ServicesModel QueryServices()
        {
            var serviceManager = new CloudServices(_storage.BlobStorage);
            var services       = serviceManager.GetServices();

            var inspector             = new CloudApplicationInspector(_storage.BlobStorage);
            var applicationDefinition = inspector.Inspect();

            if (!applicationDefinition.HasValue)
            {
                return(new ServicesModel
                {
                    QueueServices = new QueueServiceModel[0],
                    ScheduledServices = new CloudServiceInfo[0],
                    CloudServices = new CloudServiceInfo[0],
                    UnavailableServices = new CloudServiceInfo[0]
                });
            }

            var appDefinition = applicationDefinition.Value;

            var queueServices = services.Join(
                appDefinition.QueueServices,
                s => s.ServiceName,
                d => d.TypeName,
                (s, d) => new QueueServiceModel {
                ServiceName = s.ServiceName, IsStarted = s.IsStarted, Definition = d
            }).ToArray();

            var scheduledServices   = services.Where(s => appDefinition.ScheduledServices.Any(ads => ads.TypeName.StartsWith(s.ServiceName))).ToArray();
            var otherServices       = services.Where(s => appDefinition.CloudServices.Any(ads => ads.TypeName.StartsWith(s.ServiceName))).ToArray();
            var unavailableServices = services
                                      .Where(s => !queueServices.Any(d => d.ServiceName == s.ServiceName))
                                      .Except(scheduledServices).Except(otherServices).ToArray();

            return(new ServicesModel
            {
                QueueServices = queueServices,
                ScheduledServices = scheduledServices,
                CloudServices = otherServices,
                UnavailableServices = unavailableServices
            });
        }
        public ServicesModel QueryServices()
        {
            var serviceManager = new CloudServices(_runtimeProviders);
            var services = serviceManager.GetServices();

            var inspector = new CloudApplicationInspector(_runtimeProviders);
            var applicationDefinition = inspector.Inspect();

            if (!applicationDefinition.HasValue)
            {
                return new ServicesModel
                    {
                        QueueServices = new QueueServiceModel[0],
                        ScheduledServices = new CloudServiceInfo[0],
                        CloudServices = new CloudServiceInfo[0],
                        UnavailableServices = new CloudServiceInfo[0]
                    };
            }

            var appDefinition = applicationDefinition.Value;

            var queueServices = services.Join(
                appDefinition.QueueServices,
                s => s.ServiceName,
                d => d.TypeName,
                (s, d) => new QueueServiceModel { ServiceName = s.ServiceName, IsStarted = s.IsStarted, Definition = d }).ToArray();

            var scheduledServices = services.Where(s => appDefinition.ScheduledServices.Any(ads => ads.TypeName.StartsWith(s.ServiceName))).ToArray();
            var otherServices = services.Where(s => appDefinition.CloudServices.Any(ads => ads.TypeName.StartsWith(s.ServiceName))).ToArray();
            var unavailableServices = services
                .Where(s => !queueServices.Any(d => d.ServiceName == s.ServiceName))
                .Except(scheduledServices).Except(otherServices).ToArray();

            return new ServicesModel
                {
                    QueueServices = queueServices,
                    ScheduledServices = scheduledServices,
                    CloudServices = otherServices,
                    UnavailableServices = unavailableServices
                };
        }
예제 #5
0
        public Maybe <CloudApplicationDefinition> GetApplicationDefinition()
        {
            var inspector = new CloudApplicationInspector(_blobs);

            return(inspector.Inspect());
        }
예제 #6
0
 public Maybe<CloudApplicationDefinition> GetApplicationDefinition()
 {
     var inspector = new CloudApplicationInspector(_runtimeProviders);
     return inspector.Inspect();
 }