已合并
Datakit页面功能优化 #179
AtomGit-Bot创建于 2023年3月29日
Datakit页面功能优化 #179
已合并
共 280 个文件变更+7751-837
| @@ -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 选择版本 |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin; | 24 | package org.opengauss.admin.plugin; |
| 2 | 25 | ||
| 3 | import com.gitee.starblues.bootstrap.SpringPluginBootstrap; | 26 | import com.gitee.starblues.bootstrap.SpringPluginBootstrap; |
| @@ -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 Contributors | 26 | Copyright (c) 2021 openGauss Contributors |
| @@ -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 Contributors | 26 | * Copyright (c) 2021 openGauss Contributors |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.config; | 24 | package org.opengauss.admin.plugin.config; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; | 26 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.config; | 24 | package org.opengauss.admin.plugin.config; |
| 2 | 25 | ||
| 3 | import com.gitee.starblues.bootstrap.PluginContextHolder; | 26 | import com.gitee.starblues.bootstrap.PluginContextHolder; |
| @@ -34,4 +57,4 @@ public class DataSourceConfig { | |||
| 34 | .build(); | 57 | .build(); |
| 35 | } | 58 | } |
| 36 | 59 | ||
| 37 | -} | 60 | +} |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.config; | 24 | package org.opengauss.admin.plugin.config; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.DbType; | 26 | import com.baomidou.mybatisplus.annotation.DbType; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.config; | 24 | package org.opengauss.admin.plugin.config; |
| 2 | 25 | ||
| 3 | import com.gitee.starblues.core.PluginExtensionInfo; | 26 | import com.gitee.starblues.core.PluginExtensionInfo; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.config; | 24 | package org.opengauss.admin.plugin.config; |
| 2 | 25 | ||
| 3 | import org.springframework.context.annotation.Bean; | 26 | import org.springframework.context.annotation.Bean; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.config; | 24 | package org.opengauss.admin.plugin.config; |
| 2 | 25 | ||
| 3 | import org.apache.commons.lang3.concurrent.BasicThreadFactory; | 26 | import org.apache.commons.lang3.concurrent.BasicThreadFactory; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.ops; | 24 | package org.opengauss.admin.plugin.controller.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 26 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.ops; | 24 | package org.opengauss.admin.plugin.controller.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.core.domain.AjaxResult; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.ops; | 24 | package org.opengauss.admin.plugin.controller.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.ops; | 24 | package org.opengauss.admin.plugin.controller.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.ops; | 24 | package org.opengauss.admin.plugin.controller.ops; |
| 2 | 25 | ||
| 26 | +import com.gitee.starblues.bootstrap.annotation.AutowiredType; | ||
| 3 | import org.opengauss.admin.common.core.domain.AjaxResult; | 27 | import org.opengauss.admin.common.core.domain.AjaxResult; |
| 4 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity; | 28 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity; |
| 5 | import org.opengauss.admin.plugin.base.BaseController; | 29 | import org.opengauss.admin.plugin.base.BaseController; |
| @@ -8,9 +32,10 @@ import org.opengauss.admin.plugin.domain.model.ops.env.HostEnv; | |||
| 8 | import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum; | 32 | import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum; |
| 9 | import org.opengauss.admin.plugin.enums.ops.OpenGaussVersionEnum; | 33 | import org.opengauss.admin.plugin.enums.ops.OpenGaussVersionEnum; |
| 10 | import org.opengauss.admin.plugin.service.ops.IOpsClusterService; | 34 | import org.opengauss.admin.plugin.service.ops.IOpsClusterService; |
| 35 | +import org.opengauss.admin.plugin.vo.ops.*; | ||
| 11 | import org.opengauss.admin.plugin.vo.ops.SessionVO; | 36 | import org.opengauss.admin.plugin.vo.ops.SessionVO; |
| 12 | import org.opengauss.admin.plugin.vo.ops.SlowSqlVO; | 37 | import org.opengauss.admin.plugin.vo.ops.SlowSqlVO; |
| 13 | -import org.opengauss.admin.plugin.vo.ops.*; | 38 | +import org.opengauss.admin.system.plugin.facade.OpsFacade; |
| 14 | import org.springframework.beans.factory.annotation.Autowired; | 39 | import org.springframework.beans.factory.annotation.Autowired; |
| 15 | import org.springframework.web.bind.annotation.*; | 40 | import org.springframework.web.bind.annotation.*; |
| 16 | 41 | ||
| @@ -31,6 +56,9 @@ public class OpsClusterController extends BaseController { | |||
| 31 | 56 | ||
| 32 | 57 | ||
| 33 | private IOpsClusterService opsClusterService; | 58 | private IOpsClusterService opsClusterService; |
| 59 | + | ||
| 60 | + | ||
| 61 | + private OpsFacade opsFacade; | ||
| 34 | 62 | ||
| 35 | 63 | ||
| 36 | public AjaxResult hasName( String name) { | 64 | public AjaxResult hasName( String name) { |
| @@ -143,8 +171,7 @@ public class OpsClusterController extends BaseController { | |||
| 143 | 171 | ||
| 144 | 172 | ||
| 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 | 177 | ||
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.ops; | 24 | package org.opengauss.admin.plugin.controller.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.base.BaseController; | 26 | import org.opengauss.admin.plugin.base.BaseController; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain; | 24 | package org.opengauss.admin.plugin.domain; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.FieldFill; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.IdType; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableField; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableField; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableField; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.IdType; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.IdType; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.IdType; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.modeling; | 24 | package org.opengauss.admin.plugin.domain.entity.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.IdType; | 26 | import com.baomidou.mybatisplus.annotation.IdType; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableId; | 26 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableName; | 26 | import com.baomidou.mybatisplus.annotation.TableName; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableId; | 26 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableField; | 26 | import com.baomidou.mybatisplus.annotation.TableField; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.IdType; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.ObjectUtil; | 26 | import cn.hutool.core.util.ObjectUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.entity.ops; | 24 | package org.opengauss.admin.plugin.domain.entity.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.annotation.TableId; | 26 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import com.fasterxml.jackson.annotation.JsonFormat; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import cn.hutool.core.collection.CollUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity; | 26 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.enums.ops.HostAuthenticationTypeEnum; | 26 | import org.opengauss.admin.plugin.enums.ops.HostAuthenticationTypeEnum; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity; | 26 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity; | 26 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import cn.hutool.core.collection.CollUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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()); |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| 27 | +import lombok.ToString; | ||
| 4 | 28 | ||
| 5 | /** | 29 | /** |
| 6 | * lhf | 30 | * lhf |
| 7 | * 2022/8/10 14:08 | 31 | * 2022/8/10 14:08 |
| 8 | **/ | 32 | **/ |
| 9 | 33 | ||
| 34 | + | ||
| 10 | public class JschResult { | 35 | public class JschResult { |
| 11 | private Integer exitCode; | 36 | private Integer exitCode; |
| 12 | private String result; | 37 | private String result; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import cn.hutool.core.collection.CollUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; | 26 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity; | 26 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import com.fasterxml.jackson.annotation.JsonFormat; | 26 | import com.fasterxml.jackson.annotation.JsonFormat; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.annotation.JSONField; | 26 | import com.alibaba.fastjson.annotation.JSONField; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; | 26 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.enums.ops.WdrScopeEnum; | 26 | import org.opengauss.admin.plugin.enums.ops.WdrScopeEnum; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops; | 24 | package org.opengauss.admin.plugin.domain.model.ops; |
| 2 | 25 | ||
| 3 | import lombok.AllArgsConstructor; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.cache; | 24 | package org.opengauss.admin.plugin.domain.model.ops.cache; |
| 2 | 25 | ||
| 3 | import com.gitee.starblues.bootstrap.annotation.AutowiredType; | 26 | import com.gitee.starblues.bootstrap.annotation.AutowiredType; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.cache; | 24 | package org.opengauss.admin.plugin.domain.model.ops.cache; |
| 2 | 25 | ||
| 3 | import java.util.Objects; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.cache; | 24 | package org.opengauss.admin.plugin.domain.model.ops.cache; |
| 2 | 25 | ||
| 3 | 26 | ||
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.env; | 24 | package org.opengauss.admin.plugin.domain.model.ops.env; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.enums.ops.HostEnvStatusEnum; | 26 | import org.opengauss.admin.plugin.enums.ops.HostEnvStatusEnum; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.env; | 24 | package org.opengauss.admin.plugin.domain.model.ops.env; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.env; | 24 | package org.opengauss.admin.plugin.domain.model.ops.env; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.env; | 24 | package org.opengauss.admin.plugin.domain.model.ops.env; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.node; | 24 | package org.opengauss.admin.plugin.domain.model.ops.node; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.node; | 24 | package org.opengauss.admin.plugin.domain.model.ops.node; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.node; | 24 | package org.opengauss.admin.plugin.domain.model.ops.node; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | public class OlkProcessFlagStr { | 26 | public 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | public class DadReqPath { | 26 | public class DadReqPath { |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.ObjectUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; | 24 | package org.opengauss.admin.plugin.domain.model.ops.olk.dadReq; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | import lombok.AllArgsConstructor; | 26 | import lombok.AllArgsConstructor; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | import lombok.AllArgsConstructor; | 26 | import lombok.AllArgsConstructor; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.enums.ops; | 24 | package org.opengauss.admin.plugin.enums.ops; |
| 2 | 25 | ||
| 3 | import lombok.AllArgsConstructor; | 26 | import lombok.AllArgsConstructor; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.listener; | 24 | package org.opengauss.admin.plugin.listener; |
| 2 | 25 | ||
| 3 | import com.gitee.starblues.spring.MainApplicationContext; | 26 | import com.gitee.starblues.spring.MainApplicationContext; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.modeling; | 24 | package org.opengauss.admin.plugin.mapper.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.mapper.ops; | 24 | package org.opengauss.admin.plugin.mapper.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.core.domain.model.ops.OpsClusterNodeVO; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.metadata.IPage; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator; | 24 | package org.opengauss.admin.plugin.service.modeling.operator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator; | 24 | package org.opengauss.admin.plugin.service.modeling.operator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.factory; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.factory; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.service.modeling.operator.IModelingDataFlowOperatorBuilderService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.operator.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.operator.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.metadata.IPage; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.factory; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.factory; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; | 24 | package org.opengauss.admin.plugin.service.modeling.visualization.impl.generator; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSON; | 26 | import com.alibaba.fastjson.JSON; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; | 25 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; |
| 3 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity; | 26 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | /** | 26 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 26 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import com.baomidou.mybatisplus.extension.service.IService; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import com.baomidou.mybatisplus.extension.service.IService; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 26 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.metadata.IPage; | 26 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.service.IService; | 26 | import com.baomidou.mybatisplus.extension.service.IService; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops; | 24 | package org.opengauss.admin.plugin.service.ops; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum; | 26 | import org.opengauss.admin.plugin.enums.ops.OpenGaussSupportOSEnum; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import 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 | } |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import cn.hutool.core.collection.CollUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import cn.hutool.core.collection.CollUtil; |
| @@ -21,7 +44,28 @@ import org.opengauss.admin.common.exception.ops.OpsException; | |||
| 21 | import org.opengauss.admin.plugin.domain.entity.ops.OpsCheckEntity; | 44 | import org.opengauss.admin.plugin.domain.entity.ops.OpsCheckEntity; |
| 22 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; | 45 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterEntity; |
| 23 | import org.opengauss.admin.plugin.domain.entity.ops.OpsClusterNodeEntity; | 46 | import 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; | ||
| 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; | ||
| 25 | import org.opengauss.admin.plugin.domain.model.ops.cache.SSHChannelManager; | 69 | import org.opengauss.admin.plugin.domain.model.ops.cache.SSHChannelManager; |
| 26 | import org.opengauss.admin.plugin.domain.model.ops.cache.TaskManager; | 70 | import org.opengauss.admin.plugin.domain.model.ops.cache.TaskManager; |
| 27 | import org.opengauss.admin.plugin.domain.model.ops.cache.WsConnectorManager; | 71 | import org.opengauss.admin.plugin.domain.model.ops.cache.WsConnectorManager; |
| @@ -32,7 +76,11 @@ import org.opengauss.admin.plugin.domain.model.ops.env.SoftwareEnv; | |||
| 32 | import org.opengauss.admin.plugin.domain.model.ops.node.EnterpriseInstallNodeConfig; | 76 | import org.opengauss.admin.plugin.domain.model.ops.node.EnterpriseInstallNodeConfig; |
| 33 | import org.opengauss.admin.plugin.domain.model.ops.node.LiteInstallNodeConfig; | 77 | import org.opengauss.admin.plugin.domain.model.ops.node.LiteInstallNodeConfig; |
| 34 | import org.opengauss.admin.plugin.domain.model.ops.node.MinimalistInstallNodeConfig; | 78 | import 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; | ||
| 36 | import org.opengauss.admin.plugin.mapper.ops.OpsClusterMapper; | 84 | import org.opengauss.admin.plugin.mapper.ops.OpsClusterMapper; |
| 37 | import org.opengauss.admin.plugin.service.ops.IOpsCheckService; | 85 | import org.opengauss.admin.plugin.service.ops.IOpsCheckService; |
| 38 | import org.opengauss.admin.plugin.service.ops.IOpsClusterNodeService; | 86 | import org.opengauss.admin.plugin.service.ops.IOpsClusterNodeService; |
| @@ -42,9 +90,18 @@ import org.opengauss.admin.plugin.utils.DBUtil; | |||
| 42 | import org.opengauss.admin.plugin.utils.DownloadUtil; | 90 | import org.opengauss.admin.plugin.utils.DownloadUtil; |
| 43 | import org.opengauss.admin.plugin.utils.JschUtil; | 91 | import org.opengauss.admin.plugin.utils.JschUtil; |
| 44 | import org.opengauss.admin.plugin.utils.WsUtil; | 92 | import 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; | ||
| 45 | import org.opengauss.admin.plugin.vo.ops.SessionVO; | 103 | import org.opengauss.admin.plugin.vo.ops.SessionVO; |
| 46 | import org.opengauss.admin.plugin.vo.ops.SlowSqlVO; | 104 | import org.opengauss.admin.plugin.vo.ops.SlowSqlVO; |
| 47 | -import org.opengauss.admin.plugin.vo.ops.*; | ||
| 48 | import org.opengauss.admin.system.plugin.facade.AzFacade; | 105 | import org.opengauss.admin.system.plugin.facade.AzFacade; |
| 49 | import org.opengauss.admin.system.plugin.facade.HostFacade; | 106 | import org.opengauss.admin.system.plugin.facade.HostFacade; |
| 50 | import org.opengauss.admin.system.plugin.facade.HostUserFacade; | 107 | import org.opengauss.admin.system.plugin.facade.HostUserFacade; |
| @@ -60,8 +117,20 @@ import org.springframework.web.context.request.RequestContextHolder; | |||
| 60 | import javax.servlet.http.HttpServletResponse; | 117 | import javax.servlet.http.HttpServletResponse; |
| 61 | import java.io.File; | 118 | import java.io.File; |
| 62 | import java.io.IOException; | 119 | import 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; | ||
| 65 | import java.util.concurrent.CopyOnWriteArrayList; | 134 | import java.util.concurrent.CopyOnWriteArrayList; |
| 66 | import java.util.concurrent.CountDownLatch; | 135 | import java.util.concurrent.CountDownLatch; |
| 67 | import java.util.concurrent.Future; | 136 | import 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); |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.io.FileUtil; | 26 | import cn.hutool.core.io.FileUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import cn.hutool.core.collection.CollUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl; | 24 | package org.opengauss.admin.plugin.service.ops.impl; |
| 2 | 25 | ||
| 3 | import com.gitee.starblues.annotation.Extract; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -5,6 +28,8 @@ import org.opengauss.admin.common.core.domain.entity.ops.OpsHostEntity; | |||
| 5 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity; | 28 | import org.opengauss.admin.common.core.domain.entity.ops.OpsHostUserEntity; |
| 6 | import org.opengauss.admin.common.exception.ops.OpsException; | 29 | import org.opengauss.admin.common.exception.ops.OpsException; |
| 7 | import org.opengauss.admin.plugin.domain.model.ops.*; | 30 | import 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; | ||
| 8 | import org.opengauss.admin.plugin.service.ops.ClusterOpsProvider; | 33 | import org.opengauss.admin.plugin.service.ops.ClusterOpsProvider; |
| 9 | import org.opengauss.admin.plugin.service.ops.impl.ClusterOpsProviderManager; | 34 | import org.opengauss.admin.plugin.service.ops.impl.ClusterOpsProviderManager; |
| 10 | import org.opengauss.admin.plugin.utils.JschUtil; | 35 | import 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); | ||
【问题原因】 多次处理而且重复的代码。 【修改建议】 将jschResult执行进行一层封装,避免重复的代码。 ![]() ![]() | |||
| 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"); | ||
这里检查依赖已经安装,跳过执行 yum install 安装依赖 ,无需抛出,打印日志方便排查问题的 ![]() ![]() 【问题原因】 每一个层次都有对应的异常拦截,只有日志提示,但是对问题解决没有帮助。尤其是上层无任何感知。 【修改建议】 真正的异常该忽略就忽略,该抛出就抛出,这里依赖失败对上层也没有任何感知,那这样执行后还是没有任何结果。 ![]() ![]() | |||
| 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 | 499 | ||
| 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | // install | 219 | // 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 | // install | 394 | // 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 | // install | 461 | // 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 { |
【问题原因】 完全重复的代码。 【修改建议】 此处可以改为静态函数被多个位置使用。 ![]() ![]() | |||
| 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | // install | 224 | // 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); |
| @@ -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 | // install | 396 | // 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 | // install | 464 | // 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 { |
【问题原因】 完全重复的代码。 【修改建议】 此处可以改为静态函数被多个位置使用。 ![]() ![]() | |||
| 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | // install | 224 | // 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 | // install | 399 | // 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 | // install | 467 | // 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.ops.impl.provider; | 24 | package org.opengauss.admin.plugin.service.ops.impl.provider; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.utils; | 24 | package org.opengauss.admin.plugin.utils; |
| 2 | 25 | ||
| 3 | import cn.hutool.crypto.SecureUtil; | 26 | import cn.hutool.crypto.SecureUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.utils; | 24 | package org.opengauss.admin.plugin.utils; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.exception.ops.OpsException; | 26 | import org.opengauss.admin.common.exception.ops.OpsException; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.utils; | 24 | package org.opengauss.admin.plugin.utils; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import com.alibaba.fastjson.JSONArray; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.utils; | 24 | package org.opengauss.admin.plugin.utils; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 26 | import 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 | /** |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.utils; | 24 | package org.opengauss.admin.plugin.utils; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 26 | import cn.hutool.core.util.StrUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.plugin.domain.entity.ops.OpsBackupEntity; | 26 | import org.opengauss.admin.plugin.domain.entity.ops.OpsBackupEntity; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import com.fasterxml.jackson.annotation.JsonFormat; | 26 | import com.fasterxml.jackson.annotation.JsonFormat; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.vo.ops; | 24 | package org.opengauss.admin.plugin.vo.ops; |
| 2 | 25 | ||
| 3 | import lombok.Data; | 26 | import lombok.Data; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin; | 24 | package org.opengauss.admin.plugin; |
| 2 | 25 | ||
| 3 | import com.mysql.cj.jdbc.result.ResultSetMetaData; | 26 | import com.mysql.cj.jdbc.result.ResultSetMetaData; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin; | 24 | package org.opengauss.admin.plugin; |
| 2 | 25 | ||
| 3 | import org.junit.After; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.controller.modeling; | 24 | package org.opengauss.admin.plugin.controller.modeling; |
| 2 | 25 | ||
| 3 | import org.opengauss.admin.common.core.domain.AjaxResult; | 26 | import org.opengauss.admin.common.core.domain.AjaxResult; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.ops; | 24 | package org.opengauss.admin.plugin.ops; |
| 2 | 25 | ||
| 3 | import cn.hutool.core.bean.BeanUtil; | 26 | import cn.hutool.core.bean.BeanUtil; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.ops; | 24 | package org.opengauss.admin.plugin.ops; |
| 2 | 25 | ||
| 3 | import com.jcraft.jsch.*; | 26 | import com.jcraft.jsch.*; |
| @@ -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 | + | ||
| 1 | package org.opengauss.admin.plugin.ops; | 24 | package org.opengauss.admin.plugin.ops; |
| 2 | 25 | ||
| 3 | import com.alibaba.druid.mock.MockConnection; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONArray; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.mysql.cj.protocol.Resultset; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 26 | import 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 | + | ||
| 1 | package org.opengauss.admin.plugin.service.modeling; | 24 | package org.opengauss.admin.plugin.service.modeling; |
| 2 | 25 | ||
| 3 | import com.baomidou.mybatisplus.core.metadata.IPage; | 26 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| @@ -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", |
| @@ -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", |
| @@ -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: '', |
| @@ -60,7 +60,7 @@ onMounted(() => { | |||
| 60 | 60 | ||
| 61 | onBeforeUnmount(() => { | 61 | onBeforeUnmount(() => { |
| 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 | } |
| @@ -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-start | 1251 | 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 { |
| @@ -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;">请注意: |
| @@ -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; |
| @@ -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-upload | 29 | + <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> |
| @@ -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')" |
| @@ -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> | ||
| @@ -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' | ||
| 29 | import { computed, ref, inject, onMounted } from 'vue' | 32 | import { computed, ref, inject, onMounted } from 'vue' |
| 30 | -import EnvMonitor from './EnvMonitor.vue' | ||
| 31 | import InstallPrompt from './InstallPrompt.vue' | 33 | import InstallPrompt from './InstallPrompt.vue' |
| 32 | import ExeImport from '../ExeImport.vue' | 34 | import ExeImport from '../ExeImport.vue' |
| 33 | import { useOpsStore } from '@/store' | 35 | import { useOpsStore } from '@/store' |
| @@ -36,7 +38,6 @@ const installStore = useOpsStore() | |||
| 36 | 38 | ||
| 37 | enum STEP_ENUM { | 39 | enum STEP_ENUM { |
| 38 | CLUSTER = 1, | 40 | CLUSTER = 1, |
| 39 | - NODE, | ||
| 40 | PROMPT, | 41 | PROMPT, |
| 41 | EXE | 42 | 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 | ||
| 58 | const saveStore = () => { | 57 | const 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 | ||
| 67 | const beforeConfirm = async (): Promise<boolean> => { | 60 | const 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 false | 63 | if (!res) return false |
| 76 | return res | 64 | return res |
| 77 | } | 65 | } |
| @@ -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' | ||
| 33 | import { computed, ref } from 'vue' | 34 | import { computed, ref } from 'vue' |
| 34 | import EnvMonitor from './EnvMonitor.vue' | 35 | import EnvMonitor from './EnvMonitor.vue' |
| 35 | import InstallPrompt from './InstallPrompt.vue' | 36 | import InstallPrompt from './InstallPrompt.vue' |
| @@ -41,7 +42,6 @@ const installStore = useOpsStore() | |||
| 41 | 42 | ||
| 42 | enum STEP_ENUM { | 43 | enum STEP_ENUM { |
| 43 | CLUSTER = 1, | 44 | CLUSTER = 1, |
| 44 | - NODE, | ||
| 45 | ENV, | 45 | ENV, |
| 46 | PROMPT, | 46 | PROMPT, |
| 47 | EXE | 47 | EXE |
| @@ -51,27 +51,19 @@ const installProps = defineProps({ | |||
| 51 | currStep: Number | 51 | 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 | + |
| 56 | const envRef = ref<InstanceType<typeof EnvMonitor> | null>(null) | 56 | const envRef = ref<InstanceType<typeof EnvMonitor> | null>(null) |
| 57 | 57 | ||
| 58 | const saveStore = () => { | 58 | const 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 | ||
| 67 | const beforeConfirm = async (): Promise<boolean> => { | 64 | const 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 false | 67 | if (!res) return false |
| 76 | return res | 68 | 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> |
| @@ -150,7 +150,7 @@ const hostChange = () => { | |||
| 150 | const getTermObj = (): Terminal => { | 150 | const 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, |
| @@ -102,10 +102,10 @@ import { ClusterRoleEnum, EnterpriseInstallConfig } from '@/types/ops/install' / | |||
| 102 | import { hostListAll, hostUserListWithoutRoot, azListAll, portUsed, pathEmpty, fileExist, hostPingById } from '@/api/ops' | 102 | import { hostListAll, hostUserListWithoutRoot, azListAll, portUsed, pathEmpty, fileExist, hostPingById } from '@/api/ops' |
| 103 | import { Message } from '@arco-design/web-vue' | 103 | import { Message } from '@arco-design/web-vue' |
| 104 | import { useOpsStore } from '@/store' | 104 | import { useOpsStore } from '@/store' |
| 105 | -import { useI18n } from 'vue-i18n' | ||
| 106 | import { encryptPassword } from '@/utils/jsencrypt' | 105 | import { encryptPassword } from '@/utils/jsencrypt' |
| 107 | import { FormInstance } from '@arco-design/web-vue/es/form' | 106 | import { FormInstance } from '@arco-design/web-vue/es/form' |
| 108 | import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue"; | 107 | import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue"; |
| 108 | +import { useI18n } from 'vue-i18n' | ||
| 109 | const { t } = useI18n() | 109 | const { t } = useI18n() |
| 110 | const installStore = useOpsStore() | 110 | const 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 = false | 606 | result = false |
| 607 | } | 607 | } |
| 608 | - if (installStore.getInstallConfig.envPath && !validResult[4]) { | 608 | + if (installType.value === 'import' && installStore.getInstallConfig.envPath && !validResult[4]) { |
| 609 | // envPath valid | 609 | // 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 = false | 616 | 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 valid | 620 | // envPath valid |
| 621 | refList.value[i].setFields({ | 621 | refList.value[i].setFields({ |
| 622 | hostId: { | 622 | hostId: { |
| @@ -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> | ||
| @@ -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> | ||
| @@ -160,7 +160,7 @@ const hostChange = (hostId: any) => { | |||
| 160 | const getTermObj = (): Terminal => { | 160 | const 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, |
| @@ -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 = false | 588 | 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 Valid | 591 | // dataPath Valid |
| 592 | refList.value[i].setFields({ | 592 | refList.value[i].setFields({ |
| 593 | envPath: { | 593 | envPath: { |
| @@ -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.dadInstallHostId | 117 | data.hostId = config.dadInstallHostId |
| 117 | data.installUsername = config.dadInstallUsername | 118 | data.installUsername = config.dadInstallUsername |
| 118 | data.password = config.dadInstallPassword | 119 | data.password = config.dadInstallPassword |
| 120 | + data.rootPassword = config.dadRootPassword | ||
| 119 | data.installPath = config.dadInstallPath | 121 | data.installPath = config.dadInstallPath |
| 120 | data.port = config.dadPort | 122 | data.port = config.dadPort |
| 121 | data.needEncrypt = config.dadNeedEncrypt | 123 | 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.needEncrypt | 137 | dadNeedEncrypt: data.needEncrypt |
| @@ -160,8 +163,8 @@ const refreshPackageList = (isInit: boolean) => { | |||
| 160 | 163 | ||
| 161 | const validatePort = async () => { | 164 | const 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.password | 188 | 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 check | 196 | // 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.password | 204 | 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.hostPort | 213 | 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 | { |
| @@ -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> | ||
| @@ -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' | |||
| 67 | import { Message } from '@arco-design/web-vue' | 68 | import { Message } from '@arco-design/web-vue' |
| 68 | import { encryptPassword } from '@/utils/jsencrypt' | 69 | import { encryptPassword } from '@/utils/jsencrypt' |
| 69 | import { ProcessFlag } from './ProcessFlag' | 70 | import { 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 | ||
| 72 | const installStore = useOpsStore() | 74 | const installStore = useOpsStore() |
| 73 | 75 | ||
| @@ -79,6 +81,7 @@ enum statusEnum { | |||
| 79 | 81 | ||
| 80 | const status = ref<number>(statusEnum.RUNNING) | 82 | const status = ref<number>(statusEnum.RUNNING) |
| 81 | const loadingFunc = inject<any>('loading') | 83 | const loadingFunc = inject<any>('loading') |
| 84 | +const shell = ref<null | InstanceType<typeof CustomShell>>(null) | ||
| 82 | 85 | ||
| 83 | const data = reactive<KeyValue>({ | 86 | const data = reactive<KeyValue>({ |
| 84 | state: -1, // -1 un install 0 installing 1 success 2 fail | 87 | state: -1, // -1 un install 0 installing 1 success 2 fail |
| @@ -216,6 +219,7 @@ const downloadLog = () => { | |||
| 216 | } | 219 | } |
| 217 | 220 | ||
| 218 | onMounted(() => { | 221 | onMounted(() => { |
| 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 | ||
| 253 | const encryptBodyPassword = async (reqBody: KeyValue) => { | 257 | const 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 dbList | 315 | 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> |
| @@ -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.olkInstallHostId | 133 | data.form.hostId = config.olkInstallHostId |
| 133 | data.form.installUsername = config.olkInstallUsername | 134 | data.form.installUsername = config.olkInstallUsername |
| 134 | data.form.password = config.olkInstallPassword | 135 | data.form.password = config.olkInstallPassword |
| 136 | + data.form.rootPassword = config.olkRootPassword | ||
| 135 | data.form.installPath = config.olkInstallPath | 137 | data.form.installPath = config.olkInstallPath |
| 136 | data.form.uploadPath = config.olkUploadPath | 138 | data.form.uploadPath = config.olkUploadPath |
| 137 | data.form.olkTarId = config.olkTarId | 139 | 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 | ||
| 260 | const validatePort = async (port: number) => { | 263 | const 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.password | 316 | 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.hostPort | 325 | 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: [ |
| @@ -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 | ||
| 242 | const validatePort = async (port: number) => { | 243 | const 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.ssInstallHostId | 328 | data.form.hostId = config.ssInstallHostId |
| 328 | data.form.installUsername = config.ssInstallUsername | 329 | data.form.installUsername = config.ssInstallUsername |
| 329 | data.form.password = config.ssInstallPassword | 330 | data.form.password = config.ssInstallPassword |
| 331 | + data.form.rootPassword = config.ssRootPassword | ||
| 330 | data.form.installPath = config.ssInstallPath | 332 | data.form.installPath = config.ssInstallPath |
| 331 | data.form.shardingTarId = config.ssTarId | 333 | data.form.shardingTarId = config.ssTarId |
| 332 | data.form.shardingPort = config.ssPort | 334 | 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.password | 429 | 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.hostPort | 438 | 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 | } |
| @@ -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%') { |
| @@ -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"> |
| @@ -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' | |||
| 137 | import { encryptPassword } from '@/utils/jsencrypt' | 141 | import { encryptPassword } from '@/utils/jsencrypt' |
| 138 | import { useI18n } from 'vue-i18n' | 142 | import { useI18n } from 'vue-i18n' |
| 139 | import dayjs from "dayjs"; | 143 | import dayjs from "dayjs"; |
| 144 | +import HostTerminal from "@/views/ops/install/components/hostTerminal/HostTerminal.vue"; | ||
| 145 | + | ||
| 140 | const { t } = useI18n() | 146 | const { t } = useI18n() |
| 141 | const data = reactive<KeyValue>({ | 147 | const data = reactive<KeyValue>({ |
| 142 | state: -1, // -1 un install 0 installing 1 success 2 fail | 148 | state: -1, // -1 un install 0 installing 1 success 2 fail |
| @@ -300,6 +306,7 @@ const retryInstall = () => { | |||
| 300 | const openLogSocket = () => { | 306 | const openLogSocket = () => { |
| 301 | const term = getTermObj() | 307 | const term = getTermObj() |
| 302 | let isProgress = false | 308 | 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 = logSocket | 312 | 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 | } |
| @@ -150,6 +150,9 @@ COMMENT ON COLUMN "public"."ops_az"."create_time" IS '创建时间'; | |||
| 150 | COMMENT ON COLUMN "public"."ops_az"."update_by" IS '更新者'; | 150 | COMMENT ON COLUMN "public"."ops_az"."update_by" IS '更新者'; |
| 151 | COMMENT ON COLUMN "public"."ops_az"."update_time" IS '更新时间'; | 151 | COMMENT 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_check | 157 | -- 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_setting | 998 | -- 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 | ||
| 999 | CREATE OR REPLACE FUNCTION add_user_field_func() RETURNS integer AS 'BEGIN | 1002 | CREATE OR REPLACE FUNCTION add_user_field_func() RETURNS integer AS 'BEGIN |
| 1000 | IF | 1003 | IF |
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; | |||
| 5 | import org.opengauss.admin.common.core.domain.model.ops.ClusterSummaryVO; | 5 | import org.opengauss.admin.common.core.domain.model.ops.ClusterSummaryVO; |
| 6 | import org.opengauss.admin.common.core.domain.model.ops.OpsClusterVO; | 6 | import org.opengauss.admin.common.core.domain.model.ops.OpsClusterVO; |
| 7 | 7 | ||
| 8 | +import java.sql.Connection; | ||
| 8 | import java.util.List; | 9 | import java.util.List; |
| 9 | import java.util.Map; | 10 | import 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; | |||
| 20 | import org.opengauss.admin.common.utils.ops.JdbcUtil; | 20 | import org.opengauss.admin.common.utils.ops.JdbcUtil; |
| 21 | import org.opengauss.admin.common.utils.ops.WsUtil; | 21 | import org.opengauss.admin.common.utils.ops.WsUtil; |
| 22 | import org.opengauss.admin.system.mapper.ops.OpsJdbcDbClusterNodeMapper; | 22 | import org.opengauss.admin.system.mapper.ops.OpsJdbcDbClusterNodeMapper; |
| 23 | +import org.opengauss.admin.system.service.ops.IOpsClusterService; | ||
| 23 | import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterNodeService; | 24 | import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterNodeService; |
| 24 | import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterService; | 25 | import org.opengauss.admin.system.service.ops.IOpsJdbcDbClusterService; |
| 25 | import org.springframework.beans.factory.annotation.Autowired; | 26 | import 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 | 54 | ||
| 54 | private WsUtil wsUtil; | 55 | private WsUtil wsUtil; |
| 56 | + | ||
| 57 | + private IOpsClusterService opsClusterService; | ||
| 55 | 58 | ||
| 56 | 59 | ||
| 57 | 60 | ||
| @@ -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) { |
| @@ -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", |
| @@ -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": "备", |
| @@ -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> |
| @@ -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" |
| @@ -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"> |
| @@ -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 | ||
| 82 | const columns = computed(() => [ | 97 | const 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 | ||
| 90 | const props = defineProps({ | 105 | const props = defineProps({ |
| 91 | - nodes: { | 106 | + jdbcData: { |
| 92 | - type: Array as PropType<KeyValue[]>, | 107 | + type: Array as PropType<KeyValue>, |
| 93 | required: true | 108 | required: true |
| 94 | } | 109 | } |
| 95 | }) | 110 | }) |
| 96 | 111 | ||
| 97 | onMounted(() => { | 112 | onMounted(() => { |
| 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.connNum | 213 | + data.nodeList[index].lockNum = eventData.lockNum |
| 199 | - data.nodeList[index].qps = eventData.qps | 214 | + data.nodeList[index].sessionNum = eventData.sessionNum |
| 200 | - data.nodeList[index].tps = eventData.tps | 215 | + } else if (props.jdbcData.dbType === 'MYSQL') { |
| 201 | - data.nodeList[index].role = eventData.role | 216 | + 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 | } |
| @@ -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 = val | 99 | 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 { |
| @@ -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.label | 56 | 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 | + | ||
| 278 | defineExpose({ | 317 | defineExpose({ |
| 279 | open | 318 | open |
| 280 | }) | 319 | }) |
| @@ -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: 10 | 195 | 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 | - | ||
| 185 | const echartsOption = reactive<KeyValue>({ | 198 | const echartsOption = reactive<KeyValue>({ |
| 186 | cpuOption: cpuOption, | 199 | cpuOption: cpuOption, |
| 187 | memoryOption: memoryOption, | 200 | memoryOption: memoryOption, |
| @@ -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-clear | 47 | + <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> |


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