using System; using System.Collections.Generic; using System.Net.Security; using System.ServiceModel; using HeuristicLab.Services.Hive.Common.DataTransfer; namespace HeuristicLab.Services.Hive.Common.ServiceContracts { [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)] public interface IHiveService { #region Job Methods [OperationContract] Guid AddJob(Job job, JobData jobData, IEnumerable resourceIds); [OperationContract] Guid AddChildJob(Guid parentJobId, Job job, JobData jobData); [OperationContract] // formerly GetJobById Job GetJob(Guid jobId); [OperationContract] // formerly GetAllJobs IEnumerable GetJobs(); [OperationContract] // formerly GetJobResults IEnumerable GetLightweightJobs(IEnumerable jobIds); [OperationContract] // formerly GetChildJobResults IEnumerable GetLightweightChildJobs(Guid? parentJobId, bool recursive, bool includeParent); [OperationContract] // formerly GetLastSerializedResult JobData GetJobData(Guid jobId); [OperationContract] void UpdateJob(Job jobDto); [OperationContract] void UpdateJobData(Job jobDto, JobData jobDataDto); [OperationContract] void DeleteJob(Guid jobId); [OperationContract] void DeleteChildJobs(Guid parentJobId); #endregion #region Job Control Methods [OperationContract] void StopJob(Guid jobId); [OperationContract] void PauseJob(Guid jobId); #endregion #region HiveExperiment Methods [OperationContract] HiveExperiment GetHiveExperiment(Guid id); /// /// Returns all experiments for the current user /// [OperationContract] IEnumerable GetHiveExperiments(); /// /// Returns all experiments in the hive (only for admins) /// /// [OperationContract] IEnumerable GetAllHiveExperiments(); [OperationContract] Guid AddHiveExperiment(HiveExperiment hiveExperimentDto); [OperationContract] void UpdateHiveExperiment(HiveExperiment hiveExperimentDto); [OperationContract] void DeleteHiveExperiment(Guid hiveExperimentId); #endregion #region Login Methods [OperationContract] void Hello(Slave slave); [OperationContract] void GoodBye(Guid slaveId); #endregion #region Heartbeat Methods [OperationContract] List Heartbeat(Heartbeat heartbeat); #endregion #region Plugin Methods [OperationContract] Guid AddPlugin(Plugin plugin, List pluginData); [OperationContract] IEnumerable GetPlugins(); [OperationContract] IEnumerable GetPluginDatas(List pluginIds); #endregion #region Slave Methods [OperationContract] Guid AddSlave(Slave slave); [OperationContract] Guid AddSlaveGroup(SlaveGroup slaveGroup); [OperationContract] Slave GetSlave(Guid slaveId); [OperationContract] SlaveGroup GetSlaveGroup(Guid slaveGroupId); [OperationContract] IEnumerable GetSlaves(); [OperationContract] IEnumerable GetSlaveGroups(); [OperationContract] void UpdateSlave(Slave slave); [OperationContract] void UpdateSlaveGroup(SlaveGroup slaveGroup); [OperationContract] void DeleteSlave(Guid slaveId); [OperationContract] void DeleteSlaveGroup(Guid slaveGroupId); [OperationContract] void AddResourceToGroup(Guid slaveGroupId, Guid resourceId); [OperationContract] void RemoveResourceFromGroup(Guid slaveGroupId, Guid resourceId); [OperationContract] Guid GetResourceId(string resourceName); [OperationContract] void TriggerLifecycle(); #endregion } }