Esempio n. 1
0
        public async Task <ClusterDetailsResponse> GetClusterAsync(string id)
        {
            var cluster = await clusterRepository.ReadAsync(c => c.Id == id && c.DeleteAt == null);

            if (cluster != null)
            {
                var clusterMetrics = await metricRepository.ReadsAsync(m => m.EntityId == id);

                var response = mapper.Map <ClusterDetailsResponse>(cluster);

                response.MasterMetrics = clusterMetrics.Select(cm => mapper.Map <SimpleMetricItemResponse>(cm))
                                         .OrderByDescending(o => o.DateValue)
                                         .Take(10).ToList();
                response.Nodes = new List <ClusterNodeDetailsResponse>();

                foreach (var node in cluster.Nodes)
                {
                    var nodeMetrics = await metricRepository.ReadsAsync(m => m.EntityId == node.Id);

                    var nodeMapped = mapper.Map <ClusterNodeDetailsResponse>(node);
                    nodeMapped.NodeMetrics = nodeMetrics.Select(cm => mapper.Map <SimpleMetricItemResponse>(cm))
                                             .OrderByDescending(o => o.DateValue)
                                             .Take(10).ToList();
                    response.Nodes.Add(nodeMapped);
                }

                return(response);
            }

            return(null);
        }