From d402d19cbe5693121fd6784fbc03c39845565517 Mon Sep 17 00:00:00 2001 From: zhangxiquan Date: Tue, 26 Nov 2024 09:47:36 +0000 Subject: [PATCH] + [task#133164,done,4h,0h] Watch cne container logs. --- module/cne/model.php | 6 +-- module/instance/config.php | 11 ++++- module/instance/control.php | 73 ++++++++++++++++++++++++++++++++++ module/instance/lang/de.php | 12 +++++- module/instance/lang/en.php | 12 +++++- module/instance/lang/fr.php | 12 +++++- module/instance/lang/zh-cn.php | 12 +++++- 7 files changed, 129 insertions(+), 9 deletions(-) diff --git a/module/cne/model.php b/module/cne/model.php index f4d30e2e47..fb034a915d 100644 --- a/module/cne/model.php +++ b/module/cne/model.php @@ -663,7 +663,7 @@ class cneModel extends model * @access public * @return object */ - public function getAppLogs(object $instance, string $component = '', string $pod_name = '', string $container_name = '', string $previous = ''): ?object + public function getAppLogs(object $instance, string $component = '', string $pod_name = '', string $container_name = '', bool $previous = false): ?object { if(!isset($this->app->user->account)) { @@ -681,7 +681,7 @@ class cneModel extends model !empty($component) && $apiParams->component = $component; !empty($pod_name) && $apiParams->pod_name = $pod_name; !empty($container_name) && $apiParams->container_name = $container_name; - !empty($previous) && $apiParams->previous = $previous; + $previous && $apiParams->previous = $previous; return $this->apiGet('/api/cne/app/logs', $apiParams, $this->config->CNE->api->headers); } @@ -1141,4 +1141,4 @@ class cneModel extends model $apiUrl = "/api/cne/system/update"; return $this->apiPost($apiUrl, $apiParams, $this->config->CNE->api->headers); } -} +} \ No newline at end of file diff --git a/module/instance/config.php b/module/instance/config.php index 0712bac169..21d1c8de49 100644 --- a/module/instance/config.php +++ b/module/instance/config.php @@ -21,6 +21,13 @@ $config->instance->enableAutoRestore = in_array('auto-rollback', $features); global $lang, $app; $app->loadLang('space'); +$config->instance->actionList['recordWorkhour']['icon'] = 'time'; +$config->instance->actionList['recordWorkhour']['hint'] = $lang->instance->log->viewButton; +$config->instance->actionList['recordWorkhour']['text'] = $lang->instance->log->viewButton; +$config->instance->actionList['recordWorkhour']['url'] = array('module' => 'instance', 'method' => 'logs', 'params' => 'id={id}&zin=1'); +$config->instance->actionList['recordWorkhour']['data-toggle'] = 'modal'; +$config->instance->actionList['recordWorkhour']['class'] = 'task-record-btn'; + $config->instance->actionList['ajaxStart']['icon'] = 'play'; $config->instance->actionList['ajaxStart']['className'] = 'ajax-submit'; $config->instance->actionList['ajaxStart']['hint'] = $lang->instance->start; @@ -56,7 +63,7 @@ $config->instance->actionList['upgrade']['url'] = helper::createLink('in $config->instance->actions = new stdclass(); $config->instance->actions->view = array(); -$config->instance->actions->view['mainActions'] = array('visit', 'ajaxStart', 'ajaxStop', 'upgrade'); +$config->instance->actions->view['mainActions'] = array('visit','recordWorkhour', 'ajaxStart', 'ajaxStop', 'upgrade'); $config->instance->actions->view['suffixActions'] = array('ajaxUninstall'); $config->instance->devopsApps = array('gitea', 'gitlab', 'jenkins', 'sonarqube', 'nexus3', 'nexus'); @@ -67,4 +74,4 @@ $config->instance->zentaopaas = new stdclass(); $config->instance->zentaopaas->spaceData = new stdclass(); $config->instance->zentaopaas->spaceData->k8space = $config->k8space; $config->instance->zentaopaas->k8name = 'zentaopaas'; -$config->instance->zentaopaas->channel = $config->CNE->api->channel ?: $config->cloud->api->channel; +$config->instance->zentaopaas->channel = $config->CNE->api->channel ?: $config->cloud->api->channel; \ No newline at end of file diff --git a/module/instance/control.php b/module/instance/control.php index d1d0b88581..6dad002915 100644 --- a/module/instance/control.php +++ b/module/instance/control.php @@ -674,4 +674,77 @@ class instance extends control $this->action->create('instance', $instance->id, 'manualdeletebackup', '', json_encode(array('result' => 'success'))); return $this->send(array('result' => 'success', 'message' => zget($this->lang->instance->notices, 'deleteSuccess'), 'load' => $this->createLink('instance', 'view', 'id=' . $instanceID))); } + /** + * Ajax 方式获取组件列表。 + * ajax Get Components. + * @param int $id + */ + public function ajaxGetComponents(int $id) + { + $data = []; + $instance = $this->instance->getByID($id); + $components = $this->cne->getComponents($instance); + if(empty($components->data)) return print(json_encode($data)); + + foreach($components->data as $component) + { + $data[] = array('value' => $component->name, 'text' => $component->name); + } + + return print(json_encode($data)); + } + + /** + * Ajax 方式获取 Pods 列表。 + * ajax Get Pods. + * @param int $id + */ + public function ajaxGetPods(int $id, string $component) + { + $data = []; + $instance = $this->instance->getByID($id); + $pods = $this->cne->getPods($instance, $component); + if(empty($pods->data)) return print(json_encode($data)); + + foreach($pods->data as $pod) + { + $data[] = array('value' => $pod->name, 'text' => $pod->name); + } + return print(json_encode($data)); + } + + /** + * watch Logs page. + * 查看日志页面. + * + * @param int $id + * @return void + */ + public function logs(int $id): void + { + if (!commonModel::hasPriv('instance', 'manage')) $this->loadModel('common')->deny('instance', 'manage', false); + $instance = $this->instance->getByID($id); + + $this->view->instance = $instance; + $this->display(); + } + + /** + * Get logs api. + * 获取日志接口。 + * @param int $id + * @param string $component + * @param string $pod + * @param int $previous + * @param string $container + * @return void + */ + public function showLogs(int $id, $component = '', $pod = '', $previous = 0, $container = '') + { + $instance = $this->instance->getByID($id); + $previous = $previous == 1 ? true : false; + + $data = $this->cne->getAppLogs($instance, $component, $pod, $container, $previous) ?? new stdClass(); + return print(json_encode($data)); + } } diff --git a/module/instance/lang/de.php b/module/instance/lang/de.php index a2c69001df..6e7bb82708 100644 --- a/module/instance/lang/de.php +++ b/module/instance/lang/de.php @@ -187,6 +187,16 @@ $lang->instance->log = new stdclass; $lang->instance->log->date = 'date'; $lang->instance->log->message = 'Content'; +$lang->instance->log->viewButton = 'Logs'; +$lang->instance->log->title = 'Watch Logs'; +$lang->instance->log->button = 'View Now'; + +$lang->instance->component = 'Component'; +$lang->instance->pod = 'Pod'; +$lang->instance->isPrevious = 'Is Previous container'; +$lang->instance->isPreviousList[0] = 'No'; +$lang->instance->isPreviousList[1] = 'Yes'; + $lang->instance->actionList = array(); $lang->instance->actionList['install'] = '%s installed'; $lang->instance->actionList['uninstall'] = '%s deleted'; @@ -371,4 +381,4 @@ $lang->instance->tips->resizeDisk = 'Fill in an integer from %s to %s wi $lang->instance->tips->resizeDiskDisabled = 'The disk space not adjustable'; $lang->instance->tips->fSettingsAttention = 'Changing the Settings of CPU, memory, disk, etc. will restart the application, and the disk space size can only be increased, not reduced, please be careful!'; $lang->instance->tips->pSettingsAttention = 'Changing the CPU, memory, and other Settings will restart the application, please be careful!'; -$lang->instance->tips->diskAdjusting = 'The disk cannot be adjusted during disk expansion'; +$lang->instance->tips->diskAdjusting = 'The disk cannot be adjusted during disk expansion'; \ No newline at end of file diff --git a/module/instance/lang/en.php b/module/instance/lang/en.php index a2c69001df..6e7bb82708 100644 --- a/module/instance/lang/en.php +++ b/module/instance/lang/en.php @@ -187,6 +187,16 @@ $lang->instance->log = new stdclass; $lang->instance->log->date = 'date'; $lang->instance->log->message = 'Content'; +$lang->instance->log->viewButton = 'Logs'; +$lang->instance->log->title = 'Watch Logs'; +$lang->instance->log->button = 'View Now'; + +$lang->instance->component = 'Component'; +$lang->instance->pod = 'Pod'; +$lang->instance->isPrevious = 'Is Previous container'; +$lang->instance->isPreviousList[0] = 'No'; +$lang->instance->isPreviousList[1] = 'Yes'; + $lang->instance->actionList = array(); $lang->instance->actionList['install'] = '%s installed'; $lang->instance->actionList['uninstall'] = '%s deleted'; @@ -371,4 +381,4 @@ $lang->instance->tips->resizeDisk = 'Fill in an integer from %s to %s wi $lang->instance->tips->resizeDiskDisabled = 'The disk space not adjustable'; $lang->instance->tips->fSettingsAttention = 'Changing the Settings of CPU, memory, disk, etc. will restart the application, and the disk space size can only be increased, not reduced, please be careful!'; $lang->instance->tips->pSettingsAttention = 'Changing the CPU, memory, and other Settings will restart the application, please be careful!'; -$lang->instance->tips->diskAdjusting = 'The disk cannot be adjusted during disk expansion'; +$lang->instance->tips->diskAdjusting = 'The disk cannot be adjusted during disk expansion'; \ No newline at end of file diff --git a/module/instance/lang/fr.php b/module/instance/lang/fr.php index a2c69001df..6e7bb82708 100644 --- a/module/instance/lang/fr.php +++ b/module/instance/lang/fr.php @@ -187,6 +187,16 @@ $lang->instance->log = new stdclass; $lang->instance->log->date = 'date'; $lang->instance->log->message = 'Content'; +$lang->instance->log->viewButton = 'Logs'; +$lang->instance->log->title = 'Watch Logs'; +$lang->instance->log->button = 'View Now'; + +$lang->instance->component = 'Component'; +$lang->instance->pod = 'Pod'; +$lang->instance->isPrevious = 'Is Previous container'; +$lang->instance->isPreviousList[0] = 'No'; +$lang->instance->isPreviousList[1] = 'Yes'; + $lang->instance->actionList = array(); $lang->instance->actionList['install'] = '%s installed'; $lang->instance->actionList['uninstall'] = '%s deleted'; @@ -371,4 +381,4 @@ $lang->instance->tips->resizeDisk = 'Fill in an integer from %s to %s wi $lang->instance->tips->resizeDiskDisabled = 'The disk space not adjustable'; $lang->instance->tips->fSettingsAttention = 'Changing the Settings of CPU, memory, disk, etc. will restart the application, and the disk space size can only be increased, not reduced, please be careful!'; $lang->instance->tips->pSettingsAttention = 'Changing the CPU, memory, and other Settings will restart the application, please be careful!'; -$lang->instance->tips->diskAdjusting = 'The disk cannot be adjusted during disk expansion'; +$lang->instance->tips->diskAdjusting = 'The disk cannot be adjusted during disk expansion'; \ No newline at end of file diff --git a/module/instance/lang/zh-cn.php b/module/instance/lang/zh-cn.php index f5217b709b..a08964a1be 100644 --- a/module/instance/lang/zh-cn.php +++ b/module/instance/lang/zh-cn.php @@ -191,6 +191,16 @@ $lang->instance->log = new stdclass; $lang->instance->log->date = '日期'; $lang->instance->log->message = '内容'; +$lang->instance->log->viewButton = '日志'; +$lang->instance->log->title = '查看日志'; +$lang->instance->log->button = '立即查看'; + +$lang->instance->component = '组件'; +$lang->instance->pod = 'Pod'; +$lang->instance->isPrevious = '是否上个退出容器'; +$lang->instance->isPreviousList[0] = '否'; +$lang->instance->isPreviousList[1] = '是'; + $lang->instance->actionList = array(); $lang->instance->actionList['install'] = '安装了%s'; $lang->instance->actionList['uninstall'] = '删除了%s'; @@ -375,4 +385,4 @@ $lang->instance->tips->resizeDisk = '填写%s~%s的整数,单位GB'; $lang->instance->tips->resizeDiskDisabled = '该应用的磁盘空间不可调整'; $lang->instance->tips->fSettingsAttention = '修改CPU、内存、磁盘等设置会重启应用,且磁盘空间大小只能增加不可减少,请谨慎操作!'; $lang->instance->tips->pSettingsAttention = '修改CPU、内存等设置会重启应用,请谨慎操作!'; -$lang->instance->tips->diskAdjusting = '磁盘扩容中,暂不可调整'; +$lang->instance->tips->diskAdjusting = '磁盘扩容中,暂不可调整'; \ No newline at end of file