- Timestamp:
- 06/26/15 18:02:03 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataController.cs
r12515 r12525 27 27 using HeuristicLab.Services.Hive; 28 28 using HeuristicLab.Services.Hive.DataAccess; 29 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 30 using DA = HeuristicLab.Services.Hive.DataAccess; 31 using DT = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer; 29 using DAL = HeuristicLab.Services.Hive.DataAccess; 30 using DTO = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer; 32 31 33 32 namespace HeuristicLab.Services.WebApp.Status.WebApi { 34 33 public class DataController : ApiController { 35 private IPersistenceManager PersistenceManager {36 get { return ServiceLocator.Instance.PersistenceManager; }37 }38 34 39 35 // start temporary quickfix … … 57 53 } 58 54 59 public IEnumerable<DT .TaskStatus> GetTaskStatus(HiveDataContext db) {55 public IEnumerable<DTO.TaskStatus> GetTaskStatus(HiveDataContext db) { 60 56 var query = db.ExecuteQuery<UserTaskStatus>(SQL_USER_TASK_STATUS).ToList(); 61 return query.Select(uts => new DT .TaskStatus {62 User = new DT .User {57 return query.Select(uts => new DTO.TaskStatus { 58 User = new DTO.User { 63 59 Id = uts.UserId.ToString(), 64 60 Name = ServiceLocator.Instance.UserManager.GetUserById(uts.UserId).UserName … … 70 66 // end temporary quickfix 71 67 72 public DT.Status GetStatus() { 73 DT.TimeStatus timeStatus = null; 74 using (var pm = PersistenceManager) { 75 76 // TODO: 77 // new DT.TimeStatus { 78 // AvgCalculatingTime = 0, 79 // AvgWaitingTime = 0, 80 // MaxCalculatingTime = 0, 81 // MinCalculatingTime = 0, 82 // TotalCpuTime = 0, 83 // BeginDate = DateTime.Now 84 //} 85 } 86 68 public DTO.Status GetStatus() { 87 69 using (var db = new HiveDataContext()) { 88 var onlineSlaves = (from slave in db.Resources.OfType<DA .Slave>()70 var onlineSlaves = (from slave in db.Resources.OfType<DAL.Slave>() 89 71 where slave.SlaveState == SlaveState.Calculating || slave.SlaveState == SlaveState.Idle 90 72 select slave).ToList(); 91 73 var activeSlaves = onlineSlaves.Where(s => s.IsAllowedToCalculate).ToList(); 92 74 var calculatingSlaves = activeSlaves.Where(s => s.SlaveState == SlaveState.Calculating).ToList(); 93 int calculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.Memory) / 1024: 0;94 int freeCalculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.FreeMemory) / 1024: 0;75 int calculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.Memory) : 0; 76 int freeCalculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.FreeMemory) : 0; 95 77 96 return new DT .Status {97 CoreStatus = new DT .CoreStatus {78 return new DTO.Status { 79 CoreStatus = new DTO.CoreStatus { 98 80 TotalCores = onlineSlaves.Sum(s => s.Cores ?? 0), 99 81 FreeCores = onlineSlaves.Sum(s => s.FreeCores ?? 0), // temporary for old chart data … … 101 83 CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0) - calculatingSlaves.Sum(s => s.FreeCores ?? 0) 102 84 }, 103 CpuUtilizationStatus = new DT .CpuUtilizationStatus {85 CpuUtilizationStatus = new DTO.CpuUtilizationStatus { 104 86 TotalCpuUtilization = onlineSlaves.Any() 105 87 ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2) … … 112 94 : 0.0 113 95 }, 114 MemoryStatus = new DT .MemoryStatus {115 TotalMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.Memory) / 1024: 0,116 FreeMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.FreeMemory) / 1024: 0,117 ActiveMemory = activeSlaves.Any() ? (int)activeSlaves.Sum(s => s.Memory) / 1024: 0,96 MemoryStatus = new DTO.MemoryStatus { 97 TotalMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.Memory) : 0, 98 FreeMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.FreeMemory) : 0, 99 ActiveMemory = activeSlaves.Any() ? (int)activeSlaves.Sum(s => s.Memory) : 0, 118 100 UsedMemory = calculatingMemory - freeCalculatingMemory 119 101 }, 120 TimeStatus = timeStatus,121 102 TasksStatus = GetTaskStatus(db), 122 SlavesStatus = onlineSlaves.Select(x => new DT .SlaveStatus {123 Slave = new DT .Slave {103 SlavesStatus = onlineSlaves.Select(x => new DTO.SlaveStatus { 104 Slave = new DTO.Slave { 124 105 Id = x.ResourceId.ToString(), 125 106 Name = x.Name … … 128 109 Cores = x.Cores ?? 0, 129 110 FreeCores = x.FreeCores ?? 0, 130 Memory = (x.Memory ?? 0) / 1024,131 FreeMemory = (x.FreeMemory ?? 0) / 1024,111 Memory = x.Memory ?? 0, 112 FreeMemory = x.FreeMemory ?? 0, 132 113 IsAllowedToCalculate = x.IsAllowedToCalculate, 133 114 State = x.SlaveState.ToString() … … 138 119 } 139 120 140 public IEnumerable<DT .Status> GetStatusHistory(DateTime start, DateTime end) {121 public IEnumerable<DTO.Status> GetStatusHistory(DateTime start, DateTime end) { 141 122 TimeSpan ts = end - start; 142 123 int increment = 1; … … 154 135 .OrderBy(s => s.Timestamp) 155 136 .ToList(); 156 var status = new DT .Status {157 CoreStatus = new DT .CoreStatus(),158 CpuUtilizationStatus = new DT .CpuUtilizationStatus(),159 MemoryStatus = new DT .MemoryStatus()137 var status = new DTO.Status { 138 CoreStatus = new DTO.CoreStatus(), 139 CpuUtilizationStatus = new DTO.CpuUtilizationStatus(), 140 MemoryStatus = new DTO.MemoryStatus() 160 141 }; 161 142 int freeCores = 0; … … 168 149 ? statistic.SlaveStatistics.Average(x => x.CpuUtilization) 169 150 : 0.0; 170 status.MemoryStatus.TotalMemory += statistic.SlaveStatistics.Sum(x => x.Memory) / 1024;171 freeMemory += statistic.SlaveStatistics.Sum(x => x.FreeMemory) / 1024;151 status.MemoryStatus.TotalMemory += statistic.SlaveStatistics.Sum(x => x.Memory); 152 freeMemory += statistic.SlaveStatistics.Sum(x => x.FreeMemory); 172 153 if (i >= increment) { 173 154 status.Timestamp = JavascriptUtils.ToTimestamp(statistic.Timestamp); … … 184 165 status.MemoryStatus.UsedMemory = status.MemoryStatus.TotalMemory - freeMemory; 185 166 yield return status; 186 status = new DT .Status {187 CoreStatus = new DT .CoreStatus(),188 CpuUtilizationStatus = new DT .CpuUtilizationStatus(),189 MemoryStatus = new DT .MemoryStatus()167 status = new DTO.Status { 168 CoreStatus = new DTO.CoreStatus(), 169 CpuUtilizationStatus = new DTO.CpuUtilizationStatus(), 170 MemoryStatus = new DTO.MemoryStatus() 190 171 }; 191 172 freeCores = 0;
Note: See TracChangeset
for help on using the changeset viewer.