1 #ifndef __ARC_JOBDESCRIPTION_H__ 2 #define __ARC_JOBDESCRIPTION_H__ 12 #include <arc/DateTime.h> 13 #include <arc/XMLNode.h> 15 #include <arc/compute/Software.h> 35 class JobDescriptionParserPluginLoader;
36 class ExecutionTarget;
45 OptIn<T>() : optIn(
false) {}
46 OptIn<T>(
const T& t) : v(t), optIn(
false) {}
47 OptIn<T>(
const T& t,
bool o) : v(t), optIn(o) {}
48 OptIn<T>(
const OptIn<T>& ot) : v(ot.v), optIn(ot.optIn) {}
50 OptIn<T>& operator=(
const OptIn<T>& ot) { v = ot.v; optIn = ot.optIn;
return *
this; }
51 OptIn<T>& operator=(
const T& t) { v = t; optIn =
false;
return *
this; }
53 operator T()
const {
return v; }
66 Range<T>() : min(0), max(0) {}
67 Range<T>(
const T& t) : min(t), max(t) {}
68 operator T(
void)
const {
return max; }
70 Range<T>& operator=(
const Range<T>& t) { min = t.min; max = t.max;
return *
this; };
71 Range<T>& operator=(
const T& t) { max = t;
return *
this; };
84 ScalableTime<T>() : benchmark(
"", -1.) {}
85 ScalableTime<T>(
const T& t) : range(t) {}
87 std::pair<std::string, double> benchmark;
96 class ScalableTime<int> {
98 ScalableTime<int>() : benchmark(
"", -1.) {}
99 ScalableTime<int>(
const int& t) : range(t) {}
101 std::pair<std::string, double> benchmark;
104 int scaleMin(
double s)
const {
return (
int)(range.min*benchmark.second/s); }
105 int scaleMax(
double s)
const {
return (
int)(range.max*benchmark.second/s); }
119 class JobIdentificationType {
121 JobIdentificationType() :
186 class ExecutableType {
232 class RemoteLoggingType {
234 RemoteLoggingType() :
optional(false) {}
271 class NotificationType {
273 NotificationType() {}
283 std::list<std::string>
States;
299 ApplicationType& operator=(
const ApplicationType&);
340 std::list< std::pair<std::string, std::string> >
Environment;
400 std::list<NotificationType> Notification;
427 ExclusiveExecution(EE_DEFAULT) {}
445 } ExclusiveExecution;
452 class DiskSpaceRequirementType {
454 DiskSpaceRequirementType() :
484 enum SessionDirectoryAccessMode {
494 enum NodeAccessType {
505 class ParallelEnvironmentType {
507 ParallelEnvironmentType() :
534 std::multimap<std::string, std::string>
Options;
555 ResourcesType& operator=(
const ResourcesType&);
658 SourceType(
const URL& u):
URL(u) {};
659 SourceType(
const std::string& s):
URL(s) {};
660 SourceType& operator=(
const URL& u) { URL::operator=(u);
return *
this; };
661 SourceType& operator=(
const std::string& s) { URL::operator=(s);
return *
this; };
662 std::string DelegationID;
768 std::list<SourceType> Sources;
818 operator bool(
void) {
return res; };
822 const std::string&
str(
void) {
return desc; };
846 class JobDescription {
848 friend class JobDescriptionParserPlugin;
849 JobDescription() : alternatives(), current(alternatives.begin()) {};
851 JobDescription(
const JobDescription& j,
bool withAlternatives =
true);
854 JobDescription(
const long int& ptraddr);
859 JobDescription&
operator=(
const JobDescription& j);
877 const std::list<JobDescription>&
GetAlternatives()
const {
return alternatives; }
899 void RemoveAlternatives();
921 static JobDescriptionResult
Parse(
const std::string& source, std::list<JobDescription>& jobdescs,
const std::string& language =
"",
const std::string& dialect =
"");
923 static JobDescriptionResult ParseFromFile(
const std::string& filename, std::list<JobDescription>& jobdescs,
const std::string& language =
"",
const std::string& dialect =
"");
933 JobDescriptionResult
UnParse(std::string& product, std::string language,
const std::string& dialect =
"")
const;
963 JobDescriptionResult
SaveToStream(std::ostream& out,
const std::string& format)
const;
1001 static bool GetTestJob(
int testid, JobDescription& jobdescription);
1049 std::string sourceLanguage;
1051 std::list<JobDescription> alternatives;
1052 std::list<JobDescription>::iterator current;
1054 static Glib::Mutex jdpl_lock;
1062 #endif // __ARC_JOBDESCRIPTION_H__ Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
ExecutableType Executable
Main executable to be run.
Definition: JobDescription.h:303
bool DryRun
Definition: JobDescription.h:411
Definition: JobDescription.h:286
bool UseIfSuccess
Action in case job succeeded.
Definition: JobDescription.h:739
std::string NetworkInfo
Definition: JobDescription.h:567
Simple structure for in- and output files.
Definition: JobDescription.h:786
std::list< RemoteLoggingType > RemoteLogging
Remote logging services.
Definition: JobDescription.h:374
Definition: JobDescriptionParserPlugin.h:243
Definition: JobDescription.h:448
Class used to express and resolve version requirements on software.
Definition: Software.h:327
JobIdentificationType Identification
Structure for identification.
Definition: JobDescription.h:1004
Time ExpirationTime
Definition: JobDescription.h:384
std::string Description
Human readable description.
Definition: JobDescription.h:137
Range< int > DiskSpace
Definition: JobDescription.h:459
OptIn< std::string > Coprocessor
Definition: JobDescription.h:629
CreationFlagEnumeration CreationFlag
Output file creation flag.
Definition: JobDescription.h:718
Definition: JobDescription.h:501
SoftwareRequirement RunTimeEnvironment
Runtime environment.
Definition: JobDescription.h:644
int Rerun
Definition: JobDescription.h:379
std::list< std::string > Annotation
Annotation.
Definition: JobDescription.h:156
Definition: JobDescription.h:710
Wrapper for LibXML library Tree interface.
Definition: XMLNode.h:61
A class for storing and manipulating times.
Definition: DateTime.h:125
URL()
Empty constructor. URL object is invalid.
ApplicationType Application
Structure for apllication options.
Definition: JobDescription.h:1010
std::list< std::string > States
Definition: JobDescription.h:279
JobDescriptionResult SaveToStream(std::ostream &out, const std::string &format) const
Print job description to a std::ostream object.
std::string LogDir
Name of logging directory.
Definition: JobDescription.h:367
std::list< TargetType > Targets
List of destinations for which the output file should be copied.
Definition: JobDescription.h:778
std::string Type
Job type.
Definition: JobDescription.h:147
JobDescription & operator=(const JobDescription &j)
Testing.
ScalableTime< int > IndividualCPUTime
Definition: JobDescription.h:596
int NumberOfSlots
Definition: JobDescription.h:427
URL Location
URL of logging service.
Definition: JobDescription.h:250
CreationFlagEnumeration
Definition: JobDescription.h:706
int ProcessesPerSlot
Definition: JobDescription.h:520
std::string Output
Standard output.
Definition: JobDescription.h:322
A logger class.
Definition: Logger.h:493
bool UseIfCancel
Action in case job was cancelled.
Definition: JobDescription.h:732
Period SessionLifeTime
Definition: JobDescription.h:586
bool operator!(void)
Get negated result.
Definition: JobDescription.h:816
Resource requirements structure.
Definition: JobDescription.h:539
void AddAlternative(const JobDescription &j)
Add alternative job description.
TargetType()
Default constructor.
Definition: JobDescription.h:674
SoftwareRequirement OperatingSystem
Specifies operating system which apllication should be executed at.
Definition: JobDescription.h:557
Definition: JobDescription.h:842
std::string Platform
Definition: JobDescription.h:562
std::string Error
Standard error.
Definition: JobDescription.h:331
const std::list< JobDescription > & GetAlternatives() const
Get list of alternative job descriptions.
Definition: JobDescription.h:873
ScalableTime< int > IndividualWallTime
Definition: JobDescription.h:606
std::pair< bool, int > SuccessExitCode
Exit code at successful execution.
Definition: JobDescription.h:217
ScalableTime< int > TotalCPUTime
Definition: JobDescription.h:601
An output file.
Definition: JobDescription.h:772
Represent an output file destination.
Definition: JobDescription.h:666
std::string ServiceType
Type of logging service.
Definition: JobDescription.h:241
Job description parsing or assembly result.
Definition: JobDescription.h:809
SessionDirectoryAccessMode SessionDirectoryAccess
Definition: JobDescription.h:591
std::string DelegationID
Delegation ID to use.
Definition: JobDescription.h:698
Time ProcessingStartTime
Definition: JobDescription.h:389
std::list< ExecutableType > PreExecutable
Executables to be run before the main executable.
Definition: JobDescription.h:347
Definition: JobDescription.h:418
bool optional
Requirement satisfaction switch.
Definition: JobDescription.h:260
Job identification.
Definition: JobDescription.h:115
std::list< JobDescription > GetAlternativesCopy() const
Get a copy of the list of alternative job descriptions.
Definition: JobDescription.h:884
std::list< OutputFileType > OutputFiles
List of outputfiles.
Definition: JobDescription.h:793
std::string Path
Path to executable.
Definition: JobDescription.h:194
Range< int > IndividualVirtualMemory
Specifies amount of requested virtual memory in MB.
Definition: JobDescription.h:579
A Period represents a length of time.
Definition: DateTime.h:48
std::string Type
Definition: JobDescription.h:510
int SessionDiskSpace
Definition: JobDescription.h:473
XMLNode AccessControl
Definition: JobDescription.h:406
std::list< std::pair< std::string, std::string > > Environment
Definition: JobDescription.h:336
Class to represent general URLs.
Definition: URL.h:88
ResourcesType Resources
Structure for resource requirements.
Definition: JobDescription.h:1017
int Priority
Definition: JobDescription.h:394
std::list< URL > CredentialService
Definition: JobDescription.h:401
std::string Input
Standard input.
Definition: JobDescription.h:312
bool UseIfFailure
Action in case job failed.
Definition: JobDescription.h:725
const std::string & GetSourceLanguage() const
Get input source language.
Definition: JobDescription.h:940
int SlotsPerHost
Definition: JobDescription.h:432
std::string Name
Name of output file.
Definition: JobDescription.h:774
bool UseAlternative()
Fill next alternative into this object.
Definition: JobDescription.h:708
std::map< std::string, std::string > OtherAttributes
Holds attributes not fitting into this class.
Definition: JobDescription.h:1038
std::string QueueName
Name of queue to use.
Definition: JobDescription.h:635
SoftwareRequirement CEType
CE Middleware.
Definition: JobDescription.h:621
ExecutionTarget.
Definition: ExecutionTarget.h:494
DataStagingType DataStaging
Structure for data staging.
Definition: JobDescription.h:1024
std::list< InputFileType > InputFiles
List of inputfiles.
Definition: JobDescription.h:788
int CacheDiskSpace
Definition: JobDescription.h:466
JobDescriptionResult UnParse(std::string &product, std::string language, const std::string &dialect="") const
Output contents in the specified language.
ExclusiveExecutionType
Definition: JobDescription.h:437
std::list< std::string > ActivityOldID
ID of old activity.
Definition: JobDescription.h:168
std::list< std::string > Argument
List of arguments to executable.
Definition: JobDescription.h:203
std::string Email
Definition: JobDescription.h:274
std::list< ExecutableType > PostExecutable
Executables to be run after the main executable.
Definition: JobDescription.h:358
Range< int > IndividualPhysicalMemory
Specifies amount of requested RAM in MB.
Definition: JobDescription.h:573
const std::string & str(void)
Get explanation of result as string.
Definition: JobDescription.h:818
Definition: JobDescription.h:707
bool Prepare(const ExecutionTarget &et)
Prepare for submission to target.
Definition: JobDescription.h:993
Definition: JobDescription.h:651
int ThreadsPerProcess
Definition: JobDescription.h:525
std::string Version
Definition: JobDescription.h:515
bool HasAlternatives() const
Has alternative job descriptions.
Definition: JobDescription.h:867
Definition: JobDescription.h:709
NodeAccessType NodeAccess
Definition: JobDescription.h:613
static JobDescriptionResult Parse(const std::string &source, std::list< JobDescription > &jobdescs, const std::string &language="", const std::string &dialect="")
Parse string into JobDescription objects.
Definition: JobDescription.h:92
std::string JobName
Name of job.
Definition: JobDescription.h:127
std::multimap< std::string, std::string > Options
Definition: JobDescription.h:530
std::string DelegationID
Delegation for all data staging operations.
Definition: JobDescription.h:795