3 #ifndef __ARC_EXECUTIONTARGET_H__
4 #define __ARC_EXECUTIONTARGET_H__
15 #include <arc/DateTime.h>
16 #include <arc/compute/Endpoint.h>
18 #include <arc/Utils.h>
19 #include <arc/compute/GLUE2Entity.h>
20 #include <arc/compute/JobDescription.h>
21 #include <arc/compute/Software.h>
22 #include <arc/compute/SubmissionStatus.h>
28 class SubmitterPlugin;
60 :
Software(Name), FreeSlots(-1), FreeJobs(-1), FreeUserSeats(-1) {}
62 :
Software(Name, Version), FreeSlots(-1), FreeJobs(-1), FreeUserSeats(-1) {}
64 Software::operator=(sv);
111 : VirtualMachine(
false), CPUClockSpeed(-1), MainMemorySize(-1),
112 ConnectivityIn(
false), ConnectivityOut(
false) {}
114 std::string Platform;
116 std::string CPUVendor;
117 std::string CPUModel;
118 std::string CPUVersion;
137 bool ConnectivityOut;
149 Reservation(
false), BulkSubmission(
false),
150 TotalPhysicalCPUs(-1), TotalLogicalCPUs(-1), TotalSlots(-1),
152 WorkingAreaShared(
true), WorkingAreaTotal(-1), WorkingAreaFree(-1), WorkingAreaLifeTime(-1),
153 CacheTotal(-1), CacheFree(-1) {}
156 std::string ProductName;
157 std::string ProductVersion;
160 int TotalPhysicalCPUs;
161 int TotalLogicalCPUs;
164 std::list<std::string> NetworkInfo;
165 bool WorkingAreaShared;
166 int WorkingAreaTotal;
168 Period WorkingAreaLifeTime;
182 MaxWallTime(-1), MaxTotalWallTime(-1), MinWallTime(-1), DefaultWallTime(-1),
183 MaxCPUTime(-1), MaxTotalCPUTime(-1), MinCPUTime(-1), DefaultCPUTime(-1),
184 MaxTotalJobs(-1), MaxRunningJobs(-1), MaxWaitingJobs(-1),
185 MaxPreLRMSWaitingJobs(-1), MaxUserRunningJobs(-1), MaxSlotsPerJob(-1),
186 MaxStageInStreams(-1), MaxStageOutStreams(-1),
189 TotalJobs(-1), RunningJobs(-1), LocalRunningJobs(-1), WaitingJobs(-1), LocalWaitingJobs(-1),
190 SuspendedJobs(-1), LocalSuspendedJobs(-1), StagingJobs(-1), PreLRMSWaitingJobs(-1),
191 EstimatedAverageWaitingTime(-1), EstimatedWorstWaitingTime(-1),
192 FreeSlots(-1), UsedSlots(-1), RequestedSlots(-1) {}
201 std::string MappingQueue;
214 int MaxPreLRMSWaitingJobs;
215 int MaxUserRunningJobs;
217 int MaxStageInStreams;
218 int MaxStageOutStreams;
219 std::string SchedulingPolicy;
245 URL DefaultStorageService;
249 int LocalRunningJobs;
251 int LocalWaitingJobs;
253 int LocalSuspendedJobs;
255 int PreLRMSWaitingJobs;
256 Period EstimatedAverageWaitingTime;
257 Period EstimatedWorstWaitingTime;
270 std::string ReservationPolicy;
282 TotalJobs(-1), RunningJobs(-1), WaitingJobs(-1),
283 StagingJobs(-1), SuspendedJobs(-1), PreLRMSWaitingJobs(-1) {}
286 std::string URLString;
287 std::string InterfaceName;
288 std::string HealthState;
289 std::string HealthStateInfo;
290 std::string QualityLevel;
291 std::set<std::string> Capability;
292 std::string Technology;
293 std::list<std::string> InterfaceVersion;
294 std::list<std::string> InterfaceExtension;
295 std::list<std::string> SupportedProfile;
296 std::string Implementor;
298 std::string ServingState;
299 std::string IssuerCA;
300 std::list<std::string> TrustedCA;
309 int PreLRMSWaitingJobs;
311 std::list<std::string> JobDescriptions;
323 TotalJobs(-1), RunningJobs(-1), WaitingJobs(-1),
324 StagingJobs(-1), SuspendedJobs(-1), PreLRMSWaitingJobs(-1) {}
328 std::set<std::string> Capability;
329 std::string QualityLevel;
335 int PreLRMSWaitingJobs;
369 std::map<int, ExecutionEnvironmentType> ExecutionEnvironment;
386 std::set<int> ComputingEndpointIDs;
396 std::set<int> ComputingShareIDs;
407 void GetExecutionTargets(T& container)
const;
412 std::map<int, ComputingEndpointType> ComputingEndpoint;
413 std::map<int, ComputingShareType> ComputingShare;
414 std::map<int, ComputingManagerType> ComputingManager;
419 void AddExecutionTarget(T& container,
const ExecutionTarget& et)
const;
425 void ComputingServiceType::AddExecutionTarget< std::list<ExecutionTarget> >(std::list<ExecutionTarget>& etList,
const ExecutionTarget& et)
const;
453 Benchmarks(new std::map<std::string, double>()),
463 Location(t.Location), AdminDomain(t.AdminDomain), ComputingService(t.ComputingService),
464 ComputingEndpoint(t.ComputingEndpoint), OtherEndpoints(t.OtherEndpoints),
465 ComputingShare(t.ComputingShare), ComputingManager(t.ComputingManager),
466 ExecutionEnvironment(t.ExecutionEnvironment),
467 Benchmarks(t.Benchmarks), ApplicationEnvironments(t.ApplicationEnvironments) {}
479 Location(l), AdminDomain(a), ComputingService(cse),
480 ComputingEndpoint(ce), OtherEndpoints(oe), ComputingShare(csh),
481 ComputingManager(cm), ExecutionEnvironment(ee),
482 Benchmarks(b), ApplicationEnvironments(ae) {}
499 ExecutionEnvironment((*(
ExecutionTarget*)addrptr).ExecutionEnvironment),
501 ApplicationEnvironments((*(
ExecutionTarget*)addrptr).ApplicationEnvironments) {}
505 Location = et.Location; AdminDomain = et.AdminDomain; ComputingService = et.ComputingService;
506 ComputingEndpoint = et.ComputingEndpoint; ComputingEndpoint = et.ComputingEndpoint; ComputingShare = et.ComputingShare;
507 ComputingManager = et.ComputingManager; Benchmarks = et.Benchmarks;
508 ExecutionEnvironment = et.ExecutionEnvironment; ApplicationEnvironments = et.ApplicationEnvironments;
514 SubmissionStatus Submit(
const UserConfig& ucfg,
const JobDescription& jobdesc, Job& job)
const;
539 static void GetExecutionTargets(
const std::list<ComputingServiceType>& csList, std::list<ExecutionTarget>& etList);
541 CountedPointer<LocationAttributes> Location;
542 CountedPointer<AdminDomainAttributes> AdminDomain;
543 CountedPointer<ComputingServiceAttributes> ComputingService;
544 CountedPointer<ComputingEndpointAttributes> ComputingEndpoint;
545 std::list< CountedPointer<ComputingEndpointAttributes> > OtherEndpoints;
546 CountedPointer<ComputingShareAttributes> ComputingShare;
547 CountedPointer<ComputingManagerAttributes> ComputingManager;
548 CountedPointer<ExecutionEnvironmentAttributes> ExecutionEnvironment;
549 CountedPointer< std::map<std::string, double> > Benchmarks;
550 CountedPointer< std::list<ApplicationEnvironment> > ApplicationEnvironments;
553 static Logger logger;
558 #endif // __ARC_EXECUTIONTARGET_H__