#region License Information
/* HeuristicLab
* Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
*
* This file is part of HeuristicLab.
*
* HeuristicLab is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HeuristicLab is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with HeuristicLab. If not, see .
*/
#endregion
using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using HeuristicLab.Services.Hive.DataTransfer;
namespace HeuristicLab.Services.Hive.ServiceContracts {
[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
public interface IHiveService {
#region Task Methods
[OperationContract]
Guid AddTask(Task task, TaskData taskData);
[OperationContract]
Guid AddChildTask(Guid parentTaskId, Task task, TaskData taskData);
[OperationContract]
Task GetTask(Guid taskId);
[OperationContract]
IEnumerable GetLightweightJobTasks(Guid jobId);
[OperationContract]
IEnumerable GetLightweightJobTasksWithoutStateLog(Guid jobId);
[OperationContract]
TaskData GetTaskData(Guid taskId);
[OperationContract]
void UpdateTask(Task taskDto);
[OperationContract]
void UpdateTaskData(Task taskDto, TaskData taskDataDto);
[OperationContract]
Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception);
#endregion
#region Task Control Methods
[OperationContract]
void StopTask(Guid taskId);
[OperationContract]
void PauseTask(Guid taskId);
[OperationContract]
void RestartTask(Guid taskId);
#endregion
#region Job Methods
[OperationContract]
Job GetJob(Guid id);
[OperationContract]
IEnumerable GetJobs();
[OperationContract]
IEnumerable GetJobsByProjectId(Guid projectId);
[OperationContract]
IEnumerable GetJobsByProjectIds(IEnumerable projectIds);
[OperationContract]
Guid AddJob(Job jobDto, IEnumerable resourceIds);
[OperationContract]
void UpdateJob(Job jobDto, IEnumerable resourceIds);
[OperationContract]
void UpdateJobState(Guid JobId, JobState jobState);
[OperationContract]
void UpdateJobStates(IEnumerable jobIds, JobState jobState);
[OperationContract]
IEnumerable GetAssignedResourcesForJob(Guid jobId);
#endregion
#region JobPermission Methods
[OperationContract]
void GrantPermission(Guid jobId, Guid grantedUserId, Permission permission);
[OperationContract]
void RevokePermission(Guid hiveExperimentId, Guid grantedUserId);
[OperationContract]
IEnumerable GetJobPermissions(Guid jobId);
// BackwardsCompatibility3.3
#region Backwards compatible code, remove with 3.4
[OperationContract]
bool IsAllowedPrivileged(); // current user may execute privileged task
#endregion
#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]
Plugin GetPlugin(Guid pluginId);
[OperationContract]
[FaultContract(typeof(PluginAlreadyExistsFault))]
Guid AddPlugin(Plugin plugin, List pluginData);
[OperationContract]
IEnumerable GetPlugins();
[OperationContract]
IEnumerable GetPluginDatas(List pluginIds);
#endregion
#region Project Methods
[OperationContract]
Guid AddProject(Project projectDto);
[OperationContract]
void UpdateProject(Project projectDto);
[OperationContract]
void DeleteProject(Guid projectId);
[OperationContract]
Project GetProject(Guid projectId);
[OperationContract]
IEnumerable GetProjects();
[OperationContract]
IEnumerable GetProjectsForAdministration();
[OperationContract]
IDictionary> GetProjectGenealogy();
[OperationContract]
IDictionary GetProjectNames();
#endregion
#region ProjectPermission Methods
[OperationContract]
void SaveProjectPermissions(Guid projectId, List grantedUserIds, bool reassign, bool cascading, bool reassignCascading);
//[OperationContract]
//void GrantProjectPermissions(Guid projectId, List grantedUserIds, bool cascading);
//[OperationContract]
//void RevokeProjectPermissions(Guid projectId, List grantedUserIds, bool cascading);
[OperationContract]
IEnumerable GetProjectPermissions(Guid projectId);
#endregion
#region AssignedProjectResource Methods
[OperationContract]
void SaveProjectResourceAssignments(Guid projectId, List resourceIds, bool reassign, bool cascading, bool reassignCascading);
//[OperationContract]
//void AssignProjectResources(Guid projectId, List resourceIds, bool cascading);
//[OperationContract]
//void UnassignProjectResources(Guid projectId, List resourceIds, bool cascading);
[OperationContract]
IEnumerable GetAssignedResourcesForProject(Guid projectId);
[OperationContract]
IEnumerable GetAssignedResourcesForProjectAdministration(Guid projectId);
[OperationContract]
IEnumerable GetAssignedResourcesForProjectsAdministration(IEnumerable projectIds);
#endregion
#region Slave Methods
[OperationContract]
Guid AddSlave(Slave slave);
[OperationContract]
Guid AddSlaveGroup(SlaveGroup slaveGroup);
[OperationContract]
Slave GetSlave(Guid slaveId);
[OperationContract]
IEnumerable GetSlaves();
[OperationContract]
IEnumerable GetSlaveGroups();
[OperationContract]
IEnumerable GetSlavesForAdministration();
[OperationContract]
IEnumerable GetSlaveGroupsForAdministration();
[OperationContract]
IDictionary> GetResourceGenealogy();
[OperationContract]
IDictionary GetResourceNames();
[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 TriggerEventManager(bool force);
[OperationContract]
int GetNewHeartbeatInterval(Guid slaveId);
#endregion
#region Downtime Methods
[OperationContract]
Guid AddDowntime(Downtime downtime);
[OperationContract]
void DeleteDowntime(Guid downtimeId);
[OperationContract]
void UpdateDowntime(Downtime downtimeDto);
[OperationContract]
IEnumerable GetDowntimesForResource(Guid resourceId);
#endregion
#region User Methods
[OperationContract]
string GetUsernameByUserId(Guid userId);
[OperationContract]
Guid GetUserIdByUsername(string username);
[OperationContract]
Dictionary> GetUserGroupTree();
[OperationContract]
bool CheckAccessToAdminAreaGranted();
#endregion
#region UserPriorities Methods
[OperationContract]
IEnumerable GetUserPriorities();
#endregion
}
}