Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs @ 8051

Last change on this file since 8051 was 8051, checked in by jkarder, 12 years ago

#1859: manually merged branch "HiveResourcePermissionManagement (trunk integration)" into trunk

File size: 6.7 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24using System.Net.Security;
25using System.ServiceModel;
26using HeuristicLab.Services.Hive.DataTransfer;
27
28namespace HeuristicLab.Services.Hive.ServiceContracts {
29
30  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
31  public interface IHiveService {
32    #region Authorization Methods
33    [OperationContract]
34    bool AuthorizesForResourceAdministration(Guid resourceId);
35    #endregion
36
37    #region Task Methods
38    [OperationContract]
39    Guid AddTask(Task task, TaskData taskData, IEnumerable<Guid> resourceIds);
40
41    [OperationContract]
42    Guid AddChildTask(Guid parentTaskId, Task task, TaskData taskData);
43
44    [OperationContract]
45    Task GetTask(Guid taskId);
46
47    [OperationContract]
48    IEnumerable<Task> GetTasks();
49
50    [OperationContract]
51    IEnumerable<LightweightTask> GetLightweightTasks(IEnumerable<Guid> taskIds);
52
53    [OperationContract]
54    IEnumerable<LightweightTask> GetLightweightChildTasks(Guid? parentTaskId, bool recursive, bool includeParent);
55
56    [OperationContract]
57    IEnumerable<LightweightTask> GetLightweightJobTasks(Guid jobId);
58
59    [OperationContract]
60    TaskData GetTaskData(Guid taskId);
61
62    [OperationContract]
63    void UpdateTask(Task taskDto);
64
65    [OperationContract]
66    void UpdateTaskData(Task taskDto, TaskData taskDataDto);
67
68    [OperationContract]
69    void DeleteTask(Guid taskId);
70
71    [OperationContract]
72    void DeleteChildTasks(Guid parentTaskId);
73
74    [OperationContract]
75    Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception);
76    #endregion
77
78    #region Task Control Methods
79    [OperationContract]
80    void StopTask(Guid taskId);
81
82    [OperationContract]
83    void PauseTask(Guid taskId);
84
85    [OperationContract]
86    void RestartTask(Guid taskId);
87    #endregion
88
89    #region Job Methods
90    [OperationContract]
91    Job GetJob(Guid id);
92
93    /// <summary>
94    /// Returns all task for the current user
95    /// </summary>
96    [OperationContract]
97    IEnumerable<Job> GetJobs();
98
99    /// <summary>
100    /// Returns all task in the hive (only for admins)
101    /// </summary>
102    /// <returns></returns>
103    [OperationContract]
104    IEnumerable<Job> GetAllJobs();
105
106    [OperationContract]
107    Guid AddJob(Job jobDto);
108
109    [OperationContract]
110    void UpdateJob(Job jobDto);
111
112    [OperationContract]
113    void DeleteJob(Guid JobId);
114    #endregion
115
116    #region JobPermission Methods
117    [OperationContract]
118    void GrantPermission(Guid jobId, Guid grantedUserId, Permission permission);
119
120    [OperationContract]
121    void RevokePermission(Guid hiveExperimentId, Guid grantedUserId);
122
123    [OperationContract]
124    IEnumerable<JobPermission> GetJobPermissions(Guid jobId);
125
126    [OperationContract]
127    bool IsAllowedPrivileged(); // current user may execute privileged task
128    #endregion
129
130    #region Login Methods
131    [OperationContract]
132    void Hello(Slave slave);
133
134    [OperationContract]
135    void GoodBye(Guid slaveId);
136    #endregion
137
138    #region Heartbeat Methods
139    [OperationContract]
140    List<MessageContainer> Heartbeat(Heartbeat heartbeat);
141    #endregion
142
143    #region Plugin Methods
144    [OperationContract]
145    Plugin GetPlugin(Guid pluginId);
146
147    [OperationContract]
148    Plugin GetPluginByHash(byte[] hash);
149
150    [OperationContract]
151    [FaultContract(typeof(PluginAlreadyExistsFault))]
152    Guid AddPlugin(Plugin plugin, List<PluginData> pluginData);
153
154    [OperationContract]
155    IEnumerable<Plugin> GetPlugins();
156
157    [OperationContract]
158    IEnumerable<PluginData> GetPluginDatas(List<Guid> pluginIds);
159
160    [OperationContract]
161    void DeletePlugin(Guid pluginId);
162    #endregion
163
164    #region ResourcePermission Methods
165    [OperationContract]
166    void GrantResourcePermissions(Guid resourceId, params Guid[] grantedUserIds);
167
168    [OperationContract]
169    void RevokeResourcePermissions(Guid resourceId, params Guid[] grantedUserIds);
170
171    [OperationContract]
172    IEnumerable<ResourcePermission> GetResourcePermissions(Guid resourceId);
173    #endregion
174
175    #region Slave Methods
176    [OperationContract]
177    Guid AddSlave(Slave slave);
178
179    [OperationContract]
180    Guid AddSlaveGroup(SlaveGroup slaveGroup);
181
182    [OperationContract]
183    Slave GetSlave(Guid slaveId);
184
185    [OperationContract]
186    SlaveGroup GetSlaveGroup(Guid slaveGroupId);
187
188    [OperationContract]
189    IEnumerable<Slave> GetSlaves();
190
191    [OperationContract]
192    IEnumerable<SlaveGroup> GetSlaveGroups();
193
194    [OperationContract]
195    void UpdateSlave(Slave slave);
196
197    [OperationContract]
198    void UpdateSlaveGroup(SlaveGroup slaveGroup);
199
200    [OperationContract]
201    void DeleteSlave(Guid slaveId);
202
203    [OperationContract]
204    void DeleteSlaveGroup(Guid slaveGroupId);
205
206    [OperationContract]
207    void AddResourceToGroup(Guid slaveGroupId, Guid resourceId);
208
209    [OperationContract]
210    void RemoveResourceFromGroup(Guid slaveGroupId, Guid resourceId);
211
212    [OperationContract]
213    Guid GetResourceId(string resourceName);
214
215    [OperationContract]
216    IEnumerable<Task> GetTasksByResourceId(Guid resourceId);
217
218    [OperationContract]
219    void TriggerEventManager(bool force);
220
221    [OperationContract]
222    int GetNewHeartbeatInterval(Guid slaveId);
223    #endregion
224
225    #region Downtime Methods
226    [OperationContract]
227    Guid AddDowntime(Downtime downtime);
228
229    [OperationContract]
230    void DeleteDowntime(Guid downtimeId);
231
232    [OperationContract]
233    void UpdateDowntime(Downtime downtime);
234
235    [OperationContract]
236    IEnumerable<Downtime> GetDowntimesForResource(Guid resourceId);
237    #endregion
238
239    #region User Methods
240    [OperationContract]
241    string GetUsernameByUserId(Guid userId);
242
243    [OperationContract]
244    Guid GetUserIdByUsername(string username);
245    #endregion
246  }
247}
Note: See TracBrowser for help on using the repository browser.