Salome HOME
Update copyrights 2014.
[modules/jobmanager.git] / src / genericgui / JM_EditSalomeResource.cxx
index 74d1f7f32b01b22bac806a07787f8d4f22dab4cb..517fe44cf9d9bcd3710327b3acf57f55ad66a90d 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2009-2013  CEA/DEN, EDF R&D
+// Copyright (C) 2009-2014  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,6 +20,8 @@
 #include "JM_EditSalomeResource.hxx"
 #include "BL_Traces.hxx"
 
+using namespace std;
+
 JM::EditSalomeResource::EditSalomeResource(QWidget *parent, BL::SALOMEServices * salome_services,
                                            const std::string & resource_name) : QDialog(parent)
 {
@@ -49,10 +51,8 @@ JM::EditSalomeResource::EditSalomeResource(QWidget *parent, BL::SALOMEServices *
   _protocol_line = new QComboBox(this);
   _protocol_line->addItem("ssh");
   _protocol_line->addItem("rsh");
-  _protocol_line->addItem("srun");
-  _protocol_line->addItem("pbsdsh");
-  _protocol_line->addItem("blaunch");
-  _protocol_line->setCurrentIndex(-1);
+  _protocol_line->addItem("sh");
+  _protocol_line->setCurrentIndex(0);
 
   QLabel * componentList_label = new QLabel("Component List:");
   _add_button = new QPushButton("Add");
@@ -73,6 +73,7 @@ JM::EditSalomeResource::EditSalomeResource(QWidget *parent, BL::SALOMEServices *
   QLabel * working_directory_label = new QLabel("Working Directory:");
   _working_directory = new QLineEdit(this);
   _can_launch_batch_jobs = new QCheckBox("This resource can be used to launch batch jobs", this);
+  _can_launch_batch_jobs->setCheckState(Qt::Checked);
   _can_run_containers = new QCheckBox("This resource can be used to run interactive containers", this);
 
   QGridLayout * m_layout = new QGridLayout;
@@ -127,19 +128,21 @@ JM::EditSalomeResource::EditSalomeResource(QWidget *parent, BL::SALOMEServices *
   _iprotocol_line->addItem("srun");
   _iprotocol_line->addItem("pbsdsh");
   _iprotocol_line->addItem("blaunch");
-  _iprotocol_line->setCurrentIndex(-1);
+  _iprotocol_line->setCurrentIndex(0);
 
-  QLabel * batch_label = new QLabel("Batch:");
+  QLabel * batch_label = new QLabel("Batch Manager:");
   _batch_line = new QComboBox(this);
-  _batch_line->addItem("pbs");
-  _batch_line->addItem("lsf");
-  _batch_line->addItem("sge");
-  _batch_line->addItem("ssh");
-  _batch_line->addItem("ccc");
-  _batch_line->addItem("slurm");
-  _batch_line->addItem("ll");
-  _batch_line->addItem("vishnu");
-  _batch_line->setCurrentIndex(-1);
+  _batch_line->addItem("None", "none");
+  _batch_line->addItem("CCC", "ccc");
+  _batch_line->addItem("LSF", "lsf");
+  _batch_line->addItem("SGE", "sge");
+  _batch_line->addItem("SLURM", "slurm");
+  _batch_line->addItem("VISHNU", "vishnu");
+  _batch_line->addItem("CooRM (limited support)", "coorm");
+  _batch_line->addItem("LoadLeveler (limited support)", "ll");
+  _batch_line->addItem("OAR (limited support)", "oar");
+  _batch_line->addItem("PBS (limited support)", "pbs");
+  _batch_line->setCurrentIndex(0);
 
   QLabel * mpiImpl_label = new QLabel("MPI impl:");
   _mpiImpl_line = new QComboBox(this);
@@ -221,12 +224,8 @@ JM::EditSalomeResource::get_infos()
     _protocol_line->setCurrentIndex(0);
   else if(protocol == "rsh")
     _protocol_line->setCurrentIndex(1);
-  else if(protocol == "srun")
+  else if(protocol == "sh")
     _protocol_line->setCurrentIndex(2);
-  else if(protocol == "pbsdsh")
-    _protocol_line->setCurrentIndex(3);
-  else if(protocol == "blaunch")
-    _protocol_line->setCurrentIndex(4);
   else
     _protocol_line->setCurrentIndex(-1);
 
@@ -244,25 +243,13 @@ JM::EditSalomeResource::get_infos()
   else
     _iprotocol_line->setCurrentIndex(-1);
 
-  std::string batch = resource_descr.batch.c_str();
-  if (batch == "pbs")
-    _batch_line->setCurrentIndex(0);
-  else if (batch == "lsf")  
-    _batch_line->setCurrentIndex(1);
-  else if (batch == "sge")  
-    _batch_line->setCurrentIndex(2);
-  else if (batch == "ssh_batch")
-    _batch_line->setCurrentIndex(3);
-  else if (batch == "ccc")
-    _batch_line->setCurrentIndex(4);
-  else if (batch == "slurm")
-    _batch_line->setCurrentIndex(5);
-  else if (batch == "ll")
-    _batch_line->setCurrentIndex(6);
-  else if (batch == "vishnu")
-    _batch_line->setCurrentIndex(7);
-  else
-    _batch_line->setCurrentIndex(-1);
+  for (int i=0 ; i<_batch_line->count() ; i++)
+  {
+    if (_batch_line->itemData(i).toString().toStdString() == resource_descr.batch)
+    {
+      _batch_line->setCurrentIndex(i);
+    }
+  }
 
   std::string mpiImpl = resource_descr.mpiImpl.c_str();
   if (mpiImpl == "lam")
@@ -344,26 +331,24 @@ JM::EditSalomeResource::accept()
   BL::ResourceDescr resource;
 
   // Text
-  resource.name = _name_line->text().toStdString();
-  resource.hostname = _hostname_line->text().toStdString();
-  resource.username = _username_line->text().toStdString();
-  resource.applipath = _applipath_line->text().toStdString();
-  resource.OS = _os_line->text().toStdString();
-  resource.working_directory = _working_directory->text().toStdString();
+  resource.name = _name_line->text().trimmed().toStdString();
+  resource.hostname = _hostname_line->text().trimmed().toStdString();
+  resource.username = _username_line->text().trimmed().toStdString();
+  resource.applipath = _applipath_line->text().trimmed().toStdString();
+  resource.OS = _os_line->text().trimmed().toStdString();
+  resource.working_directory = _working_directory->text().trimmed().toStdString();
   resource.can_launch_batch_jobs = (_can_launch_batch_jobs->checkState() == Qt::Checked);
   resource.can_run_containers = (_can_run_containers->checkState() == Qt::Checked);
 
   // Components
   int count = _componentList->count();
   for (int i = 0; i < count; i++)
-    resource.componentList.push_back(_componentList->item(i)->text().toStdString());
+    resource.componentList.push_back(_componentList->item(i)->text().trimmed().toStdString());
 
   // ComboBox
   resource.protocol = _protocol_line->currentText().toStdString();
   resource.iprotocol = _iprotocol_line->currentText().toStdString();
-  resource.batch = _batch_line->currentText().toStdString();
-  if (resource.batch == "ssh")
-    resource.batch = "ssh_batch";
+  resource.batch = _batch_line->itemData(_batch_line->currentIndex()).toString().toStdString();
   resource.mpiImpl = _mpiImpl_line->currentText().toStdString();
 
   // QSpinBox
@@ -376,8 +361,15 @@ JM::EditSalomeResource::accept()
       resource.hostname != "" &&
       resource.protocol != "")
   {
-    _salome_services->addResource(resource);
-    QDialog::accept();
+    try
+    {
+      _salome_services->addResource(resource);
+      QDialog::accept();
+    }
+    catch (const BL::Exception & ex)
+    {
+      QMessageBox::critical(this, "Error", QString("Cannot add resource: ") + ex.what());
+    }
   }
   else
   {