00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GLITE_WMS_COMMON_REQUESTAD_ADCONVERTER_H
00021 #define GLITE_WMS_COMMON_REQUESTAD_ADCONVERTER_H
00022
00023
00024
00025
00026
00027 #include "Ad.h"
00028 #include "DAGAd.h"
00029 #include "collectionad.h"
00030 #include "ExpDagAd.h"
00031 #include "JdlAttributeList.h"
00032 #include <classad_distribution.h>
00033 namespace glite {
00034 namespace jdl {
00035
00041 struct NodeStruct {
00042
00044 NodeStruct();
00045
00047 NodeStruct(std::string* name);
00048
00050 NodeStruct(const NodeStruct& node);
00051
00053 ~NodeStruct();
00054
00056 NodeStruct& operator=(const NodeStruct& node);
00057
00059 std::string* name ;
00060
00062 std::vector< NodeStruct* > childrenNodes ;
00063
00064 private:
00065
00069 void flushMemory(void);
00070 };
00071
00072
00085 class AdConverter {
00086 public:
00091 enum jobtype {
00092
00093 ADCONV_JOBTYPE_NORMAL=1,
00094
00095 ADCONV_JOBTYPE_PARAMETRIC =2,
00096
00097 ADCONV_JOBTYPE_INTERACTIVE=4,
00098
00099 ADCONV_JOBTYPE_MPICH=8,
00100
00101 ADCONV_JOBTYPE_PARTITIONABLE=16,
00102
00103 ADCONV_JOBTYPE_CHECKPOINTABLE =32
00104 };
00111 enum attribute {
00112
00113 ADCONV_ATTR_INPUTSB=1,
00114
00115 ADCONV_ATTR_INPUTDATA =2,
00116
00117 ADCONV_ATTR_ARGUMENTS=4
00118 };
00119
00132 static JobAd* createJobTemplate (int type, const std::string &executable, const std::string &arguments,
00133 const std::string &requirements, const std::string &rank, const std::string &vo="" ) ;
00142 static JobAd* createStringParametricTemplate(std::vector<std::string> parametrised, std::vector<std::string> parameters,
00143 const std::string &requirements, const std::string &rank, const std::string &vo="");
00144
00145 static JobAd* createStringParametricTemplate(int parametrised ,std::vector<std::string> parameters ,
00146 const std::string &requirements, const std::string &rank , const std::string &vo="" ) ;
00156 static JobAd* createIntParametricTemplate(std::vector<std::string> parametrised, int param_number, int param_start,
00157 int param_step, const std::string &requirements, const std::string &rank,
00158 const std::string &vo="");
00159
00160 static JobAd* createIntParametricTemplate(int parametrised, int param_number, int param_start, int param_step,
00161 const std::string &requirements, const std::string &rank, const std::string &vo="");
00170 static ExpDagAd* createDAGTemplate(NodeStruct dependencies, const std::string &requirements, const std::string &rank,
00171 const std::string &vo="");
00180 static CollectionAd* createCollectionTemplate (unsigned int jobNumber,const std::string &requirements, const std::string &rank,
00181 const std::string &vo="") ;
00188 static CollectionAd* createCollectionFromPath ( const std::string &path, const std::string &vo="");
00196 static Ad* createDagAdFromPath (const std::string &path, const std::string &vo="");
00204 static ExpDagAd* createDagAdFromPath (NodeStruct dependencies, const std::string &path, const std::string &vo="");
00206
00213 static ExpDagAd* part2dag ( const std::string &jdl ) ;
00219 static ExpDagAd* part2dag ( Ad* ad ) ;
00225 static ExpDagAd* collection2dag ( const std::string &jdl ) ;
00231 static ExpDagAd* collection2dag ( Ad* ad ) ;
00238 static ExpDagAd* bulk2dag (const std::string &jdl, unsigned int maxCycles=0) ;
00245 static ExpDagAd* bulk2dag (Ad* ad, unsigned int maxCycles_i=0) ;
00247
00250 static const std::string VALUES ;
00251 static const std::string VALUE ;
00252 static const std::string NODE ;
00253 static const std::string SIMPLE_NODE_TYPE;
00254 static const std::string PARAMETRIC_PARAMETERS ;
00255 static const std::string PARAMETRIC_START;
00256 static const std::string PARAMETRIC_STEP ;
00257 static const std::string PARAMETER_VALUE ;
00258 };
00259 }
00260 }
00261
00262 #endif
00263