diff --git a/module/zanode/control.php b/module/zanode/control.php index 72537659ef..a8e59a7ba5 100644 --- a/module/zanode/control.php +++ b/module/zanode/control.php @@ -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)); } diff --git a/module/zanode/model.php b/module/zanode/model.php index 93650e973d..224f18a816 100644 --- a/module/zanode/model.php +++ b/module/zanode/model.php @@ -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. diff --git a/module/zanode/zen.php b/module/zanode/zen.php index 0238ff12a7..4f1f102047 100644 --- a/module/zanode/zen.php +++ b/module/zanode/zen.php @@ -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; + } }