Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/25/15 18:21:19 (9 years ago)
Author:
dglaser
Message:

#2388: Merged trunk into HiveStatistics branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataController.cs

    r12467 r12515  
    2727using HeuristicLab.Services.Hive;
    2828using HeuristicLab.Services.Hive.DataAccess;
    29 using DAL = HeuristicLab.Services.Hive.DataAccess;
    30 using DTO = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer;
     29using HeuristicLab.Services.Hive.DataAccess.Interfaces;
     30using DA = HeuristicLab.Services.Hive.DataAccess;
     31using DT = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer;
    3132
    3233namespace HeuristicLab.Services.WebApp.Status.WebApi {
    3334  public class DataController : ApiController {
     35    private IPersistenceManager PersistenceManager {
     36      get { return ServiceLocator.Instance.PersistenceManager; }
     37    }
    3438
    3539    // start temporary quickfix
     
    5357    }
    5458
    55     public IEnumerable<DTO.TaskStatus> GetTaskStatus(HiveDataContext db) {
     59    public IEnumerable<DT.TaskStatus> GetTaskStatus(HiveDataContext db) {
    5660      var query = db.ExecuteQuery<UserTaskStatus>(SQL_USER_TASK_STATUS).ToList();
    57       return query.Select(uts => new DTO.TaskStatus {
    58         User = new DTO.User {
     61      return query.Select(uts => new DT.TaskStatus {
     62        User = new DT.User {
    5963          Id = uts.UserId.ToString(),
    6064          Name = ServiceLocator.Instance.UserManager.GetUserById(uts.UserId).UserName
     
    6670    // end temporary quickfix
    6771
    68     public DTO.Status GetStatus() {
     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
    6987      using (var db = new HiveDataContext()) {
    70         var onlineSlaves = (from slave in db.Resources.OfType<DAL.Slave>()
     88        var onlineSlaves = (from slave in db.Resources.OfType<DA.Slave>()
    7189                            where slave.SlaveState == SlaveState.Calculating || slave.SlaveState == SlaveState.Idle
    7290                            select slave).ToList();
     
    7694        int freeCalculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.FreeMemory) / 1024 : 0;
    7795
    78         return new DTO.Status {
    79           CoreStatus = new DTO.CoreStatus {
     96        return new DT.Status {
     97          CoreStatus = new DT.CoreStatus {
    8098            TotalCores = onlineSlaves.Sum(s => s.Cores ?? 0),
    8199            FreeCores = onlineSlaves.Sum(s => s.FreeCores ?? 0), // temporary for old chart data
    82100            ActiveCores = activeSlaves.Sum(s => s.Cores ?? 0),
    83             CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0)
     101            CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0) - calculatingSlaves.Sum(s => s.FreeCores ?? 0)
    84102          },
    85           CpuUtilizationStatus = new DTO.CpuUtilizationStatus {
     103          CpuUtilizationStatus = new DT.CpuUtilizationStatus {
    86104            TotalCpuUtilization = onlineSlaves.Any()
    87105                                  ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2)
     
    94112                                        : 0.0
    95113          },
    96           MemoryStatus = new DTO.MemoryStatus {
     114          MemoryStatus = new DT.MemoryStatus {
    97115            TotalMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.Memory) / 1024 : 0,
    98116            FreeMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.FreeMemory) / 1024 : 0,
     
    100118            UsedMemory = calculatingMemory - freeCalculatingMemory
    101119          },
     120          TimeStatus = timeStatus,
    102121          TasksStatus = GetTaskStatus(db),
    103           SlavesStatus = onlineSlaves.Select(x => new DTO.SlaveStatus {
    104             Slave = new DTO.Slave {
     122          SlavesStatus = onlineSlaves.Select(x => new DT.SlaveStatus {
     123            Slave = new DT.Slave {
    105124              Id = x.ResourceId.ToString(),
    106125              Name = x.Name
     
    119138    }
    120139
    121     public IEnumerable<DTO.Status> GetStatusHistory(DateTime start, DateTime end) {
     140    public IEnumerable<DT.Status> GetStatusHistory(DateTime start, DateTime end) {
    122141      TimeSpan ts = end - start;
    123142      int increment = 1;
     
    135154                                      .OrderBy(s => s.Timestamp)
    136155                                      .ToList();
    137         var status = new DTO.Status {
    138           CoreStatus = new DTO.CoreStatus(),
    139           CpuUtilizationStatus = new DTO.CpuUtilizationStatus(),
    140           MemoryStatus = new DTO.MemoryStatus()
     156        var status = new DT.Status {
     157          CoreStatus = new DT.CoreStatus(),
     158          CpuUtilizationStatus = new DT.CpuUtilizationStatus(),
     159          MemoryStatus = new DT.MemoryStatus()
    141160        };
    142161        int freeCores = 0;
     
    165184            status.MemoryStatus.UsedMemory = status.MemoryStatus.TotalMemory - freeMemory;
    166185            yield return status;
    167             status = new DTO.Status {
    168               CoreStatus = new DTO.CoreStatus(),
    169               CpuUtilizationStatus = new DTO.CpuUtilizationStatus(),
    170               MemoryStatus = new DTO.MemoryStatus()
     186            status = new DT.Status {
     187              CoreStatus = new DT.CoreStatus(),
     188              CpuUtilizationStatus = new DT.CpuUtilizationStatus(),
     189              MemoryStatus = new DT.MemoryStatus()
    171190            };
    172191            freeCores = 0;
Note: See TracChangeset for help on using the changeset viewer.