]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Add batch parameter wckey to SALOME Launcher
authorRenaud Barate <renaud.barate@edf.fr>
Mon, 6 Oct 2014 16:03:07 +0000 (18:03 +0200)
committerRenaud Barate <renaud.barate@edf.fr>
Mon, 6 Oct 2014 16:03:07 +0000 (18:03 +0200)
idl/SALOME_Launcher.idl
src/Launcher/Launcher_Job.cxx
src/Launcher/Launcher_Job.hxx
src/Launcher/Launcher_XML_Persistence.cxx
src/Launcher/SALOME_Launcher.cxx

index 40ea4a869f63f3ad1aadd2c52df9a04095ec1313..8dbe5cd5ce8cce20c305fbda9ca37ffbab06939c 100644 (file)
@@ -79,6 +79,9 @@ struct JobParameters
   //! Specifies the memory limit per cpu (exclusive with resource_required.mem_mb)
   unsigned long mem_per_cpu;
 
+  //! Workload Characterization Key - mandatory on some clusters
+  string wckey;
+
   /*!
     Specific parameters for each type of job - optional
   */
index 7874bfd908a72b4004fb476b3917bdee66a78d81..94535df5cf17ccee3bd5f83df6f5bcf2dfe4a9c2 100644 (file)
@@ -325,6 +325,12 @@ Launcher::Job::setMemPerCpu(unsigned long mem_per_cpu)
   _mem_per_cpu = mem_per_cpu;
 }
 
+void
+Launcher::Job::setWCKey(const std::string & wckey)
+{
+  _wckey = wckey;
+}
+
 void
 Launcher::Job::setReference(const std::string & reference)
 {
@@ -409,6 +415,12 @@ Launcher::Job::getMemPerCpu() const
   return _mem_per_cpu;
 }
 
+std::string
+Launcher::Job::getWCKey() const
+{
+  return _wckey;
+}
+
 std::string
 Launcher::Job::getReference() const
 {
@@ -632,6 +644,10 @@ Launcher::Job::common_job_params()
   if (getExclusive())
     params[Batch::EXCLUSIVE] = true;
 
+  // WC Key
+  if (_wckey != "")
+    params[Batch::WCKEY] = _wckey;
+
   // Specific parameters
   std::map<std::string, std::string>::iterator it = _specific_parameters.find("LoalLevelerJobType");
   if (it != _specific_parameters.end())
index 1ed3030f2ca0d0563173d3effaef92abfbc53e5f..cb9e5d8de26d7744ab6be01b50309c66a9260760 100644 (file)
@@ -79,6 +79,7 @@ namespace Launcher
       void setExclusive(bool exclusive);
       void setExclusiveStr(const std::string & exclusiveStr);
       void setMemPerCpu(unsigned long mem_per_cpu);
+      void setWCKey(const std::string & wckey);
       void setReference(const std::string & reference);
          // For COORM
          void setLauncherFile(const std::string & launcher_file);
@@ -99,6 +100,7 @@ namespace Launcher
       bool getExclusive() const;
       std::string getExclusiveStr() const;
       unsigned long getMemPerCpu() const;
+      std::string getWCKey() const;
       std::string getReference() const;
 
          // For COORM
@@ -155,6 +157,7 @@ namespace Launcher
       std::string _queue;
       bool _exclusive;
       unsigned long _mem_per_cpu;
+      std::string _wckey;
       std::string _reference; //! Reference of the job for the batch manager
 
          // Parameters for COORM
index 5e7aaaac1554a0ee0ac4085356f54fd1b3be2109..e1218cbc04d5b96e98cb087096aa7ef311e14fb4 100644 (file)
@@ -198,6 +198,8 @@ XML_Persistence::addJobToXmlDocument(xmlNodePtr root_node, const Job & job)
     addNode(node, "exclusive", job.getExclusiveStr());
   if (job.getMemPerCpu() > 0)
     addNumericalNode(res_node, "mem_per_cpu", job.getMemPerCpu());
+  if (!job.getWCKey().empty())
+    addNode(node, "wckey", job.getWCKey());
 
   // Specific parameters part
   map<string, string> specific_parameters = job.getSpecificParameters();
@@ -332,6 +334,8 @@ XML_Persistence::parseUserNode(Job * new_job, xmlNodePtr user_node)
       new_job->setExclusiveStr(getNodeContent(current_node));
     else if (node_name == "mem_per_cpu")
       new_job->setMemPerCpu(getNumericalNodeContent<unsigned long>(current_node));
+    else if (node_name == "wckey")
+      new_job->setWCKey(getNodeContent(current_node));
     else if (node_name == "specific_parameters")
     {
       // Get specific parameters
index 4fc419d38a825ca1e6dc86072f6adededef6fea7..3a66f87dae439ce58157ee0322c8be01827cf3b3 100644 (file)
@@ -165,6 +165,10 @@ SALOME_Launcher::createJob(const Engines::JobParameters & job_parameters)
   // Memory required per CPU
   new_job->setMemPerCpu(job_parameters.mem_per_cpu);
 
+  // WC Key
+  std::string wckey = job_parameters.wckey.in();
+  new_job->setWCKey(wckey);
+
   // Resources requirements
   try
   {
@@ -502,6 +506,7 @@ SALOME_Launcher::getJobParameters(CORBA::Long job_id)
   job_parameters->queue            = CORBA::string_dup(job->getQueue().c_str());
   job_parameters->exclusive        = job->getExclusive();
   job_parameters->mem_per_cpu      = job->getMemPerCpu();
+  job_parameters->wckey            = CORBA::string_dup(job->getWCKey().c_str());
 
   resourceParams resource_params = job->getResourceRequiredParams();
   job_parameters->resource_required.name             = CORBA::string_dup(resource_params.name.c_str());