Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/22/13 15:29:15 (12 years ago)
Author:
fschoepp
Message:

#1888:
HL:

  • Web projects requires different users to interact with hive. The singleton HiveServiceLocator.Instance doesn't allow different users at the same time, resulting in serialization during access of HiveClient methods.

The following changes have been introduced in favor of a parallel use of the HL libs:

  • HiveClient, TaskDownloader and ConcurrentTaskDownloader may now use a different IHiveServiceLocator than HiveServiceLocator.Instance (all methods have appropriate overloads now).
  • The default instance is still HiveServiceLocator.Instance.

Automated Scaling of Instances:

  • Added Scaler project to solution which represents a WorkerRole that scales the slave instances based on the global cpu utilization of all slaves.
  • Scaler is based on WASABi, rules can be adjusted in rulesstore.xml. Basic rule is: if < 45% global cpu utilization => remove an instance; if > 65% cpu => add an instance. Minimum boundary is 1 and maximum boundary is 8 slave instances.
  • Adjusted Slave project to automatically register itself to a SlaveGroup during WebRole startup (can be adjusted in service configuration).

Web-Frontend:

  • Added basic error messages to the dialogs when an ajax call fails.
  • Removed Styling.js from scripts.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/OaaS/HeuristicLab.Services.Optimization.Controller/Interfaces/IControllerService.cs

    r9395 r9508  
    88
    99namespace HeuristicLab.Services.Optimization.ControllerService {
     10  /// <summary>
     11  /// The ControllerService represents the entry point of
     12  /// the OaaS backend. It contains all possible operations
     13  /// of OaaS.
     14  /// </summary>
    1015  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
    1116  public interface IControllerService {
     17    /// <summary>
     18    /// Retrieves all available scenarios, including all
     19    /// their information.
     20    /// </summary>
     21    /// <returns>All scenarios</returns>
    1222    [OperationContract]
    1323    IEnumerable<OptimizationScenario> GetOptimizationScenarios();
    1424
     25    /// <summary>
     26    /// Returns the names of all scenarios. This doesn't load
     27    /// parameters or other scenario specific data.
     28    /// </summary>
     29    /// <returns>
     30    /// The names of the scenarios,
     31    /// e. g. ["Benchmark Algorithm", "Genetic Algorithm - TSP"]
     32    /// </returns>
    1533    [OperationContract]
    1634    IEnumerable<string> GetOptimizationScenarioNames();
    1735
     36    /// <summary>
     37    /// Retrieves a scenario by a given name including all of
     38    /// it's data.
     39    /// </summary>
     40    /// <param name="name">
     41    /// The scenario to lookup, e. g. "Benchmark Algorithm"
     42    /// </param>
     43    /// <returns></returns>
    1844    [OperationContract]
    1945    OptimizationScenario GetOptimizationScenarioByName(string name);
    2046
     47    /// <summary>
     48    /// Schedules a scenario for certain user.   
     49    /// </summary>
     50    /// <param name="user">The user which wants to execute a scenario.</param>
     51    /// <param name="scenario">The scenario to execute.</param>
     52    /// <param name="details">The title of the job, the number of repititions of the scenario and the group of the job.</param>
     53    /// <returns>true, if the scenario has been successfully scheduled.</returns>
    2154    [OperationContract]
    2255    bool ScheduleOptimizationScenario(User user, OptimizationScenario scenario, JobExecutionDetails details);
    2356
     57    /// <summary>
     58    /// Schedules an experiment for a certain user.
     59    /// </summary>
     60    /// <param name="user">The user which wants to execute a scenario.</param>
     61    /// <param name="experiment">The name of the experiment to schedule.</param>
     62    /// <param name="details">The title of the job, the number of repititions of the experiment and the group of the job.</param>
     63    /// <returns></returns>
    2464    [OperationContract]
    2565    bool ScheduleExperiment(User user, string experiment, JobExecutionDetails details);
    2666
     67    /// <summary>
     68    /// Returns all available jobs of a user.
     69    /// </summary>
     70    /// <param name="user">The user to query the jobs for.</param>
     71    /// <returns>All jobs for a certain user.</returns>
    2772    [OperationContract]
    2873    IEnumerable<Job> GetJobs(User user);
    2974
     75    /// <summary>
     76    /// Retrievs a job by it's id.
     77    /// </summary>
     78    /// <param name="user">The owner of the job.</param>
     79    /// <param name="id">The id of the job.</param>
     80    /// <returns>The job with the given user and id.</returns>
    3081    [OperationContract]
    3182    Job GetJob(User user, string id);
    3283
     84    /// <summary>
     85    /// Deletes a job of a user.
     86    /// </summary>
     87    /// <param name="user">The owner of the job.</param>
     88    /// <param name="id">The job to delete.</param>
     89    /// <returns>true, if the job has been deleted.</returns>
    3390    [OperationContract]
    3491    bool DeleteJob(User user, string id);
    3592
     93    /// <summary>
     94    /// Returns the results of a job including the input parameters and result parameters.
     95    /// </summary>
     96    /// <param name="user">The owner of the job.</param>
     97    /// <param name="id">The id of the job.</param>
     98    /// <returns>The result and input parameters of the job.</returns>
    3699    [OperationContract]
    37100    IList<Model.Run> GetJobResults(User user, string id);
    38101
     102    /// <summary>   
     103    /// Adds a new scenario to the system. This has to include a valid scenario xml representing all necessary inputs
     104    /// for the new scenario and a scenario mapper which is capable of converting the OaaS-scenario-model into the
     105    /// hive specific version.
     106    /// Note: This method might be only usable by an underlying hive data access layer.
     107    /// </summary>
     108    /// <param name="user">The owner of the scenario (must have administrator privileges).</param>
     109    /// <param name="scenarioXml">The new scenario to upload.</param>
     110    /// <param name="scenarioMapper">The converter between OaaS-model and hive model.</param>
     111    /// <returns>true, if the scenario has been successfully saved.</returns>
    39112    [OperationContract]
    40113    bool AddHiveScenario(User user, string scenarioXml, string scenarioMapper);
    41 
     114   
     115    /// <summary>
     116    /// Deletes a stored scenario including its xml and mapper.
     117    /// </summary>
     118    /// <param name="user">An administrator of the system.</param>
     119    /// <param name="scenarioName">The name of the scenario.</param>
     120    /// <returns>true, if the scenario has been deleted.</returns>
    42121    [OperationContract]
    43122    bool DeleteHiveScenario(User user, string scenarioName);
    44123
     124    /// <summary>
     125    /// Stores an experiment which is a tree of experiments and scenarios.
     126    /// This method will schedule the experiment, if it contains job details.
     127    /// </summary>
     128    /// <param name="user">The owner of the experiment.</param>
     129    /// <param name="experiment">The experiment including all of it's details.</param>
     130    /// <returns>If scheduled it will return the job id. In every other case null will be returned.</returns>
    45131    [OperationContract]
    46132    string SaveExperiment(User user, Experiment experiment);
    47133
     134    /// <summary>
     135    /// Returns the names of the experiments for a certain user.
     136    /// </summary>
     137    /// <param name="user">The owner of the experiments.</param>
     138    /// <returns>A list of experiment names.</returns>
    48139    [OperationContract]
    49140    IEnumerable<string> GetExperimentNames(User user);
    50141
     142    /// <summary>
     143    /// Returns all experiments. If "namesOnly" is false, the experiments include all of their details.   
     144    /// </summary>
     145    /// <param name="user">The owner of the experiments.</param>
     146    /// <param name="namesOnly">If true, returns only a list of experiments where only the Name parameter is set.</param>
     147    /// <returns></returns>
    51148    [OperationContract]
    52149    IEnumerable<Experiment> GetExperiments(User user, bool namesOnly = false);
    53150
     151    /// <summary>
     152    /// TODO
     153    /// </summary>
     154    /// <param name="user"></param>
     155    /// <param name="experiment"></param>
     156    /// <returns></returns>
    54157    [OperationContract]
    55158    bool DeleteExperiment(User user, string experiment);
Note: See TracChangeset for help on using the changeset viewer.