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 @@ + +