-// Copyright (C) 2009-2013 CEA/DEN, EDF R&D
+// Copyright (C) 2009-2019 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
#include "BL_JobsManager_QT.hxx"
#include "BL_GenericGui.hxx"
+
+#include <QApplication>
+#include <QFileDialog>
+#include <QGroupBox>
+#include <QHBoxLayout>
+#include <QMenu>
+#include <QPushButton>
+#include <QScrollArea>
+#include <QStandardItemModel>
+#include <QTextEdit>
+#include <QTimer>
+#include <QVBoxLayout>
#include <vector>
using namespace std;
connect(_load_jobs, SIGNAL(clicked()), this, SLOT(load_jobs_button()));
connect(_save_jobs, SIGNAL(clicked()), this, SLOT(save_jobs_button()));
- _auto_refresh_jobs = new QPushButton("Auto Refresh: no");
+ _auto_refresh_jobs = new QPushButton("Auto Refresh: 30s");
_timer = new QTimer(this);
_timer->stop();
+ _timer->start(30 * 1000);
connect(_timer, SIGNAL(timeout()), this, SLOT(RefreshJobs()));
// Menu for auto refresh
scroll_widget->setWidgetResizable(true);
setWidget(scroll_widget);
setWindowTitle("Job Manager");
+ setObjectName("jmJobManagerDock");
}
BL::JobsManager_QT::~JobsManager_QT()
write_normal_text("Load jobs action cancelled\n");
}
else
- load_jobs(jobs_file.toStdString());
+ load_jobs(jobs_file.toUtf8().constData());
}
void
filters << "XML files (*.xml)"
<< "Any files (*)";
dialog.setFileMode(QFileDialog::AnyFile);
- dialog.setFilters(filters);
- dialog.selectFilter("(*.xml)");
+ dialog.setNameFilters(filters);
+ dialog.selectNameFilter("(*.xml)");
dialog.setDefaultSuffix("xml");
dialog.setConfirmOverwrite(true);
dialog.setAcceptMode(QFileDialog::AcceptSave);
write_normal_text("Save jobs action cancelled\n");
}
else
- save_jobs(jobs_file.toStdString());
+ save_jobs(jobs_file.toUtf8().constData());
}
void
BL::JobsManager_QT::create_job_with_wizard(BL::CreateJobWizard & wizard)
{
BL::Job * new_job = createJob(wizard.job_name);
- if (wizard.yacs_file != "")
+ switch (wizard.job_type)
{
+ case BL::CreateJobWizard::YACS:
// YACS schema job
new_job->setType(BL::Job::YACS_SCHEMA);
new_job->setJobFile(wizard.yacs_file);
new_job->setDumpYACSState(wizard.dump_yacs_state);
- }
- else if (wizard.command != "")
- {
+ new_job->setYacsDriverOptions(wizard.yacs_driver_options);
+ break;
+ case BL::CreateJobWizard::COMMAND:
// Command Job
new_job->setType(BL::Job::COMMAND);
new_job->setJobFile(wizard.command);
- }
- else if (wizard.python_salome_file != "")
- {
+ break;
+ case BL::CreateJobWizard::COMMAND_SALOME:
// Command Job
+ new_job->setType(BL::Job::COMMAND_SALOME);
+ new_job->setJobFile(wizard.command);
+ break;
+ case BL::CreateJobWizard::PYTHON_SALOME:
+ // Python Salome Job
new_job->setType(BL::Job::PYTHON_SALOME);
new_job->setJobFile(wizard.python_salome_file);
+ break;
+ default:
+ throw BL::Exception("Unknown job type");
}
// For all jobs
new_job->setEnvFile(wizard.env_file);
+ new_job->setPreCommand(wizard.pre_command);
BL::Job::BatchParam param;
// For COORM
}
param.maximum_duration = wizard.maximum_duration;
- param.expected_memory = wizard.expected_memory;
+ param.mem_limit = wizard.mem_limit;
+ param.mem_req_type = wizard.mem_req_type;
param.nb_proc = wizard.nb_proc;
+ param.nb_node = wizard.nb_node;
param.exclusive = wizard.exclusive;
// Parameters for COORM
new_job->setFilesParameters(files_params);
new_job->setResource(wizard.resource_choosed);
new_job->setBatchQueue(wizard.batch_queue);
+ new_job->setBatchPartition(wizard.batch_partition);
new_job->setLoadLevelerJobType(wizard.ll_jobtype);
+ new_job->setWCKey(wizard.wckey);
+ new_job->setExtraParams(wizard.extra_params);
// End
addJobToLauncher(wizard.job_name);
- emit new_job_added(QString::fromStdString(wizard.job_name));
+ emit new_job_added(QString::fromUtf8(wizard.job_name.c_str()));
QStandardItemModel * model = _model_manager->getModel();
- QList<QStandardItem *> item_list = model->findItems(QString::fromStdString(wizard.job_name));
+ QList<QStandardItem *> item_list = model->findItems(QString::fromUtf8(wizard.job_name.c_str()));
QStandardItem * job_state_item = model->item(item_list.at(0)->row(), 2);
_main_gui->_jobs_table->selectRow(item_list.at(0)->row());
if (wizard.start_job)
void
BL::JobsManager_QT::delete_job(QString job_name)
{
- BL::JobsManager::removeJob(job_name.toStdString());
+ BL::JobsManager::removeJob(job_name.toUtf8().constData());
_model_manager->delete_job(job_name);
_main_gui->_job_tab->reset(job_name);
}
<< event->job_name << " "
<< event->data);
+ QString job_name = QString::fromUtf8(event->job_name.c_str());
if (event->action == "create_job")
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
- write_normal_text("Job " + str + " created\n");
+ write_normal_text("Job " + job_name + " created\n");
}
else
{
- QString str((event->job_name).c_str());
- write_error_text("Error in creating job: " + str + "\n");
+ write_error_text("Error in creating job: " + job_name + "\n");
write_error_text("*** ");
write_error_text((event->data).c_str());
write_error_text(" ***\n");
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
- write_normal_text("Job " + str + " queued\n");
+ write_normal_text("Job " + job_name + " queued\n");
}
else
{
- QString str((event->job_name).c_str());
- write_error_text("Error in starting job: " + str + "\n");
+ write_error_text("Error in starting job: " + job_name + "\n");
write_error_text("*** ");
write_error_text((event->data).c_str());
write_error_text(" ***\n");
}
- emit job_state_changed(QString((event->job_name).c_str()));
+ emit job_state_changed(job_name);
}
else if (event->action == "refresh_job")
{
if (event->event_name == "Ok")
{
- QString name((event->job_name).c_str());
QString state((event->data).c_str());
state = state.toLower();
- write_normal_text("Job " + name + " new state is " + state + "\n");
- emit job_state_changed(QString((event->job_name).c_str()));
+ write_normal_text("Job " + job_name + " new state is " + state + "\n");
+ emit job_state_changed(job_name);
}
else
{
- QString str((event->job_name).c_str());
- write_error_text("Error in refreshing job: " + str + "\n");
+ write_error_text("Error in refreshing job: " + job_name + "\n");
write_error_text("*** ");
write_error_text((event->data).c_str());
write_error_text(" ***\n");
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
- write_normal_text("Job " + str + " deleted\n");
+ write_normal_text("Job " + job_name + " deleted\n");
}
else
{
- QString str((event->job_name).c_str());
- write_error_text("Warning delete job: " + str + " maybe not complete, exception catch in SALOME Launcher service\n");
+ write_error_text("Warning delete job: " + job_name + " maybe not complete, exception catch in SALOME Launcher service\n");
write_error_text("*** ");
write_error_text((event->data).c_str());
write_error_text(" ***\n");
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
- write_normal_text("Results of Job " + str + " are get\n");
+ write_normal_text("Results of Job " + job_name + " have been got.\n");
}
else
{
- QString str((event->job_name).c_str());
- write_error_text("Warning for results of job: " + str + " maybe not complete, exception catch in SALOME Launcher service\n");
+ write_error_text("Warning for results of job: " + job_name + " maybe not complete, exception catch in SALOME Launcher service\n");
write_error_text("*** ");
write_error_text((event->data).c_str());
write_error_text(" ***\n");
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
- write_normal_text("Job " + str + " is stopped\n");
+ write_normal_text("Job " + job_name + " is stopped\n");
}
else
{
- QString str((event->job_name).c_str());
- write_error_text("Error when trying to stop job: " + str + "\n");
+ write_error_text("Error when trying to stop job: " + job_name + "\n");
write_error_text("*** ");
write_error_text((event->data).c_str());
write_error_text(" ***\n");
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
-
vector<string> hostnames;
Tokenize(event->data, hostnames, "+");
vector<string>::iterator it;
- write_normal_text("Job " + str + " assigned hostnames are :\n");
+ write_normal_text("Job " + job_name + " assigned hostnames are :\n");
for (it = hostnames.begin(); it < hostnames.end(); it++)
{
{
if (event->event_name == "Ok")
{
- QString str((event->job_name).c_str());
- write_normal_text("New job added " + str + "\n");
- emit new_job_added(str);
+ write_normal_text("New job added " + job_name + "\n");
+ emit new_job_added(job_name);
}
}
else if (event->action == "to_remove_job")
{
if (event->event_name == "Ok")
- _main_gui->delete_job_external((event->job_name).c_str());
+ _main_gui->delete_job_external(job_name);
}
else
{