]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Add exportInputFiles to SALOME_Launcher omu/multijob
authorOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Wed, 27 Nov 2019 09:14:19 +0000 (10:14 +0100)
committerOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Fri, 21 Feb 2020 13:07:42 +0000 (14:07 +0100)
idl/SALOME_Launcher.idl
src/Launcher/Launcher.cxx
src/Launcher/Launcher.hxx
src/Launcher/SALOME_Launcher.cxx
src/Launcher/SALOME_Launcher.hxx
src/Launcher_SWIG/Launcher.i

index 9fdefb727841b64fa59d5831210680570787dde6..c312771cd49cbceba96a983af094a529b0117e1e 100644 (file)
@@ -227,6 +227,9 @@ interface SalomeLauncher
   //! Get names or ids of hosts assigned to the job
   string getAssignedHostnames  (in long job_id)                  raises (SALOME::SALOME_Exception);
 
+  //! Copy all the in_files of the job to the work_directory.
+  void exportInputFiles(in long job_id) raises (SALOME::SALOME_Exception);
+
   //! Copy the result files from the work directory of the job
   //! to a local directory.
   /*! The list of result files is given by the JobParameters::out_files parameter.
index 7a178d1398f3ef870cce29659af4c11f2fd1ca99..5e25fbb2cad3ec8cd195c1cd51797233414cd06e 100644 (file)
@@ -255,6 +255,33 @@ Launcher_cpp::getAssignedHostnames(int job_id)
   return assigned_hostnames;
 }
 
+void
+Launcher_cpp::exportInputFiles(int job_id)
+{
+  LAUNCHER_MESSAGE("Copy in files");
+  // Check if job exists
+  Launcher::Job * job = findJob(job_id);
+
+  // Check job state (cannot launch a job already launched...)
+  if (job->getState() != "CREATED")
+  {
+    LAUNCHER_INFOS("Bad state of the job: " << job->getState());
+    throw LauncherException("Bad state of the job: " + job->getState());
+  }
+
+  Batch::BatchManager * bm = getBatchManager(job);
+
+  try {
+    bm->exportInputFiles(*(job->getBatchJob()));
+  }
+  catch(const Batch::GenericException &ex)
+  {
+    LAUNCHER_INFOS("Failed to copy in files: " << ex.message);
+    throw LauncherException(ex.message.c_str());
+  }
+  LAUNCHER_MESSAGE("Files copied");
+}
+
 //=============================================================================
 /*!
  * Get Job result - the result directory could be changed
@@ -689,6 +716,14 @@ Launcher_cpp::getAssignedHostnames(int job_id)
                           "(libBatch was not present at compilation time)");
 }
 
+void
+Launcher_cpp::exportInputFiles(int job_id)
+{
+  LAUNCHER_INFOS("Launcher compiled without LIBBATCH - cannot copy the files!!!");
+  throw LauncherException("Method Launcher_cpp::exportInputFiles is not available "
+                          "(libBatch was not present at compilation time)");
+}
+
 void
 Launcher_cpp::getJobResults(int job_id, std::string directory)
 {
index 66bd8400824fbc819f57c140505db4538aed5648..ea45e689d9e1f40fbf50a0e05a712f6e2024a6cf 100644 (file)
@@ -80,6 +80,7 @@ public:
   void         launchJob(int job_id);
   std::string  getJobState(int job_id);
   std::string  getAssignedHostnames(int job_id); // Get names or ids of hosts assigned to the job
+  void         exportInputFiles(int job_id);
   void         getJobResults(int job_id, std::string directory);
   void         clearJobWorkingDir(int job_id);
   bool         getJobDumpState(int job_id, std::string directory);
index 41d0b850c94d0644da5e8bd951c5d24eab4bf859..c436cd0e26dc52ee9dd3fdcc64b6e72cc9d8cf90 100644 (file)
@@ -158,6 +158,20 @@ SALOME_Launcher::getAssignedHostnames(CORBA::Long job_id)
   return CORBA::string_dup(result.c_str());
 }
 
+void
+SALOME_Launcher::exportInputFiles(CORBA::Long job_id)
+{
+  try
+  {
+    _l.exportInputFiles(job_id);
+  }
+  catch(const LauncherException &ex)
+  {
+    INFOS(ex.msg.c_str());
+    THROW_SALOME_CORBA_EXCEPTION(ex.msg.c_str(),SALOME::BAD_PARAM);
+  }
+}
+
 void
 SALOME_Launcher::getJobResults(CORBA::Long job_id, const char * directory)
 {
index 49b0fdeacf1f7aaefca9d838b4bc573d77fa42f6..de79bc053daca058c134489bf3555f0ff719c1d5 100644 (file)
@@ -50,6 +50,7 @@ public:
   void        launchJob    (CORBA::Long job_id);
   char *      getJobState  (CORBA::Long job_id);
   char *      getAssignedHostnames  (CORBA::Long job_id); // Get names or ids of hosts assigned to the job
+  void        exportInputFiles(CORBA::Long job_id);
   void        getJobResults(CORBA::Long job_id, const char * directory);
   void        clearJobWorkingDir(CORBA::Long job_id);
   CORBA::Boolean getJobDumpState(CORBA::Long job_id, const char * directory);
index 1e1b89ae022b53979326c8c9eef98c1323df43e1..1d8d8f70e2612af2ca0929f5244408c328234c4f 100644 (file)
@@ -214,6 +214,7 @@ public:
   void         launchJob(int job_id);
   std::string  getJobState(int job_id);
   std::string  getAssignedHostnames(int job_id); // Get names or ids of hosts assigned to the job
+  void         exportInputFiles(int job_id);
   void         getJobResults(int job_id, std::string directory);
   void         clearJobWorkingDir(int job_id);
   bool         getJobDumpState(int job_id, std::string directory);