1 // Copyright (C) 2007-2012 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
31 #include <Batch_RunTimeException.hxx>
32 #include <Batch_Constants.hxx>
34 #include "Batch_JobInfo_eSlurm.hxx"
40 JobInfo_eSlurm::JobInfo_eSlurm(const std::string & id, const std::string & queryOutput)
45 // read query output, status should be on the second line
46 istringstream iss(queryOutput);
48 for (int i=0 ; i<2 ; i++)
51 if (status.size() == 0) {
52 // On some batch managers, the job is deleted as soon as it is finished,
53 // so we have to consider that an unknown job is a finished one, even if
54 // it is not always true.
55 _param[STATE] = FINISHED;
56 } else if (status == "CA") { // Canceled
57 _param[STATE] = FAILED;
58 } else if (status == "CD") { // Completed
59 _param[STATE] = FINISHED;
60 } else if (status == "CF") { // Configuring
61 _param[STATE] = QUEUED;
62 } else if (status == "CG") { // Completing
63 _param[STATE] = RUNNING;
64 } else if (status == "F") { // Failed
65 _param[STATE] = FAILED;
66 } else if (status == "NF") { // Node Fail
67 _param[STATE] = FAILED;
68 } else if (status == "PD") { // Pending
69 _param[STATE] = QUEUED;
70 } else if (status == "R") { // Running
71 _param[STATE] = RUNNING;
72 } else if (status == "S") { // Suspended
73 _param[STATE] = PAUSED;
74 } else if (status == "TO") { // Timeout
75 _param[STATE] = FAILED;
77 throw RunTimeException("Unknown job state code: \"" + status + "\"");
81 JobInfo_eSlurm::~JobInfo_eSlurm()