mirror of
https://github.com/newnius/YAO-portal.git
synced 2025-06-06 07:11:54 +00:00
update, add virtual cluster management
This commit is contained in:
parent
b7a13462fd
commit
3d7f919942
38
ajax.php
38
ajax.php
@ -165,6 +165,44 @@ switch ($action) {
|
||||
$res = workspace_remove($workspace);
|
||||
break;
|
||||
|
||||
case 'cluster_list':
|
||||
$rule = new CRObject();
|
||||
$rule->set('offset', cr_get_GET('offset'));
|
||||
$rule->set('limit', cr_get_GET('limit'));
|
||||
$rule->set('order', 'latest');
|
||||
$res = cluster_list($rule);
|
||||
break;
|
||||
|
||||
case 'cluster_add':
|
||||
$cluster = new CRObject();
|
||||
$cluster->set('name', cr_get_POST('name'));
|
||||
$cluster->set('weight', cr_get_POST('weight'));
|
||||
$cluster->set('reserved', cr_get_POST('reserved'));
|
||||
$cluster->set('quota_cpu', cr_get_POST('quota_cpu'));
|
||||
$cluster->set('quota_mem', cr_get_POST('quota_mem'));
|
||||
$cluster->set('quota_gpu', cr_get_POST('quota_gpu'));
|
||||
$cluster->set('quota_gpu_mem', cr_get_POST('quota_gpu_mem'));
|
||||
$res = cluster_add($cluster);
|
||||
break;
|
||||
|
||||
case 'cluster_update':
|
||||
$cluster = new CRObject();
|
||||
$cluster->set('name', cr_get_POST('name'));
|
||||
$cluster->set('weight', cr_get_POST('weight'));
|
||||
$cluster->set('reserved', cr_get_POST('reserved'));
|
||||
$cluster->set('quota_cpu', cr_get_POST('quota_cpu'));
|
||||
$cluster->set('quota_mem', cr_get_POST('quota_mem'));
|
||||
$cluster->set('quota_gpu', cr_get_POST('quota_gpu'));
|
||||
$cluster->set('quota_gpu_mem', cr_get_POST('quota_gpu_mem'));
|
||||
$res = cluster_update($cluster);
|
||||
break;
|
||||
|
||||
case 'cluster_remove':
|
||||
$cluster = new CRObject();
|
||||
$cluster->set('name', cr_get_POST('name'));
|
||||
$res = cluster_remove($cluster);
|
||||
break;
|
||||
|
||||
case 'user_signout':
|
||||
$res = user_signout();
|
||||
break;
|
||||
|
118
cluster.logic.php
Normal file
118
cluster.logic.php
Normal file
@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
require_once('predis/autoload.php');
|
||||
|
||||
require_once('util4p/util.php');
|
||||
require_once('util4p/CRObject.class.php');
|
||||
require_once('util4p/AccessController.class.php');
|
||||
require_once('util4p/CRLogger.class.php');
|
||||
|
||||
require_once('Code.class.php');
|
||||
|
||||
require_once('config.inc.php');
|
||||
require_once('init.inc.php');
|
||||
|
||||
function cluster_add(CRObject $cluster)
|
||||
{
|
||||
if (!AccessController::hasAccess(Session::get('role', 'visitor'), 'cluster.add')) {
|
||||
$res['errno'] = Code::NO_PRIVILEGE;
|
||||
return $res;
|
||||
}
|
||||
|
||||
$spider = new Spider();
|
||||
$data['group'] = json_encode($cluster);
|
||||
$spider->doPost(YAO_SCHEDULER_ADDR . '?action=group_add', $data);
|
||||
$msg = json_decode($spider->getBody(), true);
|
||||
|
||||
$res['errno'] = Code::SUCCESS;
|
||||
if ($msg['code'] !== 0) {
|
||||
$res['errno'] = Code::FAIL;
|
||||
$res['msg'] = $msg['error'];
|
||||
}
|
||||
|
||||
$log = new CRObject();
|
||||
$log->set('scope', Session::get('uid'));
|
||||
$log->set('tag', 'cluster.add');
|
||||
$content = array('cluster' => $cluster, 'response' => $res['errno']);
|
||||
$log->set('content', json_encode($content));
|
||||
CRLogger::log($log);
|
||||
return $res;
|
||||
}
|
||||
|
||||
function cluster_remove(CRObject $cluster)
|
||||
{
|
||||
if (!AccessController::hasAccess(Session::get('role', 'visitor'), 'cluster.remove')) {
|
||||
$res['errno'] = Code::NO_PRIVILEGE;
|
||||
return $res;
|
||||
}
|
||||
// TODO: check owner
|
||||
|
||||
$spider = new Spider();
|
||||
$data['group'] = json_encode($cluster);
|
||||
$spider->doPost(YAO_SCHEDULER_ADDR . '?action=group_remove', $data);
|
||||
$msg = json_decode($spider->getBody(), true);
|
||||
|
||||
$res['errno'] = Code::SUCCESS;
|
||||
if ($msg['code'] !== 0) {
|
||||
$res['errno'] = Code::FAIL;
|
||||
$res['msg'] = $msg['error'];
|
||||
}
|
||||
|
||||
$log = new CRObject();
|
||||
$log->set('scope', Session::get('uid'));
|
||||
$log->set('tag', 'cluster.remove');
|
||||
$content = array('cluster' => $cluster, 'response' => $res['errno']);
|
||||
$log->set('content', json_encode($content));
|
||||
CRLogger::log($log);
|
||||
return $res;
|
||||
}
|
||||
|
||||
function cluster_update(CRObject $cluster)
|
||||
{
|
||||
if (!AccessController::hasAccess(Session::get('role', 'visitor'), 'cluster.update')) {
|
||||
$res['errno'] = Code::NO_PRIVILEGE;
|
||||
return $res;
|
||||
}
|
||||
//TODO: check owner
|
||||
|
||||
$spider = new Spider();
|
||||
$data['group'] = json_encode($cluster);
|
||||
$spider->doPost(YAO_SCHEDULER_ADDR . '?action=group_update', $data);
|
||||
$msg = json_decode($spider->getBody(), true);
|
||||
|
||||
$res['errno'] = Code::SUCCESS;
|
||||
if ($msg['code'] !== 0) {
|
||||
$res['errno'] = Code::FAIL;
|
||||
$res['msg'] = $msg['error'];
|
||||
}
|
||||
|
||||
$log = new CRObject();
|
||||
$log->set('scope', Session::get('uid'));
|
||||
$log->set('tag', 'cluster.update');
|
||||
$content = array('cluster' => $cluster, 'response' => $res['errno']);
|
||||
$log->set('content', json_encode($content));
|
||||
CRLogger::log($log);
|
||||
return $res;
|
||||
}
|
||||
|
||||
function cluster_list(CRObject $rule)
|
||||
{
|
||||
if (!AccessController::hasAccess(Session::get('role', 'visitor'), 'cluster.list')) {
|
||||
$res['errno'] = Code::NO_PRIVILEGE;
|
||||
return $res;
|
||||
}
|
||||
$spider = new Spider();
|
||||
$spider->doGet(YAO_SCHEDULER_ADDR . '?action=group_list');
|
||||
$msg = json_decode($spider->getBody(), true);
|
||||
|
||||
|
||||
if ($msg['code'] !== 0) {
|
||||
$res['errno'] = $msg['code'] !== null ? $msg['code'] : Code::UNKNOWN_ERROR;
|
||||
$res['msg'] = $msg['error'];
|
||||
return $res;
|
||||
}
|
||||
|
||||
$res['clusters'] = $msg['groups'];
|
||||
$res['errno'] = Code::SUCCESS;
|
||||
return $res;
|
||||
}
|
21
modals.php
21
modals.php
@ -218,29 +218,40 @@
|
||||
<input type="text" id="form-cluster-name" class="form-control" maxlength="16"
|
||||
placeholder="virtual cluster name" required/>
|
||||
</div>
|
||||
<label>Weight</label>
|
||||
<div class="form-group form-group-lg">
|
||||
<label for="form-cluster-weight" class="sr-only">Weight</label>
|
||||
<input type="number" id="form-cluster-weight" class="form-control" min="0" step="1"
|
||||
value="10" placeholder=""/>
|
||||
</div>
|
||||
<label>Reserved</label>
|
||||
<div class="form-group form-group-lg">
|
||||
<label for="form-cluster-reserved" class="sr-only">Reserved</label>
|
||||
<input type="checkbox" id="form-cluster-reserved"/> Reserved?
|
||||
</div>
|
||||
<label>GPU Number</label>
|
||||
<div class="form-group form-group-lg">
|
||||
<label for="form-cluster-quota-gpu-number" class="sr-only">GPU number</label>
|
||||
<input type="number" id="form-cluster-quota-gpu-number" class="form-control" min="0" step="1"
|
||||
placeholder=""/>
|
||||
value="0" placeholder=""/>
|
||||
</div>
|
||||
<label>GPU Memory (Total)</label>
|
||||
<label>GPU Memory (Each)</label>
|
||||
<div class="form-group form-group-lg">
|
||||
<label for="form-cluster-quota-gpu-memory" class="sr-only">GPU Memory</label>
|
||||
<input type="number" id="form-cluster-quota-gpu-memory" class="form-control" min="0" step="1024"
|
||||
placeholder="(MB)"/>
|
||||
value="10240" placeholder="(MB)"/>
|
||||
</div>
|
||||
<label>CPU</label>
|
||||
<div class="form-group form-group-lg">
|
||||
<label for="form-cluster-quota-cpu" class="sr-only">CPU</label>
|
||||
<input type="number" id="form-cluster-quota-cpu" class="form-control" placeholder="" min="0"
|
||||
step="1"/>
|
||||
value="0" step="1"/>
|
||||
</div>
|
||||
<label>Memory (Total)</label>
|
||||
<div class="form-group form-group-lg">
|
||||
<label for="form-cluster-quota-mem" class="sr-only">CPU</label>
|
||||
<input type="number" id="form-cluster-quota-mem" class="form-control" placeholder="(MB)" min="0"
|
||||
step="1024"/>
|
||||
value="1024" step="1024"/>
|
||||
</div>
|
||||
<div>
|
||||
<input type="hidden" id="form-cluster-submit-type"/>
|
||||
|
@ -6,12 +6,14 @@ function register_events_cluster() {
|
||||
|
||||
$("#form-cluster-submit").click(function (e) {
|
||||
var name = $('#form-cluster-name').val();
|
||||
var weight = $('#form-cluster-weight').val();
|
||||
var reserved = $('#form-cluster-reserved').prop("checked");
|
||||
var quota_gpu = $('#form-cluster-quota-gpu-number').val();
|
||||
var quota_gpu_mem = $('#form-cluster-quota-gpu-memory').val();
|
||||
var quota_cpu = $('#form-cluster-quota-cpu').val();
|
||||
var quota_mem = $('#form-cluster-quota-mem').val();
|
||||
|
||||
/* TODO validate form */
|
||||
/* TODO: validate form */
|
||||
|
||||
$('#modal-cluster').modal('hide');
|
||||
if ($('#form-cluster-submit-type').val() !== 'add')
|
||||
@ -22,6 +24,8 @@ function register_events_cluster() {
|
||||
type: 'POST',
|
||||
data: {
|
||||
name: name,
|
||||
weight: weight,
|
||||
reserved: reserved,
|
||||
quota_gpu: quota_gpu,
|
||||
quota_gpu_mem: quota_gpu_mem,
|
||||
quota_cpu: quota_cpu,
|
||||
|
Loading…
Reference in New Issue
Block a user