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;
73 :
Software(Name), FreeSlots(-1), FreeJobs(-1), FreeUserSeats(-1) {}
75 :
Software(Name,
Version), FreeSlots(-1), FreeJobs(-1), FreeUserSeats(-1) {}
77 Software::operator=(sv);
124 : VirtualMachine(
false), CPUClockSpeed(-1), MainMemorySize(-1),
125 ConnectivityIn(
false), ConnectivityOut(
false) {}
127 std::string Platform;
129 std::string CPUVendor;
130 std::string CPUModel;
131 std::string CPUVersion;
150 bool ConnectivityOut;
191 Reservation(
false), BulkSubmission(
false),
192 TotalPhysicalCPUs(-1), TotalLogicalCPUs(-1), TotalSlots(-1),
194 WorkingAreaShared(
true), WorkingAreaTotal(-1), WorkingAreaFree(-1), WorkingAreaLifeTime(-1),
195 CacheTotal(-1), CacheFree(-1) {}
198 std::string ProductName;
199 std::string ProductVersion;
202 int TotalPhysicalCPUs;
203 int TotalLogicalCPUs;
206 std::list<std::string> NetworkInfo;
207 bool WorkingAreaShared;
208 int WorkingAreaTotal;
210 Period WorkingAreaLifeTime;
224 MaxWallTime(-1), MaxTotalWallTime(-1), MinWallTime(-1), DefaultWallTime(-1),
225 MaxCPUTime(-1), MaxTotalCPUTime(-1), MinCPUTime(-1), DefaultCPUTime(-1),
226 MaxTotalJobs(-1), MaxRunningJobs(-1), MaxWaitingJobs(-1),
227 MaxPreLRMSWaitingJobs(-1), MaxUserRunningJobs(-1), MaxSlotsPerJob(-1),
228 MaxStageInStreams(-1), MaxStageOutStreams(-1),
231 TotalJobs(-1), RunningJobs(-1), LocalRunningJobs(-1), WaitingJobs(-1), LocalWaitingJobs(-1),
232 SuspendedJobs(-1), LocalSuspendedJobs(-1), StagingJobs(-1), PreLRMSWaitingJobs(-1),
233 EstimatedAverageWaitingTime(-1), EstimatedWorstWaitingTime(-1),
234 FreeSlots(-1), UsedSlots(-1), RequestedSlots(-1) {}
243 std::string MappingQueue;
256 int MaxPreLRMSWaitingJobs;
257 int MaxUserRunningJobs;
259 int MaxStageInStreams;
260 int MaxStageOutStreams;
261 std::string SchedulingPolicy;
287 URL DefaultStorageService;
291 int LocalRunningJobs;
293 int LocalWaitingJobs;
295 int LocalSuspendedJobs;
297 int PreLRMSWaitingJobs;
298 Period EstimatedAverageWaitingTime;
299 Period EstimatedWorstWaitingTime;
312 std::string ReservationPolicy;
324 TotalJobs(-1), RunningJobs(-1), WaitingJobs(-1),
325 StagingJobs(-1), SuspendedJobs(-1), PreLRMSWaitingJobs(-1) {}
328 std::string URLString;
329 std::string InterfaceName;
330 std::string HealthState;
331 std::string HealthStateInfo;
332 std::string QualityLevel;
333 std::set<std::string> Capability;
334 std::string Technology;
335 std::list<std::string> InterfaceVersion;
336 std::list<std::string> InterfaceExtension;
337 std::list<std::string> SupportedProfile;
338 std::string Implementor;
340 std::string ServingState;
341 std::string IssuerCA;
342 std::list<std::string> TrustedCA;
351 int PreLRMSWaitingJobs;
353 std::list<std::string> JobDescriptions;
365 TotalJobs(-1), RunningJobs(-1), WaitingJobs(-1),
366 StagingJobs(-1), SuspendedJobs(-1), PreLRMSWaitingJobs(-1) {}
370 std::set<std::string> Capability;
371 std::string QualityLevel;
377 int PreLRMSWaitingJobs;
420 std::map<int, ExecutionEnvironmentType> ExecutionEnvironment;
437 std::set<int> ComputingEndpointIDs;
452 std::set<int> ComputingShareIDs;
463 void GetExecutionTargets(T& container)
const;
468 std::map<int, ComputingEndpointType> ComputingEndpoint;
469 std::map<int, ComputingShareType> ComputingShare;
470 std::map<int, ComputingManagerType> ComputingManager;
475 void AddExecutionTarget(T& container,
const ExecutionTarget& et)
const;
481 void ComputingServiceType::AddExecutionTarget< std::list<ExecutionTarget> >(std::list<ExecutionTarget>& etList,
const ExecutionTarget& et)
const;
509 Benchmarks(new std::map<std::string, double>()),
519 Location(t.Location), AdminDomain(t.AdminDomain), ComputingService(t.ComputingService),
520 ComputingEndpoint(t.ComputingEndpoint), OtherEndpoints(t.OtherEndpoints),
521 ComputingShare(t.ComputingShare), MappingPolicies(t.MappingPolicies),
522 ComputingManager(t.ComputingManager), ExecutionEnvironment(t.ExecutionEnvironment),
523 Benchmarks(t.Benchmarks), ApplicationEnvironments(t.ApplicationEnvironments) {}
540 Location(l), AdminDomain(a), ComputingService(cse),
541 ComputingEndpoint(ce), OtherEndpoints(oe),
542 ComputingShare(csh), MappingPolicies(mp),
543 ComputingManager(cm), ExecutionEnvironment(ee),
544 Benchmarks(b), ApplicationEnvironments(ae) {}
562 ExecutionEnvironment((*(
ExecutionTarget*)addrptr).ExecutionEnvironment),
564 ApplicationEnvironments((*(
ExecutionTarget*)addrptr).ApplicationEnvironments) {}
568 Location = et.Location; AdminDomain = et.AdminDomain; ComputingService = et.ComputingService;
569 ComputingEndpoint = et.ComputingEndpoint; ComputingEndpoint = et.ComputingEndpoint;
570 ComputingShare = et.ComputingShare; MappingPolicies = et.MappingPolicies;
571 ComputingManager = et.ComputingManager; Benchmarks = et.Benchmarks;
572 ExecutionEnvironment = et.ExecutionEnvironment; ApplicationEnvironments = et.ApplicationEnvironments;
578 SubmissionStatus Submit(
const UserConfig& ucfg,
const JobDescription& jobdesc, Job& job)
const;
603 static void GetExecutionTargets(
const std::list<ComputingServiceType>& csList, std::list<ExecutionTarget>& etList);
605 CountedPointer<LocationAttributes> Location;
606 CountedPointer<AdminDomainAttributes> AdminDomain;
607 CountedPointer<ComputingServiceAttributes> ComputingService;
608 CountedPointer<ComputingEndpointAttributes> ComputingEndpoint;
609 std::list< CountedPointer<ComputingEndpointAttributes> > OtherEndpoints;
610 CountedPointer<ComputingShareAttributes> ComputingShare;
611 std::list< CountedPointer<MappingPolicyAttributes> > MappingPolicies;
612 CountedPointer<ComputingManagerAttributes> ComputingManager;
613 CountedPointer<ExecutionEnvironmentAttributes> ExecutionEnvironment;
614 CountedPointer< std::map<std::string, double> > Benchmarks;
615 CountedPointer< std::list<ApplicationEnvironment> > ApplicationEnvironments;
618 static Logger logger;
623 #endif // __ARC_EXECUTIONTARGET_H__ Definition: ExecutionTarget.h:416
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
Definition: ExecutionTarget.h:91
std::map< Period, int > FreeSlotsWithDuration
FreeSlotsWithDuration std::map<Period, int>
Definition: ExecutionTarget.h:309
std::map< int, MappingPolicyType > MappingPolicy
Definition: ExecutionTarget.h:442
int MaxMainMemory
MaxMainMemory UInt64 0..1 MB.
Definition: ExecutionTarget.h:269
ExecutionTarget(const CountedPointer< LocationAttributes > &l, const CountedPointer< AdminDomainAttributes > &a, const CountedPointer< ComputingServiceAttributes > &cse, const CountedPointer< ComputingEndpointAttributes > &ce, const std::list< CountedPointer< ComputingEndpointAttributes > > &oe, const CountedPointer< ComputingShareAttributes > &csh, const std::list< CountedPointer< MappingPolicyAttributes > > &mp, const CountedPointer< ComputingManagerAttributes > &cm, const CountedPointer< ExecutionEnvironmentAttributes > &ee, const CountedPointer< std::map< std::string, double > > &b, const CountedPointer< std::list< ApplicationEnvironment > > &ae)
Definition: ExecutionTarget.h:529
Definition: ExecutionTarget.h:221
Definition: GLUE2Entity.h:19
int MaxDiskSpace
MaxDiskSpace UInt64 0..1 GB.
Definition: ExecutionTarget.h:285
A class for storing and manipulating times.
Definition: DateTime.h:125
ExecutionTarget()
Create an ExecutionTarget.
Definition: ExecutionTarget.h:501
void RegisterJobSubmission(const JobDescription &jobdesc) const
Update ExecutionTarget after succesful job submission.
A logger class.
Definition: Logger.h:493
Wrapper for pointer with automatic destruction and multiple references.
Definition: Utils.h:183
Definition: ExecutionTarget.h:401
Definition: ExecutionTarget.h:434
Software()
Dummy constructor.
Definition: Software.h:58
Represents an endpoint of a service with a given interface type and capabilities. ...
Definition: Endpoint.h:68
Definition: ExecutionTarget.h:188
Definition: ExecutionTarget.h:109
Software OperatingSystem
OperatingSystem.
Definition: ExecutionTarget.h:147
ExecutionTarget(long int addrptr)
Create an ExecutionTarget.
Definition: ExecutionTarget.h:553
A Period represents a length of time.
Definition: DateTime.h:48
Definition: ExecutionTarget.h:389
CountedPointer< std::list< ApplicationEnvironment > > ApplicationEnvironments
ApplicationEnvironments.
Definition: ExecutionTarget.h:427
Class to represent general URLs.
Definition: URL.h:88
Definition: ExecutionTarget.h:395
Definition: ExecutionTarget.h:165
ApplicationEnvironment.
Definition: ExecutionTarget.h:68
friend std::ostream & operator<<(std::ostream &out, const ExecutionTarget &et)
Print the ExecutionTarget information.
Definition: ExecutionTarget.h:460
ExecutionTarget.
Definition: ExecutionTarget.h:494
Definition: ExecutionTarget.h:449
Definition: ExecutionTarget.h:321
std::list< std::string > Rule
Definition: ExecutionTarget.h:179
Definition: ExecutionTarget.h:410
std::string Scheme
Scheme adopted to define the policy rules.
Definition: ExecutionTarget.h:173
std::string Name
Name String 0..1.
Definition: ExecutionTarget.h:242
Definition: ExecutionTarget.h:121
std::string ID
A global unique ID.
Definition: ExecutionTarget.h:170
Definition: ExecutionTarget.h:362
int MaxVirtualMemory
MaxVirtualMemory UInt64 0..1 MB.
Definition: ExecutionTarget.h:277
Used to represent software (names and version) and comparison.
Definition: Software.h:38
ExecutionTarget(const ExecutionTarget &t)
Create an ExecutionTarget.
Definition: ExecutionTarget.h:518