1 // Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 * Batch_JobInfo_eSlurm.cxx :
25 * Created on: 12 may 2011
26 * Author : Renaud BARATE - EDF R&D
33 #include <Batch_RunTimeException.hxx>
34 #include <Batch_Constants.hxx>
36 #include "Batch_JobInfo_eSlurm.hxx"
42 JobInfo_eSlurm::JobInfo_eSlurm(const std::string & id, const std::string & logFile)
48 ifstream log(logFile.c_str());
51 // status should be on the second line
52 for (int i=0 ; i<2 ; i++)
56 istringstream iss(line);
59 if (status.size() == 0) {
60 // On some batch managers, the job is deleted as soon as it is finished,
61 // so we have to consider that an unknown job is a finished one, even if
62 // it is not always true.
63 _param[STATE] = FINISHED;
64 } else if (status == "CA") { // Canceled
65 _param[STATE] = FAILED;
66 } else if (status == "CD") { // Completed
67 _param[STATE] = FINISHED;
68 } else if (status == "CF") { // Configuring
69 _param[STATE] = QUEUED;
70 } else if (status == "CG") { // Completing
71 _param[STATE] = RUNNING;
72 } else if (status == "F") { // Failed
73 _param[STATE] = FAILED;
74 } else if (status == "NF") { // Node Fail
75 _param[STATE] = FAILED;
76 } else if (status == "PD") { // Pending
77 _param[STATE] = QUEUED;
78 } else if (status == "R") { // Running
79 _param[STATE] = RUNNING;
80 } else if (status == "S") { // Suspended
81 _param[STATE] = PAUSED;
82 } else if (status == "TO") { // Timeout
83 _param[STATE] = FAILED;
85 throw RunTimeException("Unknown job state code: \"" + status + "\"");
89 JobInfo_eSlurm::~JobInfo_eSlurm()