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 }; }
public Maybe <CloudApplicationDefinition> GetApplicationDefinition() { var inspector = new CloudApplicationInspector(_blobs); return(inspector.Inspect()); }
public Maybe<CloudApplicationDefinition> GetApplicationDefinition() { var inspector = new CloudApplicationInspector(_runtimeProviders); return inspector.Inspect(); }