-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// Methode pour le controle des jobs : soumet un job au gestionnaire
const JobId BatchManager::submitJob(const Job & job)
{
- throw NotYetImplementedException("Method submitJob not implemented by Batch Manager \"" + _type + "\"");
+ exportInputFiles(job);
+ preprocess(job);
+ return runJob(job);
}
// Methode pour le controle des jobs : retire un job du gestionnaire
- void BatchManager::deleteJob(const JobId & jobid)
+ void BatchManager::deleteJob(const JobId & /*jobid*/)
{
throw NotYetImplementedException("Method deleteJob not implemented by Batch Manager \"" + _type + "\"");
}
// Methode pour le controle des jobs : suspend un job en file d'attente
- void BatchManager::holdJob(const JobId & jobid)
+ void BatchManager::holdJob(const JobId & /*jobid*/)
{
throw NotYetImplementedException("Method holdJob not implemented by Batch Manager \"" + _type + "\"");
}
// Methode pour le controle des jobs : relache un job suspendu
- void BatchManager::releaseJob(const JobId & jobid)
+ void BatchManager::releaseJob(const JobId & /*jobid*/)
{
throw NotYetImplementedException("Method releaseJob not implemented by Batch Manager \"" + _type + "\"");
}
// Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager::alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)
+ void BatchManager::alterJob(const JobId & /*jobid*/, const Parametre & /*param*/, const Environnement & /*env*/)
{
throw NotYetImplementedException("Method alterJob not implemented by Batch Manager \"" + _type + "\"");
}
// Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager::alterJob(const JobId & jobid, const Parametre & param)
+ void BatchManager::alterJob(const JobId & /*jobid*/, const Parametre & /*param*/)
{
throw NotYetImplementedException("Method alterJob not implemented by Batch Manager \"" + _type + "\"");
}
// Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager::alterJob(const JobId & jobid, const Environnement & env)
+ void BatchManager::alterJob(const JobId & /*jobid*/, const Environnement & /*env*/)
{
throw NotYetImplementedException("Method alterJob not implemented by Batch Manager \"" + _type + "\"");
}
// Methode pour le controle des jobs : renvoie l'etat du job
- JobInfo BatchManager::queryJob(const JobId & jobid)
+ JobInfo BatchManager::queryJob(const JobId & /*jobid*/)
{
throw NotYetImplementedException("Method queryJob not implemented by Batch Manager \"" + _type + "\"");
}
- const JobId BatchManager::addJob(const Job & job, const string & reference)
+ const JobId BatchManager::addJob(const Job & /*job*/, const string & reference)
{
return JobId(this, reference);
}
CoupleType cpt = *static_cast< CoupleType * >(*Vit);
Couple outputFile = cpt;
string remotePath = outputFile.getRemote();
- if (!Utils::isAbsolutePath(remotePath)) {
- remotePath = params[WORKDIR].str() + "/" + remotePath;
+ if (!Utils::isAbsolutePath(remotePath) && !Utils::isOption(remotePath)) {
+ // rsync creates the whole tree after /./ in the destination folder
+ remotePath = params[WORKDIR].str() + "/./" + remotePath;
}
string localPath = outputFile.getLocal();
if (!Utils::isAbsolutePath(localPath)) {
return _protocol;
}
+ void BatchManager::preprocess(const Batch::Job & job)
+ {
+ std::string preproCommand;
+ std::string workDir;
+ Parametre params = job.getParametre();
+ if (params.find(PREPROCESS) != params.end())
+ preproCommand = params[PREPROCESS].str();
+ if (params.find(WORKDIR) != params.end())
+ workDir = params[WORKDIR].str();
+
+ if(!preproCommand.empty() && !workDir.empty())
+ {
+ std::string subCommand = "cd " + workDir + "; " + preproCommand;
+ std::string command = _protocol.getExecCommand(subCommand, _hostname, _username);
+ command += " 2>&1";
+ LOG(command);
+
+ // submit job
+ std::string output;
+ int status = Utils::getCommandOutput(command, output);
+ LOG(output);
+ if (status != 0)
+ throw RunTimeException("Error when executing: " + command +
+ "\nOutput:" + output);
+ }
+ }
+
+ const Batch::JobId BatchManager::runJob(const Batch::Job & /*job*/)
+ {
+ throw NotYetImplementedException("Method runJob not implemented by Batch Manager \"" + _type + "\"");
+ }
}