mirror of https://github.com/BOINC/boinc.git
remote job submission: let submitters specify that jobs
should run only on their own computers.
This commit is contained in:
parent
63dba01417
commit
40d9368fdc
|
@ -114,8 +114,9 @@ create table user (
|
|||
posts smallint not null,
|
||||
-- reused: salt for weak auth
|
||||
|
||||
-- the following 4 not used by BOINC
|
||||
seti_id integer not null,
|
||||
-- reused as 'run jobs on my hosts' flag from remote job submission
|
||||
-- the following 3 not used by BOINC
|
||||
seti_nresults integer not null,
|
||||
seti_last_result_time integer not null,
|
||||
seti_total_cpu double not null,
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// This file is part of BOINC.
|
||||
// http://boinc.berkeley.edu
|
||||
// Copyright (C) 2011 University of California
|
||||
// Copyright (C) 2024 University of California
|
||||
//
|
||||
// BOINC is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU Lesser General Public License
|
||||
|
@ -17,10 +17,12 @@
|
|||
// You should have received a copy of the GNU Lesser General Public License
|
||||
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// web interface for managing batches
|
||||
// (e.g. as part of remote job submission).
|
||||
// Lets you see the status of batches, get their output files,
|
||||
// abort them, retire them, etc.
|
||||
// web interface for remote job submission:
|
||||
// - links to job-submission pages
|
||||
// - Admin (if privileged user)
|
||||
// - manage batches
|
||||
// view status, get output files, abort, retire
|
||||
// - toggle 'use only my computers'
|
||||
|
||||
require_once("../inc/submit_db.inc");
|
||||
require_once("../inc/util.inc");
|
||||
|
@ -108,7 +110,7 @@ function show_complete($batches, $limit, $user, $app) {
|
|||
$n++;
|
||||
if ($first) {
|
||||
$first = false;
|
||||
echo "<h2>Completed batches</h2>\n";
|
||||
echo "<h3>Completed batches</h3>\n";
|
||||
if ($limit) {
|
||||
show_all_link($batches, BATCH_STATE_COMPLETE, $limit, $user, $app);
|
||||
}
|
||||
|
@ -220,6 +222,27 @@ function handle_main($user) {
|
|||
echo "</ul>\n";
|
||||
}
|
||||
|
||||
echo '<h3>Where your jobs run</h3>';
|
||||
if ($user->seti_id) {
|
||||
echo "<p>
|
||||
Jobs you submit can run only on your computers.
|
||||
<p>
|
||||
";
|
||||
show_button(
|
||||
'submit.php?action=toggle_loc',
|
||||
'Allow them to run on any computer.'
|
||||
);
|
||||
} else {
|
||||
echo "<p>
|
||||
Jobs you submit can run on any computer.
|
||||
<p>
|
||||
";
|
||||
show_button(
|
||||
'submit.php?action=toggle_loc',
|
||||
'Allow them to run only on your computers.'
|
||||
);
|
||||
}
|
||||
|
||||
// show links to admin pages if relevant
|
||||
//
|
||||
$usas = BoincUserSubmitApp::enum("user_id=$user->id");
|
||||
|
@ -268,6 +291,15 @@ function handle_main($user) {
|
|||
page_tail();
|
||||
}
|
||||
|
||||
function handle_toggle_loc($user) {
|
||||
if ($user->seti_id) {
|
||||
$user->update('seti_id=0');
|
||||
} else {
|
||||
$user->update('seti_id=1');
|
||||
}
|
||||
handle_main($user);
|
||||
}
|
||||
|
||||
function check_admin_access($user, $app_id) {
|
||||
$user_submit = BoincUserSubmit::lookup_userid($user->id);
|
||||
if (!$user_submit) error_page("no access");
|
||||
|
@ -683,6 +715,7 @@ case 'query_job': handle_query_job($user); break;
|
|||
case 'retire_batch': handle_retire_batch($user); break;
|
||||
case 'retire_batch_confirm': handle_retire_batch_confirm(); break;
|
||||
case 'show_all': handle_show_all($user); break;
|
||||
case 'toggle_loc': handle_toggle_loc($user);
|
||||
default:
|
||||
error_page("no such action $action");
|
||||
}
|
||||
|
|
|
@ -216,7 +216,8 @@ function stage_files(&$jobs) {
|
|||
function submit_jobs(
|
||||
$jobs, $job_params, $app, $batch_id, $priority, $app_version_num,
|
||||
$input_template_filename, // batch-level; can also specify per job
|
||||
$output_template_filename
|
||||
$output_template_filename,
|
||||
$user
|
||||
) {
|
||||
global $input_templates, $output_templates;
|
||||
|
||||
|
@ -259,12 +260,14 @@ function submit_jobs(
|
|||
$x .= "\n";
|
||||
}
|
||||
|
||||
$errfile = "/tmp/create_work_" . getmypid() . ".err";
|
||||
$cmd = "cd " . project_dir() . "; ./bin/create_work --appname $app->name --batch $batch_id";
|
||||
|
||||
if ($user->seti_id) {
|
||||
$cmd .= " --target_user $user->id ";
|
||||
}
|
||||
if ($priority !== null) {
|
||||
$cmd .= " --priority $priority";
|
||||
}
|
||||
|
||||
if ($input_template_filename) {
|
||||
$cmd .= " --wu_template templates/$input_template_filename";
|
||||
}
|
||||
|
@ -289,7 +292,13 @@ function submit_jobs(
|
|||
if ($job_params->delay_bound) {
|
||||
$cmd .= " --delay_bound $job_params->delay_bound";
|
||||
}
|
||||
$cmd .= " --stdin >$errfile 2>&1";
|
||||
$cmd .= " --stdin ";
|
||||
|
||||
// send stdin/stderr to a temp file
|
||||
$cmd .= sprintf(' >%s 2>&1',
|
||||
"/tmp/create_work_" . getmypid() . ".err"
|
||||
);
|
||||
|
||||
$h = popen($cmd, "w");
|
||||
if ($h === false) {
|
||||
xml_error(-1, "can't run create_work");
|
||||
|
@ -520,7 +529,8 @@ function submit_batch($r) {
|
|||
submit_jobs(
|
||||
$jobs, $job_params, $app, $batch_id, $priority, $app_version_num,
|
||||
$input_template_filename,
|
||||
$output_template_filename
|
||||
$output_template_filename,
|
||||
$user
|
||||
);
|
||||
|
||||
// set state to IN_PROGRESS only after creating jobs;
|
||||
|
|
Loading…
Reference in New Issue