class YACSEvalExecParams
{
public:
- YACSEVALYFX_EXPORT YACSEvalExecParams():_stopASAPAfterError(true) { }
+ YACSEVALYFX_EXPORT YACSEvalExecParams():_stopASAPAfterError(true),_fetchRemoteDirForCluster(false) { }
YACSEVALYFX_EXPORT bool getStopASAPAfterErrorStatus() const { return _stopASAPAfterError; }
YACSEVALYFX_EXPORT void setStopASAPAfterErrorStatus(bool newStatus) { _stopASAPAfterError=newStatus; }
+ YACSEVALYFX_EXPORT bool getFetchRemoteDirForClusterStatus() const { return _fetchRemoteDirForCluster; }
+ YACSEVALYFX_EXPORT void setFetchRemoteDirForClusterStatus(bool newStatus) { _fetchRemoteDirForCluster=newStatus; }
private:
bool _stopASAPAfterError;
+ bool _fetchRemoteDirForCluster;
};
#endif
_pattern->assignRandomVarsInputs();
rss->apply();
nbOfBranches=_pattern->assignNbOfBranches();
- return _pattern->go(_params.getStopASAPAfterErrorStatus(),session);
+ return _pattern->go(_params,session);
}
void YACSEvalYFX::registerObserver(YACSEvalObserver *observer)
#include "YACSEvalObserver.hxx"
#include "YACSEvalSessionInternal.hxx"
#include "YACSEvalAutoPtr.hxx"
+#include "YACSEvalExecParams.hxx"
#include "ElementaryNode.hxx"
#include "RuntimeSALOME.hxx"
obs->startComputation(getBoss());
}
-bool YACSEvalYFXRunOnlyPattern::go(bool stopASAP, YACSEvalSession *session) const
+bool YACSEvalYFXRunOnlyPattern::go(const YACSEvalExecParams& params, YACSEvalSession *session) const
{
emitStart();
YACS::ENGINE::Dispatcher *disp(YACS::ENGINE::Dispatcher::getDispatcher());
disp->addObserver(_obs,getUndergroundForEach(),"progress_ok");
disp->addObserver(_obs,getUndergroundForEach(),"progress_ko");
- bool ret(getGenerator()->go(stopASAP,session));
+ bool ret(getGenerator()->go(params,session));
disp->removeObserver(_obs,getUndergroundForEach(),"progress_ok");
disp->removeObserver(_obs,getUndergroundForEach(),"progress_ko");
return ret;
_generatedGraph->updateContainersAndComponents();
}
-bool YACSEvalYFXGraphGenInteractive::go(bool stopASAP, YACSEvalSession *session) const
+bool YACSEvalYFXGraphGenInteractive::go(const YACSEvalExecParams& params, YACSEvalSession *session) const
{
YACS::ENGINE::Executor exe;
- exe.setKeepGoingProperty(!stopASAP);
+ exe.setKeepGoingProperty(!params.getStopASAPAfterErrorStatus());
{
MyAutoThreadSaver locker(!session->isAlreadyPyThreadSaved());
exe.RunW(getUndergroundGeneratedGraph());
_generatedGraph->updateContainersAndComponents();
}
-bool YACSEvalYFXGraphGenCluster::go(bool stopASAP, YACSEvalSession *session) const
+bool YACSEvalYFXGraphGenCluster::go(const YACSEvalExecParams& params, YACSEvalSession *session) const
{
getUndergroundGeneratedGraph()->saveSchema(_locSchemaFile);
YACSEvalListOfResources *rss(getBoss()->getResourcesInternal());
std::ostringstream oss1; oss1 << "import os" << std::endl << "p=os.path.join(\"" << cli.getLocalWorkingDir() << "\",\"" << _jobName << "\") ; os.remove(p)" << std::endl;
std::string s1(oss1.str());
PyRun_SimpleString(s1.c_str());
- std::ostringstream oss2; oss2 << "import os,shutil" << std::endl << "p=os.path.join(\"" << cli.getLocalWorkingDir() << "\",\"logs\") ; shutil.rmtree(p)" << std::endl;
- std::string s2(oss2.str());
- PyRun_SimpleString(s2.c_str());
+ if(!params.getFetchRemoteDirForClusterStatus())
+ {
+ std::ostringstream oss2; oss2 << "import os,shutil" << std::endl << "p=os.path.join(\"" << cli.getLocalWorkingDir() << "\",\"logs\") ; shutil.rmtree(p)" << std::endl;
+ std::string s2(oss2.str());
+ PyRun_SimpleString(s2.c_str());
+ }
}
catch(YACS::Exception& e)
{
class YACSEvalYFX;
class YACSEvalSession;
class YACSEvalObserver;
+class YACSEvalExecParams;
class YACSEvalListOfResources;
class ResourcesManager_cpp;
class YACSEvalYFXRunOnlyPatternInternalObserver;
virtual std::string getStatusOfRunStr() const = 0;
virtual std::vector<YACSEvalSeqAny *> getResults() const = 0;
virtual std::vector<YACSEvalSeqAny *> getResultsInCaseOfFailure(std::vector<unsigned int>& passedIds) const = 0;
- virtual bool go(bool stopASAP, YACSEvalSession *session) const = 0;
+ virtual bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const = 0;
public://for _gen
const std::vector< YACSEvalInputPort >& getInputs() const { return _inputs; }
static YACS::ENGINE::TypeCode *CreateSeqTypeCodeFrom(YACS::ENGINE::Proc *scheme, const std::string& zeType);
std::string getStatusOfRunStr() const;
std::vector<YACSEvalSeqAny *> getResults() const;
std::vector<YACSEvalSeqAny *> getResultsInCaseOfFailure(std::vector<unsigned int>& passedIds) const;
- bool go(bool stopASAP, YACSEvalSession *session) const;
+ bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const;
//
YACS::ENGINE::ForEachLoop *getUndergroundForEach() const;
static bool IsMatching(YACS::ENGINE::Proc *scheme, YACS::ENGINE::ComposedNode *& runNode);
public:
virtual ~YACSEvalYFXGraphGen();
virtual void generateGraph() = 0;
- virtual bool go(bool stopASAP, YACSEvalSession *session) const = 0;
+ virtual bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const = 0;
virtual std::vector<YACSEvalSeqAny *> getResults() const = 0;
bool isLocked() const;
int assignNbOfBranches();
public:
YACSEvalYFXGraphGenInteractive(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss) { }
void generateGraph();
- bool go(bool stopASAP, YACSEvalSession *session) const;
+ bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const;
std::vector<YACSEvalSeqAny *> getResults() const;
};
public:
YACSEvalYFXGraphGenCluster(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss) { }
void generateGraph();
- bool go(bool stopASAP, YACSEvalSession *session) const;
+ bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const;
std::vector<YACSEvalSeqAny *> getResults() const;
private:
std::string _locSchemaFile;
public:
bool getStopASAPAfterErrorStatus() const;
void setStopASAPAfterErrorStatus(bool newStatus);
+ bool getFetchRemoteDirForClusterStatus() const;
+ void setFetchRemoteDirForClusterStatus(bool newStatus);
private:
YACSEvalExecParams();
};