已合并
Datakit页面功能优化 #179
AtomGit-Bot创建于 2023年3月29日
Datakit页面功能优化 #179
已合并
AtomGit-Bot创建于 2023年3月29日
master合入到master
280 个文件变更+7751-837
Mbase-ops/doc/DataKit Product Manual - Base OPS.md+4-0
@@ -70,6 +70,10 @@ root密码:安全校验,需填写物理机对应密码。
70 70 
71对于openGauss的三个版本,安装的前三个步骤是一致的,下面介绍这些通用步骤。71对于openGauss的三个版本,安装的前三个步骤是一致的,下面介绍这些通用步骤。
72 72 
73+依赖说明:
74+ 
75+touch命令:环境分离方式安装集群时,会通过touch命令创建环境变量文件
76+ 
73 #### 3.2.1 通用步骤77 #### 3.2.1 通用步骤
74 78 
75##### 3.2.1.1 选择版本79##### 3.2.1.1 选择版本
Mbase-ops/src/main/java/org/opengauss/admin/plugin/BaseOpsPluginApplication.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BaseOpsPluginApplication.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/BaseOpsPluginApplication.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin;24package org.opengauss.admin.plugin;
2 25 
3import com.gitee.starblues.bootstrap.SpringPluginBootstrap;26import com.gitee.starblues.bootstrap.SpringPluginBootstrap;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/aspectj/LogAspect.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * LogAspect.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/aspectj/LogAspect.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1/**24/**
2 Copyright (c) 2020 Huawei Technologies Co.,Ltd.25 Copyright (c) 2020 Huawei Technologies Co.,Ltd.
3 Copyright (c) 2021 openGauss Contributors26 Copyright (c) 2021 openGauss Contributors
Mbase-ops/src/main/java/org/opengauss/admin/plugin/base/BaseController.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BaseController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/base/BaseController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1/**24/**
2 * Copyright (c) 2020 Huawei Technologies Co.,Ltd.25 * Copyright (c) 2020 Huawei Technologies Co.,Ltd.
3 * Copyright (c) 2021 openGauss Contributors26 * Copyright (c) 2021 openGauss Contributors
Mbase-ops/src/main/java/org/opengauss/admin/plugin/config/AutoFillMetaObjectHandler.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * AutoFillMetaObjectHandler.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/config/AutoFillMetaObjectHandler.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.config;24package org.opengauss.admin.plugin.config;
2 25 
3import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;26import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/config/DataSourceConfig.java+24-1
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DataSourceConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/config/DataSourceConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.config;24package org.opengauss.admin.plugin.config;
2 25 
3import com.gitee.starblues.bootstrap.PluginContextHolder;26import com.gitee.starblues.bootstrap.PluginContextHolder;
@@ -34,4 +57,4 @@ public class DataSourceConfig {
34 .build();57 .build();
35 }58 }
36 59 
37-}60+}
Mbase-ops/src/main/java/org/opengauss/admin/plugin/config/MybatisPlusConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * MybatisPlusConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/config/MybatisPlusConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.config;24package org.opengauss.admin.plugin.config;
2 25 
3import com.baomidou.mybatisplus.annotation.DbType;26import com.baomidou.mybatisplus.annotation.DbType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/config/PluginExtensionInfoConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * PluginExtensionInfoConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/config/PluginExtensionInfoConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.config;24package org.opengauss.admin.plugin.config;
2 25 
3import com.gitee.starblues.core.PluginExtensionInfo;26import com.gitee.starblues.core.PluginExtensionInfo;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/config/RestTemplateConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * RestTemplateConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/config/RestTemplateConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.config;24package org.opengauss.admin.plugin.config;
2 25 
3import org.springframework.context.annotation.Bean;26import org.springframework.context.annotation.Bean;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/config/ThreadPoolConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ThreadPoolConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/config/ThreadPoolConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.config;24package org.opengauss.admin.plugin.config;
2 25 
3import org.apache.commons.lang3.concurrent.BasicThreadFactory;26import org.apache.commons.lang3.concurrent.BasicThreadFactory;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/BackupController.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BackupController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/BackupController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.ops;24package org.opengauss.admin.plugin.controller.ops;
2 25 
3import com.baomidou.mybatisplus.extension.plugins.pagination.Page;26import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/HostController.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/HostController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.ops;24package org.opengauss.admin.plugin.controller.ops;
2 25 
3import org.opengauss.admin.common.core.domain.AjaxResult;26import org.opengauss.admin.common.core.domain.AjaxResult;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/InstallPackageManagerController.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * InstallPackageManagerController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/InstallPackageManagerController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.ops;24package org.opengauss.admin.plugin.controller.ops;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/OpenLooKengController.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenLooKengController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/OpenLooKengController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.ops;24package org.opengauss.admin.plugin.controller.ops;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/OpsClusterController.java+30-3
@@ -1,5 +1,29 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/OpsClusterController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.ops;24package org.opengauss.admin.plugin.controller.ops;
2 25 
26+import com.gitee.starblues.bootstrap.annotation.AutowiredType;
3import org.opengauss.admin.common.core.domain.AjaxResult;27import org.opengauss.admin.common.core.domain.AjaxResult;
4import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity;28import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity;
5import org.opengauss.admin.plugin.base.BaseController;29import org.opengauss.admin.plugin.base.BaseController;
@@ -8,9 +32,10 @@ import org.opengauss.admin.plugin.domain.model.ops.env.HostEnv;
8import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum;32import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum;
9import org.opengauss.admin.plugin.enums.ops.OpenGaussVersionEnum;33import org.opengauss.admin.plugin.enums.ops.OpenGaussVersionEnum;
10import org.opengauss.admin.plugin.service.ops.IOpsClusterService;34import org.opengauss.admin.plugin.service.ops.IOpsClusterService;
35+import org.opengauss.admin.plugin.vo.ops.*;
11import org.opengauss.admin.plugin.vo.ops.SessionVO;36import org.opengauss.admin.plugin.vo.ops.SessionVO;
12import org.opengauss.admin.plugin.vo.ops.SlowSqlVO;37import org.opengauss.admin.plugin.vo.ops.SlowSqlVO;
13-import org.opengauss.admin.plugin.vo.ops.*;38+import org.opengauss.admin.system.plugin.facade.OpsFacade;
14import org.springframework.beans.factory.annotation.Autowired;39import org.springframework.beans.factory.annotation.Autowired;
15import org.springframework.web.bind.annotation.*;40import org.springframework.web.bind.annotation.*;
16 41 
@@ -31,6 +56,9 @@ public class OpsClusterController extends BaseController {
31 56 
32 @Autowired57 @Autowired
33 private IOpsClusterService opsClusterService;58 private IOpsClusterService opsClusterService;
59+ @Autowired
60+ @AutowiredType(AutowiredType.Type.PLUGIN_MAIN)
61+ private OpsFacade opsFacade;
34 62 
35 @GetMapping("/hasName")63 @GetMapping("/hasName")
36 public AjaxResult hasName(@RequestParam("name") String name) {64 public AjaxResult hasName(@RequestParam("name") String name) {
@@ -143,8 +171,7 @@ public class OpsClusterController extends BaseController {
143 171 
144 @GetMapping("/listCluster")172 @GetMapping("/listCluster")
145 public AjaxResult listCluster() {173 public AjaxResult listCluster() {
146- List<OpsClusterVO> clusterVOList = opsClusterService.listCluster();174+ return AjaxResult.success(opsFacade.listCluster());
147- return AjaxResult.success(clusterVOList);
148 }175 }
149 176 
150 @GetMapping("/summary")177 @GetMapping("/summary")
Mbase-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/WdrController.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WdrController.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/controller/ops/WdrController.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.ops;24package org.opengauss.admin.plugin.controller.ops;
2 25 
3import org.opengauss.admin.plugin.base.BaseController;26import org.opengauss.admin.plugin.base.BaseController;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/BaseEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BaseEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/BaseEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain;24package org.opengauss.admin.plugin.domain;
2 25 
3import com.baomidou.mybatisplus.annotation.FieldFill;26import com.baomidou.mybatisplus.annotation.FieldFill;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.IdType;26import com.baomidou.mybatisplus.annotation.IdType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowOperatorEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowOperatorEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.TableField;26import com.baomidou.mybatisplus.annotation.TableField;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowOperatorGroupEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorGroupEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowOperatorGroupEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.TableField;26import com.baomidou.mybatisplus.annotation.TableField;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowTypeEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowTypeEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingDataFlowTypeEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.TableField;26import com.baomidou.mybatisplus.annotation.TableField;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationCustomDimensionsEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationCustomDimensionsEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationCustomDimensionsEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationGeoFilesEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationGeoFilesEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationGeoFilesEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.IdType;26import com.baomidou.mybatisplus.annotation.IdType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationParamsEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationParamsEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationParamsEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.IdType;26import com.baomidou.mybatisplus.annotation.IdType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationReportsEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationReportsEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationReportsEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.IdType;26import com.baomidou.mybatisplus.annotation.IdType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationSnapshotsEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationSnapshotsEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/modeling/ModelingVisualizationSnapshotsEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.modeling;24package org.opengauss.admin.plugin.domain.entity.modeling;
2 25 
3import com.baomidou.mybatisplus.annotation.IdType;26import com.baomidou.mybatisplus.annotation.IdType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsBackupEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsBackupEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsBackupEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import com.baomidou.mybatisplus.annotation.TableId;26import com.baomidou.mybatisplus.annotation.TableId;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsCheckEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsCheckEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsCheckEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import com.baomidou.mybatisplus.annotation.TableName;26import com.baomidou.mybatisplus.annotation.TableName;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsClusterEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsClusterEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import com.baomidou.mybatisplus.annotation.TableId;26import com.baomidou.mybatisplus.annotation.TableId;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsClusterNodeEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterNodeEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsClusterNodeEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import com.baomidou.mybatisplus.annotation.TableField;26import com.baomidou.mybatisplus.annotation.TableField;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsOlkEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsOlkEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsOlkEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import com.baomidou.mybatisplus.annotation.IdType;26import com.baomidou.mybatisplus.annotation.IdType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsPackageManagerEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsPackageManagerEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsPackageManagerEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import cn.hutool.core.util.ObjectUtil;26import cn.hutool.core.util.ObjectUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsWdrEntity.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsWdrEntity.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/entity/ops/OpsWdrEntity.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.entity.ops;24package org.opengauss.admin.plugin.domain.entity.ops;
2 25 
3import com.baomidou.mybatisplus.annotation.TableId;26import com.baomidou.mybatisplus.annotation.TableId;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ClusterInstallConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ClusterInstallConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ClusterInstallConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ClusterSummaryVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ClusterSummaryVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ClusterSummaryVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/DownloadBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DownloadBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/DownloadBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/DwrSnapshotVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DwrSnapshotVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/DwrSnapshotVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import com.fasterxml.jackson.annotation.JsonFormat;26import com.fasterxml.jackson.annotation.JsonFormat;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/EnterpriseInstallConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * EnterpriseInstallConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/EnterpriseInstallConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/Host.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * Host.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/Host.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity;26import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostCredentials.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostCredentials.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostCredentials.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.plugin.enums.ops.HostAuthenticationTypeEnum;26import org.opengauss.admin.plugin.enums.ops.HostAuthenticationTypeEnum;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostFile.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostFile.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostFile.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostInfoHolder.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostInfoHolder.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostInfoHolder.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity;26import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostUserBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostUserBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/HostUserBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity;26import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ImportClusterBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ImportClusterBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ImportClusterBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/InstallBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * InstallBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/InstallBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/InstallContext.java+26-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * InstallContext.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/InstallContext.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -43,6 +66,8 @@ public class InstallContext implements Cloneable {
43 66 
44 private WsSession retSession;67 private WsSession retSession;
45 68 
69+ private String envPath;
70+ 
46 private List<HostInfoHolder> hostInfoHolders;71 private List<HostInfoHolder> hostInfoHolders;
47 72 
48 public void checkConfig() {73 public void checkConfig() {
@@ -121,6 +146,7 @@ public class InstallContext implements Cloneable {
121 opsClusterEntity.setInstallMode(installMode);146 opsClusterEntity.setInstallMode(installMode);
122 opsClusterEntity.setDeployType(deployType);147 opsClusterEntity.setDeployType(deployType);
123 opsClusterEntity.setDatabaseUsername("gaussdb");148 opsClusterEntity.setDatabaseUsername("gaussdb");
149+ opsClusterEntity.setEnvPath(envPath);
124 if (openGaussVersion == OpenGaussVersionEnum.ENTERPRISE) {150 if (openGaussVersion == OpenGaussVersionEnum.ENTERPRISE) {
125 opsClusterEntity.setInstallPackagePath(enterpriseInstallConfig.getInstallPackagePath());151 opsClusterEntity.setInstallPackagePath(enterpriseInstallConfig.getInstallPackagePath());
126 opsClusterEntity.setDatabasePassword(enterpriseInstallConfig.getDatabasePassword());152 opsClusterEntity.setDatabasePassword(enterpriseInstallConfig.getDatabasePassword());
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/JschResult.java+25-0
@@ -1,12 +1,37 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * JschResult.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/JschResult.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
27+import lombok.ToString;
4 28 
5/**29/**
6 * @author lhf30 * @author lhf
7 * @date 2022/8/10 14:0831 * @date 2022/8/10 14:08
8 **/32 **/
9@Data33@Data
34+@ToString
10public class JschResult {35public class JschResult {
11 private Integer exitCode;36 private Integer exitCode;
12 private String result;37 private String result;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ListDir.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ListDir.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/ListDir.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/LiteInstallConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * LiteInstallConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/LiteInstallConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/MinimalistInstallConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * MinimalistInstallConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/MinimalistInstallConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/NodeMonitorVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * NodeMonitorVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/NodeMonitorVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/NodeNetMonitor.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * NodeNetMonitor.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/NodeNetMonitor.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OmStatusModel.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OmStatusModel.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OmStatusModel.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterContext.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterContext.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterContext.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;26import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterNodeVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterNodeVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterNodeVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity;26import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsClusterVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import com.fasterxml.jackson.annotation.JsonFormat;26import com.fasterxml.jackson.annotation.JsonFormat;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsPackageVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsPackageVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/OpsPackageVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import com.alibaba.fastjson.annotation.JSONField;26import com.alibaba.fastjson.annotation.JSONField;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SSHBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SSHBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SSHBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SessionVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SessionVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SessionVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SlowSqlVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SlowSqlVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SlowSqlVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SshCommandConstants.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SshCommandConstants.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/SshCommandConstants.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UnInstallBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * UnInstallBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UnInstallBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UnInstallContext.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * UnInstallContext.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UnInstallContext.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;26import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UpgradeBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * UpgradeBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UpgradeBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UpgradeContext.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * UpgradeContext.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/UpgradeContext.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/WdrGeneratorBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WdrGeneratorBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/WdrGeneratorBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import org.opengauss.admin.plugin.enums.ops.WdrScopeEnum;26import org.opengauss.admin.plugin.enums.ops.WdrScopeEnum;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/WsSession.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WsSession.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/WsSession.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops;24package org.opengauss.admin.plugin.domain.model.ops;
2 25 
3import lombok.AllArgsConstructor;26import lombok.AllArgsConstructor;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/cache/SSHChannelManager.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SSHChannelManager.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/cache/SSHChannelManager.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.cache;24package org.opengauss.admin.plugin.domain.model.ops.cache;
2 25 
3import com.gitee.starblues.bootstrap.annotation.AutowiredType;26import com.gitee.starblues.bootstrap.annotation.AutowiredType;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/cache/TaskManager.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * TaskManager.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/cache/TaskManager.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.cache;24package org.opengauss.admin.plugin.domain.model.ops.cache;
2 25 
3import java.util.Objects;26import java.util.Objects;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/cache/WsConnectorManager.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WsConnectorManager.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/cache/WsConnectorManager.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.cache;24package org.opengauss.admin.plugin.domain.model.ops.cache;
2 25 
3 26 
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/EnvProperty.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * EnvProperty.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/EnvProperty.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.env;24package org.opengauss.admin.plugin.domain.model.ops.env;
2 25 
3import org.opengauss.admin.plugin.enums.ops.HostEnvStatusEnum;26import org.opengauss.admin.plugin.enums.ops.HostEnvStatusEnum;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/HardwareEnv.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HardwareEnv.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/HardwareEnv.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.env;24package org.opengauss.admin.plugin.domain.model.ops.env;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/HostEnv.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostEnv.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/HostEnv.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.env;24package org.opengauss.admin.plugin.domain.model.ops.env;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/SoftwareEnv.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SoftwareEnv.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/env/SoftwareEnv.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.env;24package org.opengauss.admin.plugin.domain.model.ops.env;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/node/EnterpriseInstallNodeConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * EnterpriseInstallNodeConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/node/EnterpriseInstallNodeConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.node;24package org.opengauss.admin.plugin.domain.model.ops.node;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/node/LiteInstallNodeConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * LiteInstallNodeConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/node/LiteInstallNodeConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.node;24package org.opengauss.admin.plugin.domain.model.ops.node;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/node/MinimalistInstallNodeConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * MinimalistInstallNodeConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/node/MinimalistInstallNodeConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.node;24package org.opengauss.admin.plugin.domain.model.ops.node;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/DistributeConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DistributeConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/DistributeConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/InstallOlkBody.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * InstallOlkBody.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/InstallOlkBody.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/InstallOlkContext.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * InstallOlkContext.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/InstallOlkContext.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/OlkConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OlkConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/OlkConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/OlkPageVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OlkPageVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/OlkPageVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/OlkProcessFlagStr.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OlkProcessFlagStr.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/OlkProcessFlagStr.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3public class OlkProcessFlagStr {26public class OlkProcessFlagStr {
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/ShardingDatasourceConfig.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ShardingDatasourceConfig.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/ShardingDatasourceConfig.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk;24package org.opengauss.admin.plugin.domain.model.ops.olk;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/DadInstance.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DadInstance.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/DadInstance.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/DadReqPath.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DadReqPath.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/DadReqPath.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3public class DadReqPath {26public class DadReqPath {
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/DadResult.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DadResult.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/DadResult.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import cn.hutool.core.util.ObjectUtil;26import cn.hutool.core.util.ObjectUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/OlkCommandDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OlkCommandDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/OlkCommandDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/OlkParamDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OlkParamDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/OlkParamDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/OpenLooKengDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenLooKengDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/OpenLooKengDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ServerDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ServerDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ServerDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ShardingDataSourceDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ShardingDataSourceDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ShardingDataSourceDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ShardingRuleDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ShardingRuleDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ShardingRuleDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ShardingsDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ShardingsDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ShardingsDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ZookeeperDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ZookeeperDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/domain/model/ops/olk/dadReq/ZookeeperDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;24package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/ClusterRoleEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ClusterRoleEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/ClusterRoleEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/DeployTypeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DeployTypeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/DeployTypeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/HostAuthenticationTypeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostAuthenticationTypeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/HostAuthenticationTypeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/HostEnvStatusEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostEnvStatusEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/HostEnvStatusEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/HostFileTypeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostFileTypeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/HostFileTypeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/InstallModeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * InstallModeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/InstallModeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/OpenGaussSupportOSEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenGaussSupportOSEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/OpenGaussSupportOSEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3import lombok.AllArgsConstructor;26import lombok.AllArgsConstructor;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/OpenGaussVersionEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenGaussVersionEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/OpenGaussVersionEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/PackageTypeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * PackageTypeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/PackageTypeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3import lombok.AllArgsConstructor;26import lombok.AllArgsConstructor;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/UpgradeTypeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * UpgradeTypeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/UpgradeTypeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/WdrScopeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WdrScopeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/WdrScopeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/WdrTypeEnum.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WdrTypeEnum.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/WdrTypeEnum.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/WsConnectType.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WsConnectType.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/enums/ops/WsConnectType.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.enums.ops;24package org.opengauss.admin.plugin.enums.ops;
2 25 
3import lombok.AllArgsConstructor;26import lombok.AllArgsConstructor;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/listener/BaseOpsPluginListener.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BaseOpsPluginListener.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/listener/BaseOpsPluginListener.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.listener;24package org.opengauss.admin.plugin.listener;
2 25 
3import com.gitee.starblues.spring.MainApplicationContext;26import com.gitee.starblues.spring.MainApplicationContext;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowOperatorGroupMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorGroupMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowOperatorGroupMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowOperatorMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowOperatorMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowTypeMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowTypeMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingDataFlowTypeMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationCustomDimensionsMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationCustomDimensionsMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationCustomDimensionsMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationGeoFilesMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationGeoFilesMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationGeoFilesMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationParamsMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationParamsMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationParamsMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationReportsMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationReportsMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationReportsMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationSnapshotsMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationSnapshotsMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/modeling/ModelingVisualizationSnapshotsMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.modeling;24package org.opengauss.admin.plugin.mapper.modeling;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsBackupMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsBackupMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsBackupMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsCheckMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsCheckMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsCheckMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsClusterMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsClusterMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsClusterNodeMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterNodeMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsClusterNodeMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsOlkMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsOlkMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsOlkMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsPackageManagerMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsPackageManagerMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsPackageManagerMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsWdrMapper.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsWdrMapper.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/mapper/ops/OpsWdrMapper.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.mapper.ops;24package org.opengauss.admin.plugin.mapper.ops;
2 25 
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;26import com.baomidou.mybatisplus.core.mapper.BaseMapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataBaseService.java+24-1
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataBaseService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataBaseService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import org.opengauss.admin.common.core.domain.model.ops.OpsClusterNodeVO;26import org.opengauss.admin.common.core.domain.model.ops.OpsClusterNodeVO;
@@ -39,4 +62,4 @@ public interface IModelingDataBaseService {
39 62 
40 List<Map<String, Object>> convertList(ResultSet rs);63 List<Map<String, Object>> convertList(ResultSet rs);
41 64 
42-}65+}
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowOperatorGroupService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataFlowOperatorGroupService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowOperatorGroupService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowOperatorService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataFlowOperatorService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowOperatorService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataFlowService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.baomidou.mybatisplus.core.metadata.IPage;26import com.baomidou.mybatisplus.core.metadata.IPage;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowTypeService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataFlowTypeService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingDataFlowTypeService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingVisualizationGeoFilesService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingVisualizationGeoFilesService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/IModelingVisualizationGeoFilesService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataBaseServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataBaseServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataBaseServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.impl;24package org.opengauss.admin.plugin.service.modeling.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowOperatorGroupServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorGroupServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowOperatorGroupServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.impl;24package org.opengauss.admin.plugin.service.modeling.impl;
2 25 
3import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;26import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowOperatorServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowOperatorServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.impl;24package org.opengauss.admin.plugin.service.modeling.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.impl;24package org.opengauss.admin.plugin.service.modeling.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowTypeServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowTypeServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingDataFlowTypeServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.impl;24package org.opengauss.admin.plugin.service.modeling.impl;
2 25 
3import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;26import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingVisualizationGeoFilesServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationGeoFilesServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/impl/ModelingVisualizationGeoFilesServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.impl;24package org.opengauss.admin.plugin.service.modeling.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/IModelingDataFlowOperatorBuilderService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataFlowOperatorBuilderService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/IModelingDataFlowOperatorBuilderService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator;24package org.opengauss.admin.plugin.service.modeling.operator;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/IModelingDataFlowProcessService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingDataFlowProcessService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/IModelingDataFlowProcessService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator;24package org.opengauss.admin.plugin.service.modeling.operator;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/factory/ModelingDataFlowOperatorFactory.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowOperatorFactory.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/factory/ModelingDataFlowOperatorFactory.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.factory;24package org.opengauss.admin.plugin.service.modeling.operator.factory;
2 25 
3import org.opengauss.admin.plugin.service.modeling.operator.IModelingDataFlowOperatorBuilderService;26import org.opengauss.admin.plugin.service.modeling.operator.IModelingDataFlowOperatorBuilderService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/BaseBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BaseBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/BaseBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3 26 
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/ModelingDataFlowProcessServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowProcessServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/ModelingDataFlowProcessServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorConditionBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorConditionBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorConditionBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorDeleteBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorDeleteBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorDeleteBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorDictionaryBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorDictionaryBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorDictionaryBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorGroupBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorGroupBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorGroupBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorInsertBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorInsertBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorInsertBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorJoinBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorJoinBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorJoinBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorLimitBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorLimitBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorLimitBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorMappingBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorMappingBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorMappingBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorPolymerizationBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorPolymerizationBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorPolymerizationBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorQueryBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorQueryBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorQueryBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorSortBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorSortBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorSortBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorUpdateBuilderServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OperatorUpdateBuilderServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/operator/impl/OperatorUpdateBuilderServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.operator.impl;24package org.opengauss.admin.plugin.service.modeling.operator.impl;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationChartGenerateService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingVisualizationChartGenerateService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationChartGenerateService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization;24package org.opengauss.admin.plugin.service.modeling.visualization;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationCustomDimensionsService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingVisualizationCustomDimensionsService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationCustomDimensionsService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization;24package org.opengauss.admin.plugin.service.modeling.visualization;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationParamsService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingVisualizationParamsService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationParamsService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization;24package org.opengauss.admin.plugin.service.modeling.visualization;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationReportsService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingVisualizationReportsService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationReportsService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization;24package org.opengauss.admin.plugin.service.modeling.visualization;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationSnapshotsService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IModelingVisualizationSnapshotsService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/IModelingVisualizationSnapshotsService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization;24package org.opengauss.admin.plugin.service.modeling.visualization;
2 25 
3import com.baomidou.mybatisplus.core.metadata.IPage;26import com.baomidou.mybatisplus.core.metadata.IPage;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/factory/ModelingVisualizationChartFactory.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationChartFactory.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/factory/ModelingVisualizationChartFactory.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.factory;24package org.opengauss.admin.plugin.service.modeling.visualization.factory;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationCustomDimensionsServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationCustomDimensionsServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationCustomDimensionsServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl;24package org.opengauss.admin.plugin.service.modeling.visualization.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationParamsServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationParamsServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationParamsServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl;24package org.opengauss.admin.plugin.service.modeling.visualization.impl;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationReportsServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationReportsServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationReportsServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl;24package org.opengauss.admin.plugin.service.modeling.visualization.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationSnapshotsServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingVisualizationSnapshotsServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/ModelingVisualizationSnapshotsServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl;24package org.opengauss.admin.plugin.service.modeling.visualization.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/BarChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BarChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/BarChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/BaseGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BaseGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/BaseGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/GraphChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * GraphChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/GraphChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/HeatmapChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HeatmapChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/HeatmapChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/LineChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * LineChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/LineChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/MixChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * MixChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/MixChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/PieChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * PieChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/PieChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/ScatterChartGenerateServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ScatterChartGenerateServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/modeling/visualization/impl/generator/ScatterChartGenerateServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;24package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator;
2 25 
3import com.alibaba.fastjson.JSON;26import com.alibaba.fastjson.JSON;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/ClusterOpsProvider.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ClusterOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/ClusterOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;25import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;
3import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity;26import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IHostService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IHostService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IHostService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3/**26/**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsBackupService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsBackupService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsBackupService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.extension.plugins.pagination.Page;26import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsCheckService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsCheckService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsCheckService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsClusterNodeService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsClusterNodeService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsClusterNodeService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsClusterService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsClusterService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsClusterService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.extension.plugins.pagination.Page;26import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsOlkService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsOlkService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsOlkService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.core.metadata.IPage;26import com.baomidou.mybatisplus.core.metadata.IPage;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsPackageManagerService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsPackageManagerService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsPackageManagerService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.extension.service.IService;26import com.baomidou.mybatisplus.extension.service.IService;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsWdrService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * IOpsWdrService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/IOpsWdrService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops;24package org.opengauss.admin.plugin.service.ops;
2 25 
3import com.baomidou.mybatisplus.extension.plugins.pagination.Page;26import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/ClusterOpsProviderManager.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ClusterOpsProviderManager.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/ClusterOpsProviderManager.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum;26import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/HostServiceImpl.java+26-13
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * HostServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/HostServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
@@ -66,10 +89,6 @@ public class HostServiceImpl implements IHostService {
66 String command = "ls " + path + " | wc -l";89 String command = "ls " + path + " | wc -l";
67 try {90 try {
68 JschResult jschResult = jschUtil.executeCommand(command, rootSession);91 JschResult jschResult = jschUtil.executeCommand(command, rootSession);
69- if (jschResult.getExitCode()!=0){
70- log.error("Failed to probe data directory,exitCode:{},res:{}",jschResult.getExitCode(),jschResult.getResult());
71- throw new OpsException("Failed to probe data directory");
72- }
73 92 
74 return StrUtil.equalsIgnoreCase("0",StrUtil.trim(jschResult.getResult())) || jschResult.getResult().contains("No such file or directory");93 return StrUtil.equalsIgnoreCase("0",StrUtil.trim(jschResult.getResult())) || jschResult.getResult().contains("No such file or directory");
75 } catch (Exception e) {94 } catch (Exception e) {
@@ -133,10 +152,7 @@ public class HostServiceImpl implements IHostService {
133 private boolean fileExist(Session rootSession, String file) {152 private boolean fileExist(Session rootSession, String file) {
134 String command = "[ -f '"+ file +"' ]";153 String command = "[ -f '"+ file +"' ]";
135 try {154 try {
136- JschResult jschResult = jschUtil.executeCommand(command, rootSession);155+ jschUtil.executeCommand(command, rootSession);
137- if (jschResult.getExitCode()!=0){
138- return false;
139- }
140 156 
141 return true;157 return true;
142 } catch (Exception e) {158 } catch (Exception e) {
@@ -148,15 +164,12 @@ public class HostServiceImpl implements IHostService {
148 private boolean portUsed(Session rootSession, Integer port) {164 private boolean portUsed(Session rootSession, Integer port) {
149 String command = "lsof -i:"+port;165 String command = "lsof -i:"+port;
150 try {166 try {
151- JschResult jschResult = jschUtil.executeCommand(command, rootSession);167+ jschUtil.executeCommand(command, rootSession);
152- if (jschResult.getExitCode()!=0){
153- return false;
154- }
155 168 
156 return true;169 return true;
157 } catch (Exception e) {170 } catch (Exception e) {
158 log.error("Failed to probe port",e);171 log.error("Failed to probe port",e);
159- throw new OpsException("Failed to probe port");172+ return false;
160 }173 }
161 }174 }
162}175}
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsBackupService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsBackupService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsBackupService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsCheckService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsCheckService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsCheckService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;26import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsClusterNodeServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterNodeServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsClusterNodeServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsClusterServiceImpl.java+74-12
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsClusterServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsClusterServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -21,7 +44,28 @@ import org.opengauss.admin.common.exception.ops.OpsException;
21import org.opengauss.admin.plugin.domain.entity.ops.OpsCheckEntity;44import org.opengauss.admin.plugin.domain.entity.ops.OpsCheckEntity;
22import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;45import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity;
23import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity;46import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity;
24-import org.opengauss.admin.plugin.domain.model.ops.*;47+import org.opengauss.admin.plugin.domain.model.ops.ClusterSummaryVO;
48+import org.opengauss.admin.plugin.domain.model.ops.DownloadBody;
justbk
justbkjustbk2023年4月7日

【问题原因】 违反java语言编程规范要求,不允许按导入 【修改建议】 引入的类按需导入;修改IDE配置不允许转换为导入

likedislike
49+import org.opengauss.admin.plugin.domain.model.ops.HostFile;
50+import org.opengauss.admin.plugin.domain.model.ops.HostInfoHolder;
51+import org.opengauss.admin.plugin.domain.model.ops.ImportClusterBody;
52+import org.opengauss.admin.plugin.domain.model.ops.InstallBody;
53+import org.opengauss.admin.plugin.domain.model.ops.InstallContext;
54+import org.opengauss.admin.plugin.domain.model.ops.JschResult;
55+import org.opengauss.admin.plugin.domain.model.ops.ListDir;
56+import org.opengauss.admin.plugin.domain.model.ops.NodeMonitorVO;
57+import org.opengauss.admin.plugin.domain.model.ops.NodeNetMonitor;
58+import org.opengauss.admin.plugin.domain.model.ops.OpsClusterBody;
59+import org.opengauss.admin.plugin.domain.model.ops.OpsClusterContext;
60+import org.opengauss.admin.plugin.domain.model.ops.OpsClusterNodeVO;
61+import org.opengauss.admin.plugin.domain.model.ops.OpsClusterVO;
62+import org.opengauss.admin.plugin.domain.model.ops.SSHBody;
63+import org.opengauss.admin.plugin.domain.model.ops.SshCommandConstants;
64+import org.opengauss.admin.plugin.domain.model.ops.UnInstallBody;
65+import org.opengauss.admin.plugin.domain.model.ops.UnInstallContext;
66+import org.opengauss.admin.plugin.domain.model.ops.UpgradeBody;
67+import org.opengauss.admin.plugin.domain.model.ops.UpgradeContext;
68+import org.opengauss.admin.plugin.domain.model.ops.WsSession;
25import org.opengauss.admin.plugin.domain.model.ops.cache.SSHChannelManager;69import org.opengauss.admin.plugin.domain.model.ops.cache.SSHChannelManager;
26import org.opengauss.admin.plugin.domain.model.ops.cache.TaskManager;70import org.opengauss.admin.plugin.domain.model.ops.cache.TaskManager;
27import org.opengauss.admin.plugin.domain.model.ops.cache.WsConnectorManager;71import org.opengauss.admin.plugin.domain.model.ops.cache.WsConnectorManager;
@@ -32,7 +76,11 @@ import org.opengauss.admin.plugin.domain.model.ops.env.SoftwareEnv;
32import org.opengauss.admin.plugin.domain.model.ops.node.EnterpriseInstallNodeConfig;76import org.opengauss.admin.plugin.domain.model.ops.node.EnterpriseInstallNodeConfig;
33import org.opengauss.admin.plugin.domain.model.ops.node.LiteInstallNodeConfig;77import org.opengauss.admin.plugin.domain.model.ops.node.LiteInstallNodeConfig;
34import org.opengauss.admin.plugin.domain.model.ops.node.MinimalistInstallNodeConfig;78import org.opengauss.admin.plugin.domain.model.ops.node.MinimalistInstallNodeConfig;
35-import org.opengauss.admin.plugin.enums.ops.*;79+import org.opengauss.admin.plugin.enums.ops.ClusterRoleEnum;
80+import org.opengauss.admin.plugin.enums.ops.DeployTypeEnum;
81+import org.opengauss.admin.plugin.enums.ops.HostEnvStatusEnum;
82+import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum;
83+import org.opengauss.admin.plugin.enums.ops.OpenGaussVersionEnum;
36import org.opengauss.admin.plugin.mapper.ops.OpsClusterMapper;84import org.opengauss.admin.plugin.mapper.ops.OpsClusterMapper;
37import org.opengauss.admin.plugin.service.ops.IOpsCheckService;85import org.opengauss.admin.plugin.service.ops.IOpsCheckService;
38import org.opengauss.admin.plugin.service.ops.IOpsClusterNodeService;86import org.opengauss.admin.plugin.service.ops.IOpsClusterNodeService;
@@ -42,9 +90,18 @@ import org.opengauss.admin.plugin.utils.DBUtil;
42import org.opengauss.admin.plugin.utils.DownloadUtil;90import org.opengauss.admin.plugin.utils.DownloadUtil;
43import org.opengauss.admin.plugin.utils.JschUtil;91import org.opengauss.admin.plugin.utils.JschUtil;
44import org.opengauss.admin.plugin.utils.WsUtil;92import org.opengauss.admin.plugin.utils.WsUtil;
93+import org.opengauss.admin.plugin.vo.ops.AuditLogVO;
94+import org.opengauss.admin.plugin.vo.ops.CheckClusterVO;
95+import org.opengauss.admin.plugin.vo.ops.CheckDbVO;
96+import org.opengauss.admin.plugin.vo.ops.CheckDeviceVO;
97+import org.opengauss.admin.plugin.vo.ops.CheckItemVO;
98+import org.opengauss.admin.plugin.vo.ops.CheckNetworkVO;
99+import org.opengauss.admin.plugin.vo.ops.CheckOSVO;
100+import org.opengauss.admin.plugin.vo.ops.CheckSummaryVO;
101+import org.opengauss.admin.plugin.vo.ops.CheckVO;
102+import org.opengauss.admin.plugin.vo.ops.OpsNodeLogVO;
45import org.opengauss.admin.plugin.vo.ops.SessionVO;103import org.opengauss.admin.plugin.vo.ops.SessionVO;
46import org.opengauss.admin.plugin.vo.ops.SlowSqlVO;104import org.opengauss.admin.plugin.vo.ops.SlowSqlVO;
47-import org.opengauss.admin.plugin.vo.ops.*;
48import org.opengauss.admin.system.plugin.facade.AzFacade;105import org.opengauss.admin.system.plugin.facade.AzFacade;
49import org.opengauss.admin.system.plugin.facade.HostFacade;106import org.opengauss.admin.system.plugin.facade.HostFacade;
50import org.opengauss.admin.system.plugin.facade.HostUserFacade;107import org.opengauss.admin.system.plugin.facade.HostUserFacade;
@@ -60,8 +117,20 @@ import org.springframework.web.context.request.RequestContextHolder;
60import javax.servlet.http.HttpServletResponse;117import javax.servlet.http.HttpServletResponse;
61import java.io.File;118import java.io.File;
62import java.io.IOException;119import java.io.IOException;
63-import java.sql.*;120+import java.sql.Connection;
64-import java.util.*;121+import java.sql.PreparedStatement;
122+import java.sql.ResultSet;
123+import java.sql.SQLException;
124+import java.sql.Statement;
125+import java.util.ArrayList;
126+import java.util.Collections;
127+import java.util.Comparator;
128+import java.util.HashMap;
129+import java.util.HashSet;
130+import java.util.List;
131+import java.util.Map;
132+import java.util.Objects;
133+import java.util.Set;
65import java.util.concurrent.CopyOnWriteArrayList;134import java.util.concurrent.CopyOnWriteArrayList;
66import java.util.concurrent.CountDownLatch;135import java.util.concurrent.CountDownLatch;
67import java.util.concurrent.Future;136import java.util.concurrent.Future;
@@ -1297,13 +1366,6 @@ public class OpsClusterServiceImpl extends ServiceImpl<OpsClusterMapper, OpsClus
1297 if (Objects.nonNull(installUser)) {1366 if (Objects.nonNull(installUser)) {
1298 opsClusterNodeVO.setInstallUserName(installUser.getUsername());1367 opsClusterNodeVO.setInstallUserName(installUser.getUsername());
1299 }1368 }
1300- 
1301- String azId = hostEntity.getAzId();
1302- OpsAzEntity azEntity = azFacade.getById(azId);
1303- if (Objects.nonNull(azEntity)) {
1304- opsClusterNodeVO.setAzName(azEntity.getName());
1305- opsClusterNodeVO.setAzAddress(azEntity.getAddress());
1306- }
1307 }1369 }
1308 1370 
1309 clusterNodeVOS.add(opsClusterNodeVO);1371 clusterNodeVOS.add(opsClusterNodeVO);
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsOlkServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsOlkServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsOlkServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsPackageManagerService.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsPackageManagerService.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsPackageManagerService.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.io.FileUtil;26import cn.hutool.core.io.FileUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsWdrServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsWdrServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/OpsWdrServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/WsServiceImpl.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WsServiceImpl.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/WsServiceImpl.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl;24package org.opengauss.admin.plugin.service.ops.impl;
2 25 
3import com.gitee.starblues.annotation.Extract;26import com.gitee.starblues.annotation.Extract;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/AbstractOpsProvider.java+152-72
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * AbstractOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/AbstractOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
@@ -5,6 +28,8 @@ import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity;
5import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity;28import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity;
6import org.opengauss.admin.common.exception.ops.OpsException;29import org.opengauss.admin.common.exception.ops.OpsException;
7import org.opengauss.admin.plugin.domain.model.ops.*;30import org.opengauss.admin.plugin.domain.model.ops.*;
31+import org.opengauss.admin.plugin.domain.model.ops.node.EnterpriseInstallNodeConfig;
32+import org.opengauss.admin.plugin.enums.ops.HostEnvStatusEnum;
8import org.opengauss.admin.plugin.service.ops.ClusterOpsProvider;33import org.opengauss.admin.plugin.service.ops.ClusterOpsProvider;
9import org.opengauss.admin.plugin.service.ops.impl.ClusterOpsProviderManager;34import org.opengauss.admin.plugin.service.ops.impl.ClusterOpsProviderManager;
10import org.opengauss.admin.plugin.utils.JschUtil;35import org.opengauss.admin.plugin.utils.JschUtil;
@@ -83,6 +108,7 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
83 ensureStrictPermission(jschUtil,rootSession, installUserName, pkgPath, retSession);108 ensureStrictPermission(jschUtil,rootSession, installUserName, pkgPath, retSession);
84 ensureStrictPermission(jschUtil,rootSession, installUserName, installPath, retSession);109 ensureStrictPermission(jschUtil,rootSession, installUserName, installPath, retSession);
85 ensureDataPathPermission(jschUtil,rootSession, installUserName, dataPath, retSession);110 ensureDataPathPermission(jschUtil,rootSession, installUserName, dataPath, retSession);
111+ ensureEnvPathPermission(jschUtil,rootSession,installContext.getEnvPath(),retSession);
86 log.info("Login and install user");112 log.info("Login and install user");
87 }finally {113 }finally {
88 if (Objects.nonNull(rootSession) && rootSession.isConnected()){114 if (Objects.nonNull(rootSession) && rootSession.isConnected()){
@@ -93,7 +119,69 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
93 return loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);119 return loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
94 }120 }
95 121 
122+ protected String wrapperEnvSep(String command, String envPath) {
123+ if (StrUtil.isNotEmpty(envPath)){
124+ command = command + " --sep-env-file=" + envPath;
125+ }
126+ return command;
127+ }
128+ 
129+ protected String wrapperLiteEnvSep(String command, String envPath) {
130+ if (StrUtil.isNotEmpty(envPath)){
131+ command = command + " --env-sep-file " + envPath;
132+ }
133+ return command;
134+ }
135+ 
136+ protected void ensureEnvPathPermission(JschUtil jschUtil, Session rootSession, String envPath, WsSession retSession){
137+ if (StrUtil.isEmpty(envPath)){
138+ return;
139+ }
140+ 
141+ String touchEnvSep = "touch \"" + envPath + "\"";
142+ 
143+ try {
144+ jschUtil.executeCommand(touchEnvSep, rootSession, retSession);
145+ } catch (Exception e) {
146+ log.error("touch envFile fail", e);
justbk
justbkjustbk2023年4月7日

【问题原因】 多次处理而且重复的代码。 【修改建议】 将jschResult执行进行一层封装,避免重复的代码。

likedislike
147+ throw new OpsException("touch envFile fail");
148+ }
149+ 
150+ String permissionEnv = "chmod 755 -R " + envPath;
151+ try {
152+ jschUtil.executeCommand(permissionEnv, rootSession, retSession);
153+ } catch (Exception e) {
154+ log.error("chmod envFile fail", e);
155+ throw new OpsException("chmod envFile fail");
156+ }
157+ }
158+ 
96 protected void installDependency(JschUtil jschUtil, Session rootSession, WsSession retSession){159 protected void installDependency(JschUtil jschUtil, Session rootSession, WsSession retSession){
160+ boolean dependencyCorrect = false;
161+ 
162+ try {
163+ String dependency = jschUtil.executeCommand(SshCommandConstants.DEPENDENCY, rootSession).getResult();
164+ try {
165+ 
166+ int dependencyNum = Integer.parseInt(dependency);
167+ 
168+ int suggestedNum = 8;
169+ if (dependencyNum>= suggestedNum){
170+ dependencyCorrect = true;
171+ }
172+ 
173+ } catch (Exception e) {
174+ log.error("Parse command response error", e);
175+ }
176+ } catch (Exception e) {
177+ log.error("Execute command exception:", e);
178+ }
179+ 
180+ if (dependencyCorrect){
181+ log.info("dependencyCorrect,skip install dependency");
gitee-piratejustbk
gitee-pirategitee-pirate2023年4月7日

【问题原因】 每一个层次都有对应的异常拦截,只有日志提示,但是对问题解决没有帮助。尤其是上层无任何感知。 【修改建议】 真正的异常该忽略就忽略,该抛出就抛出,这里依赖失败对上层也没有任何感知,那这样执行后还是没有任何结果。

这里检查依赖已经安装,跳过执行 yum install 安装依赖 ,无需抛出,打印日志方便排查问题的

likedislike
justbkjustbk2023年4月7日

【问题原因】 每一个层次都有对应的异常拦截,只有日志提示,但是对问题解决没有帮助。尤其是上层无任何感知。 【修改建议】 真正的异常该忽略就忽略,该抛出就抛出,这里依赖失败对上层也没有任何感知,那这样执行后还是没有任何结果。

likedislike
182+ return;
183+ }
184+ 
97 try {185 try {
98 retSession.getSession().getBasicRemote().sendText("START_INSTALL_DEPENDENCY");186 retSession.getSession().getBasicRemote().sendText("START_INSTALL_DEPENDENCY");
99 } catch (IOException e) {187 } catch (IOException e) {
@@ -146,17 +234,8 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
146 234 
147 String limits = SshCommandConstants.LIMITS;235 String limits = SshCommandConstants.LIMITS;
148 try {236 try {
149- JschResult jschResult = null;237+ jschUtil.executeCommand(limits, rootSession, retSession);
150- try {238+ } catch (IOException | InterruptedException e) {
151- jschResult = jschUtil.executeCommand(limits, rootSession, retSession);
152- } catch (InterruptedException e) {
153- throw new OpsException("thread is interrupted");
154- }
155- if (0 != jschResult.getExitCode()) {
156- log.error("set ulimit exception, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
157- throw new OpsException("set ulimit exception");
158- }
159- } catch (IOException e) {
160 log.error("set ulimit exception", e);239 log.error("set ulimit exception", e);
161 throw new OpsException("set ulimit exception");240 throw new OpsException("set ulimit exception");
162 }241 }
@@ -172,17 +251,8 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
172 protected void sem(JschUtil jschUtil,Session rootSession, WsSession retSession) {251 protected void sem(JschUtil jschUtil,Session rootSession, WsSession retSession) {
173 String command = SshCommandConstants.SEM;252 String command = SshCommandConstants.SEM;
174 try {253 try {
175- JschResult jschResult = null;254+ jschUtil.executeCommand(command, rootSession, retSession);
176- try {255+ } catch (IOException | InterruptedException | OpsException e) {
177- jschResult = jschUtil.executeCommand(command, rootSession, retSession);
178- } catch (InterruptedException e) {
179- throw new OpsException("thread is interrupted");
180- }
181- if (0 != jschResult.getExitCode()) {
182- log.error("set kernel.sem exception, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
183- throw new OpsException("set kernel.sem exception");
184- }
185- } catch (IOException e) {
186 log.error("set kernel.sem exception", e);256 log.error("set kernel.sem exception", e);
187 }257 }
188 }258 }
@@ -190,11 +260,7 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
190 protected void decompress(JschUtil jschUtil,Session rootSession, String targetPath, String installPackageFullPath, WsSession retSession, String decompressArgs) {260 protected void decompress(JschUtil jschUtil,Session rootSession, String targetPath, String installPackageFullPath, WsSession retSession, String decompressArgs) {
191 String command = MessageFormat.format(SshCommandConstants.DECOMPRESS, decompressArgs, installPackageFullPath, targetPath);261 String command = MessageFormat.format(SshCommandConstants.DECOMPRESS, decompressArgs, installPackageFullPath, targetPath);
192 try {262 try {
193- JschResult jschResult = jschUtil.executeCommand(command, rootSession, retSession);263+ jschUtil.executeCommand(command, rootSession, retSession);
194- if (0 != jschResult.getExitCode()) {
195- log.error("Failed to decompress installation package, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
196- throw new OpsException("Unzip the installation package failed");
197- }
198 } catch (Exception e) {264 } catch (Exception e) {
199 log.error("Unzip the installation package failed:", e);265 log.error("Unzip the installation package failed:", e);
200 throw new OpsException("Unzip the installation package failed");266 throw new OpsException("Unzip the installation package failed");
@@ -284,17 +350,8 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
284 String chown = MessageFormat.format(SshCommandConstants.CHOWN, installUserName, targetPath);350 String chown = MessageFormat.format(SshCommandConstants.CHOWN, installUserName, targetPath);
285 351 
286 try {352 try {
287- JschResult jschResult = null;353+ jschUtil.executeCommand(chown, rootSession, wsSession);
288- try {354+ } catch (IOException | InterruptedException | OpsException e) {
289- jschResult = jschUtil.executeCommand(chown, rootSession, wsSession);
290- } catch (InterruptedException e) {
291- throw new OpsException("thread is interrupted");
292- }
293- if (0 != jschResult.getExitCode()) {
294- log.error("Failed to grant permission, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
295- throw new OpsException("Failed to grant permission");
296- }
297- } catch (IOException e) {
298 log.error("Failed to grant permission", e);355 log.error("Failed to grant permission", e);
299 throw new OpsException("Failed to grant permission");356 throw new OpsException("Failed to grant permission");
300 }357 }
@@ -306,17 +363,8 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
306 String chown = MessageFormat.format(SshCommandConstants.CHOWN, installUserName, targetPath);363 String chown = MessageFormat.format(SshCommandConstants.CHOWN, installUserName, targetPath);
307 364 
308 try {365 try {
309- JschResult jschResult = null;366+ jschUtil.executeCommand(chown, rootSession, wsSession);
310- try {367+ } catch (IOException | InterruptedException | OpsException e) {
311- jschResult = jschUtil.executeCommand(chown, rootSession, wsSession);
312- } catch (InterruptedException e) {
313- throw new OpsException("thread is interrupted");
314- }
315- if (0 != jschResult.getExitCode()) {
316- log.error("Failed to grant permission, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
317- throw new OpsException("Failed to grant permission");
318- }
319- } catch (IOException e) {
320 log.error("Failed to grant permission", e);368 log.error("Failed to grant permission", e);
321 throw new OpsException("Failed to grant permission");369 throw new OpsException("Failed to grant permission");
322 }370 }
@@ -328,17 +376,8 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
328 String chown = MessageFormat.format(SshCommandConstants.CHOWN, installUserName, targetPath);376 String chown = MessageFormat.format(SshCommandConstants.CHOWN, installUserName, targetPath);
329 377 
330 try {378 try {
331- JschResult jschResult = null;379+ jschUtil.executeCommand(chown, rootSession, wsSession);
332- try {380+ } catch (IOException | InterruptedException | OpsException e) {
333- jschResult = jschUtil.executeCommand(chown, rootSession, wsSession);
334- } catch (InterruptedException e) {
335- throw new OpsException("thread is interrupted");
336- }
337- if (0 != jschResult.getExitCode()) {
338- log.error("Failed to grant permission, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
339- throw new OpsException("Failed to grant permission");
340- }
341- } catch (IOException e) {
342 log.error("Failed to grant permission", e);381 log.error("Failed to grant permission", e);
343 throw new OpsException("Failed to grant permission");382 throw new OpsException("Failed to grant permission");
344 }383 }
@@ -347,17 +386,8 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
347 protected void ensureDirExist(JschUtil jschUtil,Session rootSession, String targetPath, WsSession retSession) {386 protected void ensureDirExist(JschUtil jschUtil,Session rootSession, String targetPath, WsSession retSession) {
348 String command = MessageFormat.format(SshCommandConstants.MK_DIR, targetPath);387 String command = MessageFormat.format(SshCommandConstants.MK_DIR, targetPath);
349 try {388 try {
350- JschResult jschResult = null;389+ jschUtil.executeCommand(command, rootSession, retSession);
351- try {390+ } catch (IOException | InterruptedException | OpsException e) {
352- jschResult = jschUtil.executeCommand(command, rootSession, retSession);
353- } catch (InterruptedException e) {
354- throw new OpsException("thread is interrupted");
355- }
356- if (0 != jschResult.getExitCode()) {
357- log.error("Failed to create directory, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
358- throw new OpsException("Failed to create installation directory");
359- }
360- } catch (IOException e) {
361 log.error("Failed to create installation directory:", e);391 log.error("Failed to create installation directory:", e);
362 throw new OpsException("Failed to create installation directory");392 throw new OpsException("Failed to create installation directory");
363 }393 }
@@ -380,7 +410,6 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
380 throw new OpsException("startup error,gs_om status fail,exit code " + jschResult.getExitCode());410 throw new OpsException("startup error,gs_om status fail,exit code " + jschResult.getExitCode());
381 }411 }
382 412 
383- 
384 String result = jschResult.getResult();413 String result = jschResult.getResult();
385 Map<String,String> nodeIdMapHostname = new HashMap<>();414 Map<String,String> nodeIdMapHostname = new HashMap<>();
386 Map<String,String> hostnameMapNodeId = new HashMap<>();415 Map<String,String> hostnameMapNodeId = new HashMap<>();
@@ -416,6 +445,57 @@ public abstract class AbstractOpsProvider implements ClusterOpsProvider, Initial
416 return omStatusModel;445 return omStatusModel;
417 }446 }
418 447 
448+ protected void createEnterpriseRemoteUser(InstallContext installContext, OpsClusterContext opsClusterContext,JschUtil jschUtil, EncryptionUtils encryptionUtils) {
449+ WsSession retSession = installContext.getRetSession();
450+ opsClusterContext.setRetSession(retSession);
451+ opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
452+ 
453+ EnterpriseInstallConfig enterpriseInstallConfig = installContext.getEnterpriseInstallConfig();
454+ List<EnterpriseInstallNodeConfig> nodeConfigList = enterpriseInstallConfig.getNodeConfigList();
455+ String databasePassword = enterpriseInstallConfig.getDatabasePassword();
456+ Integer port = enterpriseInstallConfig.getPort();
457+ 
458+ for (EnterpriseInstallNodeConfig enterpriseInstallNodeConfig : nodeConfigList) {
459+ String hostId = enterpriseInstallNodeConfig.getHostId();
460+ String installUserId = enterpriseInstallNodeConfig.getInstallUserId();
461+ String dataPath = enterpriseInstallNodeConfig.getDataPath();
462+ 
463+ 
464+ Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
465+ String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
466+ try {
467+ jschUtil.executeCommand(listenerAddress, installContext.getEnvPath(), session, retSession);
468+ } catch (Exception e) {
469+ log.error("Failed to modify listening address", e);
470+ throw new OpsException("Failed to modify listening address");
471+ }
472+ 
473+ String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
474+ try {
475+ jschUtil.executeCommand(hba, installContext.getEnvPath(), session, retSession);
476+ 
477+ } catch (Exception e) {
478+ log.error("Failed to modify host", e);
479+ throw new OpsException("Failed to modify host");
480+ }
481+ 
482+ String clientLoginOpenGauss = MessageFormat.format(SshCommandConstants.LOGIN, String.valueOf(port));
483+ try {
484+ Map<String, String> response = new HashMap<>();
485+ String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
486+ response.put("openGauss=#", createUser);
487+ jschUtil.executeCommand(installContext.getEnvPath(), clientLoginOpenGauss, session, retSession, response);
488+ 
489+ } catch (Exception e) {
490+ log.error("Failed to create user", e);
491+ throw new OpsException("Failed to create user");
492+ }
493+ }
494+ 
495+ opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
496+ restart(opsClusterContext);
497+ }
498+ 
419 @Override499 @Override
420 public void afterPropertiesSet() {500 public void afterPropertiesSet() {
421 ClusterOpsProviderManager.registry(version(),os(), this);501 ClusterOpsProviderManager.registry(version(),os(), this);
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/EnterpriseOpsProvider.java+30-69
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * EnterpriseOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/EnterpriseOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -88,7 +111,7 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
88 opsClusterContext.setOpsClusterNodeEntityList(opsClusterNodeEntities);111 opsClusterContext.setOpsClusterNodeEntityList(opsClusterNodeEntities);
89 112 
90 wsUtil.sendText(installContext.getRetSession(),"CREATE_REMOTE_USER");113 wsUtil.sendText(installContext.getRetSession(),"CREATE_REMOTE_USER");
91- createRemoteUser(installContext, opsClusterContext);114+ createEnterpriseRemoteUser(installContext, opsClusterContext,jschUtil,encryptionUtils);
92 115 
93 wsUtil.sendText(installContext.getRetSession(),"SAVE_INSTALL_CONTEXT");116 wsUtil.sendText(installContext.getRetSession(),"SAVE_INSTALL_CONTEXT");
94 saveContext(installContext);117 saveContext(installContext);
@@ -114,6 +137,7 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
114 String pkgPath = preparePath(installContext.getEnterpriseInstallConfig().getInstallPackagePath());137 String pkgPath = preparePath(installContext.getEnterpriseInstallConfig().getInstallPackagePath());
115 ensureDirExist(jschUtil,rootSession, pkgPath, retSession);138 ensureDirExist(jschUtil,rootSession, pkgPath, retSession);
116 chmodFullPath(jschUtil,rootSession, pkgPath, retSession);139 chmodFullPath(jschUtil,rootSession, pkgPath, retSession);
140+ ensureEnvPathPermission(jschUtil,rootSession,installContext.getEnvPath(),retSession);
117 141 
118 List<HostInfoHolder> hostInfoHolders = installContext.getHostInfoHolders();142 List<HostInfoHolder> hostInfoHolders = installContext.getHostInfoHolders();
119 for (HostInfoHolder hostInfoHolder : hostInfoHolders) {143 for (HostInfoHolder hostInfoHolder : hostInfoHolders) {
@@ -179,7 +203,7 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
179 OpsHostUserEntity installUserInfo = masterHostHolder.getHostUserEntities().stream().filter(hostUser -> hostUser.getHostUserId().equals(masterNodeConfig.getInstallUserId())).findFirst().orElseThrow(() -> new OpsException("No installation user information found"));203 OpsHostUserEntity installUserInfo = masterHostHolder.getHostUserEntities().stream().filter(hostUser -> hostUser.getHostUserId().equals(masterNodeConfig.getInstallUserId())).findFirst().orElseThrow(() -> new OpsException("No installation user information found"));
180 204 
181 wsUtil.sendText(installContext.getRetSession(),"START_EXE_PREINSTALL_COMMAND");205 wsUtil.sendText(installContext.getRetSession(),"START_EXE_PREINSTALL_COMMAND");
182- preInstall(group, pkgPath, masterNodeConfig, xmlConfigFullPath, rootSession, retSession,encryptionUtils.decrypt(masterRootUserInfo.getPassword()),encryptionUtils.decrypt(installUserInfo.getPassword()));206+ preInstall(group, pkgPath, masterNodeConfig, xmlConfigFullPath, rootSession, retSession,encryptionUtils.decrypt(masterRootUserInfo.getPassword()),encryptionUtils.decrypt(installUserInfo.getPassword()), installContext.getEnvPath());
183 wsUtil.sendText(installContext.getRetSession(),"END_EXE_PREINSTALL_COMMAND");207 wsUtil.sendText(installContext.getRetSession(),"END_EXE_PREINSTALL_COMMAND");
184 208 
185 Session ommSession = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, masterHostId, masterNodeConfig.getInstallUserId());209 Session ommSession = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, masterHostId, masterNodeConfig.getInstallUserId());
@@ -193,7 +217,7 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
193 autoResponse.put("Please enter password for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());217 autoResponse.put("Please enter password for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());
194 autoResponse.put("Please repeat for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());218 autoResponse.put("Please repeat for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());
195 219 
196- JschResult jschResult = jschUtil.executeCommand(installCommand, ommSession, retSession, autoResponse);220+ JschResult jschResult = jschUtil.executeCommand(installContext.getEnvPath(), installCommand, ommSession, retSession, autoResponse);
197 if (0 != jschResult.getExitCode()) {221 if (0 != jschResult.getExitCode()) {
198 log.error("install failed, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());222 log.error("install failed, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
199 throw new OpsException("install failed");223 throw new OpsException("install failed");
@@ -473,8 +497,9 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
473 }497 }
474 }498 }
475 499 
476- private void preInstall(String group, String pkgPath, EnterpriseInstallNodeConfig masterNodeConfig, String xmlConfigFullPath, Session rootSession, WsSession retSession, String rootPassword, String installUserPassword) {500+ private void preInstall(String group, String pkgPath, EnterpriseInstallNodeConfig masterNodeConfig, String xmlConfigFullPath, Session rootSession, WsSession retSession, String rootPassword, String installUserPassword, String envPath) {
477 String gsPreInstall = MessageFormat.format(SshCommandConstants.GS_PREINSTALL_INTERACTIVE, pkgPath + "/script/", masterNodeConfig.getInstallUsername(), group, xmlConfigFullPath);501 String gsPreInstall = MessageFormat.format(SshCommandConstants.GS_PREINSTALL_INTERACTIVE, pkgPath + "/script/", masterNodeConfig.getInstallUsername(), group, xmlConfigFullPath);
502+ gsPreInstall = wrapperEnvSep(gsPreInstall, envPath);
478 try {503 try {
479 Map<String,String> autoResponse = new HashMap<>();504 Map<String,String> autoResponse = new HashMap<>();
480 autoResponse.put("(yes/no)?","yes");505 autoResponse.put("(yes/no)?","yes");
@@ -491,70 +516,6 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
491 }516 }
492 }517 }
493 518 
494- private void createRemoteUser(InstallContext installContext, OpsClusterContext opsClusterContext) {
495- WsSession retSession = installContext.getRetSession();
496- opsClusterContext.setRetSession(retSession);
497- opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
498- 
499- EnterpriseInstallConfig enterpriseInstallConfig = installContext.getEnterpriseInstallConfig();
500- List<EnterpriseInstallNodeConfig> nodeConfigList = enterpriseInstallConfig.getNodeConfigList();
501- String databasePassword = enterpriseInstallConfig.getDatabasePassword();
502- Integer port = enterpriseInstallConfig.getPort();
503- 
504- for (EnterpriseInstallNodeConfig enterpriseInstallNodeConfig : nodeConfigList) {
505- String hostId = enterpriseInstallNodeConfig.getHostId();
506- String installUserId = enterpriseInstallNodeConfig.getInstallUserId();
507- String dataPath = enterpriseInstallNodeConfig.getDataPath();
508- 
509- 
510- Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
511- String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
512- try {
513- JschResult jschResult = jschUtil.executeCommand(listenerAddress, session, retSession);
514- if (0 != jschResult.getExitCode()) {
515- log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
516- throw new OpsException("Failed to modify listening address");
517- }
518- 
519- } catch (Exception e) {
520- log.error("Failed to modify listening address", e);
521- throw new OpsException("Failed to modify listening address");
522- }
523- 
524- String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
525- try {
526- JschResult jschResult = jschUtil.executeCommand(hba, session, retSession);
527- if (0 != jschResult.getExitCode()) {
528- log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
529- throw new OpsException("Failed to modify host");
530- }
531- 
532- } catch (Exception e) {
533- log.error("Failed to modify host", e);
534- throw new OpsException("Failed to modify host");
535- }
536- 
537- String clientLoginOpenGauss = MessageFormat.format(SshCommandConstants.LOGIN, String.valueOf(port));
538- try {
539- Map<String, String> response = new HashMap<>();
540- String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
541- response.put("openGauss=#", createUser);
542- JschResult jschResult = jschUtil.executeCommand(clientLoginOpenGauss, session, retSession, response);
543- if (0 != jschResult.getExitCode()) {
544- log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
545- throw new OpsException("Failed to create user");
546- }
547- 
548- } catch (Exception e) {
549- log.error("Failed to create user", e);
550- throw new OpsException("Failed to create user");
551- }
552- }
553- 
554- opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
555- restart(opsClusterContext);
556- }
557- 
558 private void saveContext(InstallContext installContext) {519 private void saveContext(InstallContext installContext) {
559 OpsClusterEntity opsClusterEntity = installContext.toOpsClusterEntity();520 OpsClusterEntity opsClusterEntity = installContext.toOpsClusterEntity();
560 List<OpsClusterNodeEntity> opsClusterNodeEntities = installContext.getEnterpriseInstallConfig().toOpsClusterNodeEntityList();521 List<OpsClusterNodeEntity> opsClusterNodeEntities = installContext.getEnterpriseInstallConfig().toOpsClusterNodeEntityList();
@@ -855,7 +816,7 @@ public class EnterpriseOpsProvider extends AbstractOpsProvider {
855 Map<String,String> authResponse = new HashMap<>();816 Map<String,String> authResponse = new HashMap<>();
856 authResponse.put("(yes/no)?","yes");817 authResponse.put("(yes/no)?","yes");
857 authResponse.put("Password:",encryptionUtils.decrypt(rootUserEntity.getPassword()));818 authResponse.put("Password:",encryptionUtils.decrypt(rootUserEntity.getPassword()));
858- final JschResult jschResult = jschUtil.executeCommand(command, rootSession, retSession, authResponse);819+ final JschResult jschResult = jschUtil.executeCommand(envPath, command, rootSession, retSession, authResponse);
859 if (0!=jschResult.getExitCode()){820 if (0!=jschResult.getExitCode()){
860 log.error("clean env fail,exitCode:{},exitMsg:{}",jschResult.getExitCode(),jschResult.getExitCode());821 log.error("clean env fail,exitCode:{},exitMsg:{}",jschResult.getExitCode(),jschResult.getExitCode());
861 throw new OpsException("clean env fail");822 throw new OpsException("clean env fail");
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/LiteOpsProvider.java+30-5
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * LiteOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/LiteOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -104,7 +127,7 @@ public class LiteOpsProvider extends AbstractOpsProvider {
104 Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);127 Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
105 String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);128 String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
106 try {129 try {
107- JschResult jschResult = jschUtil.executeCommand(listenerAddress, session, retSession);130+ JschResult jschResult = jschUtil.executeCommand(listenerAddress, installContext.getEnvPath(), session, retSession);
108 if (0 != jschResult.getExitCode()) {131 if (0 != jschResult.getExitCode()) {
109 log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());132 log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
110 throw new OpsException("Failed to modify listening address");133 throw new OpsException("Failed to modify listening address");
@@ -117,7 +140,7 @@ public class LiteOpsProvider extends AbstractOpsProvider {
117 140 
118 String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);141 String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
119 try {142 try {
120- JschResult jschResult = jschUtil.executeCommand(hba, session, retSession);143+ JschResult jschResult = jschUtil.executeCommand(hba, installContext.getEnvPath(), session, retSession);
121 if (0 != jschResult.getExitCode()) {144 if (0 != jschResult.getExitCode()) {
122 log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());145 log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
123 throw new OpsException("Failed to modify host");146 throw new OpsException("Failed to modify host");
@@ -133,7 +156,7 @@ public class LiteOpsProvider extends AbstractOpsProvider {
133 Map<String, String> response = new HashMap<>();156 Map<String, String> response = new HashMap<>();
134 String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);157 String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
135 response.put("openGauss=#", createUser);158 response.put("openGauss=#", createUser);
136- JschResult jschResult = jschUtil.executeCommand(clientLoginOpenGauss, session, retSession, response);159+ JschResult jschResult = jschUtil.executeCommand(installContext.getEnvPath(), clientLoginOpenGauss, session, retSession, response);
137 if (0 != jschResult.getExitCode()) {160 if (0 != jschResult.getExitCode()) {
138 log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());161 log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
139 throw new OpsException("Failed to create user");162 throw new OpsException("Failed to create user");
@@ -196,6 +219,8 @@ public class LiteOpsProvider extends AbstractOpsProvider {
196 // install219 // install
197 String command = MessageFormat.format(SshCommandConstants.LITE_SINGLE_INSTALL, databasePassword, pkgPath, dataPath, installPath,String.valueOf(port));220 String command = MessageFormat.format(SshCommandConstants.LITE_SINGLE_INSTALL, databasePassword, pkgPath, dataPath, installPath,String.valueOf(port));
198 221 
222+ command = wrapperLiteEnvSep(command,installContext.getEnvPath());
223+ 
199 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");224 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
200 try {225 try {
201 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, retSession);226 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, retSession);
@@ -217,7 +242,6 @@ public class LiteOpsProvider extends AbstractOpsProvider {
217 }242 }
218 }243 }
219 244 
220- 
221 private OpsHostUserEntity createInstallUser(InstallContext installContext, String hostId) {245 private OpsHostUserEntity createInstallUser(InstallContext installContext, String hostId) {
222 OpsHostEntity hostEntity = hostFacade.getById(hostId);246 OpsHostEntity hostEntity = hostFacade.getById(hostId);
223 OpsHostUserEntity hostUserEntity = hostUserFacade.getOmmUserByHostId(hostId);247 OpsHostUserEntity hostUserEntity = hostUserFacade.getOmmUserByHostId(hostId);
@@ -369,6 +393,7 @@ public class LiteOpsProvider extends AbstractOpsProvider {
369 log.info("perform installation");393 log.info("perform installation");
370 // install394 // install
371 String command = MessageFormat.format(SshCommandConstants.LITE_SLAVE_INSTALL, databasePassword, pkgPath, dataPath, installPath, slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));395 String command = MessageFormat.format(SshCommandConstants.LITE_SLAVE_INSTALL, databasePassword, pkgPath, dataPath, installPath, slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));
396+ command = wrapperEnvSep(command,installContext.getEnvPath());
372 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");397 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
373 try {398 try {
374 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());399 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());
@@ -435,7 +460,7 @@ public class LiteOpsProvider extends AbstractOpsProvider {
435 log.info("perform installation");460 log.info("perform installation");
436 // install461 // install
437 String command = MessageFormat.format(SshCommandConstants.LITE_MASTER_INSTALL, databasePassword, pkgPath, dataPath, installPath, masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));462 String command = MessageFormat.format(SshCommandConstants.LITE_MASTER_INSTALL, databasePassword, pkgPath, dataPath, installPath, masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));
438- 463+ command = wrapperEnvSep(command, installContext.getEnvPath());
439 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");464 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
440 try {465 try {
441 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());466 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/MinimaListOpsProvider.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * MinimaListOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/MinimaListOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerArch64EnterpriseOpsProvider.java+29-69
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenEulerArch64EnterpriseOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerArch64EnterpriseOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -94,7 +117,7 @@ public class OpenEulerArch64EnterpriseOpsProvider extends AbstractOpsProvider {
94 opsClusterContext.setOpsClusterNodeEntityList(opsClusterNodeEntities);117 opsClusterContext.setOpsClusterNodeEntityList(opsClusterNodeEntities);
95 118 
96 wsUtil.sendText(installContext.getRetSession(),"CREATE_REMOTE_USER");119 wsUtil.sendText(installContext.getRetSession(),"CREATE_REMOTE_USER");
97- createRemoteUser(installContext, opsClusterContext);120+ createEnterpriseRemoteUser(installContext, opsClusterContext, jschUtil, encryptionUtils);
98 121 
99 wsUtil.sendText(installContext.getRetSession(),"SAVE_INSTALL_CONTEXT");122 wsUtil.sendText(installContext.getRetSession(),"SAVE_INSTALL_CONTEXT");
100 saveContext(installContext);123 saveContext(installContext);
@@ -120,7 +143,7 @@ public class OpenEulerArch64EnterpriseOpsProvider extends AbstractOpsProvider {
120 String pkgPath = preparePath(installContext.getEnterpriseInstallConfig().getInstallPackagePath());143 String pkgPath = preparePath(installContext.getEnterpriseInstallConfig().getInstallPackagePath());
121 ensureDirExist(jschUtil,rootSession, pkgPath, retSession);144 ensureDirExist(jschUtil,rootSession, pkgPath, retSession);
122 chmodFullPath(jschUtil,rootSession,"/opt/software",retSession);145 chmodFullPath(jschUtil,rootSession,"/opt/software",retSession);
123- //chmodFullPath(jschUtil,rootSession, pkgPath, retSession);146+ ensureEnvPathPermission(jschUtil,rootSession,installContext.getEnvPath(),retSession);
124 147 
125 List<HostInfoHolder> hostInfoHolders = installContext.getHostInfoHolders();148 List<HostInfoHolder> hostInfoHolders = installContext.getHostInfoHolders();
126 for (HostInfoHolder hostInfoHolder : hostInfoHolders) {149 for (HostInfoHolder hostInfoHolder : hostInfoHolders) {
@@ -186,7 +209,7 @@ public class OpenEulerArch64EnterpriseOpsProvider extends AbstractOpsProvider {
186 OpsHostUserEntity installUserInfo = masterHostHolder.getHostUserEntities().stream().filter(hostUser -> hostUser.getHostUserId().equals(masterNodeConfig.getInstallUserId())).findFirst().orElseThrow(() -> new OpsException("No installation user information found"));209 OpsHostUserEntity installUserInfo = masterHostHolder.getHostUserEntities().stream().filter(hostUser -> hostUser.getHostUserId().equals(masterNodeConfig.getInstallUserId())).findFirst().orElseThrow(() -> new OpsException("No installation user information found"));
187 210 
188 wsUtil.sendText(installContext.getRetSession(),"START_EXE_PREINSTALL_COMMAND");211 wsUtil.sendText(installContext.getRetSession(),"START_EXE_PREINSTALL_COMMAND");
189- preInstall(group, pkgPath, masterNodeConfig, xmlConfigFullPath, rootSession, retSession,encryptionUtils.decrypt(masterRootUserInfo.getPassword()),encryptionUtils.decrypt(installUserInfo.getPassword()));212+ preInstall(group, pkgPath, masterNodeConfig, xmlConfigFullPath, rootSession, retSession,encryptionUtils.decrypt(masterRootUserInfo.getPassword()),encryptionUtils.decrypt(installUserInfo.getPassword()), installContext.getEnvPath());
190 wsUtil.sendText(installContext.getRetSession(),"END_EXE_PREINSTALL_COMMAND");213 wsUtil.sendText(installContext.getRetSession(),"END_EXE_PREINSTALL_COMMAND");
191 214 
192 Session ommSession = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, masterHostId, masterNodeConfig.getInstallUserId());215 Session ommSession = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, masterHostId, masterNodeConfig.getInstallUserId());
@@ -200,7 +223,7 @@ public class OpenEulerArch64EnterpriseOpsProvider extends AbstractOpsProvider {
200 autoResponse.put("Please enter password for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());223 autoResponse.put("Please enter password for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());
201 autoResponse.put("Please repeat for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());224 autoResponse.put("Please repeat for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());
202 225 
203- JschResult jschResult = jschUtil.executeCommand(installCommand, ommSession, retSession, autoResponse);226+ JschResult jschResult = jschUtil.executeCommand(installContext.getEnvPath(), installCommand, ommSession, retSession, autoResponse);
204 if (0 != jschResult.getExitCode()) {227 if (0 != jschResult.getExitCode()) {
205 log.error("install failed, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());228 log.error("install failed, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
206 throw new OpsException("install failed");229 throw new OpsException("install failed");
@@ -481,8 +504,9 @@ public class OpenEulerArch64EnterpriseOpsProvider extends AbstractOpsProvider {
481 }504 }
482 }505 }
483 506 
484- private void preInstall(String group, String pkgPath, EnterpriseInstallNodeConfig masterNodeConfig, String xmlConfigFullPath, Session rootSession, WsSession retSession, String rootPassword, String installUserPassword) {507+ private void preInstall(String group, String pkgPath, EnterpriseInstallNodeConfig masterNodeConfig, String xmlConfigFullPath, Session rootSession, WsSession retSession, String rootPassword, String installUserPassword,String envPath) {
485 String gsPreInstall = MessageFormat.format(SshCommandConstants.GS_PREINSTALL_INTERACTIVE, pkgPath + "/script/", masterNodeConfig.getInstallUsername(), group, xmlConfigFullPath);508 String gsPreInstall = MessageFormat.format(SshCommandConstants.GS_PREINSTALL_INTERACTIVE, pkgPath + "/script/", masterNodeConfig.getInstallUsername(), group, xmlConfigFullPath);
509+ gsPreInstall = wrapperEnvSep(gsPreInstall, envPath);
486 try {510 try {
justbk
justbkjustbk2023年4月7日

【问题原因】 完全重复的代码。 【修改建议】 此处可以改为静态函数被多个位置使用。

likedislike
487 Map<String,String> autoResponse = new HashMap<>();511 Map<String,String> autoResponse = new HashMap<>();
488 autoResponse.put("(yes/no)?","yes");512 autoResponse.put("(yes/no)?","yes");
@@ -499,70 +523,6 @@ public class OpenEulerArch64EnterpriseOpsProvider extends AbstractOpsProvider {
499 }523 }
500 }524 }
501 525 
502- private void createRemoteUser(InstallContext installContext, OpsClusterContext opsClusterContext) {
503- WsSession retSession = installContext.getRetSession();
504- opsClusterContext.setRetSession(retSession);
505- opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
506- 
507- EnterpriseInstallConfig enterpriseInstallConfig = installContext.getEnterpriseInstallConfig();
508- List<EnterpriseInstallNodeConfig> nodeConfigList = enterpriseInstallConfig.getNodeConfigList();
509- String databasePassword = enterpriseInstallConfig.getDatabasePassword();
510- Integer port = enterpriseInstallConfig.getPort();
511- 
512- for (EnterpriseInstallNodeConfig enterpriseInstallNodeConfig : nodeConfigList) {
513- String hostId = enterpriseInstallNodeConfig.getHostId();
514- String installUserId = enterpriseInstallNodeConfig.getInstallUserId();
515- String dataPath = enterpriseInstallNodeConfig.getDataPath();
516- 
517- 
518- Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
519- String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
520- try {
521- JschResult jschResult = jschUtil.executeCommand(listenerAddress, session, retSession);
522- if (0 != jschResult.getExitCode()) {
523- log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
524- throw new OpsException("Failed to modify listening address");
525- }
526- 
527- } catch (Exception e) {
528- log.error("Failed to modify listening address", e);
529- throw new OpsException("Failed to modify listening address");
530- }
531- 
532- String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
533- try {
534- JschResult jschResult = jschUtil.executeCommand(hba, session, retSession);
535- if (0 != jschResult.getExitCode()) {
536- log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
537- throw new OpsException("Failed to modify host");
538- }
539- 
540- } catch (Exception e) {
541- log.error("Failed to modify host", e);
542- throw new OpsException("Failed to modify host");
543- }
544- 
545- String clientLoginOpenGauss = MessageFormat.format(SshCommandConstants.LOGIN, String.valueOf(port));
546- try {
547- Map<String, String> response = new HashMap<>();
548- String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
549- response.put("openGauss=#", createUser);
550- JschResult jschResult = jschUtil.executeCommand(clientLoginOpenGauss, session, retSession, response);
551- if (0 != jschResult.getExitCode()) {
552- log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
553- throw new OpsException("Failed to create user");
554- }
555- 
556- } catch (Exception e) {
557- log.error("Failed to create user", e);
558- throw new OpsException("Failed to create user");
559- }
560- }
561- 
562- opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
563- restart(opsClusterContext);
564- }
565- 
566 private void saveContext(InstallContext installContext) {526 private void saveContext(InstallContext installContext) {
567 OpsClusterEntity opsClusterEntity = installContext.toOpsClusterEntity();527 OpsClusterEntity opsClusterEntity = installContext.toOpsClusterEntity();
568 List<OpsClusterNodeEntity> opsClusterNodeEntities = installContext.getEnterpriseInstallConfig().toOpsClusterNodeEntityList();528 List<OpsClusterNodeEntity> opsClusterNodeEntities = installContext.getEnterpriseInstallConfig().toOpsClusterNodeEntityList();
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerArch64LiteOpsProvider.java+29-7
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenEulerArch64LiteOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerArch64LiteOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -110,7 +133,7 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
110 Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);133 Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
111 String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);134 String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
112 try {135 try {
113- JschResult jschResult = jschUtil.executeCommand(listenerAddress, session, retSession);136+ JschResult jschResult = jschUtil.executeCommand(listenerAddress, installContext.getEnvPath(), session, retSession);
114 if (0 != jschResult.getExitCode()) {137 if (0 != jschResult.getExitCode()) {
115 log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());138 log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
116 throw new OpsException("Failed to modify listening address");139 throw new OpsException("Failed to modify listening address");
@@ -123,7 +146,7 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
123 146 
124 String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);147 String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
125 try {148 try {
126- JschResult jschResult = jschUtil.executeCommand(hba, session, retSession);149+ JschResult jschResult = jschUtil.executeCommand(hba, installContext.getEnvPath(), session, retSession);
127 if (0 != jschResult.getExitCode()) {150 if (0 != jschResult.getExitCode()) {
128 log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());151 log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
129 throw new OpsException("Failed to modify host");152 throw new OpsException("Failed to modify host");
@@ -139,7 +162,7 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
139 Map<String, String> response = new HashMap<>();162 Map<String, String> response = new HashMap<>();
140 String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);163 String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
141 response.put("openGauss=#", createUser);164 response.put("openGauss=#", createUser);
142- JschResult jschResult = jschUtil.executeCommand(clientLoginOpenGauss, session, retSession, response);165+ JschResult jschResult = jschUtil.executeCommand(installContext.getEnvPath(), clientLoginOpenGauss, session, retSession, response);
143 if (0 != jschResult.getExitCode()) {166 if (0 != jschResult.getExitCode()) {
144 log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());167 log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
145 throw new OpsException("Failed to create user");168 throw new OpsException("Failed to create user");
@@ -200,7 +223,7 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
200 log.info("perform installation");223 log.info("perform installation");
201 // install224 // install
202 String command = MessageFormat.format(SshCommandConstants.LITE_SINGLE_INSTALL, databasePassword, pkgPath, dataPath, installPath,String.valueOf(port));225 String command = MessageFormat.format(SshCommandConstants.LITE_SINGLE_INSTALL, databasePassword, pkgPath, dataPath, installPath,String.valueOf(port));
203- 226+ command = wrapperLiteEnvSep(command,installContext.getEnvPath());
justbk
justbkjustbk2023年4月7日

【问题原因】 完全重复的代码。 【修改建议】 此处可以改为静态函数被多个位置使用。

likedislike
204 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");227 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
205 try {228 try {
206 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, retSession);229 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, retSession);
@@ -222,8 +245,6 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
222 }245 }
223 246 
224 }247 }
225- 
226- 
227 private OpsHostUserEntity createInstallUser(InstallContext installContext, String hostId) {248 private OpsHostUserEntity createInstallUser(InstallContext installContext, String hostId) {
228 OpsHostEntity hostEntity = hostFacade.getById(hostId);249 OpsHostEntity hostEntity = hostFacade.getById(hostId);
229 OpsHostUserEntity hostUserEntity = hostUserFacade.getOmmUserByHostId(hostId);250 OpsHostUserEntity hostUserEntity = hostUserFacade.getOmmUserByHostId(hostId);
@@ -374,6 +395,7 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
374 log.info("perform installation");395 log.info("perform installation");
375 // install396 // install
376 String command = MessageFormat.format(SshCommandConstants.LITE_SLAVE_INSTALL, databasePassword, pkgPath, dataPath, installPath, slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));397 String command = MessageFormat.format(SshCommandConstants.LITE_SLAVE_INSTALL, databasePassword, pkgPath, dataPath, installPath, slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));
398+ command = wrapperEnvSep(command, installContext.getEnvPath());
377 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");399 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
378 try {400 try {
379 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());401 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());
@@ -441,7 +463,7 @@ public class OpenEulerArch64LiteOpsProvider extends AbstractOpsProvider {
441 log.info("perform installation");463 log.info("perform installation");
442 // install464 // install
443 String command = MessageFormat.format(SshCommandConstants.LITE_MASTER_INSTALL, databasePassword, pkgPath, dataPath, installPath, masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));465 String command = MessageFormat.format(SshCommandConstants.LITE_MASTER_INSTALL, databasePassword, pkgPath, dataPath, installPath, masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));
444- 466+ command = wrapperEnvSep(command,installContext.getEnvPath());
445 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");467 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
446 try {468 try {
447 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());469 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerArch64MinimaListOpsProvider.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenEulerArch64MinimaListOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerArch64MinimaListOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerX86EnterpriseOpsProvider.java+29-69
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenEulerX86EnterpriseOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerX86EnterpriseOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -94,7 +117,7 @@ public class OpenEulerX86EnterpriseOpsProvider extends AbstractOpsProvider {
94 opsClusterContext.setOpsClusterNodeEntityList(opsClusterNodeEntities);117 opsClusterContext.setOpsClusterNodeEntityList(opsClusterNodeEntities);
95 118 
96 wsUtil.sendText(installContext.getRetSession(),"CREATE_REMOTE_USER");119 wsUtil.sendText(installContext.getRetSession(),"CREATE_REMOTE_USER");
97- createRemoteUser(installContext, opsClusterContext);120+ createEnterpriseRemoteUser(installContext, opsClusterContext, jschUtil, encryptionUtils);
98 121 
99 wsUtil.sendText(installContext.getRetSession(),"SAVE_INSTALL_CONTEXT");122 wsUtil.sendText(installContext.getRetSession(),"SAVE_INSTALL_CONTEXT");
100 saveContext(installContext);123 saveContext(installContext);
@@ -120,7 +143,7 @@ public class OpenEulerX86EnterpriseOpsProvider extends AbstractOpsProvider {
120 String pkgPath = preparePath(installContext.getEnterpriseInstallConfig().getInstallPackagePath());143 String pkgPath = preparePath(installContext.getEnterpriseInstallConfig().getInstallPackagePath());
121 ensureDirExist(jschUtil,rootSession, pkgPath, retSession);144 ensureDirExist(jschUtil,rootSession, pkgPath, retSession);
122 chmodFullPath(jschUtil,rootSession, "/opt/software", retSession);145 chmodFullPath(jschUtil,rootSession, "/opt/software", retSession);
123- //chmodFullPath(jschUtil,rootSession, pkgPath, retSession);146+ ensureEnvPathPermission(jschUtil,rootSession,installContext.getEnvPath(),retSession);
124 147 
125 List<HostInfoHolder> hostInfoHolders = installContext.getHostInfoHolders();148 List<HostInfoHolder> hostInfoHolders = installContext.getHostInfoHolders();
126 for (HostInfoHolder hostInfoHolder : hostInfoHolders) {149 for (HostInfoHolder hostInfoHolder : hostInfoHolders) {
@@ -186,7 +209,7 @@ public class OpenEulerX86EnterpriseOpsProvider extends AbstractOpsProvider {
186 OpsHostUserEntity installUserInfo = masterHostHolder.getHostUserEntities().stream().filter(hostUser -> hostUser.getHostUserId().equals(masterNodeConfig.getInstallUserId())).findFirst().orElseThrow(() -> new OpsException("No installation user information found"));209 OpsHostUserEntity installUserInfo = masterHostHolder.getHostUserEntities().stream().filter(hostUser -> hostUser.getHostUserId().equals(masterNodeConfig.getInstallUserId())).findFirst().orElseThrow(() -> new OpsException("No installation user information found"));
187 210 
188 wsUtil.sendText(installContext.getRetSession(),"START_EXE_PREINSTALL_COMMAND");211 wsUtil.sendText(installContext.getRetSession(),"START_EXE_PREINSTALL_COMMAND");
189- preInstall(group, pkgPath, masterNodeConfig, xmlConfigFullPath, rootSession, retSession,encryptionUtils.decrypt(masterRootUserInfo.getPassword()),encryptionUtils.decrypt(installUserInfo.getPassword()));212+ preInstall(group, pkgPath, masterNodeConfig, xmlConfigFullPath, rootSession, retSession,encryptionUtils.decrypt(masterRootUserInfo.getPassword()),encryptionUtils.decrypt(installUserInfo.getPassword()),installContext.getEnvPath());
190 wsUtil.sendText(installContext.getRetSession(),"END_EXE_PREINSTALL_COMMAND");213 wsUtil.sendText(installContext.getRetSession(),"END_EXE_PREINSTALL_COMMAND");
191 214 
192 Session ommSession = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, masterHostId, masterNodeConfig.getInstallUserId());215 Session ommSession = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, masterHostId, masterNodeConfig.getInstallUserId());
@@ -200,7 +223,7 @@ public class OpenEulerX86EnterpriseOpsProvider extends AbstractOpsProvider {
200 autoResponse.put("Please enter password for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());223 autoResponse.put("Please enter password for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());
201 autoResponse.put("Please repeat for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());224 autoResponse.put("Please repeat for database:", installContext.getEnterpriseInstallConfig().getDatabasePassword());
202 225 
203- JschResult jschResult = jschUtil.executeCommand(installCommand, ommSession, retSession, autoResponse);226+ JschResult jschResult = jschUtil.executeCommand(installContext.getEnvPath(), installCommand, ommSession, retSession, autoResponse);
204 if (0 != jschResult.getExitCode()) {227 if (0 != jschResult.getExitCode()) {
205 log.error("install failed, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());228 log.error("install failed, exit code: {}, error message: {}", jschResult.getExitCode(), jschResult.getResult());
206 throw new OpsException("install failed");229 throw new OpsException("install failed");
@@ -480,8 +503,9 @@ public class OpenEulerX86EnterpriseOpsProvider extends AbstractOpsProvider {
480 }503 }
481 }504 }
482 505 
483- private void preInstall(String group, String pkgPath, EnterpriseInstallNodeConfig masterNodeConfig, String xmlConfigFullPath, Session rootSession, WsSession retSession, String rootPassword, String installUserPassword) {506+ private void preInstall(String group, String pkgPath, EnterpriseInstallNodeConfig masterNodeConfig, String xmlConfigFullPath, Session rootSession, WsSession retSession, String rootPassword, String installUserPassword,String envPath) {
484 String gsPreInstall = MessageFormat.format(SshCommandConstants.GS_PREINSTALL_INTERACTIVE, pkgPath + "/script/", masterNodeConfig.getInstallUsername(), group, xmlConfigFullPath);507 String gsPreInstall = MessageFormat.format(SshCommandConstants.GS_PREINSTALL_INTERACTIVE, pkgPath + "/script/", masterNodeConfig.getInstallUsername(), group, xmlConfigFullPath);
508+ gsPreInstall = wrapperEnvSep(gsPreInstall, envPath);
485 try {509 try {
justbk
justbkjustbk2023年4月7日

【问题原因】 完全重复的代码。 【修改建议】 此处可以改为静态函数被多个位置使用。

likedislike
486 Map<String,String> autoResponse = new HashMap<>();510 Map<String,String> autoResponse = new HashMap<>();
487 autoResponse.put("(yes/no)?","yes");511 autoResponse.put("(yes/no)?","yes");
@@ -498,70 +522,6 @@ public class OpenEulerX86EnterpriseOpsProvider extends AbstractOpsProvider {
498 }522 }
499 }523 }
500 524 
501- private void createRemoteUser(InstallContext installContext, OpsClusterContext opsClusterContext) {
502- WsSession retSession = installContext.getRetSession();
503- opsClusterContext.setRetSession(retSession);
504- opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
505- 
506- EnterpriseInstallConfig enterpriseInstallConfig = installContext.getEnterpriseInstallConfig();
507- List<EnterpriseInstallNodeConfig> nodeConfigList = enterpriseInstallConfig.getNodeConfigList();
508- String databasePassword = enterpriseInstallConfig.getDatabasePassword();
509- Integer port = enterpriseInstallConfig.getPort();
510- 
511- for (EnterpriseInstallNodeConfig enterpriseInstallNodeConfig : nodeConfigList) {
512- String hostId = enterpriseInstallNodeConfig.getHostId();
513- String installUserId = enterpriseInstallNodeConfig.getInstallUserId();
514- String dataPath = enterpriseInstallNodeConfig.getDataPath();
515- 
516- 
517- Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
518- String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
519- try {
520- JschResult jschResult = jschUtil.executeCommand(listenerAddress, session, retSession);
521- if (0 != jschResult.getExitCode()) {
522- log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
523- throw new OpsException("Failed to modify listening address");
524- }
525- 
526- } catch (Exception e) {
527- log.error("Failed to modify listening address", e);
528- throw new OpsException("Failed to modify listening address");
529- }
530- 
531- String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
532- try {
533- JschResult jschResult = jschUtil.executeCommand(hba, session, retSession);
534- if (0 != jschResult.getExitCode()) {
535- log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
536- throw new OpsException("Failed to modify host");
537- }
538- 
539- } catch (Exception e) {
540- log.error("Failed to modify host", e);
541- throw new OpsException("Failed to modify host");
542- }
543- 
544- String clientLoginOpenGauss = MessageFormat.format(SshCommandConstants.LOGIN, String.valueOf(port));
545- try {
546- Map<String, String> response = new HashMap<>();
547- String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
548- response.put("openGauss=#", createUser);
549- JschResult jschResult = jschUtil.executeCommand(clientLoginOpenGauss, session, retSession, response);
550- if (0 != jschResult.getExitCode()) {
551- log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
552- throw new OpsException("Failed to create user");
553- }
554- 
555- } catch (Exception e) {
556- log.error("Failed to create user", e);
557- throw new OpsException("Failed to create user");
558- }
559- }
560- 
561- opsClusterContext.setHostInfoHolders(installContext.getHostInfoHolders());
562- restart(opsClusterContext);
563- }
564- 
565 private void saveContext(InstallContext installContext) {525 private void saveContext(InstallContext installContext) {
566 OpsClusterEntity opsClusterEntity = installContext.toOpsClusterEntity();526 OpsClusterEntity opsClusterEntity = installContext.toOpsClusterEntity();
567 List<OpsClusterNodeEntity> opsClusterNodeEntities = installContext.getEnterpriseInstallConfig().toOpsClusterNodeEntityList();527 List<OpsClusterNodeEntity> opsClusterNodeEntities = installContext.getEnterpriseInstallConfig().toOpsClusterNodeEntityList();
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerX86LiteOpsProvider.java+29-6
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenEulerX86LiteOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerX86LiteOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -110,7 +133,7 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
110 Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);133 Session session = loginWithUser(jschUtil,encryptionUtils,installContext.getHostInfoHolders(), false, hostId, installUserId);
111 String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);134 String listenerAddress = MessageFormat.format(SshCommandConstants.LISTENER, dataPath);
112 try {135 try {
113- JschResult jschResult = jschUtil.executeCommand(listenerAddress, session, retSession);136+ JschResult jschResult = jschUtil.executeCommand(listenerAddress, installContext.getEnvPath(), session, retSession);
114 if (0 != jschResult.getExitCode()) {137 if (0 != jschResult.getExitCode()) {
115 log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());138 log.error("Failed to modify listening address, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
116 throw new OpsException("Failed to modify listening address");139 throw new OpsException("Failed to modify listening address");
@@ -123,7 +146,7 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
123 146 
124 String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);147 String hba = MessageFormat.format(SshCommandConstants.HBA, dataPath);
125 try {148 try {
126- JschResult jschResult = jschUtil.executeCommand(hba, session, retSession);149+ JschResult jschResult = jschUtil.executeCommand(hba, installContext.getEnvPath(), session, retSession);
127 if (0 != jschResult.getExitCode()) {150 if (0 != jschResult.getExitCode()) {
128 log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());151 log.error("Failed to modify host, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
129 throw new OpsException("Failed to modify host");152 throw new OpsException("Failed to modify host");
@@ -139,7 +162,7 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
139 Map<String, String> response = new HashMap<>();162 Map<String, String> response = new HashMap<>();
140 String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);163 String createUser = MessageFormat.format("CREATE USER gaussdb WITH MONADMIN PASSWORD \"{0}\";\\q", databasePassword);
141 response.put("openGauss=#", createUser);164 response.put("openGauss=#", createUser);
142- JschResult jschResult = jschUtil.executeCommand(clientLoginOpenGauss, session, retSession, response);165+ JschResult jschResult = jschUtil.executeCommand(installContext.getEnvPath(), clientLoginOpenGauss, session, retSession, response);
143 if (0 != jschResult.getExitCode()) {166 if (0 != jschResult.getExitCode()) {
144 log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());167 log.error("Failed to create user, exit code: {}, log: {}", jschResult.getExitCode(), jschResult.getResult());
145 throw new OpsException("Failed to create user");168 throw new OpsException("Failed to create user");
@@ -200,7 +223,7 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
200 log.info("perform installation");223 log.info("perform installation");
201 // install224 // install
202 String command = MessageFormat.format(SshCommandConstants.LITE_SINGLE_INSTALL, databasePassword, pkgPath, dataPath, installPath,String.valueOf(port));225 String command = MessageFormat.format(SshCommandConstants.LITE_SINGLE_INSTALL, databasePassword, pkgPath, dataPath, installPath,String.valueOf(port));
203- 226+ command = wrapperLiteEnvSep(command, installContext.getEnvPath());
204 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");227 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
205 try {228 try {
206 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, retSession);229 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, retSession);
@@ -223,7 +246,6 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
223 246 
224 }247 }
225 248 
226- 
227 private OpsHostUserEntity createInstallUser(InstallContext installContext, String hostId) {249 private OpsHostUserEntity createInstallUser(InstallContext installContext, String hostId) {
228 OpsHostEntity hostEntity = hostFacade.getById(hostId);250 OpsHostEntity hostEntity = hostFacade.getById(hostId);
229 OpsHostUserEntity hostUserEntity = hostUserFacade.getOmmUserByHostId(hostId);251 OpsHostUserEntity hostUserEntity = hostUserFacade.getOmmUserByHostId(hostId);
@@ -376,6 +398,7 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
376 log.info("perform installation");398 log.info("perform installation");
377 // install399 // install
378 String command = MessageFormat.format(SshCommandConstants.LITE_SLAVE_INSTALL, databasePassword, pkgPath, dataPath, installPath, slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));400 String command = MessageFormat.format(SshCommandConstants.LITE_SLAVE_INSTALL, databasePassword, pkgPath, dataPath, installPath, slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));
401+ command = wrapperEnvSep(command, installContext.getEnvPath());
379 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");402 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
380 try {403 try {
381 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());404 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());
@@ -443,7 +466,7 @@ public class OpenEulerX86LiteOpsProvider extends AbstractOpsProvider {
443 log.info("perform installation");466 log.info("perform installation");
444 // install467 // install
445 String command = MessageFormat.format(SshCommandConstants.LITE_MASTER_INSTALL, databasePassword, pkgPath, dataPath, installPath, masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));468 String command = MessageFormat.format(SshCommandConstants.LITE_MASTER_INSTALL, databasePassword, pkgPath, dataPath, installPath, masterHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1), slaveHostInfo.getHostEntity().getPrivateIp(), String.valueOf(installContext.getLiteInstallConfig().getPort()+1));
446- 469+ command = wrapperEnvSep(command, installContext.getEnvPath());
447 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");470 wsUtil.sendText(installContext.getRetSession(),"START_EXE_INSTALL_COMMAND");
448 try {471 try {
449 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());472 JschResult jschResult = jschUtil.executeCommand(command, installUserSession, installContext.getRetSession());
Mbase-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerX86MinimaListOpsProvider.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpenEulerX86MinimaListOpsProvider.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/service/ops/impl/provider/OpenEulerX86MinimaListOpsProvider.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.ops.impl.provider;24package org.opengauss.admin.plugin.service.ops.impl.provider;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/utils/DBUtil.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DBUtil.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/utils/DBUtil.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.utils;24package org.opengauss.admin.plugin.utils;
2 25 
3import cn.hutool.crypto.SecureUtil;26import cn.hutool.crypto.SecureUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/utils/DownloadUtil.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DownloadUtil.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/utils/DownloadUtil.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.utils;24package org.opengauss.admin.plugin.utils;
2 25 
3import org.opengauss.admin.common.exception.ops.OpsException;26import org.opengauss.admin.common.exception.ops.OpsException;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/utils/GeoUtils.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * GeoUtils.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/utils/GeoUtils.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.utils;24package org.opengauss.admin.plugin.utils;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/utils/JschUtil.java+31-1
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * JschUtil.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/utils/JschUtil.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.utils;24package org.opengauss.admin.plugin.utils;
2 25 
3import cn.hutool.core.collection.CollUtil;26import cn.hutool.core.collection.CollUtil;
@@ -223,7 +246,14 @@ public class JschUtil {
223 throw new OpsException("Command execution exception");246 throw new OpsException("Command execution exception");
224 }247 }
225 248 
226- return buildJschResult(channel, wsSession, autoResponse);249+ JschResult jschResult = buildJschResult(channel, wsSession, autoResponse);
250+ 
251+ if (0 != jschResult.getExitCode()) {
252+ log.error("execute command fail, command:{}, result:{}", command, jschResult);
253+ throw new OpsException("execute command fail with exit code:" + jschResult.getExitCode());
254+ }
255+ 
256+ return jschResult;
227 }257 }
228 258 
229 /**259 /**
Mbase-ops/src/main/java/org/opengauss/admin/plugin/utils/WsUtil.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WsUtil.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/utils/WsUtil.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.utils;24package org.opengauss.admin.plugin.utils;
2 25 
3import cn.hutool.core.util.StrUtil;26import cn.hutool.core.util.StrUtil;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/AuditLogVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * AuditLogVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/AuditLogVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/BackupInputDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BackupInputDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/BackupInputDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/BackupVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BackupVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/BackupVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import org.opengauss.admin.plugin.domain.entity.ops.OpsBackupEntity;26import org.opengauss.admin.plugin.domain.entity.ops.OpsBackupEntity;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckClusterVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckClusterVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckClusterVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckDbVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckDbVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckDbVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckDeviceVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckDeviceVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckDeviceVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckItemVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckItemVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckItemVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckNetworkVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckNetworkVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckNetworkVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckOSVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckOSVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckOSVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckOtherVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckOtherVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckOtherVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckSummaryVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckSummaryVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckSummaryVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * CheckVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/CheckVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/DwrSnapshotVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * DwrSnapshotVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/DwrSnapshotVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import com.fasterxml.jackson.annotation.JsonFormat;26import com.fasterxml.jackson.annotation.JsonFormat;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/OpsNodeLogVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * OpsNodeLogVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/OpsNodeLogVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/RecoverInputDto.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * RecoverInputDto.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/RecoverInputDto.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/SessionVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SessionVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/SessionVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/SlowSqlVO.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * SlowSqlVO.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/main/java/org/opengauss/admin/plugin/vo/ops/SlowSqlVO.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.vo.ops;24package org.opengauss.admin.plugin.vo.ops;
2 25 
3import lombok.Data;26import lombok.Data;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/MockResultSet.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * MockResultSet.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/MockResultSet.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin;24package org.opengauss.admin.plugin;
2 25 
3import com.mysql.cj.jdbc.result.ResultSetMetaData;26import com.mysql.cj.jdbc.result.ResultSetMetaData;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/ModelingBaseTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingBaseTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/ModelingBaseTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin;24package org.opengauss.admin.plugin;
2 25 
3import org.junit.After;26import org.junit.After;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/controller/modeling/ModelingDataFlowControllerTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowControllerTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/controller/modeling/ModelingDataFlowControllerTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.controller.modeling;24package org.opengauss.admin.plugin.controller.modeling;
2 25 
3import org.opengauss.admin.common.core.domain.AjaxResult;26import org.opengauss.admin.common.core.domain.AjaxResult;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/ops/BackupTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BackupTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/ops/BackupTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.ops;24package org.opengauss.admin.plugin.ops;
2 25 
3import cn.hutool.core.bean.BeanUtil;26import cn.hutool.core.bean.BeanUtil;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/ops/ClusterTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ClusterTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/ops/ClusterTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.ops;24package org.opengauss.admin.plugin.ops;
2 25 
3import com.jcraft.jsch.*;26import com.jcraft.jsch.*;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/ops/WdrTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * WdrTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/ops/WdrTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.ops;24package org.opengauss.admin.plugin.ops;
2 25 
3import com.alibaba.druid.mock.MockConnection;26import com.alibaba.druid.mock.MockConnection;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/BarChartGenerateServiceTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * BarChartGenerateServiceTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/BarChartGenerateServiceTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.alibaba.fastjson.JSONArray;26import com.alibaba.fastjson.JSONArray;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/ModelingDataBaseServiceTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataBaseServiceTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/ModelingDataBaseServiceTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.mysql.cj.protocol.Resultset;26import com.mysql.cj.protocol.Resultset;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/ModelingDataFlowProcessServiceTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowProcessServiceTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/ModelingDataFlowProcessServiceTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.alibaba.fastjson.JSONObject;26import com.alibaba.fastjson.JSONObject;
Mbase-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/ModelingDataFlowServiceTest.java+23-0
@@ -1,3 +1,26 @@
1+/*
2+ * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
3+ *
4+ * openGauss is licensed under Mulan PSL v2.
5+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6+ * You may obtain a copy of Mulan PSL v2 at:
7+ *
8+ * http://license.coscl.org.cn/MulanPSL2
9+ *
10+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12+ * MERCHANTABILITY OR FITFOR A PARTICULAR PURPOSE.
13+ * See the Mulan PSL v2 for more details.
14+ * -------------------------------------------------------------------------
15+ *
16+ * ModelingDataFlowServiceTest.java
17+ *
18+ * IDENTIFICATION
19+ * base-ops/src/test/java/org/opengauss/admin/plugin/service/modeling/ModelingDataFlowServiceTest.java
20+ *
21+ * -------------------------------------------------------------------------
22+ */
23+ 
1package org.opengauss.admin.plugin.service.modeling;24package org.opengauss.admin.plugin.service.modeling;
2 25 
3import com.baomidou.mybatisplus.core.metadata.IPage;26import com.baomidou.mybatisplus.core.metadata.IPage;
Mbase-ops/web-ui/src/locale/locale/en.json+12-4
@@ -197,8 +197,8 @@
197 "5mpiji1qpcc1": "deploy ip",197 "5mpiji1qpcc1": "deploy ip",
198 "5mpiji1qpbc1": "Distribute Deploy Info",198 "5mpiji1qpbc1": "Distribute Deploy Info",
199 "5mpiji1qpcc2": "username",199 "5mpiji1qpcc2": "username",
200- "5mpiji1qpcc3": "password",200+ "5mpiji1qpcc3": "root password",
201- "5mpiji1qpcc4": "please input password",201+ "5mpiji1qpcc4": "please input root password",
202 "5mpiji1qpcc5": "install path",202 "5mpiji1qpcc5": "install path",
203 "5mpiji1qpcc6": "please input install path",203 "5mpiji1qpcc6": "please input install path",
204 "5mpiji1qpcc7": "Package Info",204 "5mpiji1qpcc7": "Package Info",
@@ -348,6 +348,12 @@
348 "else9": "Down",348 "else9": "Down",
349 "else10": "Abnormal",349 "else10": "Abnormal",
350 "else11": "Manually stopped",350 "else11": "Manually stopped",
351+ "else12": "Database user",
352+ "else13": "Database port",
353+ "else14": "Install Path",
354+ "else15": "Data Path",
355+ "else16": "Install User",
356+ "else17": "ENV File Path",
351 "5mplp1xbxl40": "Cluster name",357 "5mplp1xbxl40": "Cluster name",
352 "5mplp1xbyi40": "Self-check warning",358 "5mplp1xbyi40": "Self-check warning",
353 "5mplp1xbyqc0": "One-key self-test",359 "5mplp1xbyqc0": "One-key self-test",
@@ -367,7 +373,7 @@
367 "5mplp1xc1b00": "Cancel",373 "5mplp1xc1b00": "Cancel",
368 "5mplp1xc1gs0": "Uninstall",374 "5mplp1xc1gs0": "Uninstall",
369 "5mplp1xc1ms0": "Forced uninstall",375 "5mplp1xc1ms0": "Forced uninstall",
370- "5mplp1xc1t80": "Host location",376+ "5mplp1xc1t80": "IP(Intranet/extranet)",
371 "5mplp1xc20k0": "Operation",377 "5mplp1xc20k0": "Operation",
372 "5mplp1xc25o0": "Start all instances",378 "5mplp1xc25o0": "Start all instances",
373 "5mplp1xc2b40": "Stop all instances",379 "5mplp1xc2b40": "Stop all instances",
@@ -540,7 +546,9 @@
540 "5mpm3ku3jo00": "The cluster ID already exists, please re-enter",546 "5mpm3ku3jo00": "The cluster ID already exists, please re-enter",
541 "5mpm3ku3jqo0": "Determine whether there is an error in the cluster ID",547 "5mpm3ku3jqo0": "Determine whether there is an error in the cluster ID",
542 "else1": "Please enter numbers, letters or underscores",548 "else1": "Please enter numbers, letters or underscores",
543- "else2": "The value cannot be pure space"549+ "else2": "The value cannot be pure space",
550+ "else3": "Master",
551+ "else4": "Slave"
544 },552 },
545 "EnterpriseInstall": {553 "EnterpriseInstall": {
546 "else2": "prompt",554 "else2": "prompt",
Mbase-ops/web-ui/src/locale/locale/zh-cn.json+15-7
@@ -197,8 +197,8 @@
197 "5mpiji1qpcc1": "部署主机IP",197 "5mpiji1qpcc1": "部署主机IP",
198 "5mpiji1qpbc1": "Deploy中间件部署信息",198 "5mpiji1qpbc1": "Deploy中间件部署信息",
199 "5mpiji1qpcc2": "用户名",199 "5mpiji1qpcc2": "用户名",
200- "5mpiji1qpcc3": "密码",200+ "5mpiji1qpcc3": "root密码",
201- "5mpiji1qpcc4": "请输入密码",201+ "5mpiji1qpcc4": "请输入root密码",
202 "5mpiji1qpcc5": "安装路径",202 "5mpiji1qpcc5": "安装路径",
203 "5mpiji1qpcc6": "请输入安装路径",203 "5mpiji1qpcc6": "请输入安装路径",
204 "5mpiji1qpcc7": "安装包信息",204 "5mpiji1qpcc7": "安装包信息",
@@ -349,6 +349,12 @@
349 "else9": "宕机",349 "else9": "宕机",
350 "else10": "异常",350 "else10": "异常",
351 "else11": "停止",351 "else11": "停止",
352+ "else12": "数据库用户",
353+ "else13": "数据库端口",
354+ "else14": "安装目录",
355+ "else15": "数据目录",
356+ "else16": "安装用户",
357+ "else17": "环境分离文件路径",
352 "5mplp1xbxl40": "集群名称",358 "5mplp1xbxl40": "集群名称",
353 "5mplp1xbyi40": "自检警告",359 "5mplp1xbyi40": "自检警告",
354 "5mplp1xbyqc0": "一键自检",360 "5mplp1xbyqc0": "一键自检",
@@ -368,7 +374,7 @@
368 "5mplp1xc1b00": "取消",374 "5mplp1xc1b00": "取消",
369 "5mplp1xc1gs0": "卸载",375 "5mplp1xc1gs0": "卸载",
370 "5mplp1xc1ms0": "强制卸载",376 "5mplp1xc1ms0": "强制卸载",
371- "5mplp1xc1t80": "主机位置",377+ "5mplp1xc1t80": "IP(内/外)",
372 "5mplp1xc20k0": "操作",378 "5mplp1xc20k0": "操作",
373 "5mplp1xc25o0": "启动所有实例",379 "5mplp1xc25o0": "启动所有实例",
374 "5mplp1xc2b40": "停止所有实例",380 "5mplp1xc2b40": "停止所有实例",
@@ -537,11 +543,13 @@
537 "5mpm3ku3j9s0": "请输入数据库用户名",543 "5mpm3ku3j9s0": "请输入数据库用户名",
538 "5mpm3ku3jdg0": "数据库密码",544 "5mpm3ku3jdg0": "数据库密码",
539 "5mpm3ku3ji00": "请输入数据库密码",545 "5mpm3ku3ji00": "请输入数据库密码",
540- "5mpm3ku3jkw0": "开启运行时数据库节点自选主",546+ "5mpm3ku3jkw0": "开启节点自选主",
541 "5mpm3ku3jo00": "集群标识已存在,请重新输入",547 "5mpm3ku3jo00": "集群标识已存在,请重新输入",
542 "5mpm3ku3jqo0": "判断集群标识是否存在出错",548 "5mpm3ku3jqo0": "判断集群标识是否存在出错",
543 "else1": "请输入数字,字母或者下划线",549 "else1": "请输入数字,字母或者下划线",
544- "else2": "不能为纯空格"550+ "else2": "不能为纯空格",
551+ "else3": "主节点",
552+ "else4": "备节点"
545 },553 },
546 "EnterpriseInstall": {554 "EnterpriseInstall": {
547 "else2": "提示",555 "else2": "提示",
@@ -613,8 +621,8 @@
613 "else13": "检测到数据目录不为空",621 "else13": "检测到数据目录不为空",
614 "else14": "未检测到安装包目录下对应的安装包信息",622 "else14": "未检测到安装包目录下对应的安装包信息",
615 "else15": "检测到安装包目录不为空",623 "else15": "检测到安装包目录不为空",
616- "else16": "检测到安装包目录不为空, 请点击上一步进行修改",624+ "else16": "检测到安装包目录不为空",
617- "else17": "未检测到环境分离文件, 请点击上一步进行修改",625+ "else17": "未检测到环境分离文件",
618 "else18": "未检测到环境分离文件",626 "else18": "未检测到环境分离文件",
619 "5mpme7w69yc0": "集群节点数",627 "5mpme7w69yc0": "集群节点数",
620 "5mpme7w6aj40": "所属AZ",628 "5mpme7w6aj40": "所属AZ",
Mbase-ops/web-ui/src/types/ops/install.ts+3-0
@@ -143,10 +143,12 @@ export interface OpenLookengInstallConfig {
143 dadTarId: '',143 dadTarId: '',
144 dadInstallPath: '/data/install',144 dadInstallPath: '/data/install',
145 dadInstallPassword: '',145 dadInstallPassword: '',
146+ dadRootPassword: '',
146 dadPort: 8080,147 dadPort: 8080,
147 ssInstallHostId: '',148 ssInstallHostId: '',
148 ssInstallUsername: '',149 ssInstallUsername: '',
149 ssInstallPassword: '',150 ssInstallPassword: '',
151+ ssRootPassword: '',
150 ssInstallPath: '/data/install',152 ssInstallPath: '/data/install',
151 ssUploadPath: '/data/tar',153 ssUploadPath: '/data/tar',
152 ssTarId: '',154 ssTarId: '',
@@ -159,6 +161,7 @@ export interface OpenLookengInstallConfig {
159 olkInstallHostId: '',161 olkInstallHostId: '',
160 olkInstallUsername: '',162 olkInstallUsername: '',
161 olkInstallPassword: '',163 olkInstallPassword: '',
164+ olkRootPassword: '',
162 olkInstallPath: '/data/install',165 olkInstallPath: '/data/install',
163 olkUploadPath: '/data/tar',166 olkUploadPath: '/data/tar',
164 olkTarId: '',167 olkTarId: '',
Mbase-ops/web-ui/src/views/modeling/dataflow/child/detail/components/left-sidebar/nodes/BaseNode.vue+7-7
@@ -72,13 +72,13 @@ onMounted(() => {
72 } else {72 } else {
73 dAntvNodeDarkTheme.value = false73 dAntvNodeDarkTheme.value = false
74 }74 }
75- window.$wujie?.bus.$on('opengauss-theme-change', (val: string) => {75+ // window.$wujie?.bus.$on('opengauss-theme-change', (val: string) => {
76- if (val === 'dark') {76+ // if (val === 'dark') {
77- dAntvNodeDarkTheme.value = true77+ // dAntvNodeDarkTheme.value = true
78- } else {78+ // } else {
79- dAntvNodeDarkTheme.value = false79+ // dAntvNodeDarkTheme.value = false
80- }80+ // }
81- })81+ // })
82})82})
83const getName = () => getNode ? nodeConfig = getNode().getData() : setTimeout(() => { getName() }, 100)83const getName = () => getNode ? nodeConfig = getNode().getData() : setTimeout(() => { getName() }, 100)
84getName()84getName()
Mbase-ops/web-ui/src/views/monitor/customControl/index.vue+1-1
@@ -60,7 +60,7 @@ onMounted(() => {
60 60 
61onBeforeUnmount(() => {61onBeforeUnmount(() => {
62 if (Object.keys(data.socketMap).length) {62 if (Object.keys(data.socketMap).length) {
63- for (let key of data.socketMap) {63+ for (let key in data.socketMap) {
64 data.socketMap[key].destroy()64 data.socketMap[key].destroy()
65 }65 }
66 }66 }
Mbase-ops/web-ui/src/views/monitor/operation/DailyOps.vue+157-190
@@ -33,21 +33,37 @@
33 <div class="flex-row">33 <div class="flex-row">
34 <svg-icon icon-class="ops-cluster" class="cluster-icon-size mr"></svg-icon>34 <svg-icon icon-class="ops-cluster" class="cluster-icon-size mr"></svg-icon>
35 <div class="flex-col-start">35 <div class="flex-col-start">
36- <div class="flex-row mb">36+ <div class="cluster-info-screen">
37- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xbyxw0') }}</div>37+ <div class="flex-row mr mb-screen">
38- <a-tag :color="getClusterColor(clusterData)">{{38+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xbyxw0') }}:</div>
39- getClusterState(clusterData)39+ <a-tag :color="getClusterColor(clusterData)">{{
40- }}</a-tag>40+ getClusterState(clusterData)
41- </div>41+ }}</a-tag>
42- <div class="flex-row">
43- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xbzew0') }}</div>
44- <div class="flex-row"
45- v-if="clusterData.deployType === 'CLUSTER' && clusterData.clusterNodes.length > 1">
46- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xbzmw0') }}</div>
47- <div class="value-color ft-lg ft-b mr-s">{{ clusterData.clusterNodes.length - 1 }}</div>
48- <div class="label-color">{{ $t('operation.DailyOps.5mplp1xbztc0') }}</div>
49 </div>42 </div>
50- <div class="value-color ft-b" v-else>{{ $t('operation.DailyOps.5mplp1xc0000') }}</div>43+ <div class="flex-row mr mb-screen">
44+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xbzew0') }}:</div>
45+ <div class="flex-row"
46+ v-if="clusterData.deployType === 'CLUSTER' && clusterData.clusterNodes.length > 1">
47+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xbzmw0') }}</div>
48+ <div class="value-color ft-lg ft-b mr-s">{{ clusterData.clusterNodes.length - 1 }}</div>
49+ <div class="label-color">{{ $t('operation.DailyOps.5mplp1xbztc0') }}</div>
50+ </div>
51+ <div class="value-color ft-b" v-else>{{ $t('operation.DailyOps.5mplp1xc0000') }}</div>
52+ </div>
53+ </div>
54+ <div class="cluster-info-screen">
55+ <div class="flex-row mr mb-screen">
56+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else12') }}:</div>
57+ <div class="label-color">{{ clusterData.clusterNodes[0].dbUser }}</div>
58+ </div>
59+ <div class="flex-row mb-screen">
60+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else13') }}:</div>
61+ <div class="label-color">{{ clusterData.clusterNodes[0].dbPort }}</div>
62+ </div>
63+ </div>
64+ <div class="flex-row mb-screen" v-if="clusterData.envPath">
65+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else17') }}:</div>
66+ <div class="label-color">{{ clusterData.envPath }}</div>
51 </div>67 </div>
52 </div>68 </div>
53 </div>69 </div>
@@ -93,152 +109,13 @@
93 </div>109 </div>
94 </div>110 </div>
95 </div>111 </div>
96- <!-- mini cluster -->
97- <div v-if="clusterData.version === 'MINIMAL_LIST' && clusterData.deployType === 'CLUSTER'">
98- <div class="flex-row">
99- <div class="host-c simple-w">
100- <div class="flex-between mb">
101- <div class="flex-row">
102- <div class="label-color mr">{{ $t('operation.DailyOps.5mplp1xc1t80') }}</div>
103- <div class="label-color">{{
104- clusterData.clusterNodes[0].azAddress ? clusterData.clusterNodes[0].azAddress :
105- '--'
106- }}</div>
107- </div>
108- <a-dropdown @select="handleHostOper($event, index, 0)">
109- <a-button>{{ $t('operation.DailyOps.5mplp1xc20k0') }}</a-button>
110- <template #content>
111- <a-doption value="start">{{ $t('operation.DailyOps.5mplp1xc25o0') }}</a-doption>
112- <a-doption value="stop">{{ $t('operation.DailyOps.5mplp1xc2b40') }}</a-doption>
113- </template>
114- </a-dropdown>
115- </div>
116- <div class="flex-row-center">
117- <svg-icon icon-class="ops-host" class="host-icon-size mr-lg"></svg-icon>
118- <div class="host-info">
119- <div class="flex-col-start mr">
120- <div class="flex-row mb">
121- <div class="label-color">{{ $t('operation.DailyOps.5mplp1xc2gw0') }}</div>
122- <div class="value-color">{{ clusterData.clusterNodes[0].privateIp }}</div>
123- </div>
124- <div class="flex-row mb">
125- <div class="label-color">{{ $t('operation.DailyOps.5mplp1xc2ls0') }}</div>
126- <div class="value-color">{{ clusterData.clusterNodes[0].publicIp }}</div>
127- </div>
128- <div class="flex-row mb">
129- <div class="label-color">{{ $t('operation.DailyOps.5mplp1xc2sw0') }}</div>
130- <div class="value-color">{{ clusterData.clusterNodes[0].hostname }}</div>
131- </div>
132- <div class="flex-row">
133- <div class="label-color">{{ $t('operation.DailyOps.5mplp1xc2xs0') }}</div>
134- <div class="value-color">{{
135- clusterData.clusterNodes[0].kernel ? clusterData.clusterNodes[0].kernel : '-'
136- }}{{ $t('operation.DailyOps.else1') }}{{
137- clusterData.clusterNodes[0].memorySize ?
138- clusterData.clusterNodes[0].memorySize :
139- '-'
140-}}G</div>
141- </div>
142- </div>
143- <div class="flex-col-start mr">
144- <div class="flex-row mb">
145- <div class="label-color mr-s">CPU:</div>
146- <div class="value-color">{{
147- clusterData.clusterNodes[0].cpu ?
148- clusterData.clusterNodes[0].cpu : '--'
149- }}%</div>
150- </div>
151- <div class="flex-row mb">
152- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc32g0') }}</div>
153- <div class="value-color">{{
154- clusterData.clusterNodes[0].memory ?
155- clusterData.clusterNodes[0].memory : '--'
156- }}%
157- </div>
158- </div>
159- </div>
160- </div>
161- </div>
162- </div>
163- <div class="instance-c simple-w" v-for="(instance, nodeIndex) in clusterData.clusterNodes"
164- :key="nodeIndex">
165- <div class="node-type">
166- <div class="content">{{ getRoleName(instance.clusterRole) }}</div>
167- </div>
168- <div class="flex-between mb">
169- <div class="flex-row mb-s" style="margin-left: 20px">
170- <div class="label-color mr-s">{{ $t('operation.DailyOps.else2') }}{{ nodeIndex + 1 }}</div>
171- <a-tag :color="getInstanceStateColor(clusterData, clusterData.clusterNodes[0])">{{
172- getInstanceState(clusterData, clusterData.clusterNodes[0])
173- }}</a-tag>
174- </div>
175- <div class="flex-row">
176- <a-switch class="mr" v-model="instance.state" checked-value="true" unchecked-value="false"
177- @change="handleInstanceSwitchChange($event, index, nodeIndex)">
178- <template #checked>
179- ON
180- </template>
181- <template #unchecked>
182- OFF
183- </template>
184- </a-switch>
185- <a-dropdown @select="handleInstanceOper($event, index, nodeIndex)">
186- <a-button>{{ $t('operation.DailyOps.5mplp1xc20k0') }}</a-button>
187- <template #content>
188- <a-doption value="start">{{ $t('operation.DailyOps.5mplp1xc0c00') }}</a-doption>
189- <a-doption value="stop">{{ $t('operation.DailyOps.5mplp1xc0i80') }}</a-doption>
190- <a-doption value="restart">{{ $t('operation.DailyOps.5mplp1xc0o40') }}</a-doption>
191- </template>
192- </a-dropdown>
193- </div>
194- </div>
195- <div class="flex-row-center">
196- <svg-icon icon-class="ops-instance" class="host-icon-size mr-lg"></svg-icon>
197- <div class="flex-col-start mr">
198- <div class="flex-row mb">
199- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3740') }}</div>
200- <div class="value-color mr-s">{{
201- clusterData.clusterNodes[0].session ?
202- clusterData.clusterNodes[0].session : '--'
203- }}</div>
204- <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>
205- </div>
206- <div class="flex-row ">
207- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3bw0') }}</div>
208- <div class="value-color mr-s">{{
209- clusterData.clusterNodes[0].connectNum ?
210- clusterData.clusterNodes[0].connectNum : '--'
211- }}</div>
212- <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>
213- </div>
214- </div>
215- <div class="flex-col-start">
216- <div class="flex-row mb">
217- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3hs0') }}</div>
218- <div class="value-color mr-s">{{
219- clusterData.clusterNodes[0].lock ?
220- clusterData.clusterNodes[0].lock : '--'
221- }}</div>
222- <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>
223- </div>
224- <div class="flex-row">
225- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3no0') }}</div>
226- <div>{{ clusterData.clusterNodes[0].azName ? clusterData.clusterNodes[0].azName : '--' }}
227- </div>
228- </div>
229- </div>
230- </div>
231- </div>
232- </div>
233- </div>
234 <!-- host info -->112 <!-- host info -->
235- <div class="item-node-info" v-else v-for="(instance, nodeIndex) in clusterData.clusterNodes"113+ <div class="item-node-info" v-for="(instance, nodeIndex) in clusterData.clusterNodes" :key="nodeIndex">
236- :key="nodeIndex">
237 <div class="host-c node-w">114 <div class="host-c node-w">
238 <div class="flex-between mb">115 <div class="flex-between mb">
239 <div class="flex-row">116 <div class="flex-row">
240- <div class="label-color mr">{{ $t('operation.DailyOps.5mplp1xc1t80') }}</div>117+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc1t80') }}</div>
241- <div class="label-color">{{ instance.azAddress ? instance.azAddress : '--' }}</div>118+ <div class="label-color">{{ instance.privateIp }}({{ instance.publicIp }})</div>
242 </div>119 </div>
243 <a-dropdown @select="handleHostOper($event, index, nodeIndex)">120 <a-dropdown @select="handleHostOper($event, index, nodeIndex)">
244 <a-button>{{ $t('operation.DailyOps.5mplp1xc20k0') }}</a-button>121 <a-button>{{ $t('operation.DailyOps.5mplp1xc20k0') }}</a-button>
@@ -250,8 +127,20 @@
250 </div>127 </div>
251 <div class="flex-row-center">128 <div class="flex-row-center">
252 <svg-icon icon-class="ops-host" class="host-icon-size mr-lg"></svg-icon>129 <svg-icon icon-class="ops-host" class="host-icon-size mr-lg"></svg-icon>
253- <div class="host-info">130+ <div class="host-info-screen">
254 <div class="flex-col-start mr">131 <div class="flex-col-start mr">
132+ <div class="flex-row host-mb-screen">
133+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else14') }}</div>
134+ <div :title="instance.installPath" class="path-c value-color">{{ instance.installPath }}</div>
135+ </div>
136+ <div class="flex-row host-mb-screen">
137+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else15') }}</div>
138+ <div :title="instance.dataPath" class="path-c value-color">{{ instance.dataPath }}</div>
139+ </div>
140+ </div>
141+ 
142+ <div class="host-info">
143+ <!-- <div class="flex-col-start mr">
255 <div class="flex-row mb">144 <div class="flex-row mb">
256 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2gw0') }}</div>145 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2gw0') }}</div>
257 <div class="value-color">{{ instance.privateIp }}</div>146 <div class="value-color">{{ instance.privateIp }}</div>
@@ -260,30 +149,31 @@
260 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2ls0') }}</div>149 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2ls0') }}</div>
261 <div class="value-color">{{ instance.publicIp }}</div>150 <div class="value-color">{{ instance.publicIp }}</div>
262 </div>151 </div>
263- </div>152+ </div> -->
264- <div class="flex-col-start mr">153+ <div class="flex-col-start mr">
265- <div class="flex-row mb">154+ <div class="flex-row host-mb-screen">
266- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2sw0') }}</div>155+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2sw0') }}</div>
267- <div class="value-color">{{ instance.hostname }}</div>156+ <div class="value-color">{{ instance.hostname }}</div>
268- </div>157+ </div>
269- <div class="flex-row">158+ <div class="flex-row host-mb-screen">
270- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2xs0') }}</div>159+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc2xs0') }}</div>
271- <div class="value-color">{{ instance.kernel ? instance.kernel : '-' }}{{160+ <div class="value-color">{{ instance.kernel ? instance.kernel : '-' }}{{
272- $t('operation.DailyOps.else1')161+ $t('operation.DailyOps.else1')
273- }}{{162+ }}{{
274 instance.memorySize ?163 instance.memorySize ?
275 instance.memorySize : '-'164 instance.memorySize : '-'
276}}G</div>165}}G</div>
166+ </div>
277 </div>167 </div>
278- </div>168+ <div class="flex-col-start mr">
279- <div class="flex-col-start mr">169+ <div class="flex-row host-mb-screen">
280- <div class="flex-row mb">170+ <div class="label-color mr-s">CPU</div>
281- <div class="label-color mr-s">CPU</div>171+ <div class="value-color">{{ instance.cpu ? instance.cpu : '--' }}%</div>
282- <div class="value-color">{{ instance.cpu ? instance.cpu : '--' }}%</div>172+ </div>
283- </div>173+ <div class="flex-row host-mb-screen">
284- <div class="flex-row">174+ <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc32g0') }}</div>
285- <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc32g0') }}</div>175+ <div class="value-color">{{ instance.memory ? instance.memory : '--' }}%</div>
286- <div class="value-color">{{ instance.memory ? instance.memory : '--' }}%</div>176+ </div>
287 </div>177 </div>
288 </div>178 </div>
289 </div>179 </div>
@@ -293,13 +183,20 @@
293 <div class="node-type">183 <div class="node-type">
294 <div class="content">{{ getRoleName(instance.clusterRole) }}</div>184 <div class="content">{{ getRoleName(instance.clusterRole) }}</div>
295 </div>185 </div>
296- <div class="flex-between">186+ <div class="flex-between mb">
297- <div class="flex-row mb-s" style="margin-left: 20px">187+ <div class="flex-row">
298- <div class="label-color mr-s">{{ $t('operation.DailyOps.else2') }}{{ nodeIndex + 1 }}</div>188+ <div class="flex-row mr" style="margin-left: 20px">
299- <a-tag :color="getInstanceStateColor(clusterData, instance)">{{189+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else2') }}{{ nodeIndex + 1 }}</div>
300- getInstanceState(clusterData, instance)190+ <a-tag :color="getInstanceStateColor(clusterData, instance)">{{
301- }}</a-tag>191+ getInstanceState(clusterData, instance)
192+ }}</a-tag>
193+ </div>
194+ <div class="flex-row">
195+ <div class="label-color mr-s">{{ $t('operation.DailyOps.else16') }}</div>
196+ <div class="label-color">{{ instance.installUserName }}</div>
197+ </div>
302 </div>198 </div>
199+ 
303 <div class="flex-row" v-if="instance.cmState !== CMStateEnum.Down">200 <div class="flex-row" v-if="instance.cmState !== CMStateEnum.Down">
304 <a-switch class="mr" v-model="instance.state" checked-value="true" unchecked-value="false"201 <a-switch class="mr" v-model="instance.state" checked-value="true" unchecked-value="false"
305 @change="handleInstanceSwitchChange($event, index, nodeIndex)">202 @change="handleInstanceSwitchChange($event, index, nodeIndex)">
@@ -321,25 +218,23 @@
321 </div>218 </div>
322 <div class="flex-row-center">219 <div class="flex-row-center">
323 <svg-icon icon-class="ops-instance" class="host-icon-size mr-lg"></svg-icon>220 <svg-icon icon-class="ops-instance" class="host-icon-size mr-lg"></svg-icon>
324- <div class="flex-col-start mr">221+ <div class="instance-info-screen">
325- <div class="flex-row mb">222+ <div class="flex-row mb mr">
326 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3740') }}</div>223 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3740') }}</div>
327 <div class="value-color mr-s">{{ instance.session ? instance.session : '--' }}</div>224 <div class="value-color mr-s">{{ instance.session ? instance.session : '--' }}</div>
328 <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>225 <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>
329 </div>226 </div>
330- <div class="flex-row ">227+ <div class="flex-row mb mr">
331 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3bw0') }}</div>228 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3bw0') }}</div>
332 <div class="value-color mr-s">{{ instance.connectNum ? instance.connectNum : '--' }}</div>229 <div class="value-color mr-s">{{ instance.connectNum ? instance.connectNum : '--' }}</div>
333 <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>230 <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>
334 </div>231 </div>
335- </div>232+ <div class="flex-row mb mr">
336- <div class="flex-col-start">
337- <div class="flex-row mb">
338 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3hs0') }}</div>233 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3hs0') }}</div>
339 <div class="value-color mr-s">{{ instance.lock ? instance.lock : '--' }}</div>234 <div class="value-color mr-s">{{ instance.lock ? instance.lock : '--' }}</div>
340 <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>235 <div class="label-color">{{ $t('operation.DailyOps.else3') }}</div>
341 </div>236 </div>
342- <div class="flex-row">237+ <div class="flex-row mb" v-if="clusterData.version === 'ENTERPRISE'">
343 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3no0') }}</div>238 <div class="label-color mr-s">{{ $t('operation.DailyOps.5mplp1xc3no0') }}</div>
344 <div class="value-color">{{ instance.azName ? instance.azName : '--' }}</div>239 <div class="value-color">{{ instance.azName ? instance.azName : '--' }}</div>
345 </div>240 </div>
@@ -1289,6 +1184,30 @@ const getDropdownList = (clusterData: KeyValue, nodeData: KeyValue) => {
1289 align-items: center;1184 align-items: center;
1290 justify-content: space-between;1185 justify-content: space-between;
1291 padding: 20px;1186 padding: 20px;
1187+ 
1188+ @media screen and (max-width: 1700px) {
1189+ .cluster-info-screen {
1190+ display: flex;
1191+ flex-direction: column;
1192+ align-items: flex-start;
1193+ }
1194+ 
1195+ .mb-screen {
1196+ margin-bottom: 10px;
1197+ }
1198+ }
1199+ 
1200+ @media screen and (min-width: 1700px) {
1201+ .cluster-info-screen {
1202+ display: flex;
1203+ align-items: center;
1204+ }
1205+ 
1206+ .mb-screen {
1207+ margin-bottom: 20px;
1208+ }
1209+ }
1210+ 
1292 }1211 }
1293 1212 
1294 .host-c {1213 .host-c {
@@ -1296,10 +1215,42 @@ const getDropdownList = (clusterData: KeyValue, nodeData: KeyValue) => {
1296 border: 1px solid #f2f3f5;1215 border: 1px solid #f2f3f5;
1297 border-right: 0px;1216 border-right: 0px;
1298 1217 
1218+ @media screen and (max-width: 1700px) {
1219+ .host-info-screen {
1220+ display: flex;
1221+ flex-direction: column;
1222+ align-items: flex-start
1223+ }
1224+ 
1225+ .path-c {}
1226+ 
1227+ .host-mb-screen {
1228+ margin-bottom: 10px;
1229+ }
1230+ }
1231+ 
1232+ @media screen and (min-width: 1700px) {
1233+ .host-info-screen {
1234+ display: flex;
1235+ align-items: flex-start
1236+ }
1237+ 
1238+ .path-c {
1239+ width: 150px;
1240+ overflow: hidden;
1241+ text-overflow: ellipsis;
1242+ }
1243+ 
1244+ .host-mb-screen {
1245+ margin-bottom: 20px;
1246+ }
1247+ }
1248+ 
1299 .host-info {1249 .host-info {
1300 display: flex;1250 display: flex;
1301 align-items: flex-start1251 align-items: flex-start
1302 }1252 }
1253+ 
1303 }1254 }
1304 1255 
1305 .instance-c {1256 .instance-c {
@@ -1320,6 +1271,22 @@ const getDropdownList = (clusterData: KeyValue, nodeData: KeyValue) => {
1320 margin-left: -18px;1271 margin-left: -18px;
1321 }1272 }
1322 }1273 }
1274+ 
1275+ @media screen and (max-width: 1500px) {
1276+ .instance-info-screen {
1277+ display: flex;
1278+ flex-direction: column;
1279+ align-items: flex-start;
1280+ }
1281+ }
1282+ 
1283+ @media screen and (min-width: 1500px) {
1284+ .instance-info-screen {
1285+ display: flex;
1286+ align-items: center;
1287+ }
1288+ }
1289+ 
1323 }1290 }
1324 1291 
1325 .open-close-c {1292 .open-close-c {
Mbase-ops/web-ui/src/views/ops/install/components/ChooseVersion.vue+9-4
@@ -3,14 +3,19 @@
3 <div class="panel-header">3 <div class="panel-header">
4 <div class="label-color mb ft-xlg">{{ $t('components.ChooseVersion.5mpmxod8xno0') }}</div>4 <div class="label-color mb ft-xlg">{{ $t('components.ChooseVersion.5mpmxod8xno0') }}</div>
5 <div class="flex-row-start mb">5 <div class="flex-row-start mb">
6- <div class="label-color mr">{{ $t('components.ChooseVersion.5mpmxod8yh00') }}</div>6+ <div class="label-color mr">{{ $t('components.ChooseVersion.5mpmxod8yh00') }}:</div>
7 <a-tag class="mr" size="large" color="green">{{ getDescVersion() }}</a-tag>7 <a-tag class="mr" size="large" color="green">{{ getDescVersion() }}</a-tag>
8 <div v-if="currVersion !== OpenGaussVersionEnum.OPENlOOKENG" class="install-type flex-row">8 <div v-if="currVersion !== OpenGaussVersionEnum.OPENlOOKENG" class="install-type flex-row">
9- <div class="label-color label mr">{{ $t('components.ChooseVersion.5mpmxod8yr40') }}</div>9+ <div class="label-color label mr">{{ $t('components.ChooseVersion.5mpmxod8yr40') }}:</div>
10- <a-select style="width: 200px" v-model="data.installType" @change="installTypeChange">10+ <!-- <a-select style="width: 200px" v-model="data.installType" @change="installTypeChange">
11 <a-option v-for="(item, index) in installTypes" :key="index" :label="item.label" :value="item.value">11 <a-option v-for="(item, index) in installTypes" :key="index" :label="item.label" :value="item.value">
12 </a-option>12 </a-option>
13- </a-select>13+ </a-select> -->
14+ <a-radio-group v-model="data.installType" :options="installTypes" @change="installTypeChange">
15+ <template #label="{ data }">
16+ {{ data.label }}
17+ </template>
18+ </a-radio-group>
14 </div>19 </div>
15 </div>20 </div>
16 <div v-if="data.installType === 'import'" style="color: red; font-weight: bold; font-size: large;">请注意:21 <div v-if="data.installType === 'import'" style="color: red; font-weight: bold; font-size: large;">请注意:
Mbase-ops/web-ui/src/views/ops/install/components/OfflineInstall.vue+5-1
@@ -1,5 +1,5 @@
1<template>1<template>
2- <div class="panel-c">2+ <div class="panel-c panel-overflow">
3 <div class="panel-header">3 <div class="panel-header">
4 <div class="label-color mb ft-xlg">4 <div class="label-color mb ft-xlg">
5 {{ $t('components.OfflineInstall.5mpn1nway8c0') }} {{ currentVersion }}5 {{ $t('components.OfflineInstall.5mpn1nway8c0') }} {{ currentVersion }}
@@ -197,6 +197,10 @@ const storeData = computed(() => installStore.getInstallConfig)
197<style lang="less" scoped>197<style lang="less" scoped>
198@import url('~@/assets/style/ops/ops.less');198@import url('~@/assets/style/ops/ops.less');
199 199 
200+.panel-overflow {
201+ overflow: auto;
202+}
203+ 
200.install-package-card {204.install-package-card {
201 width: 250px;205 width: 250px;
202 height: 100px;206 height: 100px;
Mbase-ops/web-ui/src/views/ops/install/components/TarUploadModal.vue+18-27
@@ -1,53 +1,44 @@
1<template>1<template>
2 <a-modal :mask-closable="false" :esc-to-close="false" :ok-loading="submitLoading" :visible="data.show"2 <a-modal :mask-closable="false" :esc-to-close="false" :ok-loading="submitLoading" :visible="data.show"
3- :title="data.title" :modal-style="{ width: '50vw' }" @ok="handleBeforeOk" @on-cancel="close(false, $event)" @cancel="close(true, $event)">3+ :title="data.title" :modal-style="{ width: '50vw' }" @ok="handleBeforeOk" @on-cancel="close(false, $event)"
4+ @cancel="close(true, $event)">
4 <a-form :model="data.formData" :rules="data.rules" ref="formRef" auto-label-width>5 <a-form :model="data.formData" :rules="data.rules" ref="formRef" auto-label-width>
5 <a-form-item field="os" :label="$t('packageManage.AddPackageDlg.5myq6nnea2w0')">6 <a-form-item field="os" :label="$t('packageManage.AddPackageDlg.5myq6nnea2w0')">
6 <a-select v-model="data.formData.os" :placeholder="$t('packageManage.AddPackageDlg.5myq6nneap40')"7 <a-select v-model="data.formData.os" :placeholder="$t('packageManage.AddPackageDlg.5myq6nneap40')"
7- @change="osChange">8+ @change="osChange">
8- <a-option v-for="(item, index) of data.osList" :key="index" :value="item.value" :label="item.label"/>9+ <a-option v-for="(item, index) of data.osList" :key="index" :value="item.value" :label="item.label" />
9 </a-select>10 </a-select>
10 </a-form-item>11 </a-form-item>
11 <a-form-item :label="$t('packageManage.AddPackageDlg.else1')">12 <a-form-item :label="$t('packageManage.AddPackageDlg.else1')">
12 <a-select v-model="data.formData.cpuArch" :placeholder="$t('packageManage.AddPackageDlg.5myq6nneaw40')">13 <a-select v-model="data.formData.cpuArch" :placeholder="$t('packageManage.AddPackageDlg.5myq6nneaw40')">
13- <a-option v-for="(item, index) of data.cpuArchList" :key="index" :value="item.value" :label="item.label"/>14+ <a-option v-for="(item, index) of data.cpuArchList" :key="index" :value="item.value" :label="item.label" />
14 </a-select>15 </a-select>
15 </a-form-item>16 </a-form-item>
16 <a-form-item :label="$t('packageManage.AddPackageDlg.5myq6nneb180')">17 <a-form-item :label="$t('packageManage.AddPackageDlg.5myq6nneb180')">
17- <a-select v-model="data.formData.packageVersion"18+ <a-select v-model="data.formData.packageVersion" :placeholder="$t('packageManage.AddPackageDlg.5myq6nneb5w0')"
18- :placeholder="$t('packageManage.AddPackageDlg.5myq6nneb5w0')"19+ :disabled="data.isViewVersion">
19- :disabled="data.isViewVersion">
20 <a-option v-for="(item, index) of data.packageVersionList" :key="index" :value="item.value"20 <a-option v-for="(item, index) of data.packageVersionList" :key="index" :value="item.value"
21- :label="item.label"/>21+ :label="item.label" />
22 </a-select>22 </a-select>
23 </a-form-item>23 </a-form-item>
24 <a-form-item field="packageVersionNum" :label="$t('packageManage.AddPackageDlg.5myq6nnebag0')">24 <a-form-item field="packageVersionNum" :label="$t('packageManage.AddPackageDlg.5myq6nnebag0')">
25- <a-input v-model="data.formData.packageVersionNum"25+ <a-input v-model.trim="data.formData.packageVersionNum"
26- :placeholder="$t('packageManage.AddPackageDlg.5myq6nnebew0')"></a-input>26+ :placeholder="$t('packageManage.AddPackageDlg.5myq6nnebew0')"></a-input>
27 </a-form-item>27 </a-form-item>
28 <a-form-item field="packagePath" :label="$t('packageManage.AddPackageDlg.5myq6nnebn41')">28 <a-form-item field="packagePath" :label="$t('packageManage.AddPackageDlg.5myq6nnebn41')">
29- <a-upload29+ <a-upload ref="uploadRef" v-model:file-list="data.fileList" :action="upload.url" :limit="1" :show-file-list="true"
30- ref="uploadRef"30+ :auto-upload="false" draggable :headers="upload.headers" @change="handleFileChange"
31- v-model:file-list="data.fileList"31+ @before-remove="handleBeforeRemove" @success="handleUploadSuccess">
32- :action="upload.url"
33- :limit="1"
34- :show-file-list="true"
35- :auto-upload="false"
36- draggable
37- :headers="upload.headers"
38- @change="handleFileChange"
39- @before-remove="handleBeforeRemove"
40- @success="handleUploadSuccess"
41- >
42 <template #upload-button>32 <template #upload-button>
43 <div class="upload-info flex-col">33 <div class="upload-info flex-col">
44 <div class="flex-col">34 <div class="flex-col">
45 <div class="upload-icon">35 <div class="upload-icon">
46- <icon-plus :style="{fontSize: '48px', color: '#86909C'}"/>36+ <icon-plus :style="{ fontSize: '48px', color: '#86909C' }" />
47 </div>37 </div>
48 <div class="tips-1">38 <div class="tips-1">
49 <span>{{ $t('packageManage.AddPackageDlg.5myq6nnecc47') }}</span>39 <span>{{ $t('packageManage.AddPackageDlg.5myq6nnecc47') }}</span>
50- <div v-if="data.systemUploadPath">{{$t('packageManage.AddPackageDlg.5myq6nnecc48') + data.systemUploadPath + $t('packageManage.AddPackageDlg.5myq6nnecc49')}}</div>40+ <div v-if="data.systemUploadPath">{{ $t('packageManage.AddPackageDlg.5myq6nnecc48') +
41+ data.systemUploadPath + $t('packageManage.AddPackageDlg.5myq6nnecc49') }}</div>
51 </div>42 </div>
52 </div>43 </div>
53 </div>44 </div>
@@ -55,8 +46,8 @@
55 </a-upload>46 </a-upload>
56 </a-form-item>47 </a-form-item>
57 <a-form-item field="remark" :label="$t('packageManage.AddPackageDlg.5myq6nnebn44')">48 <a-form-item field="remark" :label="$t('packageManage.AddPackageDlg.5myq6nnebn44')">
58- <a-textarea v-model="data.formData.remark" :auto-size="{minRows:2, maxRows:2}"49+ <a-textarea v-model="data.formData.remark" :auto-size="{ minRows: 2, maxRows: 2 }"
59- :placeholder="$t('packageManage.AddPackageDlg.5myq6nnebn43')"/>50+ :placeholder="$t('packageManage.AddPackageDlg.5myq6nnebn43')" />
60 </a-form-item>51 </a-form-item>
61 </a-form>52 </a-form>
62 </a-modal>53 </a-modal>
Mbase-ops/web-ui/src/views/ops/install/components/enterprise/ClusterConfig.vue+1-2
@@ -54,8 +54,7 @@
54 </a-form-item>54 </a-form-item>
55 </a-col>55 </a-col>
56 </a-row>56 </a-row>
57- <a-form-item v-if="installType === 'import'" field="isEnvSeparate" :label="$t('simple.InstallConfig.else11')"57+ <a-form-item field="isEnvSeparate" :label="$t('simple.InstallConfig.else11')" validate-trigger="blur">
58- validate-trigger="blur">
59 <a-switch v-model="data.form.isEnvSeparate" />58 <a-switch v-model="data.form.isEnvSeparate" />
60 </a-form-item>59 </a-form-item>
61 <a-form-item v-if="data.form.isEnvSeparate" field="envPath" :label="$t('simple.InstallConfig.else9')"60 <a-form-item v-if="data.form.isEnvSeparate" field="envPath" :label="$t('simple.InstallConfig.else9')"
Abase-ops/web-ui/src/views/ops/install/components/enterprise/ClusterConfigAll.vue+301-0
@@ -0,0 +1,301 @@
1+<template>
2+ <div class="cluster-config-c">
3+ <div class="flex-col">
4+ <div class="flex-col-start" :style="{ width: '80%' }">
5+ <a-tabs size="medium" type="card-gutter" :editable="true" :show-add-button="data.form.nodes.length <= 8"
6+ style="width: 100%;" @add="handleAdd" @delete="handleDelete" v-model:active-key="data.activeTab" show-add-button
7+ auto-switch>
8+ <a-tab-pane :title="$t('enterprise.ClusterConfig.5mpm3ku3go40')" key="clusterPane" :closable="false">
9+ <cluster-form :form-data="data.form.cluster" ref="clusterFormRef"></cluster-form>
10+ </a-tab-pane>
11+ <a-tab-pane v-for="(item, index) in data.form.nodes" :key="item.id"
12+ :closable="data.form.nodes.length > (data.form.cluster.isInstallCM ? 3 : 1) && item.clusterRole !== ClusterRoleEnum.MASTER">
13+ <template #title>
14+ {{ item.clusterRole === ClusterRoleEnum.MASTER ? $t('enterprise.ClusterConfig.else3') :
15+ ($t('enterprise.ClusterConfig.else4') + index) }}
16+ </template>
17+ <node-info :form-data="item" :cluster-data="data.form.cluster"
18+ :ref="(el: any) => setRefMap(el, item.id)"></node-info>
19+ </a-tab-pane>
20+ </a-tabs>
21+ </div>
22+ </div>
23+ </div>
24+</template>
25+ 
26+<script lang="ts" setup>
27+import { ref, reactive, onMounted, watch, nextTick, computed, inject, provide } from 'vue'
28+import { KeyValue } from '@/types/global';
29+import ClusterForm from './components/ClusterForm.vue';
30+import NodeInfo from './components/NodeInfo.vue';
31+import { ClusterRoleEnum, DeployTypeEnum, EnterpriseInstallConfig } from '@/types/ops/install'
32+import { Message } from '@arco-design/web-vue'
33+import { FormInstance } from '@arco-design/web-vue/es/form'
34+import { useOpsStore } from '@/store'
35+import { useI18n } from 'vue-i18n'
36+import { install } from 'vue-demi';
37+const { t } = useI18n()
38+const installStore = useOpsStore()
39+ 
40+const data = reactive<KeyValue>({
41+ activeTab: 'clusterPane',
42+ form: {
43+ cluster: {
44+ clusterId: '',
45+ clusterName: '',
46+ installPath: '/opt/openGauss/install/app',
47+ installPackagePath: '/opt/software/openGauss',
48+ logPath: '/opt/openGauss/log/omm',
49+ tmpPath: '/opt/openGauss/tmp',
50+ omToolsPath: '/opt/openGauss/install/om',
51+ corePath: '/opt/openGauss/corefile',
52+ port: '5432',
53+ enableDCF: false,
54+ databaseUsername: '',
55+ databasePassword: '',
56+ isInstallCM: false,
57+ isEnvSeparate: false,
58+ envPath: '',
59+ azId: '',
60+ azName: ''
61+ },
62+ nodes: []
63+ }
64+})
65+ 
66+const loadingFunc = inject<any>('loading')
67+ 
68+onMounted(() => {
69+ initData()
70+})
71+ 
72+const installType = computed(() => installStore.getInstallConfig.installType)
73+ 
74+watch(() => data.form.cluster.isInstallCM, (val) => {
75+ if (val) {
76+ if (data.form.nodes.length < 3) {
77+ for (let i = 0; i <= (3 - data.form.nodes.length); i++) {
78+ addNode(data.form.nodes.length - 1)
79+ }
80+ }
81+ }
82+})
83+ 
84+const initData = () => {
85+ if (Object.keys(installStore.getEnterpriseConfig).length) {
86+ Object.assign(data.form.cluster, installStore.getEnterpriseConfig)
87+ if (installStore.getEnterpriseConfig.nodeConfigList.length) {
88+ installStore.getEnterpriseConfig.nodeConfigList.forEach((item) => {
89+ data.form.nodes.push(item)
90+ })
91+ }
92+ } else {
93+ addNode(0, true)
94+ }
95+}
96+ 
97+const addNode = (index: number, isMaster: boolean = false) => {
98+ const nodeData = {
99+ id: new Date().getTime() + '_' + index + '',
100+ clusterRole: ClusterRoleEnum.SLAVE,
101+ hostId: '',
102+ isNeedPwd: false,
103+ rootPassword: '',
104+ publicIp: '',
105+ privateIp: '',
106+ hostname: '',
107+ installUserId: '',
108+ installUsername: '',
109+ isCMMaster: false,
110+ cmDataPath: '/opt/openGauss/data/cmserver',
111+ cmPort: '15300',
112+ dataPath: '/opt/openGauss/install/data/dn',
113+ azPriority: 1
114+ }
115+ if (isMaster) {
116+ nodeData.clusterRole = ClusterRoleEnum.MASTER
117+ nodeData.isCMMaster = true
118+ }
119+ data.form.nodes.splice(index + 1, 0, nodeData)
120+}
121+ 
122+const handleAdd = () => {
123+ addNode(data.form.nodes.length - 1)
124+}
125+ 
126+const handleDelete = (val: any) => {
127+ const currentNode = data.form.nodes.find((item: KeyValue) => {
128+ return item.id === val
129+ })
130+ data.form.nodes = data.form.nodes.filter((item: KeyValue) => {
131+ return item.id !== val
132+ })
133+ if (currentNode && currentNode.isCMMaster) {
134+ // default first Master is Master
135+ data.form.nodes[0].isCMMaster = true
136+ }
137+ nextTick(() => {
138+ data.activeTab = data.form.nodes[0].id
139+ })
140+}
141+ 
142+const isHasCMMaster = (id: string, isMaster: boolean) => {
143+ if (isMaster) {
144+ data.form.nodes.forEach((item: KeyValue) => {
145+ if (item.id !== id) {
146+ item.isCMMaster = false
147+ }
148+ })
149+ } else {
150+ const findTrueNode = data.form.nodes.filter((item: KeyValue) => {
151+ return item.isCMMaster === true
152+ })
153+ const currentNode = data.form.nodes.find((item: KeyValue) => {
154+ return item.id === id
155+ })
156+ if (!findTrueNode.length) {
157+ currentNode.isCMMaster = true
158+ Message.warning('One node must be the primary node')
159+ }
160+ }
161+}
162+ 
163+provide('cmUtil', {
164+ isHasCMMaster
165+})
166+ 
167+const refObj = ref<KeyValue>({})
168+const setRefMap = (el: HTMLElement, key: string) => {
169+ if (!refObj.value[key]) {
170+ refObj.value[key] = el
171+ }
172+}
173+ 
174+const refList = computed(() => {
175+ const result = []
176+ const refs = Object.keys(refObj.value)
177+ if (refs.length) {
178+ for (let key in refObj.value) {
179+ if (refObj.value[key]) {
180+ result.push(refObj.value[key])
181+ }
182+ }
183+ }
184+ return result
185+})
186+ 
187+const saveStore = () => {
188+}
189+ 
190+const azFormRef = ref<FormInstance>()
191+const clusterFormRef = ref<null | InstanceType<typeof ClusterForm>>(null)
192+const beforeConfirm = async (): Promise<boolean> => {
193+ let validRes = true
194+ if (installType.value !== 'import') {
195+ const azFormValidaRes = await azFormRef.value?.validate()
196+ if (azFormValidaRes) {
197+ validRes = false
198+ }
199+ }
200+ // valid cluster form
201+ if (validRes) {
202+ const clusterFormValidaRes: any = await clusterFormRef.value?.formValidate()
203+ if (!clusterFormValidaRes.res) {
204+ validRes = false
205+ data.activeTab = 'clusterPane'
206+ }
207+ }
208+ // valid nodes form
209+ if (validRes) {
210+ const methodArr = []
211+ for (let i = 0; i < refList.value.length; i++) {
212+ if (refList.value[i]) {
213+ methodArr.push(refList.value[i].formValidate())
214+ }
215+ }
216+ const nodeFormValid = await Promise.all(methodArr)
217+ 
218+ const nodeValidRes = nodeFormValid.filter((item: KeyValue) => {
219+ return item.res === false
220+ })
221+ if (nodeValidRes.length) {
222+ data.activeTab = nodeValidRes[0].id
223+ validRes = false
224+ }
225+ }
226+ // if (validRes) {
227+ // loadingFunc.toLoading()
228+ // const methodArr = []
229+ // for (let i = 0; i < refList.value.length; i++) {
230+ // if (refList.value[i]) {
231+ // methodArr.push(refList.value[i].dataValidate())
232+ // }
233+ // }
234+ // const nodeFormValid = await Promise.all(methodArr)
235+ 
236+ // const nodeValidRes = nodeFormValid.filter((item: KeyValue) => {
237+ // return item.res === false
238+ // })
239+ // if (nodeValidRes.length) {
240+ // data.activeTab = nodeValidRes[0].id
241+ // validRes = false
242+ // }
243+ // }
244+ if (validRes) {
245+ saveClusterData()
246+ saveNodesData()
247+ loadingFunc.cancelLoading()
248+ return true
249+ }
250+ loadingFunc.cancelLoading()
251+ return false
252+}
253+ 
254+const saveClusterData = () => {
255+ const param = JSON.parse(JSON.stringify(data.form.cluster))
256+ installStore.setInstallContext({
257+ clusterId: param.clusterId,
258+ clusterName: param.clusterName,
259+ deployType: DeployTypeEnum.CLUSTER,
260+ envPath: param.envPath
261+ })
262+ installStore.setEnterpriseConfig(param as EnterpriseInstallConfig)
263+ console.log('show store info', installStore.getInstallConfig, installStore.getEnterpriseConfig);
264+ 
265+}
266+ 
267+const saveNodesData = () => {
268+ const nodes = JSON.parse(JSON.stringify(data.form.nodes))
269+ const param = {
270+ nodeConfigList: nodes
271+ }
272+ installStore.setEnterpriseConfig(param as EnterpriseInstallConfig)
273+ console.log('show store info2', installStore.getEnterpriseConfig);
274+}
275+ 
276+defineExpose({
277+ beforeConfirm,
278+ saveStore
279+})
280+ 
281+</script>
282+ 
283+<style lang="less" scoped>
284+:deep(.arco-tabs-nav-tab) {
285+ color: var(--color-text-1);
286+}
287+ 
288+.cluster-config-c {
289+ padding: 20px;
290+ height: 100%;
291+ overflow-y: auto;
292+ 
293+ .node-top {
294+ height: 34px;
295+ display: flex;
296+ background-color: #f2f3f5;
297+ border-radius: 8px;
298+ padding: 8px 12px;
299+ }
300+}
301+</style>
Mbase-ops/web-ui/src/views/ops/install/components/enterprise/EnterpriseImport.vue+9-21
@@ -13,9 +13,11 @@
13 </a-steps>13 </a-steps>
14 <a-divider />14 <a-divider />
15 <!-- one -->15 <!-- one -->
16- <cluster-config v-if="currStep === STEP_ENUM.CLUSTER" ref="clusterConfigRef"></cluster-config>16+ <!-- <cluster-config v-if="currStep === STEP_ENUM.CLUSTER" ref="clusterConfigRef"></cluster-config> -->
17 <!-- two -->17 <!-- two -->
18- <node-config v-if="currStep === STEP_ENUM.NODE" ref="nodeConfigRef"></node-config>18+ <!-- <node-config v-if="currStep === STEP_ENUM.NODE" ref="nodeConfigRef"></node-config> -->
19+ <!-- one -->
20+ <cluster-config-all v-if="currStep === STEP_ENUM.CLUSTER" ref="clusterConfigAllRef"></cluster-config-all>
19 <!-- four -->21 <!-- four -->
20 <install-prompt v-if="currStep === STEP_ENUM.PROMPT" ref="promptRef" />22 <install-prompt v-if="currStep === STEP_ENUM.PROMPT" ref="promptRef" />
21 <!-- five -->23 <!-- five -->
@@ -24,10 +26,10 @@
24</template>26</template>
25 27 
26<script setup lang="ts">28<script setup lang="ts">
27-import ClusterConfig from '@/views/ops/install/components/enterprise/ClusterConfig.vue'29+// import ClusterConfig from '@/views/ops/install/components/enterprise/ClusterConfig.vue'
28-import NodeConfig from '@/views/ops/install/components/enterprise/NodeConfig.vue'30+// import NodeConfig from '@/views/ops/install/components/enterprise/NodeConfig.vue'
31+import ClusterConfigAll from './ClusterConfigAll.vue'
29import { computed, ref, inject, onMounted } from 'vue'32import { computed, ref, inject, onMounted } from 'vue'
30-import EnvMonitor from './EnvMonitor.vue'
31import InstallPrompt from './InstallPrompt.vue'33import InstallPrompt from './InstallPrompt.vue'
32import ExeImport from '../ExeImport.vue'34import ExeImport from '../ExeImport.vue'
33import { useOpsStore } from '@/store'35import { useOpsStore } from '@/store'
@@ -36,7 +38,6 @@ const installStore = useOpsStore()
36 38 
37enum STEP_ENUM {39enum STEP_ENUM {
38 CLUSTER = 1,40 CLUSTER = 1,
39- NODE,
40 PROMPT,41 PROMPT,
41 EXE42 EXE
42}43}
@@ -51,27 +52,14 @@ onMounted(() => {
51 loadingFunc.setBackBtnShow(true)52 loadingFunc.setBackBtnShow(true)
52})53})
53 54 
54-const clusterConfigRef = ref<InstanceType<typeof ClusterConfig> | null>(null)55+const clusterConfigAllRef = ref<InstanceType<typeof ClusterConfigAll> | null>(null)
55-const nodeConfigRef = ref<InstanceType<typeof NodeConfig> | null>(null)
56-const envRef = ref<InstanceType<typeof EnvMonitor> | null>(null)
57 56 
58const saveStore = () => {57const saveStore = () => {
59- if (installProps.currStep === STEP_ENUM.CLUSTER) {
60- clusterConfigRef.value?.saveStore()
61- }
62- if (installProps.currStep === STEP_ENUM.NODE) {
63- nodeConfigRef.value?.saveStore()
64- }
65}58}
66 59 
67const beforeConfirm = async (): Promise<boolean> => {60const beforeConfirm = async (): Promise<boolean> => {
68 if (installProps.currStep === STEP_ENUM.CLUSTER) {61 if (installProps.currStep === STEP_ENUM.CLUSTER) {
69- const res = await clusterConfigRef.value?.beforeConfirm()62+ const res = await clusterConfigAllRef.value?.beforeConfirm()
70- if (!res) return false
71- return res
72- }
73- if (installProps.currStep === STEP_ENUM.NODE) {
74- const res = await nodeConfigRef.value?.beforeConfirm()
75 if (!res) return false63 if (!res) return false
76 return res64 return res
77 }65 }
Mbase-ops/web-ui/src/views/ops/install/components/enterprise/EnterpriseInstall.vue+10-18
@@ -14,9 +14,11 @@
14 </a-steps>14 </a-steps>
15 <a-divider />15 <a-divider />
16 <!-- one -->16 <!-- one -->
17- <cluster-config v-if="currStep === STEP_ENUM.CLUSTER" ref="clusterConfigRef"></cluster-config>17+ <!-- <cluster-config v-if="currStep === STEP_ENUM.CLUSTER" ref="clusterConfigRef"></cluster-config> -->
18 <!-- two -->18 <!-- two -->
19- <node-config v-if="currStep === STEP_ENUM.NODE" ref="nodeConfigRef"></node-config>19+ <!-- <node-config v-if="currStep === STEP_ENUM.NODE" ref="nodeConfigRef"></node-config> -->
20+ <!-- one -->
21+ <cluster-config-all v-if="currStep === STEP_ENUM.CLUSTER" ref="clusterConfigAllRef"></cluster-config-all>
20 <!-- three -->22 <!-- three -->
21 <env-monitor v-if="currStep === STEP_ENUM.ENV" ref="envRef" />23 <env-monitor v-if="currStep === STEP_ENUM.ENV" ref="envRef" />
22 <!-- four -->24 <!-- four -->
@@ -28,8 +30,7 @@
28</template>30</template>
29 31 
30<script setup lang="ts">32<script setup lang="ts">
31-import ClusterConfig from '@/views/ops/install/components/enterprise/ClusterConfig.vue'33+import ClusterConfigAll from './ClusterConfigAll.vue'
32-import NodeConfig from '@/views/ops/install/components/enterprise/NodeConfig.vue'
33import { computed, ref } from 'vue'34import { computed, ref } from 'vue'
34import EnvMonitor from './EnvMonitor.vue'35import EnvMonitor from './EnvMonitor.vue'
35import InstallPrompt from './InstallPrompt.vue'36import InstallPrompt from './InstallPrompt.vue'
@@ -41,7 +42,6 @@ const installStore = useOpsStore()
41 42 
42enum STEP_ENUM {43enum STEP_ENUM {
43 CLUSTER = 1,44 CLUSTER = 1,
44- NODE,
45 ENV,45 ENV,
46 PROMPT,46 PROMPT,
47 EXE47 EXE
@@ -51,27 +51,19 @@ const installProps = defineProps({
51 currStep: Number51 currStep: Number
52})52})
53 53 
54-const clusterConfigRef = ref<InstanceType<typeof ClusterConfig> | null>(null)54+const clusterConfigAllRef = ref<InstanceType<typeof ClusterConfigAll> | null>(null)
55-const nodeConfigRef = ref<InstanceType<typeof NodeConfig> | null>(null)55+ 
56const envRef = ref<InstanceType<typeof EnvMonitor> | null>(null)56const envRef = ref<InstanceType<typeof EnvMonitor> | null>(null)
57 57 
58const saveStore = () => {58const saveStore = () => {
59 if (installProps.currStep === STEP_ENUM.CLUSTER) {59 if (installProps.currStep === STEP_ENUM.CLUSTER) {
60- clusterConfigRef.value?.saveStore()60+ clusterConfigAllRef.value?.saveStore()
61- }
62- if (installProps.currStep === STEP_ENUM.NODE) {
63- nodeConfigRef.value?.saveStore()
64 }61 }
65}62}
66 63 
67const beforeConfirm = async (): Promise<boolean> => {64const beforeConfirm = async (): Promise<boolean> => {
68 if (installProps.currStep === STEP_ENUM.CLUSTER) {65 if (installProps.currStep === STEP_ENUM.CLUSTER) {
69- const res = await clusterConfigRef.value?.beforeConfirm()66+ const res = await clusterConfigAllRef.value?.beforeConfirm()
70- if (!res) return false
71- return res
72- }
73- if (installProps.currStep === STEP_ENUM.NODE) {
74- const res = await nodeConfigRef.value?.beforeConfirm()
75 if (!res) return false67 if (!res) return false
76 return res68 return res
77 }69 }
@@ -94,6 +86,6 @@ defineExpose({
94<style lang="less" scoped>86<style lang="less" scoped>
95.simple-install-c {87.simple-install-c {
96 padding: 20px;88 padding: 20px;
97- height: 100%;89+ height: calc(100% - 36px);
98}90}
99</style>91</style>
Mbase-ops/web-ui/src/views/ops/install/components/enterprise/ExeInstall.vue+1-1
@@ -150,7 +150,7 @@ const hostChange = () => {
150const getTermObj = (): Terminal => {150const getTermObj = (): Terminal => {
151 return new Terminal({151 return new Terminal({
152 fontSize: 14,152 fontSize: 14,
153- rows: 40,153+ rows: 30,
154 cols: 100,154 cols: 100,
155 cursorBlink: true,155 cursorBlink: true,
156 convertEol: true,156 convertEol: true,
Mbase-ops/web-ui/src/views/ops/install/components/enterprise/NodeConfig.vue+4-4
@@ -102,10 +102,10 @@ import { ClusterRoleEnum, EnterpriseInstallConfig } from '@/types/ops/install' /
102import { hostListAll, hostUserListWithoutRoot, azListAll, portUsed, pathEmpty, fileExist, hostPingById } from '@/api/ops'102import { hostListAll, hostUserListWithoutRoot, azListAll, portUsed, pathEmpty, fileExist, hostPingById } from '@/api/ops'
103import { Message } from '@arco-design/web-vue'103import { Message } from '@arco-design/web-vue'
104import { useOpsStore } from '@/store'104import { useOpsStore } from '@/store'
105-import { useI18n } from 'vue-i18n'
106import { encryptPassword } from '@/utils/jsencrypt'105import { encryptPassword } from '@/utils/jsencrypt'
107import { FormInstance } from '@arco-design/web-vue/es/form'106import { FormInstance } from '@arco-design/web-vue/es/form'
108import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue";107import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue";
108+import { useI18n } from 'vue-i18n'
109const { t } = useI18n()109const { t } = useI18n()
110const installStore = useOpsStore()110const installStore = useOpsStore()
111 111 
@@ -558,7 +558,7 @@ const validateSpecialFields = async () => {
558 if (isInstallCM.value) {558 if (isInstallCM.value) {
559 validMethodArr.push(validatePort(data.nodeList[i].cmPort, encryptPwd, data.nodeList[i].hostId))559 validMethodArr.push(validatePort(data.nodeList[i].cmPort, encryptPwd, data.nodeList[i].hostId))
560 }560 }
561- if (installStore.getInstallConfig.envPath) {561+ if (installStore.getInstallConfig.envPath && installType.value === 'import') {
562 validMethodArr.push(validateFile(installStore.getInstallConfig.envPath, encryptPwd, data.nodeList[i].hostId))562 validMethodArr.push(validateFile(installStore.getInstallConfig.envPath, encryptPwd, data.nodeList[i].hostId))
563 }563 }
564 if (validMethodArr.length) {564 if (validMethodArr.length) {
@@ -605,7 +605,7 @@ const validateSpecialFields = async () => {
605 })605 })
606 result = false606 result = false
607 }607 }
608- if (installStore.getInstallConfig.envPath && !validResult[4]) {608+ if (installType.value === 'import' && installStore.getInstallConfig.envPath && !validResult[4]) {
609 // envPath valid609 // envPath valid
610 refList.value[i].setFields({610 refList.value[i].setFields({
611 hostId: {611 hostId: {
@@ -616,7 +616,7 @@ const validateSpecialFields = async () => {
616 result = false616 result = false
617 }617 }
618 } else {618 } else {
619- if (installStore.getInstallConfig.envPath && !validResult[3]) {619+ if (installType.value === 'import' && installStore.getInstallConfig.envPath && !validResult[3]) {
620 // envPath valid620 // envPath valid
621 refList.value[i].setFields({621 refList.value[i].setFields({
622 hostId: {622 hostId: {
Abase-ops/web-ui/src/views/ops/install/components/enterprise/components/ClusterForm.vue+363-0
@@ -0,0 +1,363 @@
1+<template>
2+ <div class="cluster-form-c">
3+ <a-form :model="data" :rules="formRules" auto-label-width ref="formRef">
4+ <a-form-item field="clusterId" :label="$t('enterprise.ClusterConfig.5mpm3ku3hcg0')" validate-trigger="blur">
5+ <a-input v-model.trim="data.clusterId" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3hik0')" />
6+ </a-form-item>
7+ <a-form-item field="installPath" :label="$t('enterprise.ClusterConfig.5mpm3ku3hv40')" validate-trigger="blur">
8+ <a-input v-model.trim="data.installPath" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3i340')" />
9+ </a-form-item>
10+ <a-form-item field="installPackagePath" :label="$t('simple.InstallConfig.else6')" validate-trigger="blur">
11+ <a-input v-model.trim="data.installPackagePath" :placeholder="$t('simple.InstallConfig.else7')" />
12+ </a-form-item>
13+ <a-form-item field="port" :label="$t('enterprise.ClusterConfig.5mpm3ku3iz80')" validate-trigger="blur">
14+ <a-input v-model.trim="data.port" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3j300')" />
15+ </a-form-item>
16+ <a-form-item field="databaseUsername" :label="$t('enterprise.ClusterConfig.5mpm3ku3j6k0')" validate-trigger="blur"
17+ v-if="installType === 'import'">
18+ <a-input v-model.trim="data.databaseUsername" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3j9s0')"
19+ allow-clear />
20+ </a-form-item>
21+ <a-form-item field="databasePassword" :label="$t('enterprise.ClusterConfig.5mpm3ku3jdg0')" validate-trigger="blur">
22+ <a-input-password v-model="data.databasePassword" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3ji00')"
23+ allow-clear />
24+ </a-form-item>
25+ <a-row :gutter="16">
26+ <a-col :span="12">
27+ <a-form-item field="isInstallCM" :label="$t('enterprise.NodeConfig.else3')">
28+ <a-switch @change="isInstallCMChange" v-model="data.isInstallCM" />
29+ </a-form-item>
30+ </a-col>
31+ <a-col :span="12">
32+ <a-form-item v-if="data.isInstallCM" field="enableDCF" :label="$t('enterprise.ClusterConfig.5mpm3ku3jkw0')">
33+ <a-checkbox v-model="data.enableDCF">
34+ </a-checkbox>
35+ </a-form-item>
36+ </a-col>
37+ </a-row>
38+ <a-form-item field="isEnvSeparate" :label="$t('simple.InstallConfig.else11')" validate-trigger="blur">
39+ <a-switch v-model="data.isEnvSeparate" />
40+ </a-form-item>
41+ <a-form-item v-if="data.isEnvSeparate" field="envPath" :label="$t('simple.InstallConfig.else9')"
42+ validate-trigger="blur">
43+ <a-input v-model.trim="data.envPath" :placeholder="$t('simple.InstallConfig.else10')" />
44+ </a-form-item>
45+ <a-collapse :bordered="false">
46+ <a-collapse-item :header="$t('components.openLooKeng.5mpiji1qpcc52')" key="1">
47+ <a-form-item field="azId" :label="$t('enterprise.NodeConfig.5mpme7w6aj40')" validate-trigger="change">
48+ <a-select :loading="azData.azListLoading" v-model="data.azId"
49+ :placeholder="$t('enterprise.NodeConfig.5mpme7w6ap00')" @change="azChange"
50+ @popup-visible-change="azPopChange">
51+ <a-option v-for="item in azData.azList" :key="item.azId" :value="item.azId">{{
52+ item.name
53+ }}</a-option>
54+ </a-select>
55+ </a-form-item>
56+ <a-form-item field="logPath" :label="$t('enterprise.ClusterConfig.5mpm3ku3i6s0')" validate-trigger="blur">
57+ <a-input v-model.trim="data.logPath" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3iag0')" />
58+ </a-form-item>
59+ <a-form-item field="tmpPath" :label="$t('enterprise.ClusterConfig.5mpm3ku3ie40')" validate-trigger="blur">
60+ <a-input v-model.trim="data.tmpPath" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3ihg0')" />
61+ </a-form-item>
62+ <a-form-item field="omToolsPath" :label="$t('enterprise.ClusterConfig.5mpm3ku3il80')" validate-trigger="blur">
63+ <a-input v-model.trim="data.omToolsPath" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3iok0')" />
64+ </a-form-item>
65+ <a-form-item field="corePath" :label="$t('enterprise.ClusterConfig.5mpm3ku3is00')" validate-trigger="blur">
66+ <a-input v-model.trim="data.corePath" :placeholder="$t('enterprise.ClusterConfig.5mpm3ku3ivk0')" />
67+ </a-form-item>
68+ </a-collapse-item>
69+ </a-collapse>
70+ </a-form>
71+ </div>
72+</template>
73+ 
74+<script setup lang="ts">
75+import { KeyValue } from '@/types/global'
76+import { useOpsStore } from '@/store'
77+import { FormInstance } from '@arco-design/web-vue/es/form'
78+import { PropType, ref, computed, defineProps, watch } from 'vue'
79+import { hasName, azListAll } from '@/api/ops'
80+import { useI18n } from 'vue-i18n'
81+import { onMounted } from 'vue'
82+import { reactive } from 'vue'
83+import { Message } from '@arco-design/web-vue'
84+const { t } = useI18n()
85+ 
86+const installStore = useOpsStore()
87+ 
88+const props = defineProps({
89+ formData: {
90+ type: Object as PropType<KeyValue>,
91+ required: true
92+ }
93+})
94+ 
95+const installType = computed(() => installStore.getInstallConfig.installType)
96+ 
97+const emits = defineEmits([`update:formData`])
98+const data = computed({
99+ get: () => props.formData,
100+ set: (val) => {
101+ emits(`update:formData`, val)
102+ }
103+})
104+ 
105+const azData = reactive<KeyValue>({
106+ azListLoading: false,
107+ azObj: {},
108+ azList: []
109+})
110+ 
111+onMounted(() => {
112+ getAZList()
113+})
114+ 
115+const formRules = computed(() => {
116+ return {
117+ clusterId: [
118+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3hik0') },
119+ {
120+ validator: (value: any, cb: any) => {
121+ return new Promise(resolve => {
122+ if (!value.trim()) {
123+ cb(t('enterprise.ClusterConfig.else2'))
124+ resolve(false)
125+ }
126+ const param = {
127+ name: value
128+ }
129+ hasName(param).then((res: KeyValue) => {
130+ if (Number(res.code) === 200) {
131+ if (res.data.has === 'Y') {
132+ cb(t('enterprise.ClusterConfig.5mpm3ku3jo00'))
133+ resolve(false)
134+ } else {
135+ resolve(true)
136+ }
137+ } else {
138+ cb(t('enterprise.ClusterConfig.5mpm3ku3jqo0'))
139+ resolve(false)
140+ }
141+ })
142+ })
143+ }
144+ }
145+ ],
146+ installPath: [
147+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3i340') },
148+ {
149+ validator: (value: any, cb: any) => {
150+ return new Promise(resolve => {
151+ if (!value.trim()) {
152+ cb(t('enterprise.ClusterConfig.else2'))
153+ resolve(false)
154+ } else {
155+ resolve(true)
156+ }
157+ })
158+ }
159+ }
160+ ],
161+ installPackagePath: [
162+ { required: true, 'validate-trigger': 'blur', message: t('simple.InstallConfig.else7') },
163+ {
164+ validator: (value: any, cb: any) => {
165+ return new Promise(resolve => {
166+ if (!value.trim()) {
167+ cb(t('enterprise.ClusterConfig.else2'))
168+ resolve(false)
169+ } else {
170+ resolve(true)
171+ }
172+ })
173+ }
174+ }
175+ ],
176+ logPath: [
177+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3iag0') },
178+ {
179+ validator: (value: any, cb: any) => {
180+ return new Promise(resolve => {
181+ if (!value.trim()) {
182+ cb(t('enterprise.ClusterConfig.else2'))
183+ resolve(false)
184+ } else {
185+ resolve(true)
186+ }
187+ })
188+ }
189+ }
190+ ],
191+ tmpPath: [
192+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3ihg0') },
193+ {
194+ validator: (value: any, cb: any) => {
195+ return new Promise(resolve => {
196+ if (!value.trim()) {
197+ cb(t('enterprise.ClusterConfig.else2'))
198+ resolve(false)
199+ } else {
200+ resolve(true)
201+ }
202+ })
203+ }
204+ }
205+ ],
206+ omToolsPath: [
207+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3iok0') },
208+ {
209+ validator: (value: any, cb: any) => {
210+ return new Promise(resolve => {
211+ if (!value.trim()) {
212+ cb(t('enterprise.ClusterConfig.else2'))
213+ resolve(false)
214+ } else {
215+ resolve(true)
216+ }
217+ })
218+ }
219+ }
220+ ],
221+ corePath: [
222+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3ivk0') },
223+ {
224+ validator: (value: any, cb: any) => {
225+ return new Promise(resolve => {
226+ if (!value.trim()) {
227+ cb(t('enterprise.ClusterConfig.else2'))
228+ resolve(false)
229+ } else {
230+ resolve(true)
231+ }
232+ })
233+ }
234+ }
235+ ],
236+ port: [
237+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3j300') },
238+ {
239+ validator: (value: any, cb: any) => {
240+ return new Promise(resolve => {
241+ const reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
242+ const re = new RegExp(reg)
243+ if (re.test(value)) {
244+ resolve(true)
245+ } else {
246+ cb(t('simple.InstallConfig.else2'))
247+ resolve(false)
248+ }
249+ })
250+ }
251+ }
252+ ],
253+ databaseUsername: [
254+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3j9s0') },
255+ {
256+ validator: (value: any, cb: any) => {
257+ return new Promise(resolve => {
258+ if (!value.trim()) {
259+ cb(t('enterprise.ClusterConfig.else2'))
260+ resolve(false)
261+ } else {
262+ resolve(true)
263+ }
264+ })
265+ }
266+ }
267+ ],
268+ databasePassword: [
269+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.ClusterConfig.5mpm3ku3ji00') },
270+ {
271+ validator: (value: any, cb: any) => {
272+ return new Promise(resolve => {
273+ const reg = /^(?![\da-z]+$)(?![\dA-Z]+$)(?![\d~!@#$%^&*()_=+\|{};:,<.>/?]+$)(?![a-zA-Z]+$)(?![a-z~!@#$%^&*()_=+\|{};:,<.>/?]+$)(?![A-Z~!@#$%^&*()_=+\|{};:,<.>/?]+$)[\da-zA-z~!@#$%^&*()_=+\|{};:,<.>/?]{8,}$/
274+ const re = new RegExp(reg)
275+ if (re.test(value)) {
276+ resolve(true)
277+ } else {
278+ cb(t('simple.InstallConfig.else5'))
279+ resolve(false)
280+ }
281+ })
282+ }
283+ }
284+ ],
285+ envPath: [
286+ { required: true, 'validate-trigger': 'blur', message: t('simple.InstallConfig.else10') },
287+ {
288+ validator: (value: any, cb: any) => {
289+ return new Promise(resolve => {
290+ if (!value.trim()) {
291+ cb(t('enterprise.ClusterConfig.else2'))
292+ resolve(false)
293+ } else {
294+ resolve(true)
295+ }
296+ })
297+ }
298+ }
299+ ],
300+ azId: [{ required: true, 'validate-trigger': 'change', message: t('enterprise.NodeConfig.5mpme7w6ap00') }]
301+ }
302+})
303+ 
304+// methods
305+ 
306+const getAZList = () => {
307+ azData.azListLoading = true
308+ azListAll().then((res: KeyValue) => {
309+ if (Number(res.code) === 200) {
310+ azData.azList = []
311+ azData.azList = res.data
312+ res.data.forEach((item: KeyValue) => {
313+ azData.azObj[item.azId] = item.name
314+ })
315+ data.value.azId = res.data[0].azId
316+ data.value.azName = res.data[0].name
317+ } else {
318+ Message.error('Failed to obtain the AZ list data')
319+ }
320+ }).finally(() => {
321+ azData.azListLoading = false
322+ })
323+}
324+ 
325+const azPopChange = (val: any) => {
326+ if (val) {
327+ getAZList()
328+ }
329+}
330+ 
331+const azChange = () => {
332+ if (data.value.azId) {
333+ if (azData.azObj[data.value.azId]) {
334+ data.value.azName = azData.azObj[data.value.azId]
335+ }
336+ }
337+}
338+ 
339+const isInstallCMChange = (val: boolean) => {
340+ if (!val) {
341+ data.value.enableDCF = false
342+ }
343+}
344+ 
345+const formRef = ref<null | FormInstance>(null)
346+const formValidate = async (): Promise<KeyValue> => {
347+ const validRes = await formRef.value?.validate()
348+ const result = {
349+ res: !validRes
350+ }
351+ return result
352+}
353+ 
354+defineExpose({
355+ formValidate
356+})
357+ 
358+</script>
359+<style lang="less" scoped>
360+.cluster-form-c {
361+ padding: 20px;
362+}
363+</style>
Abase-ops/web-ui/src/views/ops/install/components/enterprise/components/NodeInfo.vue+505-0
@@ -0,0 +1,505 @@
1+<template>
2+ <div class="node-form-c">
3+ <a-form :model="form" :rules="formRules" auto-label-width ref="formRef">
4+ <a-form-item field="hostId" :label="$t('enterprise.NodeConfig.5mpme7w6azo0')">
5+ <a-select :loading="data.hostListLoading" v-model="form.hostId" @change="changeHostId"
6+ :placeholder="$t('enterprise.NodeConfig.5mpme7w6b3k0')" @popup-visible-change="hostPopupChange" class="mr-s">
7+ <a-option v-for="item in data.hostList" :key="item.hostId" :value="item.hostId">{{
8+ item.privateIp
9+ + '(' +
10+ (item.publicIp ? item.publicIp : '--') + ')'
11+ }}</a-option>
12+ </a-select>
13+ <icon-code-square :size="25" class="label-color" style="cursor: pointer;" @click="showTerminal" />
14+ </a-form-item>
15+ <a-form-item v-if="form.isNeedPwd" field="rootPassword" :label="$t('enterprise.NodeConfig.else2')"
16+ validate-trigger="blur">
17+ <a-input-password v-model="form.rootPassword" :placeholder="$t('enterprise.NodeConfig.5mpme7w6b700')"
18+ allow-clear />
19+ </a-form-item>
20+ <a-form-item field="installUserId" :label="$t('enterprise.NodeConfig.5mpme7w6bak0')">
21+ <a-select :loading="data.installUserLoading" v-model="form.installUserId" @change="changeInstallUserId"
22+ @popup-visible-change="hostUserPopupChange">
23+ <a-option v-for="item in data.userListByHost[form.hostId]" :key="item.hostUserId" :value="item.hostUserId">{{
24+ item.username
25+ }}</a-option>
26+ </a-select>
27+ </a-form-item>
28+ <a-row :gutter="24">
29+ <a-col :span="12">
30+ <a-form-item v-if="clusterData.isInstallCM" field="isCMMaster"
31+ :label="$t('enterprise.NodeConfig.5mpme7w6be40')">
32+ <a-switch v-model="form.isCMMaster" @change="handleNodeCMChange" />
33+ </a-form-item>
34+ </a-col>
35+ </a-row>
36+ <a-form-item v-if="clusterData.isInstallCM" field="cmDataPath" :label="$t('enterprise.NodeConfig.else4')"
37+ validate-trigger="blur">
38+ <a-input v-model.trim="form.cmDataPath" :placeholder="$t('enterprise.NodeConfig.5mpme7w6bhg0')" />
39+ </a-form-item>
40+ <a-form-item v-if="clusterData.isInstallCM" field="cmPort" :label="$t('enterprise.NodeConfig.else5')"
41+ validate-trigger="blur">
42+ <a-input v-model.trim="form.cmPort" :placeholder="$t('enterprise.NodeConfig.5mpme7w6bko0')" />
43+ </a-form-item>
44+ <div class="label-color ft-m ft-b mb">
45+ {{ $t('enterprise.NodeConfig.5mpme7w6boc0') }}
46+ </div>
47+ <a-form-item field="dataPath" :label="$t('enterprise.NodeConfig.5mpme7w6brs0')" validate-trigger="blur">
48+ <a-input v-model.trim="form.dataPath" :placeholder="$t('enterprise.NodeConfig.5mpme7w6bv40')" />
49+ </a-form-item>
50+ <a-form-item field="azPriority" :label="$t('enterprise.NodeConfig.else7')" v-if="installType !== 'import'">
51+ <a-input-number :min="1" :max="10" v-model="form.azPriority" :placeholder="$t('enterprise.NodeConfig.else6')" />
52+ </a-form-item>
53+ </a-form>
54+ <host-terminal ref="hostTerminalRef"></host-terminal>
55+ </div>
56+</template>
57+ 
58+<script setup lang="ts">
59+import { KeyValue } from '@/types/global'
60+import { useOpsStore } from '@/store'
61+import { FormInstance } from '@arco-design/web-vue/es/form'
62+import { PropType, ref, computed, defineProps, inject, reactive, onMounted } from 'vue'
63+import { Message } from '@arco-design/web-vue'
64+import { hostListAll, hostUserListWithoutRoot, portUsed, pathEmpty, fileExist, hostPingById } from '@/api/ops'
65+import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue";
66+import { encryptPassword } from '@/utils/jsencrypt'
67+import { useI18n } from 'vue-i18n'
68+const { t } = useI18n()
69+ 
70+const installStore = useOpsStore()
71+const installType = computed(() => installStore.getInstallConfig.installType)
72+ 
73+const cmUtilFunc = inject<any>('cmUtil')
74+ 
75+const props = defineProps({
76+ formData: {
77+ type: Object as PropType<KeyValue>,
78+ required: true
79+ },
80+ clusterData: {
81+ type: Object as PropType<KeyValue>,
82+ default: true
83+ }
84+})
85+ 
86+onMounted(() => {
87+ getHostList()
88+})
89+ 
90+const emits = defineEmits([`update:formData`])
91+const form = computed({
92+ get: () => props.formData,
93+ set: (val) => {
94+ emits(`update:formData`, val)
95+ }
96+})
97+ 
98+const data = reactive<KeyValue>({
99+ hostListLoading: false,
100+ hostList: [],
101+ hostObj: {},
102+ installUserLoading: false,
103+ userListByHost: {},
104+ installUserObj: {}
105+})
106+ 
107+const formRules = computed(() => {
108+ return {
109+ hostId: [{ required: true, 'validate-trigger': 'change', message: t('enterprise.NodeConfig.5mpme7w6c1w0') }],
110+ rootPassword: [
111+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.NodeConfig.5mpme7w6b700') },
112+ {
113+ validator: (value: any, cb: any) => {
114+ return new Promise(resolve => {
115+ if (!value.trim()) {
116+ cb(t('enterprise.ClusterConfig.else2'))
117+ resolve(false)
118+ } else {
119+ resolve(true)
120+ }
121+ })
122+ }
123+ }
124+ ],
125+ installUserId: [{ required: true, 'validate-trigger': 'change', message: t('enterprise.NodeConfig.5mpme7w6c5g0') }],
126+ cmPort: [
127+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.NodeConfig.5mpme7w6bko0') },
128+ {
129+ validator: (value: any, cb: any) => {
130+ return new Promise(resolve => {
131+ if (!value.trim()) {
132+ cb(t('enterprise.ClusterConfig.else2'))
133+ resolve(false)
134+ }
135+ const reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
136+ const re = new RegExp(reg)
137+ if (re.test(value)) {
138+ resolve(true)
139+ } else {
140+ cb(t('simple.InstallConfig.else2'))
141+ resolve(false)
142+ }
143+ })
144+ }
145+ }
146+ ],
147+ cmDataPath: [
148+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.NodeConfig.5mpme7w6c8s0') },
149+ {
150+ validator: (value: any, cb: any) => {
151+ return new Promise(resolve => {
152+ if (!value.trim()) {
153+ cb(t('enterprise.ClusterConfig.else2'))
154+ resolve(false)
155+ } else {
156+ resolve(true)
157+ }
158+ })
159+ }
160+ }
161+ ],
162+ dataPath: [
163+ { required: true, 'validate-trigger': 'blur', message: t('enterprise.NodeConfig.5mpme7w6cc40') },
164+ {
165+ validator: (value: any, cb: any) => {
166+ return new Promise(resolve => {
167+ if (!value.trim()) {
168+ cb(t('enterprise.ClusterConfig.else2'))
169+ resolve(false)
170+ } else {
171+ resolve(true)
172+ }
173+ })
174+ }
175+ }
176+ ],
177+ azPriority: [{ required: true, 'validate-trigger': 'blur', message: t('enterprise.NodeConfig.else6') }]
178+ }
179+})
180+ 
181+// methods
182+const getHostList = () => {
183+ data.hostListLoading = true
184+ hostListAll().then((res: KeyValue) => {
185+ if (Number(res.code) === 200) {
186+ data.hostList = []
187+ data.hostList = res.data
188+ res.data.forEach((item: KeyValue) => {
189+ data.hostObj[item.hostId] = item
190+ })
191+ changeHostId()
192+ } else {
193+ Message.error('Failed to obtain the host list data')
194+ }
195+ }).finally(() => {
196+ data.hostListLoading = false
197+ })
198+}
199+ 
200+const changeHostId = () => {
201+ const hostId = form.value.hostId
202+ if (hostId) {
203+ if (data.hostObj[hostId]) {
204+ form.value.privateIp = data.hostObj[hostId].privateIp
205+ form.value.publicIp = data.hostObj[hostId].publicIp
206+ form.value.hostname = data.hostObj[hostId].hostname
207+ form.value.isNeedPwd = !data.hostObj[hostId].isRemember
208+ }
209+ if (data.userListByHost[hostId] && !form.value.installUserId) {
210+ form.value.installUserId = data.userListByHost[hostId][0].hostUserId
211+ form.value.installUsername = data.userListByHost[hostId][0].username
212+ } else {
213+ data.installUserLoading = true
214+ hostUserListWithoutRoot(hostId).then((res: KeyValue) => {
215+ if (Number(res.code) === 200) {
216+ if (res.data.length) {
217+ data.userListByHost[hostId] = res.data
218+ res.data.forEach((installUser: KeyValue) => {
219+ data.installUserObj[installUser.hostUserId] = installUser
220+ })
221+ const hostUserId = form.value.installUserId
222+ if (hostUserId) {
223+ const hasExist = res.data.find((item: KeyValue) => {
224+ return item.hostUserId === hostUserId
225+ })
226+ if (!hasExist) {
227+ form.value.installUserId = data.userListByHost[hostId][0].hostUserId
228+ form.value.installUsername = data.userListByHost[hostId][0].username
229+ }
230+ } else {
231+ form.value.installUserId = data.userListByHost[hostId][0].hostUserId
232+ form.value.installUsername = data.userListByHost[hostId][0].username
233+ }
234+ } else {
235+ form.value.installUserId = ''
236+ form.value.installUsername = ''
237+ }
238+ formRef.value?.validateField('installUserId')
239+ } else {
240+ Message.error('Failed to obtain user data from the host')
241+ }
242+ }).finally(() => {
243+ data.installUserLoading = false
244+ })
245+ }
246+ }
247+}
248+ 
249+const hostPopupChange = (val: boolean) => {
250+ if (val) {
251+ getHostList()
252+ }
253+}
254+ 
255+const hostUserPopupChange = (val: boolean) => {
256+ if (val) {
257+ changeHostId()
258+ }
259+}
260+ 
261+const changeInstallUserId = (installUserId: any) => {
262+ const getInstallUser = data.installUserObj[installUserId]
263+ if (getInstallUser) {
264+ form.value.installUsername = getInstallUser.username
265+ }
266+}
267+ 
268+const handleNodeCMChange = (val: any) => {
269+ cmUtilFunc.isHasCMMaster(form.value.id, val)
270+}
271+ 
272+const formRef = ref<null | FormInstance>(null)
273+ 
274+const hostTerminalRef = ref<null | InstanceType<typeof HostTerminal>>(null)
275+const showTerminal = () => {
276+ // isRemember password
277+ if (form.value.isNeedPwd) {
278+ if (!form.value.rootPassword) {
279+ formRef.value?.setFields({
280+ rootPassword: {
281+ status: 'error',
282+ message: t('simple.InstallConfig.5mpmu0laqwo0')
283+ }
284+ })
285+ return
286+ }
287+ }
288+ if (!form.value.hostId) {
289+ formRef.value?.setFields({
290+ hostId: {
291+ status: 'error',
292+ message: t('lightweight.InstallConfig.5mpmkfqybw00')
293+ }
294+ })
295+ return
296+ }
297+ // showTerminal
298+ handleShowTerminal({
299+ hostId: form.value.hostId,
300+ port: form.value.port,
301+ ip: form.value.publicIp,
302+ password: form.value.rootPassword
303+ })
304+}
305+ 
306+const handleShowTerminal = (data: KeyValue) => {
307+ hostTerminalRef.value?.open(data)
308+}
309+ 
310+const validatePort = async (port: number, password: string, hostId: string): Promise<any> => {
311+ const portParam = {
312+ port: port,
313+ rootPassword: password
314+ }
315+ const portValid: KeyValue = await portUsed(hostId, portParam)
316+ if (Number(portValid.code) === 200) {
317+ return portValid.data
318+ }
319+ return false
320+}
321+ 
322+const validatePath = async (path: string, password: string, hostId: string) => {
323+ const pathParam = {
324+ path: path,
325+ rootPassword: password
326+ }
327+ const pathValid: KeyValue = await pathEmpty(hostId, pathParam)
328+ if (Number(pathValid.code) === 200) {
329+ return pathValid.data
330+ }
331+ return false
332+}
333+ 
334+const validateFile = async (file: string, password: string, hostId: string) => {
335+ const pathParam = {
336+ file: file,
337+ rootPassword: password
338+ }
339+ const pathValid: KeyValue = await fileExist(hostId, pathParam)
340+ if (Number(pathValid.code) === 200) {
341+ return pathValid.data
342+ }
343+ return false
344+}
345+ 
346+const validateSpecialFields = async () => {
347+ let result = true
348+ 
349+ console.log('校验密码', form.value);
350+ 
351+ formRef.value?.clearValidate()
352+ 
353+ const validMethodArr = []
354+ let isOkPwd = true
355+ let encryptPwd = ''
356+ if (form.value.rootPassword) {
357+ encryptPwd = await encryptPassword(form.value.rootPassword)
358+ }
359+ // password validate
360+ try {
361+ const param = {
362+ rootPassword: encryptPwd
363+ }
364+ const passwordValid: KeyValue = await hostPingById(form.value.hostId, param)
365+ if (Number(passwordValid.code) !== 200) {
366+ formRef.value?.setFields({
367+ rootPassword: {
368+ status: 'error',
369+ message: t('enterprise.NodeConfig.else8')
370+ }
371+ })
372+ result = false
373+ isOkPwd = false
374+ }
375+ } catch (err: any) {
376+ formRef.value?.setFields({
377+ rootPassword: {
378+ status: 'error',
379+ message: t('enterprise.NodeConfig.else9')
380+ }
381+ })
382+ result = false
383+ isOkPwd = false
384+ }
385+ if (!isOkPwd) {
386+ return result
387+ }
388+ // cluster port is used
389+ validMethodArr.push(validatePort(props.clusterData.port, encryptPwd, form.value.hostId))
390+ validMethodArr.push(validatePath(form.value.dataPath, encryptPwd, form.value.hostId))
391+ validMethodArr.push(validatePath(props.clusterData.installPackagePath, encryptPwd, form.value.hostId))
392+ if (props.clusterData.isInstallCM) {
393+ validMethodArr.push(validatePort(form.value.cmPort, encryptPwd, form.value.hostId))
394+ }
395+ if (props.clusterData.envPath && installType.value === 'import') {
396+ validMethodArr.push(validateFile(props.clusterData.envPath, encryptPwd, form.value.hostId))
397+ }
398+ if (validMethodArr.length) {
399+ const validResult = await Promise.all(validMethodArr)
400+ if ((installType.value !== 'import' && validResult[0]) || (installType.value === 'import' && !validResult[0])) {
401+ // port valid
402+ formRef.value?.setFields({
403+ hostId: {
404+ status: 'error',
405+ message: props.clusterData.port + (installType.value === 'import' ? t('enterprise.NodeConfig.else10') : t('enterprise.NodeConfig.else11'))
406+ }
407+ })
408+ result = false
409+ }
410+ if ((installType.value !== 'import' && !validResult[1]) || (installType.value === 'import' && validResult[1])) {
411+ // dataPath valid
412+ formRef.value?.setFields({
413+ dataPath: {
414+ status: 'error',
415+ message: installType.value === 'import' ? t('enterprise.NodeConfig.else12') : t('enterprise.NodeConfig.else13')
416+ }
417+ })
418+ result = false
419+ }
420+ 
421+ if ((installType.value !== 'import' && !validResult[2]) || (installType.value === 'import' && validResult[2])) {
422+ // installPackagePath valid
423+ formRef.value?.setFields({
424+ hostId: {
425+ status: 'error',
426+ message: (installType.value === 'import' ? t('enterprise.NodeConfig.else14') : t('enterprise.NodeConfig.else16')) + ',' + props.clusterData.installPackagePath
427+ }
428+ })
429+ result = false
430+ }
431+ if (props.clusterData.isInstallCM) {
432+ if ((installType.value !== 'import' && validResult[3]) || (installType.value === 'import' && !validResult[3])) {
433+ // cmPort valid
434+ formRef.value?.setFields({
435+ cmPort: {
436+ status: 'error',
437+ message: form.value.cmPort + (installType.value === 'import' ? t('enterprise.NodeConfig.else10') : t('enterprise.NodeConfig.else11'))
438+ }
439+ })
440+ result = false
441+ }
442+ if (installType.value === 'import' && props.clusterData.envPath && !validResult[4]) {
443+ // envPath valid
444+ formRef.value?.setFields({
445+ hostId: {
446+ status: 'error',
447+ message: t('enterprise.NodeConfig.else17') + ',' + props.clusterData.envPath
448+ }
449+ })
450+ result = false
451+ }
452+ } else {
453+ if (installType.value === 'import' && props.clusterData.envPath && !validResult[3]) {
454+ // envPath valid
455+ formRef.value?.setFields({
456+ hostId: {
457+ status: 'error',
458+ message: t('enterprise.NodeConfig.else17') + ',' + props.clusterData.envPath
459+ }
460+ })
461+ result = false
462+ }
463+ }
464+ 
465+ }
466+ return result
467+}
468+ 
469+const formValidate = async (): Promise<KeyValue> => {
470+ let validResult = false
471+ const validRes = await formRef.value?.validate()
472+ if (!validRes) {
473+ // valid info
474+ validResult = true
475+ }
476+ const result = {
477+ id: form.value.id,
478+ res: validResult
479+ }
480+ return result
481+}
482+ 
483+const dataValidate = async (): Promise<KeyValue> => {
484+ let validResult = false
485+ // valid info
486+ validResult = await validateSpecialFields()
487+ const result = {
488+ id: form.value.id,
489+ res: validResult
490+ }
491+ return result
492+}
493+ 
494+defineExpose({
495+ formValidate,
496+ dataValidate
497+})
498+ 
499+ 
500+</script>
501+<style lang="less" scoped>
502+.node-form-c {
503+ padding: 20px;
504+}
505+</style>
Mbase-ops/web-ui/src/views/ops/install/components/lightweight/ExeInstall.vue+1-1
@@ -160,7 +160,7 @@ const hostChange = (hostId: any) => {
160const getTermObj = (): Terminal => {160const getTermObj = (): Terminal => {
161 return new Terminal({161 return new Terminal({
162 fontSize: 14,162 fontSize: 14,
163- rows: 40,163+ rows: 30,
164 cols: 100,164 cols: 100,
165 cursorBlink: true,165 cursorBlink: true,
166 convertEol: true,166 convertEol: true,
Mbase-ops/web-ui/src/views/ops/install/components/lightweight/InstallConfig.vue+11-11
@@ -15,7 +15,7 @@
15 :ref="(el: any) => setRefMap(el)">15 :ref="(el: any) => setRefMap(el)">
16 <a-form-item v-if="index === 0" field="clusterId" :label="$t('lightweight.InstallConfig.5mpmkfqy8nc0')"16 <a-form-item v-if="index === 0" field="clusterId" :label="$t('lightweight.InstallConfig.5mpmkfqy8nc0')"
17 validate-trigger="blur">17 validate-trigger="blur">
18- <a-input v-model="formItem.clusterId" :placeholder="$t('lightweight.InstallConfig.5mpmkfqy8r00')" />18+ <a-input v-model.trim="formItem.clusterId" :placeholder="$t('lightweight.InstallConfig.5mpmkfqy8r00')" />
19 </a-form-item>19 </a-form-item>
20 <a-form-item field="hostId" :label="$t('lightweight.InstallConfig.5mpmkfqy8vk0')">20 <a-form-item field="hostId" :label="$t('lightweight.InstallConfig.5mpmkfqy8vk0')">
21 <a-select :loading="hostListLoading" v-model="formItem.hostId" @change="changeHostId(index)" class="mr-s"21 <a-select :loading="hostListLoading" v-model="formItem.hostId" @change="changeHostId(index)" class="mr-s"
@@ -47,14 +47,14 @@
47 </a-form-item>47 </a-form-item>
48 <a-form-item field="installPath" :label="$t('lightweight.InstallConfig.5mpmkfqya4o0')"48 <a-form-item field="installPath" :label="$t('lightweight.InstallConfig.5mpmkfqya4o0')"
49 validate-trigger="blur">49 validate-trigger="blur">
50- <a-input v-model="formItem.installPath" :placeholder="$t('lightweight.InstallConfig.5mpmkfqyaas0')" />50+ <a-input v-model.trim="formItem.installPath" :placeholder="$t('lightweight.InstallConfig.5mpmkfqyaas0')" />
51 </a-form-item>51 </a-form-item>
52 <a-form-item field="installPackagePath" :label="$t('simple.InstallConfig.else6')" validate-trigger="blur">52 <a-form-item field="installPackagePath" :label="$t('simple.InstallConfig.else6')" validate-trigger="blur">
53- <a-input v-model="formItem.installPackagePath" :placeholder="$t('simple.InstallConfig.else7')"53+ <a-input v-model.trim="formItem.installPackagePath" :placeholder="$t('simple.InstallConfig.else7')"
54 @blur="handleInstallPackageBlur(index)" />54 @blur="handleInstallPackageBlur(index)" />
55 </a-form-item>55 </a-form-item>
56 <a-form-item field="dataPath" :label="$t('lightweight.InstallConfig.5mpmkfqyah00')" validate-trigger="blur">56 <a-form-item field="dataPath" :label="$t('lightweight.InstallConfig.5mpmkfqyah00')" validate-trigger="blur">
57- <a-input v-model="formItem.dataPath" :placeholder="$t('lightweight.InstallConfig.5mpmkfqyan00')" />57+ <a-input v-model.trim="formItem.dataPath" :placeholder="$t('lightweight.InstallConfig.5mpmkfqyan00')" />
58 </a-form-item>58 </a-form-item>
59 <a-form-item v-if="index === 0" field="port" :label="$t('lightweight.InstallConfig.5mpmkfqyasw0')"59 <a-form-item v-if="index === 0" field="port" :label="$t('lightweight.InstallConfig.5mpmkfqyasw0')"
60 validate-trigger="blur">60 validate-trigger="blur">
@@ -62,21 +62,21 @@
62 </a-form-item>62 </a-form-item>
63 <a-form-item field="databaseUsername" :label="$t('lightweight.InstallConfig.5mpmkfqyb4c0')"63 <a-form-item field="databaseUsername" :label="$t('lightweight.InstallConfig.5mpmkfqyb4c0')"
64 validate-trigger="blur" v-if="installType === 'import' && index === 0">64 validate-trigger="blur" v-if="installType === 'import' && index === 0">
65- <a-input v-model="formItem.databaseUsername" :placeholder="$t('lightweight.InstallConfig.5mpmkfqyb9w0')"65+ <a-input v-model.trim="formItem.databaseUsername"
66- allow-clear />66+ :placeholder="$t('lightweight.InstallConfig.5mpmkfqyb9w0')" allow-clear />
67 </a-form-item>67 </a-form-item>
68 <a-form-item v-if="index === 0" field="databasePassword" :label="$t('lightweight.InstallConfig.5mpmkfqybf80')"68 <a-form-item v-if="index === 0" field="databasePassword" :label="$t('lightweight.InstallConfig.5mpmkfqybf80')"
69 validate-trigger="blur">69 validate-trigger="blur">
70 <a-input-password v-model="formItem.databasePassword"70 <a-input-password v-model="formItem.databasePassword"
71 :placeholder="$t('lightweight.InstallConfig.5mpmkfqybo00')" allow-clear />71 :placeholder="$t('lightweight.InstallConfig.5mpmkfqybo00')" allow-clear />
72 </a-form-item>72 </a-form-item>
73- <a-form-item v-if="installType === 'import' && index === 0" field="isEnvSeparate"73+ <a-form-item v-if="index === 0" field="isEnvSeparate" :label="$t('simple.InstallConfig.else11')"
74- :label="$t('simple.InstallConfig.else11')" validate-trigger="blur">74+ validate-trigger="blur">
75 <a-switch v-model="formItem.isEnvSeparate" />75 <a-switch v-model="formItem.isEnvSeparate" />
76 </a-form-item>76 </a-form-item>
77 <a-form-item v-if="formItem.isEnvSeparate" field="envPath" :label="$t('simple.InstallConfig.else9')"77 <a-form-item v-if="formItem.isEnvSeparate" field="envPath" :label="$t('simple.InstallConfig.else9')"
78 validate-trigger="blur">78 validate-trigger="blur">
79- <a-input v-model="formItem.envPath" :placeholder="$t('simple.InstallConfig.else10')" />79+ <a-input v-model.trim="formItem.envPath" :placeholder="$t('simple.InstallConfig.else10')" />
80 </a-form-item>80 </a-form-item>
81 </a-form>81 </a-form>
82 </div>82 </div>
@@ -550,7 +550,7 @@ const validateSpecialFields = async () => {
550 validMethodArr.push(validatePort(data.nodeData[i].port, encryptPwd, data.nodeData[i].hostId))550 validMethodArr.push(validatePort(data.nodeData[i].port, encryptPwd, data.nodeData[i].hostId))
551 validMethodArr.push(validatePath(data.nodeData[i].dataPath, encryptPwd, data.nodeData[i].hostId))551 validMethodArr.push(validatePath(data.nodeData[i].dataPath, encryptPwd, data.nodeData[i].hostId))
552 validMethodArr.push(validatePath(data.nodeData[i].installPackagePath, encryptPwd, data.nodeData[i].hostId))552 validMethodArr.push(validatePath(data.nodeData[i].installPackagePath, encryptPwd, data.nodeData[i].hostId))
553- if (data.nodeData[i].isEnvSeparate) {553+ if (data.nodeData[i].isEnvSeparate && installType.value === 'import') {
554 validMethodArr.push(validateFile(data.nodeData[i].envPath, encryptPwd, data.nodeData[i].hostId))554 validMethodArr.push(validateFile(data.nodeData[i].envPath, encryptPwd, data.nodeData[i].hostId))
555 }555 }
556 if (validMethodArr.length) {556 if (validMethodArr.length) {
@@ -587,7 +587,7 @@ const validateSpecialFields = async () => {
587 })587 })
588 result = false588 result = false
589 }589 }
590- if (data.nodeData[i].isEnvSeparate && !validResult[3]) {590+ if (installType.value == 'import' && data.nodeData[i].isEnvSeparate && !validResult[3]) {
591 // dataPath Valid591 // dataPath Valid
592 refList.value[i].setFields({592 refList.value[i].setFields({
593 envPath: {593 envPath: {
Mbase-ops/web-ui/src/views/ops/install/components/openLookeng/BasicInfoConfigPanel.vue+16-12
@@ -30,9 +30,9 @@
30 </a-option>30 </a-option>
31 </a-select>31 </a-select>
32 </a-form-item>32 </a-form-item>
33- <a-form-item v-if="!data.host.isHostRemPwd && data.installUsername === 'root'"33+ <a-form-item v-if="!data.host.isHostRemPwd"
34- field="password" :label="$t('components.openLooKeng.5mpiji1qpcc3')">34+ field="rootPassword" :label="$t('components.openLooKeng.5mpiji1qpcc3')">
35- <a-input-password v-model.trim="data.password" :placeholder="$t('components.openLooKeng.5mpiji1qpcc4')"35+ <a-input-password v-model.trim="data.rootPassword" :placeholder="$t('components.openLooKeng.5mpiji1qpcc4')"
36 allow-clear/>36 allow-clear/>
37 </a-form-item>37 </a-form-item>
38 <a-form-item field="dadTarId" :label="$t('components.openLooKeng.5mpiji1qpcb4')">38 <a-form-item field="dadTarId" :label="$t('components.openLooKeng.5mpiji1qpcb4')">
@@ -77,6 +77,7 @@ const data = reactive<KeyValue>({
77 hostId: '',77 hostId: '',
78 installUsername: '',78 installUsername: '',
79 password: '',79 password: '',
80+ rootPassword: '',
80 installPath: '/data/install',81 installPath: '/data/install',
81 port: 8080,82 port: 8080,
82 needEncrypt: false,83 needEncrypt: false,
@@ -116,6 +117,7 @@ const initData = () => {
116 data.hostId = config.dadInstallHostId117 data.hostId = config.dadInstallHostId
117 data.installUsername = config.dadInstallUsername118 data.installUsername = config.dadInstallUsername
118 data.password = config.dadInstallPassword119 data.password = config.dadInstallPassword
120+ data.rootPassword = config.dadRootPassword
119 data.installPath = config.dadInstallPath121 data.installPath = config.dadInstallPath
120 data.port = config.dadPort122 data.port = config.dadPort
121 data.needEncrypt = config.dadNeedEncrypt123 data.needEncrypt = config.dadNeedEncrypt
@@ -129,6 +131,7 @@ const saveStore = () => {
129 dadInstallHostId: data.hostId,131 dadInstallHostId: data.hostId,
130 dadInstallUsername: data.installUsername,132 dadInstallUsername: data.installUsername,
131 dadInstallPassword: data.password,133 dadInstallPassword: data.password,
134+ dadRootPassword: data.rootPassword,
132 dadInstallPath: data.installPath,135 dadInstallPath: data.installPath,
133 dadPort: data.port,136 dadPort: data.port,
134 dadNeedEncrypt: data.needEncrypt137 dadNeedEncrypt: data.needEncrypt
@@ -160,8 +163,8 @@ const refreshPackageList = (isInit: boolean) => {
160 163 
161const validatePort = async () => {164const validatePort = async () => {
162 let encryptPwd = ''165 let encryptPwd = ''
163- if (data.installUsername === 'root' && !data.host.isHostRemPwd) {166+ if (!data.host.isHostRemPwd) {
164- encryptPwd = await encryptPassword(data.password)167+ encryptPwd = await encryptPassword(data.rootPassword)
165 } else {168 } else {
166 const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')169 const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')
167 if (result) {170 if (result) {
@@ -183,6 +186,7 @@ const onUserChange = () => {
183 const user = userListByHost.value.find(item => item.username === data.installUsername)186 const user = userListByHost.value.find(item => item.username === data.installUsername)
184 if (user) {187 if (user) {
185 data.password = user.password188 data.password = user.password
189+ return
186 }190 }
187}191}
188 192 
@@ -192,10 +196,10 @@ const validateSpecialFields = async () => {
192 // create user mode we don't need to check196 // create user mode we don't need to check
193 const validMethodArr = []197 const validMethodArr = []
194 let encryptPwd = ''198 let encryptPwd = ''
195- if (data.installUsername === 'root' && !data.host.isHostRemPwd) {199+ if (!data.host.isHostRemPwd) {
196- encryptPwd = await encryptPassword(data.password)200+ encryptPwd = await encryptPassword(data.rootPassword)
197 } else {201 } else {
198- const result = userListByHost.value.find((item: KeyValue) => item.username === data.installUsername)202+ const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')
199 if (result) {203 if (result) {
200 encryptPwd = result.password204 encryptPwd = result.password
201 }205 }
@@ -205,13 +209,13 @@ const validateSpecialFields = async () => {
205 const param = {209 const param = {
206 publicIp: data.host.publicIp,210 publicIp: data.host.publicIp,
207 password: encryptPwd,211 password: encryptPwd,
208- username: data.installUsername,212+ username: 'root',
209 port: data.host.hostPort213 port: data.host.hostPort
210 }214 }
211 const passwordValid: KeyValue = await hostPing(param)215 const passwordValid: KeyValue = await hostPing(param)
212 if (Number(passwordValid.code) !== 200) {216 if (Number(passwordValid.code) !== 200) {
213 formRef.value?.setFields({217 formRef.value?.setFields({
214- password: {218+ rootPassword: {
215 status: 'error',219 status: 'error',
216 message: t('components.openLooKeng.5mpiji1qpcc42')220 message: t('components.openLooKeng.5mpiji1qpcc42')
217 }221 }
@@ -220,7 +224,7 @@ const validateSpecialFields = async () => {
220 }224 }
221 } catch (err: any) {225 } catch (err: any) {
222 formRef.value?.setFields({226 formRef.value?.setFields({
223- password: {227+ rootPassword: {
224 status: 'error',228 status: 'error',
225 message: t('components.openLooKeng.5mpiji1qpcc42')229 message: t('components.openLooKeng.5mpiji1qpcc42')
226 }230 }
@@ -383,7 +387,7 @@ const rules = computed(() => {
383 port: [{ required: true, message: t('components.openLooKeng.5mpiji1qpcc14') }, { validator: portValidator }],387 port: [{ required: true, message: t('components.openLooKeng.5mpiji1qpcc14') }, { validator: portValidator }],
384 hostId: { required: true, message: t('simpleInstall.index.5mpn813gukw0') },388 hostId: { required: true, message: t('simpleInstall.index.5mpn813gukw0') },
385 installUsername: { required: true, message: t('components.openLooKeng.5mpiji1qpcc12') },389 installUsername: { required: true, message: t('components.openLooKeng.5mpiji1qpcc12') },
386- password: { required: true, message: t('components.openLooKeng.5mpiji1qpcc13') },390+ rootPassword: { required: true, message: t('components.openLooKeng.5mpiji1qpcc13') },
387 installPath: [391 installPath: [
388 { required: true, message: t('components.openLooKeng.5mpiji1qpcc14') },392 { required: true, message: t('components.openLooKeng.5mpiji1qpcc14') },
389 {393 {
Abase-ops/web-ui/src/views/ops/install/components/openLookeng/CustomShell.vue+242-0
@@ -0,0 +1,242 @@
1+<template>
2+ <a-modal v-if="data.show" :mask-closable="false" :esc-to-close="false" :visible="data.show"
3+ :title="$t('components.openLooKeng.5mpiji1qpcc66')" :modal-style="{ width: '50vw' }"
4+ hide-cancel @cancel="handleClose" @ok="handleClose">
5+ <div class="custom-control-container">
6+ <a-tabs type="card-gutter" v-model:active-key="data.hostId" @change="handleChangeTab">
7+ <a-tab-pane v-for="(item, index) in data.hosts" :key="item.hostId" :title="item.publicIp">
8+ <div :id="`xterm_${item.hostId}`" class="xterm"></div>
9+ </a-tab-pane>
10+ </a-tabs>
11+ 
12+ <host-pwd-dlg ref="hostPwdRef" @finish="handleAddHostByPassword($event)"></host-pwd-dlg>
13+ </div>
14+ </a-modal>
15+</template>
16+ 
17+<script lang="ts" setup>
18+import {KeyValue} from '@/types/global'
19+import Socket from '@/utils/websocket'
20+import {reactive, ref, onMounted, onBeforeUnmount, nextTick} from 'vue'
21+import {hostListAll, openSSH} from '@/api/ops'
22+import {WsConnectType} from '@/types/ops/install'
23+import {Terminal} from 'xterm'
24+import {FitAddon} from 'xterm-addon-fit'
25+import {AttachAddon} from 'xterm-addon-attach'
26+import 'xterm/css/xterm.css'
27+import HostPwdDlg from '@/views/monitor/customControl/HostPwdDlg.vue'
28+import {debounce} from '@antv/x6/lib/util/function/function'
29+ 
30+const data = reactive<KeyValue>({
31+ hosts: [],
32+ loading: false,
33+ hostId: '',
34+ rootPassword: '',
35+ hostListLoading: false,
36+ hostList: [],
37+ hostObj: {},
38+ isSuccess: true,
39+ socketMap: {},
40+ show: false
41+})
42+ 
43+const termTerminal = ref<Terminal>()
44+ 
45+onBeforeUnmount(() => {
46+ if (Object.keys(data.socketMap).length > 0) {
47+ for (let key of Object.keys(data.socketMap)) {
48+ data.socketMap[key].destroy()
49+ }
50+ }
51+})
52+ 
53+const hostPwdRef = ref<null | InstanceType<typeof HostPwdDlg>>(null)
54+const openDlgToValid = (hostId: string) => {
55+ if (data.hostObj[hostId]) {
56+ const excludeHost: Array<KeyValue> = []
57+ Object.keys(data.hostObj).forEach((key: string) => {
58+ if (key !== hostId) {
59+ excludeHost.push(data.hostObj[key])
60+ }
61+ })
62+ hostPwdRef.value?.open(excludeHost)
63+ }
64+}
65+ 
66+const handleAddHost = (hostData: KeyValue) => {
67+ if (hostData.hostId) {
68+ data.hosts.push(data.hostObj[hostData.hostId])
69+ handleConnect(hostData)
70+ }
71+}
72+ 
73+const handleAddHostByPassword = (hostData: KeyValue) => {
74+ data.hostObj[hostData.hostId].isRemember = true
75+ handleConnect(hostData)
76+}
77+ 
78+const onTerminalResize = () => {
79+ window.addEventListener('resize', onResize())
80+}
81+ 
82+const onResize = debounce(function () {
83+ setTimeout(() => {
84+ fitAddon.value?.fit()
85+ }, 500)
86+})
87+ 
88+const getHostList = (hostIdList: Array<string>) => {
89+ data.hostListLoading = true
90+ hostListAll().then((res: KeyValue) => {
91+ if (Number(res.code) === 200) {
92+ data.hostList = []
93+ res.data.forEach((item: KeyValue) => {
94+ data.hostObj[item.hostId] = item
95+ data.hostList.push({
96+ label: `${item.privateIp}(${item.publicIp})`,
97+ value: item.hostId
98+ })
99+ })
100+ if (data.hostList.length > 0) {
101+ data.hostId = data.hostList[0].value
102+ if (!data.hostObj[data.hostId].isRemember) {
103+ openDlgToValid(data.hostId)
104+ } else {
105+ handleAddHost(data.hostObj[data.hostId])
106+ }
107+ }
108+ hostIdList.splice(0, 1)
109+ // create all tab
110+ hostIdList.forEach((id: string) => {
111+ data.hosts.push(data.hostObj[id])
112+ })
113+ }
114+ }).finally(() => {
115+ data.hostListLoading = false
116+ })
117+}
118+ 
119+const handleConnect = (hostData: any) => {
120+ data.hostId = hostData.hostId
121+ data.rootPassword = hostData.password
122+ openSocket(hostData.hostId)
123+}
124+ 
125+const handleClose = () => {
126+ data.show = false
127+ if (Object.keys(data.socketMap).length) {
128+ for (let key of Object.keys(data.socketMap)) {
129+ data.socketMap[key].destroy()
130+ }
131+ }
132+ data.hosts = []
133+ data.hostList = []
134+ data.socketMap = {}
135+ return true
136+}
137+ 
138+const handleChangeTab = () => {
139+ const hostData = data.hostObj[data.hostId]
140+ if (!hostData.isRemember) {
141+ openDlgToValid(data.hostId)
142+ } else if (!data.socketMap[data.hostId]) {
143+ handleConnect(hostData)
144+ }
145+}
146+ 
147+const openSocket = (hostId: string) => {
148+ const term = getTermObj()
149+ const socketKey = new Date().getTime()
150+ const terminalSocket = new Socket({url: `custom_terminal_${socketKey}`})
151+ terminalSocket.onopen(() => {
152+ const param = {
153+ hostId: hostId,
154+ rootPassword: data.rootPassword,
155+ wsConnectType: WsConnectType.SSH,
156+ businessId: `custom_terminal_${socketKey}`
157+ }
158+ data.loading = true
159+ initTerm(term, terminalSocket.ws, hostId)
160+ openSSH(param).then((res: KeyValue) => {
161+ if (Number(res.code) !== 200) {
162+ data.isSuccess = false
163+ terminalSocket.destroy()
164+ } else {
165+ data.socketMap[hostId] = terminalSocket
166+ data.isSuccess = true
167+ }
168+ }).catch((error: any) => {
169+ data.isSuccess = false
170+ term.writeln(error.toString())
171+ terminalSocket.destroy()
172+ }).finally(() => {
173+ data.loading = false
174+ })
175+ })
176+}
177+ 
178+let fitAddon = ref<FitAddon | undefined>()
179+ 
180+const initTerm = (term: Terminal, ws: WebSocket | undefined, hostId: string) => {
181+ if (ws) {
182+ const attachAddon = new AttachAddon(ws)
183+ fitAddon.value = new FitAddon()
184+ term.loadAddon(attachAddon)
185+ term.loadAddon(fitAddon.value)
186+ term.open(document.getElementById(`xterm_${hostId}`) as HTMLElement)
187+ // fitAddon.value.fit()
188+ term.clear()
189+ term.focus()
190+ term.write('\r\n\x1b[33m$\x1b[0m ')
191+ termTerminal.value = term
192+ }
193+}
194+ 
195+const getTermObj = (): Terminal => {
196+ return new Terminal({
197+ fontSize: 14,
198+ rows: 40,
199+ cols: 100,
200+ cursorBlink: true,
201+ convertEol: true,
202+ disableStdin: false,
203+ cursorStyle: 'underline',
204+ theme: {
205+ background: 'black'
206+ }
207+ })
208+}
209+ 
210+const open = (hostIdList: Array<string>) => {
211+ data.show = true
212+ getHostList(hostIdList)
213+ onTerminalResize()
214+}
215+ 
216+defineExpose({
217+ open
218+})
219+ 
220+</script>
221+ 
222+<style lang="less" scoped>
223+:deep(.arco-tabs-nav-tab) {
224+ color: var(--color-text-1);
225+}
226+ 
227+.custom-control-container {
228+ padding: 20px;
229+ border-radius: 8px;
230+ display: flex;
231+ flex-direction: column;
232+ 
233+ .top-label {
234+ white-space: nowrap;
235+ }
236+ 
237+ .xterm {
238+ width: 100%;
239+ height: 100%;
240+ }
241+}
242+</style>
Mbase-ops/web-ui/src/views/ops/install/components/openLookeng/ExeInstall.vue+20-8
@@ -30,7 +30,7 @@
30 {{ $t('components.openLooKeng.5mpiji1qpcc67') }}30 {{ $t('components.openLooKeng.5mpiji1qpcc67') }}
31 </a-button>31 </a-button>
32 <a-button type="primary" @click="downloadLog">{{ $t('components.openLooKeng.5mpiji1qpcc65') }}</a-button>32 <a-button type="primary" @click="downloadLog">{{ $t('components.openLooKeng.5mpiji1qpcc65') }}</a-button>
33- <a-button type="primary">{{ $t('components.openLooKeng.5mpiji1qpcc66') }}</a-button>33+ <a-button type="primary" @click="showCustomShell">{{ $t('components.openLooKeng.5mpiji1qpcc66') }}</a-button>
34 </a-space>34 </a-space>
35 </div>35 </div>
36 </div>36 </div>
@@ -51,6 +51,7 @@
51 </div>51 </div>
52 </div>52 </div>
53 </div>53 </div>
54+ <custom-shell ref="shell"></custom-shell>
54 </div>55 </div>
55</template>56</template>
56<script lang="ts" setup>57<script lang="ts" setup>
@@ -67,7 +68,8 @@ import { ShardingDsConfig } from '@/types/ops/install'
67import { Message } from '@arco-design/web-vue'68import { Message } from '@arco-design/web-vue'
68import { encryptPassword } from '@/utils/jsencrypt'69import { encryptPassword } from '@/utils/jsencrypt'
69import { ProcessFlag } from './ProcessFlag'70import { ProcessFlag } from './ProcessFlag'
70-import router from "@/router";71+import router from '@/router'
72+import CustomShell from '@/views/ops/install/components/openLookeng/CustomShell.vue'
71 73 
72const installStore = useOpsStore()74const installStore = useOpsStore()
73 75 
@@ -79,6 +81,7 @@ enum statusEnum {
79 81 
80const status = ref<number>(statusEnum.RUNNING)82const status = ref<number>(statusEnum.RUNNING)
81const loadingFunc = inject<any>('loading')83const loadingFunc = inject<any>('loading')
84+const shell = ref<null | InstanceType<typeof CustomShell>>(null)
82 85 
83const data = reactive<KeyValue>({86const data = reactive<KeyValue>({
84 state: -1, // -1 un install 0 installing 1 success 2 fail87 state: -1, // -1 un install 0 installing 1 success 2 fail
@@ -216,6 +219,7 @@ const downloadLog = () => {
216}219}
217 220 
218onMounted(() => {221onMounted(() => {
222+ loadingFunc.setNextBtnShow(false)
219 openLogSocket()223 openLogSocket()
220})224})
221 225 
@@ -251,14 +255,14 @@ const exeInstall = async (socket: Socket<any, any>, businessId: string, term: Te
251}255}
252 256 
253const encryptBodyPassword = async (reqBody: KeyValue) => {257const encryptBodyPassword = async (reqBody: KeyValue) => {
254- if (reqBody.dadNeedEncrypt) {258+ if (reqBody.dadNeedEncrypt && reqBody.dadInstallUsername === 'root') {
255- reqBody.dadInstallPassword = await encryptPassword(reqBody.dadInstallPassword)259+ reqBody.dadInstallPassword = await encryptPassword(reqBody.dadRootPassword)
256 }260 }
257- if (reqBody.ssNeedEncrypt) {261+ if (reqBody.ssNeedEncrypt && reqBody.ssInstallUsername === 'root') {
258- reqBody.ssInstallPassword = await encryptPassword(reqBody.ssInstallPassword)262+ reqBody.ssInstallPassword = await encryptPassword(reqBody.ssRootPassword)
259 }263 }
260- if (reqBody.olkNeedEncrypt) {264+ if (reqBody.olkNeedEncrypt && reqBody.olkInstallUsername === 'root') {
261- reqBody.olkInstallPassword = await encryptPassword(reqBody.olkInstallPassword)265+ reqBody.olkInstallPassword = await encryptPassword(reqBody.olkRootPassword)
262 }266 }
263}267}
264 268 
@@ -311,6 +315,14 @@ const buildReqData = async () => {
311 return dbList315 return dbList
312}316}
313 317 
318+const showCustomShell = () => {
319+ const allHostId = new Set()
320+ allHostId.add(installStore.openLookengInstallConfig.dadInstallHostId)
321+ allHostId.add(installStore.openLookengInstallConfig.ssInstallHostId)
322+ allHostId.add(installStore.openLookengInstallConfig.olkInstallHostId)
323+ shell.value?.open([...allHostId])
324+}
325+ 
314</script>326</script>
315 327 
316<style lang="less" scoped>328<style lang="less" scoped>
Mbase-ops/web-ui/src/views/ops/install/components/openLookeng/LookengConfigPanel.vue+14-11
@@ -20,9 +20,9 @@
20 </a-option>20 </a-option>
21 </a-select>21 </a-select>
22 </a-form-item>22 </a-form-item>
23- <a-form-item v-if="!data.host.isHostRemPwd && data.form.installUsername === 'root'" field="password"23+ <a-form-item v-if="!data.host.isHostRemPwd" field="rootPassword"
24 :label="$t('components.openLooKeng.5mpiji1qpcc3')">24 :label="$t('components.openLooKeng.5mpiji1qpcc3')">
25- <a-input-password v-model.trim="data.form.password" :placeholder="$t('components.openLooKeng.5mpiji1qpcc4')"25+ <a-input-password v-model.trim="data.form.rootPassword" :placeholder="$t('components.openLooKeng.5mpiji1qpcc4')"
26 allow-clear/>26 allow-clear/>
27 </a-form-item>27 </a-form-item>
28 <a-form-item field="installPath" :label="$t('components.openLooKeng.5mpiji1qpcc5')">28 <a-form-item field="installPath" :label="$t('components.openLooKeng.5mpiji1qpcc5')">
@@ -90,6 +90,7 @@ const data = reactive<KeyValue>({
90 hostId: '',90 hostId: '',
91 installUserId: '',91 installUserId: '',
92 password: '',92 password: '',
93+ rootPassword: '',
93 installPath: '/data/install',94 installPath: '/data/install',
94 uploadPath: '/data/tar',95 uploadPath: '/data/tar',
95 olkTarId: '',96 olkTarId: '',
@@ -132,6 +133,7 @@ const initData = () => {
132 data.form.hostId = config.olkInstallHostId133 data.form.hostId = config.olkInstallHostId
133 data.form.installUsername = config.olkInstallUsername134 data.form.installUsername = config.olkInstallUsername
134 data.form.password = config.olkInstallPassword135 data.form.password = config.olkInstallPassword
136+ data.form.rootPassword = config.olkRootPassword
135 data.form.installPath = config.olkInstallPath137 data.form.installPath = config.olkInstallPath
136 data.form.uploadPath = config.olkUploadPath138 data.form.uploadPath = config.olkUploadPath
137 data.form.olkTarId = config.olkTarId139 data.form.olkTarId = config.olkTarId
@@ -145,6 +147,7 @@ const saveStore = () => {
145 olkInstallHostId: data.form.hostId,147 olkInstallHostId: data.form.hostId,
146 olkInstallUsername: data.form.installUsername,148 olkInstallUsername: data.form.installUsername,
147 olkInstallPassword: data.form.password,149 olkInstallPassword: data.form.password,
150+ olkRootPassword: data.form.rootPassword,
148 olkInstallPath: data.form.installPath,151 olkInstallPath: data.form.installPath,
149 olkUploadPath: data.form.uploadPath,152 olkUploadPath: data.form.uploadPath,
150 olkTarId: data.form.olkTarId,153 olkTarId: data.form.olkTarId,
@@ -259,8 +262,8 @@ onMounted(() => {
259 262 
260const validatePort = async (port: number) => {263const validatePort = async (port: number) => {
261 let encryptPwd = ''264 let encryptPwd = ''
262- if (data.form.installUsername === 'root' && !data.host.isHostRemPwd) {265+ if (!data.host.isHostRemPwd) {
263- encryptPwd = await encryptPassword(data.form.password)266+ encryptPwd = await encryptPassword(data.form.rootPassword)
264 } else {267 } else {
265 const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')268 const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')
266 if (result) {269 if (result) {
@@ -305,10 +308,10 @@ const validateSpecialFields = async () => {
305 formRef.value?.clearValidate()308 formRef.value?.clearValidate()
306 const validMethodArr = []309 const validMethodArr = []
307 let encryptPwd = ''310 let encryptPwd = ''
308- if (data.form.installUsername === 'root' && !data.host.isHostRemPwd) {311+ if (!data.host.isHostRemPwd) {
309- encryptPwd = await encryptPassword(data.form.password)312+ encryptPwd = await encryptPassword(data.form.rootPassword)
310 } else {313 } else {
311- const result = userListByHost.value.find((item: KeyValue) => item.username === data.form.installUsername)314+ const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')
312 if (result) {315 if (result) {
313 encryptPwd = result.password316 encryptPwd = result.password
314 }317 }
@@ -318,13 +321,13 @@ const validateSpecialFields = async () => {
318 const param = {321 const param = {
319 publicIp: data.host.publicIp,322 publicIp: data.host.publicIp,
320 password: encryptPwd,323 password: encryptPwd,
321- username: data.form.installUsername,324+ username: 'root',
322 port: data.host.hostPort325 port: data.host.hostPort
323 }326 }
324 const passwordValid: KeyValue = await hostPing(param)327 const passwordValid: KeyValue = await hostPing(param)
325 if (Number(passwordValid.code) !== 200) {328 if (Number(passwordValid.code) !== 200) {
326 formRef.value?.setFields({329 formRef.value?.setFields({
327- password: {330+ rootPassword: {
328 status: 'error',331 status: 'error',
329 message: t('components.openLooKeng.5mpiji1qpcc42')332 message: t('components.openLooKeng.5mpiji1qpcc42')
330 }333 }
@@ -333,7 +336,7 @@ const validateSpecialFields = async () => {
333 }336 }
334 } catch (err: any) {337 } catch (err: any) {
335 formRef.value?.setFields({338 formRef.value?.setFields({
336- password: {339+ rootPassword: {
337 status: 'error',340 status: 'error',
338 message: t('components.openLooKeng.5mpiji1qpcc42')341 message: t('components.openLooKeng.5mpiji1qpcc42')
339 }342 }
@@ -383,7 +386,7 @@ const rules = computed(() => {
383 return {386 return {
384 hostId: { required: true, message: t('simpleInstall.index.5mpn813gukw0') },387 hostId: { required: true, message: t('simpleInstall.index.5mpn813gukw0') },
385 installUsername: { required: true, message: t('components.openLooKeng.5mpiji1qpcc12') },388 installUsername: { required: true, message: t('components.openLooKeng.5mpiji1qpcc12') },
386- password: [389+ rootPassword: [
387 { required: true, message: t('components.openLooKeng.5mpiji1qpcc13') }390 { required: true, message: t('components.openLooKeng.5mpiji1qpcc13') }
388 ],391 ],
389 installPath: [392 installPath: [
Mbase-ops/web-ui/src/views/ops/install/components/openLookeng/ShardingConfigPanel.vue+14-11
@@ -20,9 +20,9 @@
20 </a-option>20 </a-option>
21 </a-select>21 </a-select>
22 </a-form-item>22 </a-form-item>
23- <a-form-item v-if="!data.host.isHostRemPwd && data.form.installUsername === 'root'" field="password"23+ <a-form-item v-if="!data.host.isHostRemPwd" field="rootPassword"
24 :label="$t('components.openLooKeng.5mpiji1qpcc3')">24 :label="$t('components.openLooKeng.5mpiji1qpcc3')">
25- <a-input-password v-model="data.form.password" :placeholder="$t('components.openLooKeng.5mpiji1qpcc4')"25+ <a-input-password v-model="data.form.rootPassword" :placeholder="$t('components.openLooKeng.5mpiji1qpcc4')"
26 allow-clear/>26 allow-clear/>
27 </a-form-item>27 </a-form-item>
28 <a-form-item field="installPath" :label="$t('components.openLooKeng.5mpiji1qpcc5')"28 <a-form-item field="installPath" :label="$t('components.openLooKeng.5mpiji1qpcc5')"
@@ -101,6 +101,7 @@ const data = reactive<KeyValue>({
101 hostId: '',101 hostId: '',
102 installUsername: '',102 installUsername: '',
103 password: '',103 password: '',
104+ rootPassword: '',
104 installPath: '/data/install',105 installPath: '/data/install',
105 uploadPath: '/data/tar',106 uploadPath: '/data/tar',
106 shardingTarId: '',107 shardingTarId: '',
@@ -241,8 +242,8 @@ onMounted(() => {
241 242 
242const validatePort = async (port: number) => {243const validatePort = async (port: number) => {
243 let encryptPwd = ''244 let encryptPwd = ''
244- if (data.form.installUsername === 'root' && !data.host.isHostRemPwd) {245+ if (!data.host.isHostRemPwd) {
245- encryptPwd = await encryptPassword(data.form.password)246+ encryptPwd = await encryptPassword(data.form.rootPassword)
246 } else {247 } else {
247 const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')248 const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')
248 if (result) {249 if (result) {
@@ -298,7 +299,7 @@ const rules = computed(() => {
298 }],299 }],
299 hostId: { required: true, message: t('simpleInstall.index.5mpn813gukw0') },300 hostId: { required: true, message: t('simpleInstall.index.5mpn813gukw0') },
300 installUsername: { required: true, message: t('components.openLooKeng.5mpiji1qpcc12') },301 installUsername: { required: true, message: t('components.openLooKeng.5mpiji1qpcc12') },
301- password: [302+ rootPassword: [
302 { required: true, message: t('components.openLooKeng.5mpiji1qpcc13') }303 { required: true, message: t('components.openLooKeng.5mpiji1qpcc13') }
303 ],304 ],
304 installPath: [305 installPath: [
@@ -327,6 +328,7 @@ const initData = () => {
327 data.form.hostId = config.ssInstallHostId328 data.form.hostId = config.ssInstallHostId
328 data.form.installUsername = config.ssInstallUsername329 data.form.installUsername = config.ssInstallUsername
329 data.form.password = config.ssInstallPassword330 data.form.password = config.ssInstallPassword
331+ data.form.rootPassword = config.ssRootPassword
330 data.form.installPath = config.ssInstallPath332 data.form.installPath = config.ssInstallPath
331 data.form.shardingTarId = config.ssTarId333 data.form.shardingTarId = config.ssTarId
332 data.form.shardingPort = config.ssPort334 data.form.shardingPort = config.ssPort
@@ -344,6 +346,7 @@ const saveStore = () => {
344 ssInstallHostId: data.form.hostId,346 ssInstallHostId: data.form.hostId,
345 ssInstallUsername: data.form.installUsername,347 ssInstallUsername: data.form.installUsername,
346 ssInstallPassword: data.form.password,348 ssInstallPassword: data.form.password,
349+ ssRootPassword: data.form.rootPassword,
347 ssInstallPath: data.form.installPath,350 ssInstallPath: data.form.installPath,
348 ssTarId: data.form.shardingTarId,351 ssTarId: data.form.shardingTarId,
349 ssPort: data.form.shardingPort,352 ssPort: data.form.shardingPort,
@@ -418,10 +421,10 @@ const validateSpecialFields = async () => {
418 formRef.value?.clearValidate()421 formRef.value?.clearValidate()
419 const validMethodArr = []422 const validMethodArr = []
420 let encryptPwd = ''423 let encryptPwd = ''
421- if (data.form.installUsername === 'root' && !data.host.isHostRemPwd) {424+ if (!data.host.isHostRemPwd) {
422- encryptPwd = await encryptPassword(data.form.password)425+ encryptPwd = await encryptPassword(data.form.rootPassword)
423 } else {426 } else {
424- const result = userListByHost.value.find((item: KeyValue) => item.username === data.form.installUsername)427+ const result = userListByHost.value.find((item: KeyValue) => item.username === 'root')
425 if (result) {428 if (result) {
426 encryptPwd = result.password429 encryptPwd = result.password
427 }430 }
@@ -431,13 +434,13 @@ const validateSpecialFields = async () => {
431 const param = {434 const param = {
432 publicIp: data.host.publicIp,435 publicIp: data.host.publicIp,
433 password: encryptPwd,436 password: encryptPwd,
434- username: data.form.installUsername,437+ username: 'root',
435 port: data.host.hostPort438 port: data.host.hostPort
436 }439 }
437 const passwordValid: KeyValue = await hostPing(param)440 const passwordValid: KeyValue = await hostPing(param)
438 if (Number(passwordValid.code) !== 200) {441 if (Number(passwordValid.code) !== 200) {
439 formRef.value?.setFields({442 formRef.value?.setFields({
440- password: {443+ rootPassword: {
441 status: 'error',444 status: 'error',
442 message: t('components.openLooKeng.5mpiji1qpcc42')445 message: t('components.openLooKeng.5mpiji1qpcc42')
443 }446 }
@@ -446,7 +449,7 @@ const validateSpecialFields = async () => {
446 }449 }
447 } catch (err: any) {450 } catch (err: any) {
448 formRef.value?.setFields({451 formRef.value?.setFields({
449- password: {452+ rootPassword: {
450 status: 'error',453 status: 'error',
451 message: t('components.openLooKeng.5mpiji1qpcc42')454 message: t('components.openLooKeng.5mpiji1qpcc42')
452 }455 }
Mbase-ops/web-ui/src/views/ops/install/components/simple/ExeInstall.vue+1-0
@@ -216,6 +216,7 @@ const openLogSocket = () => {
216 })216 })
217 logSocket.onmessage((messageData: any) => {217 logSocket.onmessage((messageData: any) => {
218 console.log('show term message', messageData)218 console.log('show term message', messageData)
219+ 
219 if (temp) {220 if (temp) {
220 term.write('\x1b[2K\r')221 term.write('\x1b[2K\r')
221 if (messageData === '100%') {222 if (messageData === '100%') {
Mbase-ops/web-ui/src/views/ops/install/components/simple/InstallConfig.vue+4-4
@@ -5,7 +5,7 @@
5 <div class="label-color ft-b mb">{{ $t('simple.InstallConfig.5mpmu0lapic0') }}</div>5 <div class="label-color ft-b mb">{{ $t('simple.InstallConfig.5mpmu0lapic0') }}</div>
6 <a-form :model="data.form" :rules="data.rules" :style="{ width: '800px' }" ref="formRef">6 <a-form :model="data.form" :rules="data.rules" :style="{ width: '800px' }" ref="formRef">
7 <a-form-item field="clusterId" :label="$t('simple.InstallConfig.5mpmu0laqc80')" validate-trigger="blur">7 <a-form-item field="clusterId" :label="$t('simple.InstallConfig.5mpmu0laqc80')" validate-trigger="blur">
8- <a-input v-model="data.form.clusterId" :placeholder="$t('simple.InstallConfig.5mpmu0laqiw0')" />8+ <a-input v-model.trim="data.form.clusterId" :placeholder="$t('simple.InstallConfig.5mpmu0laqiw0')" />
9 </a-form-item>9 </a-form-item>
10 <a-form-item field="hostId" :label="$t('simple.InstallConfig.5mpmu0laqow0')">10 <a-form-item field="hostId" :label="$t('simple.InstallConfig.5mpmu0laqow0')">
11 <a-select :loading="hostListLoading" v-model="data.form.hostId" @change="changeHostId" class="mr-s"11 <a-select :loading="hostListLoading" v-model="data.form.hostId" @change="changeHostId" class="mr-s"
@@ -34,18 +34,18 @@
34 </a-select>34 </a-select>
35 </a-form-item>35 </a-form-item>
36 <a-form-item field="installPath" :label="$t('simple.InstallConfig.5mpmu0lar480')" validate-trigger="blur">36 <a-form-item field="installPath" :label="$t('simple.InstallConfig.5mpmu0lar480')" validate-trigger="blur">
37- <a-input v-model="data.form.installPath" :placeholder="$t('simple.InstallConfig.5mpmu0lar800')" />37+ <a-input v-model.trim="data.form.installPath" :placeholder="$t('simple.InstallConfig.5mpmu0lar800')" />
38 </a-form-item>38 </a-form-item>
39 <a-form-item v-if="installType !== 'import'" field="installPackagePath"39 <a-form-item v-if="installType !== 'import'" field="installPackagePath"
40 :label="$t('simple.InstallConfig.else6')" validate-trigger="blur">40 :label="$t('simple.InstallConfig.else6')" validate-trigger="blur">
41- <a-input v-model="data.form.installPackagePath" :placeholder="$t('simple.InstallConfig.else7')" />41+ <a-input v-model.trim="data.form.installPackagePath" :placeholder="$t('simple.InstallConfig.else7')" />
42 </a-form-item>42 </a-form-item>
43 <a-form-item field="port" :label="$t('simple.InstallConfig.5mpmu0larj40')" validate-trigger="blur">43 <a-form-item field="port" :label="$t('simple.InstallConfig.5mpmu0larj40')" validate-trigger="blur">
44 <a-input-number v-model="data.form.port" :placeholder="$t('simple.InstallConfig.5mpmu0larmo0')" />44 <a-input-number v-model="data.form.port" :placeholder="$t('simple.InstallConfig.5mpmu0larmo0')" />
45 </a-form-item>45 </a-form-item>
46 <a-form-item field="databaseUsername" :label="$t('simple.InstallConfig.5mpmu0larq40')" validate-trigger="blur"46 <a-form-item field="databaseUsername" :label="$t('simple.InstallConfig.5mpmu0larq40')" validate-trigger="blur"
47 v-if="installType === 'import'">47 v-if="installType === 'import'">
48- <a-input v-model="data.form.databaseUsername" :placeholder="$t('simple.InstallConfig.5mpmu0larto0')"48+ <a-input v-model.trim="data.form.databaseUsername" :placeholder="$t('simple.InstallConfig.5mpmu0larto0')"
49 allow-clear />49 allow-clear />
50 </a-form-item>50 </a-form-item>
51 <a-form-item field="databasePassword" :label="$t('simple.InstallConfig.5mpmu0larx00')" validate-trigger="blur">51 <a-form-item field="databasePassword" :label="$t('simple.InstallConfig.5mpmu0larx00')" validate-trigger="blur">
Mbase-ops/web-ui/src/views/ops/simpleInstall/index.vue+67-8
@@ -12,8 +12,8 @@
12 </div>12 </div>
13 <a-form class="mb" :model="data.form" :rules="formRules" :style="{ width: '400px' }" ref="formRef" auto-label-width>13 <a-form class="mb" :model="data.form" :rules="formRules" :style="{ width: '400px' }" ref="formRef" auto-label-width>
14 <a-form-item field="hostId" :label="$t('simpleInstall.index.5mpn813guf00')">14 <a-form-item field="hostId" :label="$t('simpleInstall.index.5mpn813guf00')">
15- <div class="flex-row">15+ <div class="flex-row mr-s">
16- <a-select style="width: 313px;" class="mr" :loading="data.hostLoading" v-model="data.form.hostId"16+ <a-select style="width: 313px;" class="mr-s" :loading="data.hostLoading" v-model="data.form.hostId"
17 :placeholder="$t('simpleInstall.index.5mpn813gukw0')" @change="hostChange"17 :placeholder="$t('simpleInstall.index.5mpn813gukw0')" @change="hostChange"
18 @popup-visible-change="hostVisibleChange">18 @popup-visible-change="hostVisibleChange">
19 <a-option v-for="item in data.hostList" :key="item.hostId" :value="item.hostId">{{19 <a-option v-for="item in data.hostList" :key="item.hostId" :value="item.hostId">{{
@@ -22,8 +22,11 @@
22 (item.publicIp ? item.publicIp : '--') + ')'22 (item.publicIp ? item.publicIp : '--') + ')'
23 }}</a-option>23 }}</a-option>
24 </a-select>24 </a-select>
25- <label class="label-color">{{ data.form.sysArch }}</label>25+ <icon-code-square :size="25" class="label-color" style="cursor: pointer;" @click="showTerminal" />
26 </div>26 </div>
27+ <template #extra>
28+ <label class="label-color">{{ data.form.sysArch }}</label>
29+ </template>
27 </a-form-item>30 </a-form-item>
28 <a-form-item v-if="data.isNeedPwd" field="rootPassword" :label="$t('simpleInstall.index.else2')"31 <a-form-item v-if="data.isNeedPwd" field="rootPassword" :label="$t('simpleInstall.index.else2')"
29 validate-trigger="blur">32 validate-trigger="blur">
@@ -65,10 +68,10 @@
65 <div class="flex-col-start full-h full-w">68 <div class="flex-col-start full-h full-w">
66 <a-steps small type="arrow" style="width: 100%;" class="mb" :current="data.installStepNum"69 <a-steps small type="arrow" style="width: 100%;" class="mb" :current="data.installStepNum"
67 :status="data.currentStatus">70 :status="data.currentStatus">
68- <a-step>环境准备</a-step>71+ <a-step>{{ $t('simple.ExeInstall.else1') }}</a-step>
69- <a-step>安装包准备</a-step>72+ <a-step>{{ $t('simple.ExeInstall.else2') }}</a-step>
70- <a-step>执行安装</a-step>73+ <a-step>{{ $t('simple.ExeInstall.else3') }}</a-step>
71- <a-step>安装后处理</a-step>74+ <a-step>{{ $t('simple.ExeInstall.else4') }}</a-step>
72 </a-steps>75 </a-steps>
73 <div class="flex-row full-w full-h">76 <div class="flex-row full-w full-h">
74 <div class="flex-col-start panel-w mr" :style="data.state === 2 ? '' : 'width: 100%'">77 <div class="flex-col-start panel-w mr" :style="data.state === 2 ? '' : 'width: 100%'">
@@ -113,6 +116,7 @@
113 </div>116 </div>
114 </div>117 </div>
115 </div>118 </div>
119+ <host-terminal ref="hostTerminalRef"></host-terminal>
116 </div>120 </div>
117</template>121</template>
118 122 
@@ -137,6 +141,8 @@ import { FormInstance } from '@arco-design/web-vue/es/form'
137import { encryptPassword } from '@/utils/jsencrypt'141import { encryptPassword } from '@/utils/jsencrypt'
138import { useI18n } from 'vue-i18n'142import { useI18n } from 'vue-i18n'
139import dayjs from "dayjs";143import dayjs from "dayjs";
144+import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue";
145+ 
140const { t } = useI18n()146const { t } = useI18n()
141const data = reactive<KeyValue>({147const data = reactive<KeyValue>({
142 state: -1, // -1 un install 0 installing 1 success 2 fail148 state: -1, // -1 un install 0 installing 1 success 2 fail
@@ -300,6 +306,7 @@ const retryInstall = () => {
300const openLogSocket = () => {306const openLogSocket = () => {
301 const term = getTermObj()307 const term = getTermObj()
302 let isProgress = false308 let isProgress = false
309+ let temp = false
303 const socketKey = new Date().getTime()310 const socketKey = new Date().getTime()
304 const logSocket = new Socket({ url: `simple_installLog_${socketKey}` })311 const logSocket = new Socket({ url: `simple_installLog_${socketKey}` })
305 terminalLogWs.value = logSocket312 terminalLogWs.value = logSocket
@@ -329,12 +336,28 @@ const openLogSocket = () => {
329 term.write('\x1b[2K\r')336 term.write('\x1b[2K\r')
330 if (progress === 1) {337 if (progress === 1) {
331 term.writeln((progress * 100).toFixed(0) + '%')338 term.writeln((progress * 100).toFixed(0) + '%')
339+ isProgress = false
332 } else {340 } else {
333 term.write((progress * 100).toFixed(0) + '%')341 term.write((progress * 100).toFixed(0) + '%')
334 }342 }
335 }343 }
336 } else {344 } else {
337- term.writeln(messageData)345+ if (temp) {
346+ term.write('\x1b[2K\r')
347+ if (messageData === '100%') {
348+ term.writeln(messageData)
349+ } else {
350+ term.write(messageData)
351+ }
352+ } else {
353+ term.writeln(messageData)
354+ }
355+ if (messageData === 'START_SCP_INSTALL_PACKAGE') {
356+ temp = true
357+ }
358+ if (messageData === 'END_SCP_INSTALL_PACKAGE') {
359+ temp = false
360+ }
338 }361 }
339 numDynamic(messageData)362 numDynamic(messageData)
340 if (messageData.indexOf('FINAL_EXECUTE_EXIT_CODE') > -1) {363 if (messageData.indexOf('FINAL_EXECUTE_EXIT_CODE') > -1) {
@@ -626,6 +649,42 @@ const handleDownloadLog = () => {
626 URL.revokeObjectURL(url)649 URL.revokeObjectURL(url)
627}650}
628 651 
652+const hostTerminalRef = ref<null | InstanceType<typeof HostTerminal>>(null)
653+const showTerminal = () => {
654+ // isRemember password
655+ if (data.isNeedPwd) {
656+ if (!data.form.rootPassword) {
657+ formRef.value?.setFields({
658+ rootPassword: {
659+ status: 'error',
660+ message: t('simple.InstallConfig.5mpmu0laqwo0')
661+ }
662+ })
663+ return
664+ }
665+ }
666+ if (!data.form.hostId) {
667+ formRef.value?.setFields({
668+ hostId: {
669+ status: 'error',
670+ message: t('simple.InstallConfig.5mpmu0laqss0')
671+ }
672+ })
673+ return
674+ }
675+ // showTerminal
676+ handleShowTerminal({
677+ hostId: data.form.hostId,
678+ port: data.form.port,
679+ ip: data.form.publicIp,
680+ password: data.form.rootPassword
681+ })
682+}
683+ 
684+const handleShowTerminal = (data: KeyValue) => {
685+ hostTerminalRef.value?.open(data)
686+}
687+ 
629</script>688</script>
630 689 
631<style lang="less" scoped>690<style lang="less" scoped>
MopenGauss-visualtool/visualtool-api/src/main/java/org/opengauss/admin/web/controller/ops/JdbcDbClusterController.java+3-1
@@ -78,6 +78,8 @@ public class JdbcDbClusterController extends BaseController {
78 headers.add("Access-Control-Expose-Headers", "Content-Disposition");78 headers.add("Access-Control-Expose-Headers", "Content-Disposition");
79 headers.add("Content-Disposition", "attachment;filename=" + fileName);79 headers.add("Content-Disposition", "attachment;filename=" + fileName);
80 80 
81- return ResponseEntity.ok().headers(headers).body("\"集群名称\",\"连接URL\",\"用户名\",\"密码\"".getBytes(StandardCharsets.UTF_8));81+ String content = "\"集群名称(自定义一个集群名,集群名相同则认为是同一个集群)\",\"连接URL(JDBC的URL信息,例如 jdbc:opengauss://IP:PORT/databasename)\",\"用户名(数据库连接用户名)\",\"密码(数据库用户名对应的密码)\"\n" +
82+ "\"\",\"\",\"\",\"\"";
83+ return ResponseEntity.ok().headers(headers).body(content.getBytes(StandardCharsets.UTF_8));
82 }84 }
83}85}
MopenGauss-visualtool/visualtool-api/src/main/resources/db/openGauss-visualtool.sql+4-1
@@ -150,6 +150,9 @@ COMMENT ON COLUMN "public"."ops_az"."create_time" IS '创建时间';
150COMMENT ON COLUMN "public"."ops_az"."update_by" IS '更新者';150COMMENT ON COLUMN "public"."ops_az"."update_by" IS '更新者';
151COMMENT ON COLUMN "public"."ops_az"."update_time" IS '更新时间';151COMMENT ON COLUMN "public"."ops_az"."update_time" IS '更新时间';
152 152 
153+INSERT INTO "public"."ops_az"("az_id", "name", "priority", "address", "remark", "create_by", "create_time", "update_by", "update_time") VALUES (1639451067550920705, 'az1', NULL, '中国', NULL, 'admin', '2023-03-25 10:16:08.69', 'admin', '2023-03-25 10:16:08.69') ON DUPLICATE KEY
154+UPDATE NOTHING;;
155+ 
153-- ----------------------------156-- ----------------------------
154-- Table structure for ops_check157-- Table structure for ops_check
155-- ----------------------------158-- ----------------------------
@@ -994,7 +997,7 @@ ON COLUMN "public"."sys_setting"."upload_path" IS '文件上传目录';
994-- ----------------------------997-- ----------------------------
995-- Records of sys_setting998-- Records of sys_setting
996-- ----------------------------999-- ----------------------------
997-INSERT INTO "public"."sys_setting"VALUES (1, 1, '/ops/files') ON DUPLICATE KEY UPDATE NOTHING;1000+INSERT INTO "public"."sys_setting"VALUES (1, 1, '/ops/files/') ON DUPLICATE KEY UPDATE NOTHING;
998 1001 
999CREATE OR REPLACE FUNCTION add_user_field_func() RETURNS integer AS 'BEGIN1002CREATE OR REPLACE FUNCTION add_user_field_func() RETURNS integer AS 'BEGIN
1000IF1003IF
MopenGauss-visualtool/visualtool-common/src/main/java/org/opengauss/admin/common/core/domain/model/ops/OpsClusterNodeVO.java+4-0
@@ -25,11 +25,15 @@ public class OpsClusterNodeVO {
25 //private String rootPassword;25 //private String rootPassword;
26 private Boolean isRemember;26 private Boolean isRemember;
27 private String installUserName;27 private String installUserName;
28+ private String installPath;
29+ private String dataPath;
28 30 
29 public static OpsClusterNodeVO of(OpsClusterNodeEntity opsClusterNodeEntity) {31 public static OpsClusterNodeVO of(OpsClusterNodeEntity opsClusterNodeEntity) {
30 OpsClusterNodeVO opsClusterNodeVO = new OpsClusterNodeVO();32 OpsClusterNodeVO opsClusterNodeVO = new OpsClusterNodeVO();
31 opsClusterNodeVO.setNodeId(opsClusterNodeEntity.getClusterNodeId());33 opsClusterNodeVO.setNodeId(opsClusterNodeEntity.getClusterNodeId());
32 opsClusterNodeVO.setClusterRole(opsClusterNodeEntity.getClusterRole().name());34 opsClusterNodeVO.setClusterRole(opsClusterNodeEntity.getClusterRole().name());
35+ opsClusterNodeVO.setInstallPath(opsClusterNodeEntity.getInstallPath());
36+ opsClusterNodeVO.setDataPath(opsClusterNodeEntity.getDataPath());
33 return opsClusterNodeVO;37 return opsClusterNodeVO;
34 }38 }
35}39}
MopenGauss-visualtool/visualtool-common/src/main/java/org/opengauss/admin/common/core/domain/model/ops/OpsClusterVO.java+2-0
@@ -29,6 +29,7 @@ public class OpsClusterVO {
29 private Map<String, Integer> checkSummary;29 private Map<String, Integer> checkSummary;
30 30 
31 private List<OpsClusterNodeVO> clusterNodes;31 private List<OpsClusterNodeVO> clusterNodes;
32+ private String envPath;
32 33 
33 public static OpsClusterVO of(OpsClusterEntity opsClusterEntity) {34 public static OpsClusterVO of(OpsClusterEntity opsClusterEntity) {
34 OpsClusterVO opsClusterVO = new OpsClusterVO();35 OpsClusterVO opsClusterVO = new OpsClusterVO();
@@ -38,6 +39,7 @@ public class OpsClusterVO {
38 opsClusterVO.setVersionNum(opsClusterEntity.getVersionNum());39 opsClusterVO.setVersionNum(opsClusterEntity.getVersionNum());
39 opsClusterVO.setDatabasePassword(opsClusterEntity.getDatabasePassword());40 opsClusterVO.setDatabasePassword(opsClusterEntity.getDatabasePassword());
40 opsClusterVO.setDeployType(opsClusterEntity.getDeployType());41 opsClusterVO.setDeployType(opsClusterEntity.getDeployType());
42+ opsClusterVO.setEnvPath(opsClusterEntity.getEnvPath());
41 return opsClusterVO;43 return opsClusterVO;
42 }44 }
43}45}
MopenGauss-visualtool/visualtool-common/src/main/java/org/opengauss/admin/common/core/domain/model/ops/jdbc/JdbcMonitorVO.java+2-0
@@ -15,4 +15,6 @@ public class JdbcMonitorVO {
15 private String tps;15 private String tps;
16 private String memoryUsed;16 private String memoryUsed;
17 private String tableSpaceUsed;17 private String tableSpaceUsed;
18+ private String lockNum;
19+ private String sessionNum;
18}20}
MopenGauss-visualtool/visualtool-service/src/main/java/org/opengauss/admin/system/service/ops/IOpsClusterService.java+7-0
@@ -5,6 +5,7 @@ import org.opengauss.admin.common.core.domain.entity.ops.OpsClusterEntity;
5import org.opengauss.admin.common.core.domain.model.ops.ClusterSummaryVO;5import org.opengauss.admin.common.core.domain.model.ops.ClusterSummaryVO;
6import org.opengauss.admin.common.core.domain.model.ops.OpsClusterVO;6import org.opengauss.admin.common.core.domain.model.ops.OpsClusterVO;
7 7 
8+import java.sql.Connection;
8import java.util.List;9import java.util.List;
9import java.util.Map;10import java.util.Map;
10 11 
@@ -24,4 +25,10 @@ public interface IOpsClusterService extends IService<OpsClusterEntity> {
24 Map<String, Integer> threadPoolMonitor();25 Map<String, Integer> threadPoolMonitor();
25 26 
26 long countByHostId(String hostId);27 long countByHostId(String hostId);
28+ 
29+ String connectNum(Connection connection);
30+ 
31+ String session(Connection connection);
32+ 
33+ String lock(Connection connection);
27}34}
MopenGauss-visualtool/visualtool-service/src/main/java/org/opengauss/admin/system/service/ops/impl/OpsClusterServiceImpl.java+10-3
@@ -140,6 +140,10 @@ public class OpsClusterServiceImpl extends ServiceImpl<OpsClusterMapper, OpsClus
140 opsClusterNodeVO.setDbUser(opsClusterEntity.getDatabaseUsername());140 opsClusterNodeVO.setDbUser(opsClusterEntity.getDatabaseUsername());
141 opsClusterNodeVO.setDbUserPassword(opsClusterEntity.getDatabasePassword());141 opsClusterNodeVO.setDbUserPassword(opsClusterEntity.getDatabasePassword());
142 142 
143+ if (OpenGaussVersionEnum.ENTERPRISE == opsClusterEntity.getVersion()){
144+ opsClusterNodeVO.setInstallPath(opsClusterEntity.getInstallPath());
145+ }
146+ 
143 if (Objects.nonNull(installUser)) {147 if (Objects.nonNull(installUser)) {
144 opsClusterNodeVO.setInstallUserName(installUser.getUsername());148 opsClusterNodeVO.setInstallUserName(installUser.getUsername());
145 }149 }
@@ -560,7 +564,8 @@ public class OpsClusterServiceImpl extends ServiceImpl<OpsClusterMapper, OpsClus
560 return res;564 return res;
561 }565 }
562 566 
563- private String connectNum(Connection connection) {567+ @Override
568+ public String connectNum(Connection connection) {
564 String sql = "SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s";569 String sql = "SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s";
565 String res = null;570 String res = null;
566 try (Statement statement = connection.createStatement();571 try (Statement statement = connection.createStatement();
@@ -576,7 +581,8 @@ public class OpsClusterServiceImpl extends ServiceImpl<OpsClusterMapper, OpsClus
576 return res;581 return res;
577 }582 }
578 583 
579- private String session(Connection connection) {584+ @Override
585+ public String session(Connection connection) {
580 String sql = "SELECT count(*) FROM pg_stat_activity";586 String sql = "SELECT count(*) FROM pg_stat_activity";
581 String res = null;587 String res = null;
582 try (Statement statement = connection.createStatement();588 try (Statement statement = connection.createStatement();
@@ -592,7 +598,8 @@ public class OpsClusterServiceImpl extends ServiceImpl<OpsClusterMapper, OpsClus
592 return res;598 return res;
593 }599 }
594 600 
595- private String lock(Connection connection) {601+ @Override
602+ public String lock(Connection connection) {
596 String sql = "SELECT count(*) FROM pg_locks";603 String sql = "SELECT count(*) FROM pg_locks";
597 String res = null;604 String res = null;
598 try (Statement statement = connection.createStatement();605 try (Statement statement = connection.createStatement();
MopenGauss-visualtool/visualtool-service/src/main/java/org/opengauss/admin/system/service/ops/impl/OpsJdbcDbClusterNodeServiceImpl.java+33-0
@@ -20,6 +20,7 @@ import org.opengauss.admin.common.exception.ops.OpsException;
20import org.opengauss.admin.common.utils.ops.JdbcUtil;20import org.opengauss.admin.common.utils.ops.JdbcUtil;
21import org.opengauss.admin.common.utils.ops.WsUtil;21import org.opengauss.admin.common.utils.ops.WsUtil;
22import org.opengauss.admin.system.mapper.ops.OpsJdbcDbClusterNodeMapper;22import org.opengauss.admin.system.mapper.ops.OpsJdbcDbClusterNodeMapper;
23+import org.opengauss.admin.system.service.ops.IOpsClusterService;
23import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterNodeService;24import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterNodeService;
24import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterService;25import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterService;
25import org.springframework.beans.factory.annotation.Autowired;26import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +53,8 @@ public class OpsJdbcDbClusterNodeServiceImpl extends ServiceImpl<OpsJdbcDbCluste
52 private WsConnectorManager wsConnectorManager;53 private WsConnectorManager wsConnectorManager;
53 @Autowired54 @Autowired
54 private WsUtil wsUtil;55 private WsUtil wsUtil;
56+ @Autowired
57+ private IOpsClusterService opsClusterService;
55 58 
56 @Override59 @Override
57 @Transactional(rollbackFor = Exception.class)60 @Transactional(rollbackFor = Exception.class)
@@ -296,7 +299,37 @@ public class OpsJdbcDbClusterNodeServiceImpl extends ServiceImpl<OpsJdbcDbCluste
296 }299 }
297 300 
298 private void doMonitorOpenGauss(Connection connection, JdbcMonitorVO jdbcMonitorVO) {301 private void doMonitorOpenGauss(Connection connection, JdbcMonitorVO jdbcMonitorVO) {
302+ CountDownLatch countDownLatch = new CountDownLatch(3);
303+ threadPoolTaskExecutor.submit(()->{
304+ try {
305+ jdbcMonitorVO.setLockNum(opsClusterService.lock(connection));
306+ }finally {
307+ countDownLatch.countDown();
308+ }
309+ });
299 310 
311+ threadPoolTaskExecutor.submit(()->{
312+ try {
313+ jdbcMonitorVO.setSessionNum(opsClusterService.session(connection));
314+ }finally {
315+ countDownLatch.countDown();
316+ }
317+ });
318+ 
319+ threadPoolTaskExecutor.submit(()->{
320+ try {
321+ jdbcMonitorVO.setConnNum(opsClusterService.connectNum(connection));
322+ }finally {
323+ countDownLatch.countDown();
324+ }
325+ });
326+ 
327+ try {
328+ countDownLatch.await();
329+ } catch (InterruptedException e) {
330+ log.error("waiting for thread to be interrupted", e);
331+ throw new OpsException("monitor error");
332+ }
300 }333 }
301 334 
302 private void doMonitorMysql(Connection connection, JdbcMonitorVO jdbcMonitorVO) {335 private void doMonitorMysql(Connection connection, JdbcMonitorVO jdbcMonitorVO) {
MopenGauss-visualtool/visualtool-ui/src/locale/locale/en.json+6-1
@@ -470,7 +470,7 @@
470 "5mpivn7fwjc1": "Edit System Setting",470 "5mpivn7fwjc1": "Edit System Setting",
471 "5mpivn7fwjc2": "File Upload Path",471 "5mpivn7fwjc2": "File Upload Path",
472 "5mpivn7fwjc6": "Please input file upload path",472 "5mpivn7fwjc6": "Please input file upload path",
473- "5mpivn7fwjc9": "File path is not correct",473+ "5mpivn7fwjc9": "File path is not correct, must end with /",
474 "5mpivn7fwj10": "The directory is already occupied by another user. Please enter a different path"474 "5mpivn7fwj10": "The directory is already occupied by another user. Please enter a different path"
475 }475 }
476 },476 },
@@ -651,6 +651,8 @@
651 "disk": "Disk usage",651 "disk": "Disk usage",
652 "baseInfo": "BaseInfo",652 "baseInfo": "BaseInfo",
653 "diskInfo": "DiskInfo",653 "diskInfo": "DiskInfo",
654+ "realTime": "RealTime",
655+ "tipInfo": "Prerequisites: Remember the password when saving the host to obtain data in real time. Otherwise it cannot be obtained",
654 "detail": "Detail",656 "detail": "Detail",
655 "labelBatch": "Tag Setting",657 "labelBatch": "Tag Setting",
656 "labelManage": "Tag Manage",658 "labelManage": "Tag Manage",
@@ -798,6 +800,9 @@
798 "else3": "Node",800 "else3": "Node",
799 "else4": "unknown",801 "else4": "unknown",
800 "else5": "Oper System",802 "else5": "Oper System",
803+ "else6": "RealTime",
804+ "else7": "Session",
805+ "else8": "Lock",
801 "5oxhv6qcm6w0": "To detect",806 "5oxhv6qcm6w0": "To detect",
802 "5oxhv6qcnak0": "Master",807 "5oxhv6qcnak0": "Master",
803 "5oxhv6qcnnk0": "Slave",808 "5oxhv6qcnnk0": "Slave",
MopenGauss-visualtool/visualtool-ui/src/locale/locale/zh-cn.json+6-1
@@ -470,7 +470,7 @@
470 "5mpivn7fwjc1": "修改系统设置",470 "5mpivn7fwjc1": "修改系统设置",
471 "5mpivn7fwjc2": "文件上传路径",471 "5mpivn7fwjc2": "文件上传路径",
472 "5mpivn7fwjc6": "请输入文件上传路径",472 "5mpivn7fwjc6": "请输入文件上传路径",
473- "5mpivn7fwjc9": "文件路径不正确",473+ "5mpivn7fwjc9": "上传路径不正确,必须以/结尾",
474 "5mpivn7fwj10": "目录已被其它用户占用,请输入别的路径"474 "5mpivn7fwj10": "目录已被其它用户占用,请输入别的路径"
475 }475 }
476 },476 },
@@ -651,6 +651,8 @@
651 "disk": "磁盘使用率",651 "disk": "磁盘使用率",
652 "baseInfo": "基本信息",652 "baseInfo": "基本信息",
653 "diskInfo": "硬件信息",653 "diskInfo": "硬件信息",
654+ "tipInfo": "前提:保存主机时需记住密码,才能实时获取数据。否则不能获取",
655+ "realTime": "实时",
654 "detail": "详情",656 "detail": "详情",
655 "labelBatch": "标签设置",657 "labelBatch": "标签设置",
656 "labelManage": "标签管理",658 "labelManage": "标签管理",
@@ -798,6 +800,9 @@
798 "else3": "节点",800 "else3": "节点",
799 "else4": "未知",801 "else4": "未知",
800 "else5": "操作系统",802 "else5": "操作系统",
803+ "else6": "实时",
804+ "else7": "会话数",
805+ "else8": "锁数量",
801 "5oxhv6qcm6w0": "去检测",806 "5oxhv6qcm6w0": "去检测",
802 "5oxhv6qcnak0": "主",807 "5oxhv6qcnak0": "主",
803 "5oxhv6qcnnk0": "备",808 "5oxhv6qcnnk0": "备",
MopenGauss-visualtool/visualtool-ui/src/views/resource/az/components/AddAz.vue+3-3
@@ -18,13 +18,13 @@
18 <a-form :model="data.formData" ref="formRef" :label-col="{ style: { width: '90px' } }" :rules="formRules"18 <a-form :model="data.formData" ref="formRef" :label-col="{ style: { width: '90px' } }" :rules="formRules"
19 :disabled="data.disabled">19 :disabled="data.disabled">
20 <a-form-item field="name" :label="$t('components.AddAz.azName')" validate-trigger="blur">20 <a-form-item field="name" :label="$t('components.AddAz.azName')" validate-trigger="blur">
21- <a-input v-model="data.formData.name" :placeholder="$t('components.AddAz.5mpib0ipov80')"></a-input>21+ <a-input v-model.trim="data.formData.name" :placeholder="$t('components.AddAz.5mpib0ipov80')"></a-input>
22 </a-form-item>22 </a-form-item>
23 <a-form-item :label="$t('components.AddAz.5mpib0ipozw0')" field="address" validate-trigger="blur">23 <a-form-item :label="$t('components.AddAz.5mpib0ipozw0')" field="address" validate-trigger="blur">
24- <a-input v-model="data.formData.address" :placeholder="$t('components.AddAz.5mpib0ipp3k0')"></a-input>24+ <a-input v-model.trim="data.formData.address" :placeholder="$t('components.AddAz.5mpib0ipp3k0')"></a-input>
25 </a-form-item>25 </a-form-item>
26 <a-form-item :label="$t('components.AddAz.5mpib0ippfc0')">26 <a-form-item :label="$t('components.AddAz.5mpib0ippfc0')">
27- <a-textarea v-model="data.formData.remark" :placeholder="$t('components.AddAz.5mpib0ippjg0')"></a-textarea>27+ <a-textarea v-model.trim="data.formData.remark" :placeholder="$t('components.AddAz.5mpib0ippjg0')"></a-textarea>
28 </a-form-item>28 </a-form-item>
29 </a-form>29 </a-form>
30 </a-modal>30 </a-modal>
MopenGauss-visualtool/visualtool-ui/src/views/resource/az/index.vue+15-4
@@ -2,7 +2,7 @@
2 <div class="app-container">2 <div class="app-container">
3 <div class="main-bd">3 <div class="main-bd">
4 <div class="az-list">4 <div class="az-list">
5- <div class="flex-between mb">5+ <div class="flex-between mb-s">
6 <div>6 <div>
7 <a-button type="primary" class="mr" @click="handleAddAz('create')">7 <a-button type="primary" class="mr" @click="handleAddAz('create')">
8 <template #icon>8 <template #icon>
@@ -12,9 +12,20 @@
12 </a-button>12 </a-button>
13 </div>13 </div>
14 <div>14 <div>
15- <a-input-search v-model="filter.name" :loading="list.loading" allowClear @search="getListData"15+ <a-form :model="filter" layout="inline">
16- @press-enter="getListData" @clear="getListData" :placeholder="$t('az.index.5mpi9hkpgdw0')"16+ <a-form-item field="name" :label="$t('az.index.azName')">
17- search-button />17+ <a-input v-model.trim="filter.name" allow-clear :placeholder="$t('az.index.5mpi9hkpgdw0')"
18+ style="width: 180px;"></a-input>
19+ </a-form-item>
20+ <a-form-item>
21+ <a-button type="outline" @click="getListData()">
22+ <template #icon>
23+ <icon-search />
24+ </template>
25+ <template #default>{{ $t('database.index.5oxhr0qz30g0') }}</template>
26+ </a-button>
27+ </a-form-item>
28+ </a-form>
18 </div>29 </div>
19 </div>30 </div>
20 <a-table class="d-a-table-row" :data="list.data" :columns="columns" :pagination="list.page"31 <a-table class="d-a-table-row" :data="list.data" :columns="columns" :pagination="list.page"
MopenGauss-visualtool/visualtool-ui/src/views/resource/database/JdbcInstance.vue+6-5
@@ -1,7 +1,7 @@
1<template>1<template>
2 <a-form :model="form" ref="formRef" auto-label-width :rules="formRules">2 <a-form :model="form" ref="formRef" auto-label-width :rules="formRules">
3 <a-form-item field="ip" :label="$t('database.JdbcInstance.5oxhtcbo8ac0')" validate-trigger="change">3 <a-form-item field="ip" :label="$t('database.JdbcInstance.5oxhtcbo8ac0')" validate-trigger="change">
4- <a-select v-model="form.ip" :placeholder="$t('database.JdbcInstance.5oxhtcbo9fg0')" allow-create>4+ <a-select v-model.trim="form.ip" :placeholder="$t('database.JdbcInstance.5oxhtcbo9fg0')" allow-create>
5 <a-option v-for="item in props.hostList" :key="item.value" :label="item.label" :value="item.value"></a-option>5 <a-option v-for="item in props.hostList" :key="item.value" :label="item.label" :value="item.value"></a-option>
6 </a-select>6 </a-select>
7 </a-form-item>7 </a-form-item>
@@ -9,18 +9,19 @@
9 <a-input-number v-model="form.port" :placeholder="$t('database.JdbcInstance.5oxhtcbo9xc0')" />9 <a-input-number v-model="form.port" :placeholder="$t('database.JdbcInstance.5oxhtcbo9xc0')" />
10 </a-form-item>10 </a-form-item>
11 <a-form-item field="username" :label="$t('database.JdbcInstance.5oxhtcboa240')" validate-trigger="blur">11 <a-form-item field="username" :label="$t('database.JdbcInstance.5oxhtcboa240')" validate-trigger="blur">
12- <a-input v-model="form.username" :placeholder="$t('database.JdbcInstance.5oxhtcboa7c0')" />12+ <a-input v-model.trim="form.username" :placeholder="$t('database.JdbcInstance.5oxhtcboa7c0')" />
13 </a-form-item>13 </a-form-item>
14 <a-form-item field="password" :label="$t('database.JdbcInstance.5oxhtcboac00')" validate-trigger="blur">14 <a-form-item field="password" :label="$t('database.JdbcInstance.5oxhtcboac00')" validate-trigger="blur">
15- <a-input-password v-model="form.password" :placeholder="$t('database.JdbcInstance.5oxhtcboags0')" allow-clear />15+ <a-input-password v-model.trim="form.password" :placeholder="$t('database.JdbcInstance.5oxhtcboags0')"
16+ allow-clear />
16 </a-form-item>17 </a-form-item>
17 <a-form-item :label="$t('database.JdbcInstance.5oxhtcboap00')">18 <a-form-item :label="$t('database.JdbcInstance.5oxhtcboap00')">
18 <a-table class="full-w" :data="form.props" :columns="columns" size="mini" :pagination="false">19 <a-table class="full-w" :data="form.props" :columns="columns" size="mini" :pagination="false">
19 <template #name="{ rowIndex }">20 <template #name="{ rowIndex }">
20- <a-input size="mini" v-model="form.props[rowIndex].name" />21+ <a-input size="mini" v-model.trim="form.props[rowIndex].name" />
21 </template>22 </template>
22 <template #value="{ rowIndex }">23 <template #value="{ rowIndex }">
23- <a-input size="mini" v-model="form.props[rowIndex].value" />24+ <a-input size="mini" v-model.trim="form.props[rowIndex].value" />
24 </template>25 </template>
25 <template #operation="{ rowIndex }">26 <template #operation="{ rowIndex }">
26 <div class="flex-row-start">27 <div class="flex-row-start">
MopenGauss-visualtool/visualtool-ui/src/views/resource/database/JdbcNodeTable.vue+38-17
@@ -29,36 +29,51 @@
29 <div>{{ getNodeRole(record.role) }}</div>29 <div>{{ getNodeRole(record.role) }}</div>
30 </div>30 </div>
31 </div>31 </div>
32+ <a-tag color="green">{{ $t('database.JdbcNodeTable.else6') }}</a-tag>
32 </div>33 </div>
33 </template>34 </template>
34 <template #connectInfo="{ record }">35 <template #connectInfo="{ record }">
35- <div class="flex-col-start">36+ <div class="flex-col-start" v-if="jdbcData.dbType === 'MYSQL'">
36 <div class="flex-row">37 <div class="flex-row">
37- <div class="mr-s" style="width: 50px;text-align: right;">QPS:</div>38+ <div class="mr-s" style="width: 50px;">QPS:</div>
38 <div class="monitor-data">{{ record.qps ? record.qps : '--' }}</div>39 <div class="monitor-data">{{ record.qps ? record.qps : '--' }}</div>
39 </div>40 </div>
40 <div class="flex-row">41 <div class="flex-row">
41- <div class="mr-s" style="width: 50px;text-align: right;">TPS:</div>42+ <div class="mr-s" style="width: 50px;">TPS:</div>
42 <div class="monitor-data">{{ record.tps ? record.tps : '--' }}</div>43 <div class="monitor-data">{{ record.tps ? record.tps : '--' }}</div>
43 </div>44 </div>
44 <div class="flex-row">45 <div class="flex-row">
45- <div class="mr-s" style="width: 50px;text-align: right;">{{ $t('database.JdbcNodeTable.5oxhv6qcnuk0') }}:46+ <div class="mr-s" style="width: 50px;">{{ $t('database.JdbcNodeTable.5oxhv6qcnuk0') }}:
46 </div>47 </div>
47 <div class="monitor-data">{{ record.connNum ? record.connNum : '--' }}</div>48 <div class="monitor-data">{{ record.connNum ? record.connNum : '--' }}</div>
48 </div>49 </div>
49 </div>50 </div>
51+ <div class="flex-col-start" v-if="jdbcData.dbType === 'OPENGAUSS'">
52+ <div class="flex-col">
53+ <div class="monitor-data">{{ record.connNum ? record.connNum : '--' }}</div>
54+ <div>{{ $t('database.JdbcNodeTable.5oxhv6qcnuk0') }}</div>
55+ </div>
56+ </div>
50 </template>57 </template>
51 <template #tableSpaceUsed="{ record }">58 <template #tableSpaceUsed="{ record }">
52- <div class="flex-col mr" style="width: 130px;">59+ <div class="flex-col mr" style="width: 130px;" v-if="jdbcData.dbType === 'MYSQL'">
53 <div class="monitor-data">{{ record.tableSpaceUsed ? record.tableSpaceUsed : '--' }}MB</div>60 <div class="monitor-data">{{ record.tableSpaceUsed ? record.tableSpaceUsed : '--' }}MB</div>
54 <div>{{ $t('database.JdbcNodeTable.5oxhv6qco4c0') }}</div>61 <div>{{ $t('database.JdbcNodeTable.5oxhv6qco4c0') }}</div>
55 </div>62 </div>
63+ <div class="flex-col mr" style="width: 130px;" v-if="jdbcData.dbType === 'OPENGAUSS'">
64+ <div class="monitor-data">{{ record.sessionNum ? record.sessionNum : '--' }}</div>
65+ <div>{{ $t('database.JdbcNodeTable.else7') }}</div>
66+ </div>
56 </template>67 </template>
57 <template #memoryUsed="{ record }">68 <template #memoryUsed="{ record }">
58- <div class="flex-col mr" style="width: 120px;">69+ <div class="flex-col mr" style="width: 120px;" v-if="jdbcData.dbType === 'MYSQL'">
59 <div class="monitor-data">{{ record.memoryUsed ? record.memoryUsed : '--' }}GB</div>70 <div class="monitor-data">{{ record.memoryUsed ? record.memoryUsed : '--' }}GB</div>
60 <div>{{ $t('database.JdbcNodeTable.5oxhv6qcobk0') }}</div>71 <div>{{ $t('database.JdbcNodeTable.5oxhv6qcobk0') }}</div>
61 </div>72 </div>
73+ <div class="flex-col mr" style="width: 130px;" v-if="jdbcData.dbType === 'OPENGAUSS'">
74+ <div class="monitor-data">{{ record.lockNum ? record.lockNum : '--' }}</div>
75+ <div>{{ $t('database.JdbcNodeTable.else8') }}</div>
76+ </div>
62 </template>77 </template>
63 </a-table>78 </a-table>
64 <host-pwd-dlg ref="hostPwdRef" @finish="handleShowTerminal($event)"></host-pwd-dlg>79 <host-pwd-dlg ref="hostPwdRef" @finish="handleShowTerminal($event)"></host-pwd-dlg>
@@ -81,21 +96,21 @@ const data = reactive<KeyValue>({
81 96 
82const columns = computed(() => [97const columns = computed(() => [
83 { slotName: 'baseInfo', width: 350 },98 { slotName: 'baseInfo', width: 350 },
84- { slotName: 'status', width: 210 },99+ { slotName: 'status', width: 230 },
85 { slotName: 'connectInfo', width: 200 },100 { slotName: 'connectInfo', width: 200 },
86 { slotName: 'tableSpaceUsed', width: 310 },101 { slotName: 'tableSpaceUsed', width: 310 },
87 { slotName: 'memoryUsed', width: 320 }102 { slotName: 'memoryUsed', width: 320 }
88])103])
89 104 
90const props = defineProps({105const props = defineProps({
91- nodes: {106+ jdbcData: {
92- type: Array as PropType<KeyValue[]>,107+ type: Array as PropType<KeyValue>,
93 required: true108 required: true
94 }109 }
95})110})
96 111 
97onMounted(() => {112onMounted(() => {
98- data.nodeList = JSON.parse(JSON.stringify(props.nodes))113+ data.nodeList = JSON.parse(JSON.stringify(props.jdbcData.nodes))
99 openMonitor()114 openMonitor()
100})115})
101 116 
@@ -191,14 +206,20 @@ const openNodeMonitor = (nodeData: KeyValue, index: number) => {
191 })206 })
192 websocket.onmessage((messageData: any) => {207 websocket.onmessage((messageData: any) => {
193 const eventData = JSON.parse(messageData)208 const eventData = JSON.parse(messageData)
194- console.log('show jdbc ws data', eventData)209+ console.log('show jdbc ws data', props.jdbcData.dbType, data.nodeList, eventData)
195 if (Object.keys(eventData).length) {210 if (Object.keys(eventData).length) {
196- data.nodeList[index].tableSpaceUsed = Number(eventData.tableSpaceUsed / 1024 / 1024).toFixed(2)211+ if (props.jdbcData.dbType === 'OPENGAUSS') {
197- data.nodeList[index].memoryUsed = Number(eventData.memoryUsed / 1024 / 1024 / 1024).toFixed(2)212+ data.nodeList[index].connNum = eventData.connNum
198- data.nodeList[index].connNum = eventData.connNum213+ data.nodeList[index].lockNum = eventData.lockNum
199- data.nodeList[index].qps = eventData.qps214+ data.nodeList[index].sessionNum = eventData.sessionNum
200- data.nodeList[index].tps = eventData.tps215+ } else if (props.jdbcData.dbType === 'MYSQL') {
201- data.nodeList[index].role = eventData.role216+ data.nodeList[index].tableSpaceUsed = Number(eventData.tableSpaceUsed / 1024 / 1024).toFixed(2)
217+ data.nodeList[index].memoryUsed = Number(eventData.memoryUsed / 1024 / 1024 / 1024).toFixed(2)
218+ data.nodeList[index].connNum = eventData.connNum
219+ data.nodeList[index].qps = eventData.qps
220+ data.nodeList[index].tps = eventData.tps
221+ data.nodeList[index].role = eventData.role
222+ }
202 }223 }
203 })224 })
204}225}
MopenGauss-visualtool/visualtool-ui/src/views/resource/database/index.vue+21-21
@@ -3,30 +3,31 @@
3 <div class="main-bd">3 <div class="main-bd">
4 <div class="upgrade-container">4 <div class="upgrade-container">
5 <div class="flex-between mb-s">5 <div class="flex-between mb-s">
6- <div class="flex-row cond-btns">6+ <div>
7- <a-button type="primary" @click="handleAdd('create')">7+ <div class="flex-row cond-btns">
8- <template #icon>8+ <a-button type="primary" @click="handleAdd('create')">
9- <icon-plus />9+ <template #icon>
10- </template>10+ <icon-plus />
11- {{ $t('database.index.5oxhr0qz15w0') }}</a-button>11+ </template>
12- <a-space direction="vertical" :style="{ width: '100%' }" class="mr-s">12+ {{ $t('database.index.5oxhr0qz15w0') }}</a-button>
13- <a-upload action="/" @before-upload="beforeUpload" accept=".csv" />13+ <a-space direction="vertical" :style="{ width: '100%' }" class="mr-s">
14- </a-space>14+ <a-upload action="/" @before-upload="beforeUpload" accept=".csv" />
15- <a-button :loading="list.downloadLoading" type="outline" @click="downloadTemp">15+ </a-space>
16- <template #icon>16+ <a-button :loading="list.downloadLoading" type="outline" @click="downloadTemp">
17- <icon-download />17+ <template #icon>
18- </template>18+ <icon-download />
19- {{ $t('database.index.5oxhr0qz2bs0') }}</a-button>19+ </template>
20+ {{ $t('database.index.5oxhr0qz2bs0') }}</a-button>
21+ </div>
20 </div>22 </div>
21- <div class="flex-row">23+ <div>
22- 
23 <a-form :model="filter" layout="inline">24 <a-form :model="filter" layout="inline">
24 <a-form-item field="name" :label="$t('database.index.else1')">25 <a-form-item field="name" :label="$t('database.index.else1')">
25- <a-input v-model="filter.name" allow-clear :placeholder="$t('database.index.5oxhr0qz2s00')"26+ <a-input v-model.trim="filter.name" allow-clear :placeholder="$t('database.index.5oxhr0qz2s00')"
26 style="width: 180px;"></a-input>27 style="width: 180px;"></a-input>
27 </a-form-item>28 </a-form-item>
28 <a-form-item field="ip" :label="$t('database.index.elseIp')">29 <a-form-item field="ip" :label="$t('database.index.elseIp')">
29- <a-input v-model="filter.ip" allow-clear :placeholder="$t('database.index.elseIpPlaceholder')"30+ <a-input v-model.trim="filter.ip" allow-clear :placeholder="$t('database.index.elseIpPlaceholder')"
30 style="width: 170px;"></a-input>31 style="width: 170px;"></a-input>
31 </a-form-item>32 </a-form-item>
32 <a-form-item field="type" :label="$t('database.index.else3')">33 <a-form-item field="type" :label="$t('database.index.else3')">
@@ -92,8 +93,8 @@ const expandable = reactive<KeyValue>({
92 if (record.nodes && record.nodes.length > 0) {93 if (record.nodes && record.nodes.length > 0) {
93 return h('div', {}, [94 return h('div', {}, [
94 h(JdbcNodeTable, {95 h(JdbcNodeTable, {
95- nodes: record.nodes,96+ jdbcData: record,
96- onValidRes (val: boolean) {97+ onValidRes(val: boolean) {
97 console.log('receive state', val)98 console.log('receive state', val)
98 record.state = val99 record.state = val
99 }100 }
@@ -298,7 +299,6 @@ const pageSizeChange = (e: number) => {
298 .upgrade-container {299 .upgrade-container {
299 padding: 20px;300 padding: 20px;
300 box-sizing: border-box;301 box-sizing: border-box;
301- padding: 8px;
302 height: calc(100vh - 76px - 40px);302 height: calc(100vh - 76px - 40px);
303 303 
304 .top-label {304 .top-label {
MopenGauss-visualtool/visualtool-ui/src/views/resource/physical/components/AddHost.vue+46-7
@@ -31,13 +31,14 @@
31 </template>31 </template>
32 <a-form :model="data.formData" ref="formRef" auto-label-width :rules="formRules">32 <a-form :model="data.formData" ref="formRef" auto-label-width :rules="formRules">
33 <a-form-item field="name" :label="$t('components.AddHost.name')" validate-trigger="blur">33 <a-form-item field="name" :label="$t('components.AddHost.name')" validate-trigger="blur">
34- <a-input v-model="data.formData.name" :placeholder="$t('components.AddHost.namePlaceholder')"></a-input>34+ <a-input v-model.trim="data.formData.name" :placeholder="$t('components.AddHost.namePlaceholder')"></a-input>
35 </a-form-item>35 </a-form-item>
36 <a-form-item field="privateIp" :label="$t('components.AddHost.ipAddress')" validate-trigger="blur">36 <a-form-item field="privateIp" :label="$t('components.AddHost.ipAddress')" validate-trigger="blur">
37- <a-input v-model="data.formData.privateIp" :placeholder="$t('components.AddHost.5mphy3snxdo0')"></a-input>37+ <a-input v-model.trim="data.formData.privateIp" :placeholder="$t('components.AddHost.5mphy3snxdo0')"></a-input>
38 </a-form-item>38 </a-form-item>
39 <a-form-item field="publicIp" :label="$t('components.AddHost.5mphy3snxis0')" validate-trigger="blur">39 <a-form-item field="publicIp" :label="$t('components.AddHost.5mphy3snxis0')" validate-trigger="blur">
40- <a-input v-model="data.formData.publicIp" :placeholder="$t('components.AddHost.5mphy3snxmw0')"></a-input>40+ <a-input v-model.trim="data.formData.publicIp" :placeholder="$t('components.AddHost.5mphy3snxmw0')"
41+ @blur="handleBlur"></a-input>
41 </a-form-item>42 </a-form-item>
42 <a-form-item field="port" :label="$t('components.AddHost.5mphy3snxtc0')" validate-trigger="blur">43 <a-form-item field="port" :label="$t('components.AddHost.5mphy3snxtc0')" validate-trigger="blur">
43 <a-input-number v-model="data.formData.port" :placeholder="$t('components.AddHost.5mphy3snxzk0')" />44 <a-input-number v-model="data.formData.port" :placeholder="$t('components.AddHost.5mphy3snxzk0')" />
@@ -49,7 +50,7 @@
49 }}</a-checkbox>50 }}</a-checkbox>
50 </a-form-item>51 </a-form-item>
51 <a-form-item field="tags" :label="$t('components.AddHost.tags')">52 <a-form-item field="tags" :label="$t('components.AddHost.tags')">
52- <a-select :loading="data.tagsLoading" v-model="data.formData.tags"53+ <a-select :loading="data.tagsLoading" v-model.trim="data.formData.tags"
53 :placeholder="$t('components.AddHost.tagsPlaceholder')" allow-create multiple allow-clear>54 :placeholder="$t('components.AddHost.tagsPlaceholder')" allow-create multiple allow-clear>
54 <a-option v-for="item in data.tagsList" :key="item.value" :value="item.value">{{55 <a-option v-for="item in data.tagsList" :key="item.value" :value="item.value">{{
55 item.label56 item.label
@@ -57,7 +58,7 @@
57 </a-select>58 </a-select>
58 </a-form-item>59 </a-form-item>
59 <a-form-item :label="$t('components.AddHost.5mphy3snysg0')">60 <a-form-item :label="$t('components.AddHost.5mphy3snysg0')">
60- <a-textarea v-model="data.formData.remark" :placeholder="$t('components.AddHost.5mphy3snyxc0')"></a-textarea>61+ <a-textarea v-model.trim="data.formData.remark" :placeholder="$t('components.AddHost.5mphy3snyxc0')"></a-textarea>
61 </a-form-item>62 </a-form-item>
62 </a-form>63 </a-form>
63 </a-modal>64 </a-modal>
@@ -119,8 +120,40 @@ const formRules = computed(() => {
119 }120 }
120 }121 }
121 ],122 ],
122- privateIp: [{ required: true, 'validate-trigger': 'blur', message: t('components.AddHost.5mphy3snxdo0') }],123+ privateIp: [
123- publicIp: [{ required: true, 'validate-trigger': 'blur', message: t('components.AddHost.5mphy3snxmw0') }],124+ { required: true, 'validate-trigger': 'blur', message: t('components.AddHost.5mphy3snxdo0') },
125+ {
126+ validator: (value: any, cb: any) => {
127+ return new Promise(resolve => {
128+ const reg = /^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[0-9])\.((1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.){2}(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$/
129+ const re = new RegExp(reg)
130+ if (re.test(value)) {
131+ resolve(true)
132+ } else {
133+ cb(t('database.JdbcInstance.5oxhtcboblw0'))
134+ resolve(false)
135+ }
136+ })
137+ }
138+ }
139+ ],
140+ publicIp: [
141+ { required: true, 'validate-trigger': 'blur', message: t('components.AddHost.5mphy3snxmw0') },
142+ {
143+ validator: (value: any, cb: any) => {
144+ return new Promise(resolve => {
145+ const reg = /^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[0-9])\.((1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.){2}(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$/
146+ const re = new RegExp(reg)
147+ if (re.test(value)) {
148+ resolve(true)
149+ } else {
150+ cb(t('database.JdbcInstance.5oxhtcboblw0'))
151+ resolve(false)
152+ }
153+ })
154+ }
155+ }
156+ ],
124 port: [157 port: [
125 { required: true, 'validate-trigger': 'blur', message: t('components.AddHost.5mphy3snxzk0') },158 { required: true, 'validate-trigger': 'blur', message: t('components.AddHost.5mphy3snxzk0') },
126 {159 {
@@ -275,6 +308,12 @@ const open = (type: string, editData?: KeyValue) => {
275 }308 }
276}309}
277 310 
311+const handleBlur = () => {
312+ if (!data.formData.name) {
313+ data.formData.name = data.formData.publicIp
314+ }
315+}
316+ 
278defineExpose({317defineExpose({
279 open318 open
280})319})
MopenGauss-visualtool/visualtool-ui/src/views/resource/physical/index.vue+103-90
@@ -2,7 +2,7 @@
2 <div class="app-container">2 <div class="app-container">
3 <div class="main-bd">3 <div class="main-bd">
4 <div class="physical-list">4 <div class="physical-list">
5- <div class="flex-between mb">5+ <div class="flex-between mb-s">
6 <div>6 <div>
7 <a-button type="primary" class="mr" @click="handleAddHost('create')">7 <a-button type="primary" class="mr" @click="handleAddHost('create')">
8 <template #icon>8 <template #icon>
@@ -20,7 +20,7 @@
20 <div>20 <div>
21 <a-form :model="filter" layout="inline">21 <a-form :model="filter" layout="inline">
22 <a-form-item field="publicIp" :label="$t('physical.index.ipAddress')">22 <a-form-item field="publicIp" :label="$t('physical.index.ipAddress')">
23- <a-input v-model="filter.name" allow-clear :placeholder="$t('physical.index.ipAddressPlaceholder')"23+ <a-input v-model.trim="filter.name" allow-clear :placeholder="$t('physical.index.ipAddressPlaceholder')"
24 style="width: 180px;"></a-input>24 style="width: 180px;"></a-input>
25 </a-form-item>25 </a-form-item>
26 <a-form-item field="hostLabel" :label="$t('physical.index.hostLabel')">26 <a-form-item field="hostLabel" :label="$t('physical.index.hostLabel')">
@@ -49,95 +49,115 @@
49 </a-form>49 </a-form>
50 </div>50 </div>
51 </div>51 </div>
52- <a-table ref="tableRef" row-key="hostId" :data="list.data" :columns="columns" :pagination="list.page"52+ <a-table ref="tableRef" row-key="hostId" :data="list.data" :pagination="list.page"
53 :row-selection="list.rowSelection" @page-change="currentPage" @page-size-change="pageSizeChange"53 :row-selection="list.rowSelection" @page-change="currentPage" @page-size-change="pageSizeChange"
54 :loading="list.loading" @selection-change="handleSelectedChange">54 :loading="list.loading" @selection-change="handleSelectedChange">
55- <template #baseInfo="{ record }">55+ <template #columns>
56- <div class="flex-col-start">56+ <a-table-column :title="$t('physical.index.baseInfo')" data-index="baseInfo" :width="300">
57- <div class="host-name">{{ record.name ? record.name : '--' }}</div>57+ <template #cell="{ record }">
58- <div class="flex-row">58+ <div class="flex-col-start">
59- <div class="mr-s">{{ $t('physical.index.privateIp') }}:</div>59+ <div class="host-name">{{ record.name ? record.name : '--' }}</div>
60- <div>{{ record.privateIp }}</div>60+ <div class="flex-row">
61- </div>61+ <div class="mr-s">{{ $t('physical.index.privateIp') }}:</div>
62- <div class="flex-row">62+ <div>{{ record.privateIp }}</div>
63- <div class="mr-s">{{ $t('physical.index.publicIp') }}:</div>
64- <div style="max-width: 140px;" class="mr-s">{{ record.publicIp }}</div>
65- <icon-code-square :size="25" style="cursor: pointer;" @click="showTerminal(record)" />
66- </div>
67- <div class="flex-row">
68- <div class="mr-s">{{ $t('physical.index.os') }}:</div>
69- <div>{{ record.os ? record.os : '--' }} - {{ record.cpuArch ? record.cpuArch : '--' }}</div>
70- </div>
71- <div class="flex-row">
72- <div class="mr-s">{{ $t('physical.index.hostName') }}:</div>
73- <div>{{ record.hostname ? record.hostname : '--' }}</div>
74- </div>
75- </div>
76- </template>
77- <template #hostLabel="{ record }">
78- <div class="flex-row" style="flex-wrap: wrap;" v-if="record.tags">
79- <a-tag v-for="(item, index) in record.tags" :key="index" class="mr-s mb-s">
80- <div :title="item" style="max-width: 125px;overflow: hidden; text-overflow:ellipsis; white-space: nowrap">
81- {{ item
82- }}</div>
83- </a-tag>
84- </div>
85- <div v-else>
86- --
87- </div>
88- </template>
89- <template #diskInfo="{ record }">
90- <div class="flex-row">
91- <div class="flex-col mr" style="width: 160px;">
92- <div class="net flex-row-center">
93- <div class="flex-col mr" style="width: 80px;">
94- <icon-arrow-fall style="color: #a9aeb8" :size="30" class="mb-s" />
95- <div style="white-space: nowrap;">{{ record.downSpeed ? record.downSpeed : '--' }} byte/s</div>
96 </div>63 </div>
97- <div class="flex-col" style="width: 80px;">64+ <div class="flex-row">
98- <icon-arrow-rise style="color: #a9aeb8" :size="30" class="mb-s" />65+ <div class="mr-s">{{ $t('physical.index.publicIp') }}:</div>
99- <div style="white-space: nowrap;">{{ record.upSpeed ? record.upSpeed : '--' }} byte/s</div>66+ <div style="max-width: 140px;" class="mr-s">{{ record.publicIp }}</div>
67+ <icon-code-square :size="25" style="cursor: pointer;" @click="showTerminal(record)" />
68+ </div>
69+ <div class="flex-row">
70+ <div class="mr-s">{{ $t('physical.index.os') }}:</div>
71+ <div>{{ record.os ? record.os : '--' }} - {{ record.cpuArch ? record.cpuArch : '--' }}</div>
72+ </div>
73+ <div class="flex-row">
74+ <div class="mr-s">{{ $t('physical.index.hostName') }}:</div>
75+ <div>{{ record.hostname ? record.hostname : '--' }}</div>
100 </div>76 </div>
101 </div>77 </div>
102- <div>{{ $t('physical.index.net') }}</div>78+ </template>
103- </div>79+ </a-table-column>
104- <div class="flex-col mr">80+ <a-table-column :title="$t('physical.index.hostLabel')" data-index="hostLabel" :width="200">
105- <div class="chart chart-empty-c" v-if="!record.isCpu">81+ <template #cell="{ record }">
106- <icon-empty :size="70" class="bg-color" />82+ <div class="flex-row" style="flex-wrap: wrap;" v-if="record.tags">
83+ <a-tag v-for="(item, index) in record.tags" :key="index" class="mr-s mb-s">
84+ <div :title="item"
85+ style="max-width: 125px;overflow: hidden; text-overflow:ellipsis; white-space: nowrap">
86+ {{ item
87+ }}</div>
88+ </a-tag>
107 </div>89 </div>
108- <v-chart v-else class="chart" :option="record.cpuOption" />90+ <div v-else>
109- <div>{{ $t('physical.index.cpu') }}</div>91+ --
110- </div>
111- <div class="flex-col mr">
112- <div class="chart chart-empty-c" v-if="!record.isMemory">
113- <icon-empty :size="70" class="bg-color" />
114 </div>92 </div>
115- <v-chart v-else class="chart" :option="record.memoryOption" />93+ </template>
116- <div>{{ $t('physical.index.memory') }}</div>94+ </a-table-column>
117- </div>95+ <a-table-column data-index="diskInfo">
118- <div class="flex-col mr">96+ <template #title>
119- <div class="chart chart-empty-c" v-if="!record.isDisk">97+ <div class="flex-row">
120- <icon-empty :size="70" class="bg-color" />98+ <div class="mr">{{ $t('physical.index.diskInfo') }}</div>
99+ <a-tag color="green" class="mr-s">{{ $t('physical.index.realTime') }}</a-tag>
100+ <a-tooltip :content="$t('physical.index.tipInfo')" position="rt">
101+ <icon-question-circle-fill :size="18" />
102+ </a-tooltip>
121 </div>103 </div>
122- <v-chart v-else class="chart" :option="record.diskOption" />104+ </template>
123- <div>{{ $t('physical.index.disk') }}</div>105+ <template #cell="{ record }">
124- </div>106+ <div class="flex-row">
125- </div>107+ <div class="flex-col mr" style="width: 160px;">
126- </template>108+ <div class="net flex-row-center">
127- <template #operation="{ record }">109+ <div class="flex-col mr" style="width: 80px;">
128- <div class="flex-row-start">110+ <icon-arrow-fall style="color: #a9aeb8" :size="30" class="mb-s" />
129- <a-link class="mr" @click="showHostUserMng(record)">{{ $t('physical.index.5mphf11szks0') }}</a-link>111+ <div style="white-space: nowrap;">{{ record.downSpeed ? record.downSpeed : '--' }} byte/s</div>
130- <!-- <a-link class="mr" @click="handleTest(record)">{{ $t('physical.index.5mphf11syw80') }}</a-link> -->112+ </div>
131- <!-- <a-link class="mr" @click="handleShowDetail(record)">{{ $t('physical.index.detail') }}</a-link> -->113+ <div class="flex-col" style="width: 80px;">
132- <a-link class="mr" @click="handleAddHost('update', record)">{{114+ <icon-arrow-rise style="color: #a9aeb8" :size="30" class="mb-s" />
133- $t('physical.index.5mphf11szqo0')115+ <div style="white-space: nowrap;">{{ record.upSpeed ? record.upSpeed : '--' }} byte/s</div>
134- }}</a-link>116+ </div>
135- <a-popconfirm :content="$t('physical.index.5mphf11szws0')" type="warning"117+ </div>
136- :ok-text="$t('physical.index.5mphf11t05c0')" :cancel-text="$t('physical.index.5mphf11t0bc0')"118+ <div>{{ $t('physical.index.net') }}</div>
137- @ok="deleteRows(record)">119+ </div>
138- <a-link status="danger">{{ $t('physical.index.5mphf11t0hc0') }}</a-link>120+ <div class="flex-col mr">
139- </a-popconfirm>121+ <div class="chart chart-empty-c" v-if="!record.isCpu">
140- </div>122+ <icon-empty :size="70" class="bg-color" />
123+ </div>
124+ <v-chart v-else class="chart" :option="record.cpuOption" />
125+ <div>{{ $t('physical.index.cpu') }}</div>
126+ </div>
127+ <div class="flex-col mr">
128+ <div class="chart chart-empty-c" v-if="!record.isMemory">
129+ <icon-empty :size="70" class="bg-color" />
130+ </div>
131+ <v-chart v-else class="chart" :option="record.memoryOption" />
132+ <div>{{ $t('physical.index.memory') }}</div>
133+ </div>
134+ <div class="flex-col mr">
135+ <div class="chart chart-empty-c" v-if="!record.isDisk">
136+ <icon-empty :size="70" class="bg-color" />
137+ </div>
138+ <v-chart v-else class="chart" :option="record.diskOption" />
139+ <div>{{ $t('physical.index.disk') }}</div>
140+ </div>
141+ </div>
142+ </template>
143+ </a-table-column>
144+ <a-table-column :title="$t('physical.index.5mphf11tfjw0')" data-index="operation" :width="280">
145+ <template #cell="{ record }">
146+ <div class="flex-row-start">
147+ <a-link class="mr" @click="showHostUserMng(record)">{{ $t('physical.index.5mphf11szks0') }}</a-link>
148+ <!-- <a-link class="mr" @click="handleTest(record)">{{ $t('physical.index.5mphf11syw80') }}</a-link> -->
149+ <!-- <a-link class="mr" @click="handleShowDetail(record)">{{ $t('physical.index.detail') }}</a-link> -->
150+ <a-link class="mr" @click="handleAddHost('update', record)">{{
151+ $t('physical.index.5mphf11szqo0')
152+ }}</a-link>
153+ <a-popconfirm :content="$t('physical.index.5mphf11szws0')" type="warning"
154+ :ok-text="$t('physical.index.5mphf11t05c0')" :cancel-text="$t('physical.index.5mphf11t0bc0')"
155+ @ok="deleteRows(record)">
156+ <a-link status="danger">{{ $t('physical.index.5mphf11t0hc0') }}</a-link>
157+ </a-popconfirm>
158+ </div>
159+ </template>
160+ </a-table-column>
141 </template>161 </template>
142 </a-table>162 </a-table>
143 <add-host ref="addHostRef" @finish="getListData"></add-host>163 <add-host ref="addHostRef" @finish="getListData"></add-host>
@@ -175,13 +195,6 @@ const filter = reactive({
175 pageSize: 10195 pageSize: 10
176})196})
177 197 
178-const columns = computed(() => [
179- { title: t('physical.index.baseInfo'), slotName: 'baseInfo', width: 300 },
180- { title: t('physical.index.hostLabel'), slotName: 'hostLabel', width: 200 },
181- { title: t('physical.index.diskInfo'), slotName: 'diskInfo' },
182- { title: t('physical.index.5mphf11tfjw0'), slotName: 'operation', fixed: 'right', width: 280 }
183-])
184- 
185const echartsOption = reactive<KeyValue>({198const echartsOption = reactive<KeyValue>({
186 cpuOption: cpuOption,199 cpuOption: cpuOption,
187 memoryOption: memoryOption,200 memoryOption: memoryOption,
MopenGauss-visualtool/visualtool-ui/src/views/resource/physical/label/LabelManageDlg.vue+2-2
@@ -11,7 +11,7 @@
11 <div>11 <div>
12 <a-form :model="filter" layout="inline">12 <a-form :model="filter" layout="inline">
13 <a-form-item :label="$t('label.LabelManageDlg.5pbjv7b0wu80')">13 <a-form-item :label="$t('label.LabelManageDlg.5pbjv7b0wu80')">
14- <a-input v-model="filter.name" allow-clear :placeholder="$t('label.LabelManageDlg.5pbjv7b0x3w0')"14+ <a-input v-model.trim="filter.name" allow-clear :placeholder="$t('label.LabelManageDlg.5pbjv7b0x3w0')"
15 style="width: 180px;"></a-input>15 style="width: 180px;"></a-input>
16 </a-form-item>16 </a-form-item>
17 <a-form-item>17 <a-form-item>
@@ -44,7 +44,7 @@
44 :title="formData.title" :modal-style="{ width: '550px' }" @ok="handleAddOk" @cancel="handleAddClose">44 :title="formData.title" :modal-style="{ width: '550px' }" @ok="handleAddOk" @cancel="handleAddClose">
45 <a-form :model="formData.form" ref="formRef" auto-label-width :rules="formRules">45 <a-form :model="formData.form" ref="formRef" auto-label-width :rules="formRules">
46 <a-form-item field="name" :label="$t('label.LabelManageDlg.5pbjv7b0wu80')">46 <a-form-item field="name" :label="$t('label.LabelManageDlg.5pbjv7b0wu80')">
47- <a-input v-model="formData.form.name" allow-clear47+ <a-input v-model.trim="formData.form.name" allow-clear
48 :placeholder="$t('label.LabelManageDlg.5pbjv7b0x3w0')"></a-input>48 :placeholder="$t('label.LabelManageDlg.5pbjv7b0x3w0')"></a-input>
49 </a-form-item>49 </a-form-item>
50 </a-form>50 </a-form>