1
0
mirror of https://github.com/newnius/YAO-portal.git synced 2025-06-06 07:11:54 +00:00

add stop support

This commit is contained in:
Newnius 2019-04-18 17:24:36 +08:00
parent d23fa19649
commit dbfe0c5bb7
6 changed files with 43 additions and 48 deletions

View File

@ -103,6 +103,7 @@ switch ($action) {
$task = new CRObject();
$task->set('job', cr_get_GET('job'));
$task->set('task', cr_get_GET('task'));
$task->set('task', 'node1');
$res = task_logs($task);
break;

View File

@ -69,6 +69,8 @@ function init_accessMap()
/* job */
'job.list' => array('root', 'admin', 'developer', 'normal'),
'job.submit' => array('root', 'admin', 'developer', 'normal'),
'job.stop' => array('root', 'admin', 'developer', 'normal'),
'job.stop_others' => array('root', 'admin', 'developer', 'normal'),
/* system */
'system.summary' => array('root', 'admin', 'developer', 'normal'),

View File

@ -48,8 +48,14 @@ function job_submit(CRObject $job)
$job->set('created_by', $job->getInt('created_by'));
$data['job'] = json_encode($job);
$spider->doPost(YAO_SCHEDULER_ADDR . '?action=job_submit', $data);
$res['message'] = $spider->getBody();
$msg = json_decode($spider->getBody(), true);
$res['errno'] = Code::SUCCESS;
if ($msg['code'] !== 0) {
$res['errno'] = Code::FAIL;
$res['msg'] = $msg['error'];
return $res;
}
return $res;
}
@ -59,21 +65,22 @@ function job_stop(CRObject $job)
$res['errno'] = Code::NO_PRIVILEGE;
return $res;
}
$origin = JobManager::get($job);
if ($origin === null) {
$res['errno'] = Code::RECORD_NOT_EXIST;
} else if ($origin['created_by'] !== Session::get('uid') && !AccessController::hasAccess(Session::get('role', 'visitor'), 'job.stop_others')) {
$res['errno'] = Code::NO_PRIVILEGE;
} else if ($origin['status'] !== '0' && $origin['status'] !== '1') {
$res['errno'] = Code::RECORD_REMOVED;
} else {
$origin['status'] = 4;
$res['errno'] = JobManager::update(new CRObject($origin)) ? Code::SUCCESS : Code::UNKNOWN_ERROR;
/* TODO: permission check */
$spider = new Spider();
$data['id'] = $job->get('id', '');
$spider->doPost(YAO_SCHEDULER_ADDR . '?action=job_stop', $data);
$msg = json_decode($spider->getBody(), true);
$res['errno'] = Code::SUCCESS;
if ($msg['code'] !== 0) {
$res['errno'] = Code::FAIL;
$res['msg'] = $msg['error'];
return $res;
}
$log = new CRObject();
$log->set('scope', Session::get('uid'));
$log->set('tag', 'job.stop');
$content = array('id' => $job->getInt('id'), 'response' => $res['errno']);
$content = array('id' => $job->get('id'), 'response' => $res['errno']);
$log->set('content', json_encode($content));
CRLogger::log($log);
return $res;

View File

@ -105,16 +105,16 @@
<div class="row">
<div class="col-md-6">
<label>Docker Image</label>
<div class="form-group">
<input type="text" class="form-control task-image" maxlength="256"
placeholder="eg. yao/tensorflow:1.12" required/>
</div>
<select class="form-control form-control task-image" required>
<option value="quickdeploy/yao-tensorflow:1.12" selected>quickdeploy/yao-tensorflow:1.12</option>
<option value="nvidia/cuda:9.0-base">nvidia/cuda:9.0-base</option>
</select>
</div>
<div class="col-md-6">
<label>CMD</label>
<div class="form-group">
<input type="text" class="form-control task-cmd" maxlength="255"
placeholder="Command to bring up task" required/>
placeholder="Command to bring up task"/>
</div>
</div>
@ -128,15 +128,15 @@
<div class="col-md-2">
<label>CPU Number</label>
<div class="form-group">
<input type="number" class="form-control task-cpu" step="1" min="1"
<input type="number" class="form-control task-cpu" step="1" min="1" value="1"
placeholder="number of CPU required" required/>
</div>
</div>
<div class="col-md-2">
<label>Memory</label>
<div class="form-group">
<input type="number" class="form-control task-mem" step="512" min="512"
placeholder="MB" required/>
<input type="number" class="form-control task-mem" step="1024" min="1024"
value="4096" placeholder="MB" required/>
</div>
</div>
<div class="col-md-2">
@ -149,8 +149,8 @@
<div class="col-md-2">
<label>GPU Memory</label>
<div class="form-group">
<input type="number" class="form-control task-gpu-mem" step="512" min="512"
placeholder="MB" required/>
<input type="number" class="form-control task-gpu-mem" step="1024" min="1024"
value="4096" placeholder="MB" required/>
</div>
</div>
</div>

View File

@ -26,6 +26,13 @@ function register_events_job() {
});
/* TODO validate form */
if (name.length === 0) {
return true;
}
if (workspace.length === 0) {
return true;
}
$('#modal-job').modal('hide');
@ -227,14 +234,14 @@ window.jobOperateEvents = {
var ajax = $.ajax({
url: window.config.BASE_URL + "/service?action=job_stop",
type: 'POST',
data: {id: row.id}
data: {id: row.name}
});
ajax.done(function (res) {
if (res["errno"] !== 0) {
$("#modal-msg-content").html(res["msg"]);
$("#modal-msg").modal('show');
}
$('#table-link').bootstrapTable("refresh");
$('#table-job').bootstrapTable("refresh");
});
ajax.fail(function (jqXHR, textStatus) {
$("#modal-msg-content").html("Request failed : " + jqXHR.statusText);

View File

@ -17,7 +17,7 @@ if (Session::get('uid') === null) {
exit;
}
$page_type = 'home';
$page_type = 'summary';
$uid = Session::get('uid');
$nickname = Session::get('nickname');
@ -48,13 +48,9 @@ if (isset($_GET['logs'])) {
} elseif (isset($_GET['workspaces'])) {
$page_type = 'workspaces';
} elseif (isset($_GET['home'])) {
$page_type = 'home';
}
$entries = array(
array('home', 'Home'),
array('summary', 'Summary'),
array('jobs', 'Jobs'),
array('workspaces', 'Workspaces'),
@ -117,25 +113,7 @@ foreach ($entries as $entry) {
</div>
</div>
<?php if ($page_type === 'home') { ?>
<div id="home">
<div class="panel panel-default">
<div class="panel-heading">Welcome page</div>
<div class="panel-body">
Welcome back, <?php echo htmlspecialchars($nickname) ?>.<br/>
Now: &nbsp; <?php echo date('H:i:s', time()) ?>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Notice</div>
<div class="panel-body">
<h4 class="text-info">Notices</h4>
<p>Nothing new here.</p>
</div>
</div>
</div>
<?php } elseif ($page_type === 'summary') { ?>
<?php if ($page_type === 'summary') { ?>
<div id="jobs">
<div class="panel panel-default">
<div class="panel-heading">Summary</div>