From 3d7f9199426738e18833a23ffaa68ea94ecb1ab3 Mon Sep 17 00:00:00 2001 From: Newnius Date: Tue, 30 Jul 2019 15:49:09 +0800 Subject: [PATCH] update, add virtual cluster management --- ajax.php | 38 +++++++++++++++ cluster.logic.php | 118 ++++++++++++++++++++++++++++++++++++++++++++++ modals.php | 21 +++++++-- static/cluster.js | 6 ++- 4 files changed, 177 insertions(+), 6 deletions(-) create mode 100644 cluster.logic.php diff --git a/ajax.php b/ajax.php index b817952..c270d6b 100644 --- a/ajax.php +++ b/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; diff --git a/cluster.logic.php b/cluster.logic.php new file mode 100644 index 0000000..396f4e3 --- /dev/null +++ b/cluster.logic.php @@ -0,0 +1,118 @@ +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; +} diff --git a/modals.php b/modals.php index c15e6a9..7343979 100755 --- a/modals.php +++ b/modals.php @@ -218,29 +218,40 @@ + +
+ + +
+ +
+ +   Reserved? +
+ value="0" placeholder=""/>
- +
+ value="10240" placeholder="(MB)"/>
+ value="0" step="1"/>
+ value="1024" step="1024"/>
diff --git a/static/cluster.js b/static/cluster.js index 9ad6fa2..97f8a41 100755 --- a/static/cluster.js +++ b/static/cluster.js @@ -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,