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