Salome HOME
evalyfx : All exec parameters are avail for patterns
authorAnthony Geay <anthony.geay@edf.fr>
Thu, 21 Jul 2016 15:27:25 +0000 (17:27 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Thu, 21 Jul 2016 15:27:25 +0000 (17:27 +0200)
src/evalyfx/YACSEvalExecParams.hxx
src/evalyfx/YACSEvalYFX.cxx
src/evalyfx/YACSEvalYFXPattern.cxx
src/evalyfx/YACSEvalYFXPattern.hxx
src/evalyfx_swig/evalyfx.i

index 1ed3229e33718586b765248fa68a3b6616b5f371..dde9858327c5471ade0cda41d52e0bbe89c071e1 100644 (file)
 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
index 2f58cfa4ea3d7d95eeefdf5de8e3055312854cf0..8eca1f1950e61fe4cd01170f0076cc99085f6df8 100644 (file)
@@ -101,7 +101,7 @@ bool YACSEvalYFX::run(YACSEvalSession *session, int& nbOfBranches)
   _pattern->assignRandomVarsInputs();
   rss->apply();
   nbOfBranches=_pattern->assignNbOfBranches();
-  return _pattern->go(_params.getStopASAPAfterErrorStatus(),session);
+  return _pattern->go(_params,session);
 }
 
 void YACSEvalYFX::registerObserver(YACSEvalObserver *observer)
index 634c4bf6bdf45b9a15bc758d15e458e75e2c3846..1bee4ed77747a0d0450df0f29ce50f0cb7e6fa75 100644 (file)
@@ -25,6 +25,7 @@
 #include "YACSEvalObserver.hxx"
 #include "YACSEvalSessionInternal.hxx"
 #include "YACSEvalAutoPtr.hxx"
+#include "YACSEvalExecParams.hxx"
 
 #include "ElementaryNode.hxx"
 #include "RuntimeSALOME.hxx"
@@ -559,13 +560,13 @@ void YACSEvalYFXRunOnlyPattern::emitStart() const
   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;
@@ -807,10 +808,10 @@ void YACSEvalYFXGraphGenInteractive::generateGraph()
   _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());
@@ -943,7 +944,7 @@ void YACSEvalYFXGraphGenCluster::generateGraph()
   _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());
@@ -1034,9 +1035,12 @@ bool YACSEvalYFXGraphGenCluster::go(bool stopASAP, YACSEvalSession *session) con
       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)
     {
index 9a1113a9af74fd4ebebb5925aa9ea717623ac791..d67e3ca8212fb5d23a1d6627f30a904f538c7755 100644 (file)
@@ -45,6 +45,7 @@ namespace YACS
 class YACSEvalYFX;
 class YACSEvalSession;
 class YACSEvalObserver;
+class YACSEvalExecParams;
 class YACSEvalListOfResources;
 class ResourcesManager_cpp;
 class YACSEvalYFXRunOnlyPatternInternalObserver;
@@ -81,7 +82,7 @@ public:
   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);
@@ -132,7 +133,7 @@ public:
   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);
@@ -160,7 +161,7 @@ protected:
 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();
@@ -183,7 +184,7 @@ class YACSEvalYFXGraphGenInteractive : public YACSEvalYFXGraphGen
 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;
 };
 
@@ -192,7 +193,7 @@ class YACSEvalYFXGraphGenCluster : public YACSEvalYFXGraphGen
 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;
index 47625c3d7773f5e8db17bcf23501871c59271887..a530309024bf07f221f3e2944c88f69c28260240 100644 (file)
@@ -408,6 +408,8 @@ class YACSEvalExecParams
 public:
   bool getStopASAPAfterErrorStatus() const;
   void setStopASAPAfterErrorStatus(bool newStatus);
+  bool getFetchRemoteDirForClusterStatus() const;
+  void setFetchRemoteDirForClusterStatus(bool newStatus);
 private:
   YACSEvalExecParams();
 };