* Refactor zanodeModel::getTaskStatus.

This commit is contained in:
xieqiyu
2023-12-27 16:08:03 +08:00
parent 2fd7120377
commit 05fd264d69
3 changed files with 39 additions and 40 deletions
+3 -3
View File
@@ -258,7 +258,7 @@ class zanode extends control
{
if($_POST)
{
$imageData = form::data($this->config->zanode->form->createImage)->get();
$imageData = form::data()->get();
$this->zanode->createImage($nodeID, $imageData);
if(dao::isError()) return $this->sendError(dao::getError());
return $this->sendSuccess(array('load' => true));
@@ -267,7 +267,7 @@ class zanode extends control
$task = '';
$node = $this->zanode->getNodeByID($nodeID);
$customImage = $this->zanode->getCustomImage($nodeID, 'created,inprogress');
if($customImage) $task = $this->zanode->getTaskStatus($node, $customImage->id, 'exportVm');
if($customImage) $task = $this->zanodeZen->getTaskStatus($node, $customImage->id, 'exportVm');
$this->view->task = $task;
$this->view->node = $node;
@@ -474,7 +474,7 @@ class zanode extends control
public function ajaxGetTaskStatus(int $nodeID, int $taskID = 0, string $type = '', string $status = '')
{
$node = $this->zanode->getNodeByID($nodeID);
$result = $this->zanode->getTaskStatus($node, $taskID, $type, $status);
$result = $this->zanodeZen->getTaskStatus($node, $taskID, $type, $status);
return print(json_encode($result));
}
-37
View File
@@ -662,43 +662,6 @@ class zanodemodel extends model
return $returnData;
}
/**
* Get task status by zagent api.
*
* @param object $node
* @param int $taskID
* @param string $type
* @param string $status
* @access public
* @return array|bool
*/
public function getTaskStatus($node, $taskID = 0, $type = '', $status = '')
{
$agnetUrl = 'http://' . $node->ip . ':' . $node->hzap . static::KVM_STATUS_PATH;
$result = json_decode(commonModel::http($agnetUrl, array(), array(CURLOPT_CUSTOMREQUEST => 'POST'), array("Authorization:$node->tokenSN"), 'json', 'POST', 10));
if(empty($result) or $result->code != 'success') return false;
$data = $result->data;
if(empty($data)) return array();
if($status and !$taskID and isset($data->$status)) return $data->$status;
if(!$taskID) return $data;
foreach($data as $status => $tasks)
{
if(empty($tasks)) continue;
foreach($tasks as $task)
{
if(!empty($tasks['inprogress']) && $task->task != $tasks['inprogress'][0]->task && $task->status == 'created') $task->status = 'pending';
if($type == $task->type and $taskID == $task->task) return $task;
}
}
return $result;
}
/**
* 获取宿主机中zagent、nginx、websockify、novnc的运行及安装状态.
* Get service status from host.
+36
View File
@@ -113,4 +113,40 @@ class zanodeZen extends zanode
return $snapshot;
}
/**
* 获取导出镜像状态。
* Get task status by zagent api.
*
* @param object $node
* @param int $taskID
* @param string $type
* @param string $status
* @access protected
* @return false|array
*/
protected function getTaskStatus(object $node, int $taskID = 0, string $type = '', string $status = ''): false|array
{
$agnetUrl = 'http://' . $node->ip . ':' . $node->hzap . '/api/v1/task/getStatus';
$result = json_decode(commonModel::http($agnetUrl, array(), array(CURLOPT_CUSTOMREQUEST => 'POST'), array("Authorization:$node->tokenSN"), 'json', 'POST', 10));
if(empty($result) || $result->code != 'success') return false;
$data = $result->data;
if(empty($data)) return array();
if($status && !$taskID && isset($data->$status)) return $data->$status;
if(!$taskID) return $data;
foreach($data as $status => $tasks)
{
if(empty($tasks)) continue;
foreach($tasks as $task)
{
if(!empty($tasks['inprogress']) && $task->task != $tasks['inprogress'][0]->task && $task->status == 'created') $task->status = 'pending';
if($type == $task->type && $taskID == $task->task) return $task;
}
}
return $result;
}
}