#region License Information
/* HeuristicLab
* Copyright (C) 2002-2008 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.Linq;
using System.Text;
using HeuristicLab.Hive.Contracts.Interfaces;
using HeuristicLab.Hive.Contracts.BusinessObjects;
using HeuristicLab.Hive.Contracts;
using HeuristicLab.Hive.Server.Core.InternalInterfaces;
using System.ServiceModel;
using HeuristicLab.Hive.Server.DataAccess;
using HeuristicLab.Hive.Contracts.ResponseObjects;
using System.Security.Permissions;
//IIdentity id = ServiceSecurityContext.Current.PrimaryIdentity;
//if (!Thread.CurrentPrincipal.IsInRole("Administrator")) {
//} else {
// // access denied
// throw new SecurityException();
//}
namespace HeuristicLab.Hive.Server.Core {
public class ServerConsoleFacade : IServerConsoleFacade {
private ISlaveManager slaveManager = ServiceLocator.GetSlaveManager();
private IJobManager jobManager = ServiceLocator.GetJobManager();
private IContextFactory contextFactory = ServiceLocator.GetContextFactory();
public Guid sessionID = Guid.Empty;
public ServerConsoleFacade() {
}
public Response Login() {
Response resp = new Response();
return resp;
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetAllSlaves() {
using (contextFactory.GetContext(false)) {
return slaveManager.GetAllSlaves();
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetAllSlaveGroups() {
using (contextFactory.GetContext(false)) {
return slaveManager.GetAllSlaveGroups();
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetAllUpTimeStatistics() {
using (contextFactory.GetContext(false)) {
return slaveManager.GetAllUpTimeStatistics();
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject AddSlaveGroup(SlaveGroupDto slaveGroup) {
using (contextFactory.GetContext()) {
return slaveManager.AddSlaveGroup(slaveGroup);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response AddResourceToGroup(Guid slaveGroupId, ResourceDto resource) {
using (contextFactory.GetContext()) {
return slaveManager.AddResourceToGroup(slaveGroupId, resource);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response DeleteResourceFromGroup(Guid slaveGroupId, Guid resourceId) {
using (contextFactory.GetContext()) {
return slaveManager.DeleteResourceFromGroup(slaveGroupId, resourceId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetAllJobs() {
using (contextFactory.GetContext(false)) {
return jobManager.GetAllJobs();
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetAllJobsWithFilter(JobState jobState, int offset, int count) {
using (contextFactory.GetContext(false)) {
return jobManager.GetAllJobsWithFilter(jobState, offset, count);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject GetJobById(Guid jobId) {
using (contextFactory.GetContext(false)) {
return jobManager.GetJobById(jobId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject GetJobByIdWithDetails(Guid jobId) {
using (contextFactory.GetContext(false)) {
return jobManager.GetJobByIdWithDetails(jobId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject AddNewJob(SerializedJob job) {
using (contextFactory.GetContext()) {
return jobManager.AddNewJob(job);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject GetLastSerializedResult(Guid jobId, bool requested, bool snapshot) {
using (contextFactory.GetContext(false)) {
return jobManager.GetLastSerializedResult(jobId, requested, snapshot);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject GetJobResults(IEnumerable jobIds) {
using (contextFactory.GetContext(false)) {
return jobManager.GetJobResults(jobIds);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response RequestSnapshot(Guid jobId) {
using (contextFactory.GetContext()) {
return jobManager.RequestSnapshot(jobId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response AbortJob(Guid jobId) {
using (contextFactory.GetContext()) {
return jobManager.AbortJob(jobId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject GetAllGroupsOfResource(Guid resourceId) {
using (contextFactory.GetContext(false)) {
return slaveManager.GetAllGroupsOfResource(resourceId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response DeleteSlaveGroup(Guid slaveGroupId) {
using (contextFactory.GetContext()) {
return slaveManager.DeleteSlaveGroup(slaveGroupId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetAllProjects() {
using (contextFactory.GetContext(false)) {
return jobManager.GetAllProjects();
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response CreateProject(ProjectDto project) {
using (contextFactory.GetContext()) {
return jobManager.CreateProject(project);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response ChangeProject(ProjectDto project) {
using (contextFactory.GetContext()) {
return jobManager.ChangeProject(project);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response DeleteProject(Guid projectId) {
using (contextFactory.GetContext()) {
return jobManager.DeleteProject(projectId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetJobsByProject(Guid projectId) {
using (contextFactory.GetContext(false)) {
return jobManager.GetJobsByProject(projectId);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseList GetUptimeCalendarForResource(Guid guid) {
using (contextFactory.GetContext(false)) {
return slaveManager.GetUptimeCalendarForResource(guid);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public Response SetUptimeCalendarForResource(Guid guid, IEnumerable appointments, bool isForced) {
using (contextFactory.GetContext()) {
return slaveManager.SetUptimeCalendarForResource(guid, appointments, isForced);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Administrator)]
public ResponseObject AddJobWithGroupStrings(SerializedJob job, IEnumerable resources) {
using (contextFactory.GetContext()) {
return jobManager.AddJobWithGroupStrings(job, resources);
}
}
}
}