Changeset 7916 for trunk/sources/HeuristicLab.Services.Hive
- Timestamp:
- 05/29/12 14:04:59 (12 years ago)
- Location:
- trunk/sources/HeuristicLab.Services.Hive/3.3
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Services.Hive/3.3/Convert.cs
r7857 r7916 200 200 #endregion 201 201 202 #region Resource 203 public static DT.Resource ToDto(DB.Resource source) { 204 if (source == null) return null; 205 return new DT.Resource { Id = source.ResourceId, Name = source.Name, ParentResourceId = source.ParentResourceId, HbInterval = source.HbInterval, OwnerUserId = source.OwnerUserId }; 206 } 207 public static DB.Resource ToEntity(DT.Resource source) { 208 if (source == null) return null; 209 var entity = new DB.Resource(); ToEntity(source, entity); 210 return entity; 211 } 212 public static void ToEntity(DT.Resource source, DB.Resource target) { 213 if ((source != null) && (target != null)) { 214 target.ResourceId = source.Id; target.Name = source.Name; target.ParentResourceId = source.ParentResourceId; target.HbInterval = source.HbInterval; target.OwnerUserId = source.OwnerUserId; 215 } 216 } 217 #endregion 218 219 #region SlaveGroup 220 public static DT.SlaveGroup ToDto(DB.SlaveGroup source) { 221 if (source == null) return null; 222 return new DT.SlaveGroup { Id = source.ResourceId, Name = source.Name, ParentResourceId = source.ParentResourceId, HbInterval = source.HbInterval, OwnerUserId = source.OwnerUserId }; 223 } 224 public static DB.SlaveGroup ToEntity(DT.SlaveGroup source) { 225 if (source == null) return null; 226 var entity = new DB.SlaveGroup(); ToEntity(source, entity); 227 return entity; 228 } 229 public static void ToEntity(DT.SlaveGroup source, DB.SlaveGroup target) { 230 if ((source != null) && (target != null)) { 231 target.ResourceId = source.Id; target.Name = source.Name; target.ParentResourceId = source.ParentResourceId; target.HbInterval = source.HbInterval; target.OwnerUserId = source.OwnerUserId; 232 } 233 } 234 #endregion 235 202 236 #region Slave 203 237 public static DT.Slave ToDto(DB.Slave source) { … … 219 253 CpuUtilization = source.CpuUtilization, 220 254 HbInterval = source.HbInterval, 221 IsDisposable = source.IsDisposable 255 IsDisposable = source.IsDisposable, 256 OwnerUserId = source.OwnerUserId 222 257 }; 223 258 } … … 245 280 target.HbInterval = source.HbInterval; 246 281 target.IsDisposable = source.IsDisposable; 247 } 248 } 249 #endregion 250 251 #region SlaveGroup 252 public static DT.SlaveGroup ToDto(DB.SlaveGroup source) { 253 if (source == null) return null; 254 return new DT.SlaveGroup { Id = source.ResourceId, Name = source.Name, ParentResourceId = source.ParentResourceId, HbInterval = source.HbInterval }; 255 } 256 public static DB.SlaveGroup ToEntity(DT.SlaveGroup source) { 257 if (source == null) return null; 258 var entity = new DB.SlaveGroup(); ToEntity(source, entity); 259 return entity; 260 } 261 public static void ToEntity(DT.SlaveGroup source, DB.SlaveGroup target) { 262 if ((source != null) && (target != null)) { 263 target.ResourceId = source.Id; target.Name = source.Name; target.ParentResourceId = source.ParentResourceId; target.HbInterval = source.HbInterval; 264 } 265 } 266 #endregion 267 268 #region Resource 269 public static DT.Resource ToDto(DB.Resource source) { 270 if (source == null) return null; 271 return new DT.Resource { Id = source.ResourceId, Name = source.Name, ParentResourceId = source.ParentResourceId, HbInterval = source.HbInterval }; 272 } 273 public static DB.Resource ToEntity(DT.Resource source) { 274 if (source == null) return null; 275 var entity = new DB.Resource(); ToEntity(source, entity); 276 return entity; 277 } 278 public static void ToEntity(DT.Resource source, DB.Resource target) { 279 if ((source != null) && (target != null)) { 280 target.ResourceId = source.Id; target.Name = source.Name; target.ParentResourceId = source.ParentResourceId; target.HbInterval = source.HbInterval; 281 } 282 } 283 #endregion 284 285 #region Statistics 286 public static DT.Statistics ToDto(DB.Statistics source) { 287 if (source == null) return null; 288 return new DT.Statistics { 289 Id = source.StatisticsId, 290 TimeStamp = source.Timestamp, 291 SlaveStatistics = source.SlaveStatistics.Select(x => Convert.ToDto(x)).ToArray(), 292 UserStatistics = source.UserStatistics.Select(x => Convert.ToDto(x)).ToArray() 293 }; 294 } 295 public static DB.Statistics ToEntity(DT.Statistics source) { 296 if (source == null) return null; 297 var entity = new DB.Statistics(); ToEntity(source, entity); 298 return entity; 299 } 300 public static void ToEntity(DT.Statistics source, DB.Statistics target) { 301 if ((source != null) && (target != null)) { 302 target.StatisticsId = source.Id; 303 target.Timestamp = source.TimeStamp; 304 282 target.OwnerUserId = source.OwnerUserId; 283 } 284 } 285 #endregion 286 287 #region ResourcePermission 288 public static DT.ResourcePermission ToDto(DB.ResourcePermission source) { 289 if (source == null) return null; 290 return new DT.ResourcePermission { ResourceId = source.ResourceId, GrantedUserId = source.GrantedUserId, GrantedByUserId = source.GrantedByUserId }; 291 } 292 public static DB.ResourcePermission ToEntity(DT.ResourcePermission source) { 293 if (source == null) return null; 294 var entity = new DB.ResourcePermission(); ToEntity(source, entity); 295 return entity; 296 } 297 public static void ToEntity(DT.ResourcePermission source, DB.ResourcePermission target) { 298 if ((source != null) && (target != null)) { 299 target.ResourceId = source.ResourceId; target.GrantedUserId = source.GrantedUserId; target.GrantedByUserId = source.GrantedByUserId; 305 300 } 306 301 } … … 334 329 target.FreeMemory = source.FreeMemory; 335 330 target.Memory = source.Memory; 331 } 332 } 333 #endregion 334 335 #region Statistics 336 public static DT.Statistics ToDto(DB.Statistics source) { 337 if (source == null) return null; 338 return new DT.Statistics { 339 Id = source.StatisticsId, 340 TimeStamp = source.Timestamp, 341 SlaveStatistics = source.SlaveStatistics.Select(x => Convert.ToDto(x)).ToArray(), 342 UserStatistics = source.UserStatistics.Select(x => Convert.ToDto(x)).ToArray() 343 }; 344 } 345 public static DB.Statistics ToEntity(DT.Statistics source) { 346 if (source == null) return null; 347 var entity = new DB.Statistics(); ToEntity(source, entity); 348 return entity; 349 } 350 public static void ToEntity(DT.Statistics source, DB.Statistics target) { 351 if ((source != null) && (target != null)) { 352 target.StatisticsId = source.Id; 353 target.Timestamp = source.TimeStamp; 354 336 355 } 337 356 } -
trunk/sources/HeuristicLab.Services.Hive/3.3/DataTransfer/Resource.cs
r7259 r7916 29 29 [DataMember] 30 30 public Guid? ParentResourceId { get; set; } 31 32 31 [DataMember] 33 32 public int HbInterval { get; set; } 33 [DataMember] 34 public Guid? OwnerUserId { get; set; } 34 35 35 36 public Resource() { } -
trunk/sources/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj
r7189 r7916 114 114 <Compile Include="Convert.cs" /> 115 115 <Compile Include="DataTransfer\Command.cs" /> 116 <Compile Include="DataTransfer\ResourcePermission.cs" /> 116 117 <Compile Include="DataTransfer\Downtime.cs" /> 117 118 <Compile Include="DataTransfer\Heartbeat.cs" /> -
trunk/sources/HeuristicLab.Services.Hive/3.3/HiveDao.cs
r7259 r7916 613 613 #endregion 614 614 615 #region ResourcePermission Methods 616 public DT.ResourcePermission GetResourcePermission(Guid resourceId, Guid grantedUserId) { 617 using (var db = CreateContext()) { 618 return DT.Convert.ToDto(db.ResourcePermissions.SingleOrDefault(x => x.ResourceId == resourceId && x.GrantedUserId == grantedUserId)); 619 } 620 } 621 622 public IEnumerable<DT.ResourcePermission> GetResourcePermissions(Expression<Func<ResourcePermission, bool>> predicate) { 623 using (var db = CreateContext()) { 624 return db.ResourcePermissions.Where(predicate).Select(x => DT.Convert.ToDto(x)).ToArray(); 625 } 626 } 627 628 public void AddResourcePermission(DT.ResourcePermission dto) { 629 using (var db = CreateContext()) { 630 var entity = db.ResourcePermissions.SingleOrDefault(x => x.ResourceId == dto.ResourceId && x.GrantedUserId == dto.GrantedUserId); 631 if (entity == null) { db.ResourcePermissions.InsertOnSubmit(DT.Convert.ToEntity(dto)); db.SubmitChanges(); } 632 } 633 } 634 635 public void UpdateResourcePermission(DT.ResourcePermission dto) { 636 using (var db = CreateContext()) { 637 var entity = db.ResourcePermissions.FirstOrDefault(x => x.ResourceId == dto.ResourceId && x.GrantedUserId == dto.GrantedUserId); 638 if (entity == null) db.ResourcePermissions.InsertOnSubmit(DT.Convert.ToEntity(dto)); 639 else DT.Convert.ToEntity(dto, entity); 640 db.SubmitChanges(); 641 } 642 } 643 644 public void DeleteResourcePermission(Guid resourceId, Guid grantedUserId) { 645 using (var db = CreateContext()) { 646 var entity = db.ResourcePermissions.FirstOrDefault(x => x.ResourceId == resourceId && x.GrantedUserId == grantedUserId); 647 if (entity != null) db.ResourcePermissions.DeleteOnSubmit(entity); 648 db.SubmitChanges(); 649 } 650 } 651 #endregion 652 615 653 #region Authorization Methods 616 654 public Permission GetPermissionForTask(Guid taskId, Guid userId) { -
trunk/sources/HeuristicLab.Services.Hive/3.3/HiveService.cs
r7910 r7916 353 353 public void Hello(Slave slaveInfo) { 354 354 authen.AuthenticateForAnyRole(HiveRoles.Slave); 355 if (userManager.CurrentUser.UserName != "hiveslave") 356 slaveInfo.OwnerUserId = userManager.CurrentUserId; 357 355 358 trans.UseTransaction(() => { 356 359 var slave = dao.GetSlave(slaveInfo.Id); … … 359 362 dao.AddSlave(slaveInfo); 360 363 } else { 361 var dbSlave = dao.GetSlave(slaveInfo.Id); 362 363 dbSlave.Name = slaveInfo.Name; 364 dbSlave.Description = slaveInfo.Description; 365 366 dbSlave.Cores = slaveInfo.Cores; 367 dbSlave.CpuArchitecture = slaveInfo.CpuArchitecture; 368 dbSlave.CpuSpeed = slaveInfo.CpuSpeed; 369 dbSlave.FreeCores = slaveInfo.FreeCores; 370 dbSlave.FreeMemory = slaveInfo.FreeMemory; 371 dbSlave.Memory = slaveInfo.Memory; 372 dbSlave.OperatingSystem = slaveInfo.OperatingSystem; 373 374 dbSlave.LastHeartbeat = DateTime.Now; 375 dbSlave.SlaveState = SlaveState.Idle; 364 slave.Name = slaveInfo.Name; 365 slave.Description = slaveInfo.Description; 366 slave.OwnerUserId = slaveInfo.OwnerUserId; 367 368 slave.Cores = slaveInfo.Cores; 369 slave.CpuArchitecture = slaveInfo.CpuArchitecture; 370 slave.CpuSpeed = slaveInfo.CpuSpeed; 371 slave.FreeCores = slaveInfo.FreeCores; 372 slave.FreeMemory = slaveInfo.FreeMemory; 373 slave.Memory = slaveInfo.Memory; 374 slave.OperatingSystem = slaveInfo.OperatingSystem; 375 376 slave.LastHeartbeat = DateTime.Now; 377 slave.SlaveState = SlaveState.Idle; 376 378 377 379 // don't update those properties: dbSlave.IsAllowedToCalculate, dbSlave.ParentResourceId 378 380 379 dao.UpdateSlave( dbSlave);381 dao.UpdateSlave(slave); 380 382 } 381 383 }); … … 461 463 authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave); 462 464 dao.DeletePlugin(pluginId); 465 } 466 #endregion 467 468 #region ResourcePermission Methods 469 public void GrantResourcePermission(Guid resourceId, Guid grantedUserId) { 470 authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 471 trans.UseTransaction(() => { 472 Resource resource = dao.GetResource(resourceId); 473 if (resource == null) throw new FaultException<FaultReason>(new FaultReason("Could not find resource with id " + resourceId)); 474 if (resource.OwnerUserId != userManager.CurrentUserId) throw new FaultException<FaultReason>(new FaultReason("Not allowed to grant permission for this resource")); 475 dao.AddResourcePermission(new ResourcePermission { ResourceId = resourceId, GrantedByUserId = userManager.CurrentUserId, GrantedUserId = grantedUserId }); 476 }); 477 } 478 479 public void RevokeResourcePermission(Guid resourceId, Guid grantedUserId) { 480 authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 481 trans.UseTransaction(() => { 482 Resource resource = dao.GetResource(resourceId); 483 if (resource == null) throw new FaultException<FaultReason>(new FaultReason("Could not find resource with id " + resourceId)); 484 if (resource.OwnerUserId != userManager.CurrentUserId) throw new FaultException<FaultReason>(new FaultReason("Not allowed to revoke permission for this resource")); 485 dao.DeleteResourcePermission(resourceId, grantedUserId); 486 }); 487 } 488 489 public IEnumerable<ResourcePermission> GetResourcePermissions(Guid resourceId) { 490 authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 491 return trans.UseTransaction(() => { 492 Resource resource = dao.GetResource(resourceId); 493 if (resource == null) throw new FaultException<FaultReason>(new FaultReason("Could not find resource with id " + resourceId)); 494 if (resource.OwnerUserId != userManager.CurrentUserId) throw new FaultException<FaultReason>(new FaultReason("Not allowed to list permissions for this resource")); 495 return dao.GetResourcePermissions(x => x.ResourceId == resourceId); 496 }); 463 497 } 464 498 #endregion … … 497 531 public IEnumerable<Slave> GetSlaves() { 498 532 authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 499 return dao.GetSlaves(x => true); 533 return dao.GetSlaves(x => x.OwnerUserId == null 534 || x.OwnerUserId == userManager.CurrentUserId 535 || x.ResourcePermissions.Count(y => y.GrantedUserId == userManager.CurrentUserId) > 0 536 || authen.IsInRole(HiveRoles.Administrator)); 500 537 } 501 538 502 539 public IEnumerable<SlaveGroup> GetSlaveGroups() { 503 540 authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client); 504 return dao.GetSlaveGroups(x => true); 541 return dao.GetSlaveGroups(x => x.OwnerUserId == null 542 || x.OwnerUserId == userManager.CurrentUserId 543 || x.ResourcePermissions.Count(y => y.GrantedUserId == userManager.CurrentUserId) > 0 544 || authen.IsInRole(HiveRoles.Administrator)); 505 545 } 506 546 -
trunk/sources/HeuristicLab.Services.Hive/3.3/Interfaces/IHiveDao.cs
r7259 r7916 117 117 #endregion 118 118 119 #region ResourcePermission Methods 120 DT.ResourcePermission GetResourcePermission(Guid resourceId, Guid grantedUserId); 121 IEnumerable<DT.ResourcePermission> GetResourcePermissions(Expression<Func<ResourcePermission, bool>> predicate); 122 void AddResourcePermission(DT.ResourcePermission dto); 123 void UpdateResourcePermission(DT.ResourcePermission dto); 124 void DeleteResourcePermission(Guid resourceId, Guid grantedUserId); 125 #endregion 126 119 127 #region Authorization Methods 120 128 Permission GetPermissionForTask(Guid taskId, Guid userId); -
trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs
r7259 r7916 158 158 #endregion 159 159 160 #region ResourcePermission Methods 161 [OperationContract] 162 void GrantResourcePermission(Guid resourceId, Guid grantedUserId); 163 164 [OperationContract] 165 void RevokeResourcePermission(Guid resourceId, Guid grantedUserId); 166 167 [OperationContract] 168 IEnumerable<ResourcePermission> GetResourcePermissions(Guid resourceId); 169 #endregion 170 160 171 #region Slave Methods 161 172 [OperationContract]
Note: See TracChangeset
for help on using the changeset viewer.