This is an automated email from the ASF dual-hosted git repository.

wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git


The following commit(s) were added to refs/heads/main by this push:
     new fe9a3200 BIGTOP-4286: Fix Prometheus installation issues after 
refactor APIs (#111)
fe9a3200 is described below

commit fe9a3200316c64d67f674015e44f0e5b51935732
Author: Zhiguo Wu <[email protected]>
AuthorDate: Tue Nov 26 16:47:50 2024 +0800

    BIGTOP-4286: Fix Prometheus installation issues after refactor APIs (#111)
---
 .../apache/bigtop/manager/common/enums/OSType.java |  2 +
 .../message/entity/payload/CommandPayload.java     |  2 -
 .../manager/common/utils/ProjectPathUtils.java     | 19 +++++++
 .../apache/bigtop/manager/dao/po/SettingPO.java    | 43 ----------------
 .../bigtop/manager/dao/repository/SettingDao.java  | 24 ---------
 .../command/stage/AbstractComponentStage.java      |  1 +
 .../server/command/stage/CacheFileUpdateStage.java |  6 +--
 .../server/command/stage/HostCheckStage.java       |  3 --
 .../manager/server/command/stage/StageContext.java |  6 +++
 .../server/command/task/AbstractComponentTask.java | 12 +++--
 .../server/command/task/CacheFileUpdateTask.java   | 58 ++++++++++++++--------
 .../manager/server/command/task/TaskContext.java   |  6 +--
 .../bigtop/manager/server/utils/StackUtils.java    | 18 +++----
 .../src/main/resources/bin/start.sh                |  1 -
 .../src/main/resources/ddl/MySQL-DDL-CREATE.sql    | 12 -----
 .../main/resources/ddl/PostgreSQL-DDL-CREATE.sql   | 12 -----
 .../infra/1.0.0/services/prometheus/metainfo.xml   |  2 +
 .../manager/stack/bigtop/param/BigtopParams.java   |  3 +-
 .../manager/stack/core/param/BaseParams.java       | 13 +++--
 .../manager/stack/infra/param/InfraParams.java     | 11 ----
 20 files changed, 98 insertions(+), 156 deletions(-)

diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/OSType.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/OSType.java
index 521f081e..d212a520 100644
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/OSType.java
+++ 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/OSType.java
@@ -37,5 +37,7 @@ public enum OSType {
     FEDORA36,
 
     OPENEULER22,
+
+    OPENEULER24,
     ;
 }
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
index 142f7d4f..2ec55ff4 100644
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
+++ 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
@@ -52,8 +52,6 @@ public class CommandPayload extends BasePayload {
 
     private String stackVersion;
 
-    private String rootDir;
-
     private String componentName;
 
     private List<PackageSpecificInfo> packageSpecifics;
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/utils/ProjectPathUtils.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/utils/ProjectPathUtils.java
index 779f209d..44d03999 100644
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/utils/ProjectPathUtils.java
+++ 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/utils/ProjectPathUtils.java
@@ -26,6 +26,7 @@ import java.io.File;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Objects;
 
 @Slf4j
 public class ProjectPathUtils {
@@ -38,10 +39,28 @@ public class ProjectPathUtils {
         return getProjectStoreDir() + File.separator + "keys";
     }
 
+    public static String getServerStackPath() {
+        return getProjectResourcesDir() + File.separator + "stacks";
+    }
+
     public static String getAgentCachePath() {
         return getProjectStoreDir() + File.separator + "agent-caches";
     }
 
+    private static String getProjectResourcesDir() {
+        if (Environments.isDevMode()) {
+            return 
Objects.requireNonNull(ProjectPathUtils.class.getResource("/"))
+                    .getPath();
+        } else {
+            File file = new File(ProjectPathUtils.class
+                    .getProtectionDomain()
+                    .getCodeSource()
+                    .getLocation()
+                    .getPath());
+            return file.getParentFile().getParentFile().getPath();
+        }
+    }
+
     private static String getProjectBaseDir() {
         if (Environments.isDevMode()) {
             return SystemUtils.getUserDir().getPath();
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/SettingPO.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/SettingPO.java
deleted file mode 100644
index e0c85d8f..00000000
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/SettingPO.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.dao.po;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Id;
-import jakarta.persistence.Table;
-import java.io.Serializable;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Table(name = "setting")
-public class SettingPO extends BasePO implements Serializable {
-
-    @Id
-    @Column(name = "id")
-    private Long id;
-
-    @Column(name = "type_name")
-    private String typeName;
-
-    @Column(name = "config_data")
-    private String configData;
-}
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/SettingDao.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/SettingDao.java
deleted file mode 100644
index c719b760..00000000
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/SettingDao.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.bigtop.manager.dao.repository;
-
-import org.apache.bigtop.manager.dao.po.SettingPO;
-
-public interface SettingDao extends BaseDao<SettingPO> {}
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
index 15d8bbdc..9eca5cb8 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
@@ -73,6 +73,7 @@ public abstract class AbstractComponentStage extends 
AbstractStage {
         taskContext.setComponentName(componentDTO.getName());
         taskContext.setComponentDisplayName(componentDTO.getDisplayName());
         taskContext.setServiceUser(serviceDTO.getUser());
+        taskContext.setUserGroup(clusterPO.getUserGroup());
         taskContext.setRootDir(clusterPO.getRootDir());
 
         Map<String, Object> properties = new HashMap<>();
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
index 1e2b7081..0d25c0a8 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
@@ -18,7 +18,6 @@
  */
 package org.apache.bigtop.manager.server.command.stage;
 
-import org.apache.bigtop.manager.common.enums.Command;
 import org.apache.bigtop.manager.dao.po.HostPO;
 import org.apache.bigtop.manager.server.command.task.CacheFileUpdateTask;
 import org.apache.bigtop.manager.server.command.task.Task;
@@ -63,14 +62,15 @@ public class CacheFileUpdateStage extends AbstractStage {
         taskContext.setHostDTO(hostDTO);
         taskContext.setClusterId(stageContext.getClusterId());
         taskContext.setClusterName(stageContext.getClusterName());
+        taskContext.setUserGroup(stageContext.getUserGroup());
+        taskContext.setRootDir(stageContext.getRootDir());
         taskContext.setServiceName("cluster");
         taskContext.setServiceUser("root");
         taskContext.setComponentName("agent");
         taskContext.setComponentDisplayName("Agent");
-        taskContext.setCommand(Command.CUSTOM);
-        taskContext.setCustomCommand("update_cache_files");
 
         Map<String, Object> properties = new HashMap<>();
+        properties.put("hostIds", stageContext.getHostIds());
         taskContext.setProperties(properties);
 
         return new CacheFileUpdateTask(taskContext);
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
index 808ea635..49ca5f62 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
@@ -18,7 +18,6 @@
  */
 package org.apache.bigtop.manager.server.command.stage;
 
-import org.apache.bigtop.manager.common.enums.Command;
 import org.apache.bigtop.manager.server.command.task.HostCheckTask;
 import org.apache.bigtop.manager.server.command.task.Task;
 import org.apache.bigtop.manager.server.command.task.TaskContext;
@@ -48,8 +47,6 @@ public class HostCheckStage extends AbstractStage {
         taskContext.setServiceUser("root");
         taskContext.setComponentName("agent");
         taskContext.setComponentDisplayName("Agent");
-        taskContext.setCommand(Command.CUSTOM);
-        taskContext.setCustomCommand("check_host");
 
         return new HostCheckTask(taskContext);
     }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
index 0b23cf00..ec699506 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
@@ -35,6 +35,10 @@ public class StageContext {
 
     private String clusterName;
 
+    private String userGroup;
+
+    private String rootDir;
+
     private List<Long> hostIds;
 
     private ServiceDTO serviceDTO;
@@ -65,6 +69,8 @@ public class StageContext {
 
         context.setClusterName(clusterCommand.getName());
         context.setHostIds(clusterCommand.getHostIds());
+        context.setUserGroup(clusterCommand.getUserGroup());
+        context.setRootDir(clusterCommand.getRootDir());
     }
 
     private static void fromHostCommandPayload(StageContext context, 
CommandDTO commandDTO) {
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
index 5aeb19e8..ea58327c 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
@@ -32,6 +32,8 @@ import 
org.apache.bigtop.manager.server.model.dto.CustomCommandDTO;
 import org.apache.bigtop.manager.server.model.dto.PackageDTO;
 import org.apache.bigtop.manager.server.model.dto.PackageSpecificDTO;
 import org.apache.bigtop.manager.server.model.dto.ScriptDTO;
+import org.apache.bigtop.manager.server.model.dto.StackDTO;
+import org.apache.bigtop.manager.server.utils.StackUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -55,12 +57,15 @@ public abstract class AbstractComponentTask extends 
AbstractTask {
     @Override
     @SuppressWarnings("unchecked")
     protected CommandRequest getCommandRequest() {
+        StackDTO stackDTO = 
StackUtils.getServiceStack(taskContext.getServiceName());
         CommandPayload commandPayload = new CommandPayload();
         commandPayload.setServiceName(taskContext.getServiceName());
-        commandPayload.setCommand(getCommand());
-        commandPayload.setServiceUser(taskContext.getServiceUser());
         commandPayload.setComponentName(taskContext.getComponentName());
-        commandPayload.setRootDir(taskContext.getRootDir());
+        commandPayload.setServiceUser(taskContext.getServiceUser());
+        commandPayload.setStackName(stackDTO.getStackName());
+        commandPayload.setStackVersion(stackDTO.getStackVersion());
+        commandPayload.setCommand(getCommand());
+        commandPayload.setCustomCommand(getCustomCommand());
 
         Map<String, Object> properties = taskContext.getProperties();
 
@@ -97,7 +102,6 @@ public abstract class AbstractComponentTask extends 
AbstractTask {
         List<PackageSpecificInfo> packageSpecificInfos = new ArrayList<>();
         for (PackageSpecificDTO packageSpecificDTO : packageSpecificDTOList) {
             PackageSpecificInfo packageSpecificInfo = new 
PackageSpecificInfo();
-            packageSpecificInfo.setOs(packageSpecificDTO.getOs());
             packageSpecificInfo.setArch(packageSpecificDTO.getArch());
             List<PackageInfo> packageInfoList = new ArrayList<>();
             for (PackageDTO packageDTO : packageSpecificDTO.getPackages()) {
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
index cbd45153..6a41a73f 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
@@ -29,20 +29,19 @@ import org.apache.bigtop.manager.dao.po.ComponentPO;
 import org.apache.bigtop.manager.dao.po.HostPO;
 import org.apache.bigtop.manager.dao.po.RepoPO;
 import org.apache.bigtop.manager.dao.po.ServiceConfigPO;
-import org.apache.bigtop.manager.dao.po.ServicePO;
-import org.apache.bigtop.manager.dao.po.SettingPO;
 import org.apache.bigtop.manager.dao.query.ComponentQuery;
 import org.apache.bigtop.manager.dao.repository.ClusterDao;
 import org.apache.bigtop.manager.dao.repository.ComponentDao;
 import org.apache.bigtop.manager.dao.repository.HostDao;
 import org.apache.bigtop.manager.dao.repository.RepoDao;
 import org.apache.bigtop.manager.dao.repository.ServiceConfigDao;
-import org.apache.bigtop.manager.dao.repository.ServiceDao;
-import org.apache.bigtop.manager.dao.repository.SettingDao;
 import org.apache.bigtop.manager.grpc.generated.CommandRequest;
 import org.apache.bigtop.manager.grpc.generated.CommandType;
 import org.apache.bigtop.manager.server.holder.SpringContextHolder;
 import org.apache.bigtop.manager.server.model.converter.RepoConverter;
+import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
+import org.apache.bigtop.manager.server.model.dto.StackDTO;
+import org.apache.bigtop.manager.server.utils.StackUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -57,10 +56,8 @@ import static 
org.apache.bigtop.manager.common.constants.Constants.ALL_HOST_KEY;
 public class CacheFileUpdateTask extends AbstractTask {
 
     private ClusterDao clusterDao;
-    private ServiceDao serviceDao;
     private ServiceConfigDao serviceConfigDao;
     private RepoDao repoDao;
-    private SettingDao settingDao;
     private HostDao hostDao;
     private ComponentDao componentDao;
 
@@ -81,10 +78,8 @@ public class CacheFileUpdateTask extends AbstractTask {
         super.injectBeans();
 
         this.clusterDao = SpringContextHolder.getBean(ClusterDao.class);
-        this.serviceDao = SpringContextHolder.getBean(ServiceDao.class);
         this.serviceConfigDao = 
SpringContextHolder.getBean(ServiceConfigDao.class);
         this.repoDao = SpringContextHolder.getBean(RepoDao.class);
-        this.settingDao = SpringContextHolder.getBean(SettingDao.class);
         this.hostDao = SpringContextHolder.getBean(HostDao.class);
         this.componentDao = SpringContextHolder.getBean(ComponentDao.class);
     }
@@ -104,20 +99,19 @@ public class CacheFileUpdateTask extends AbstractTask {
         }
     }
 
+    @SuppressWarnings("unchecked")
     private void genFullCaches() {
-        ClusterPO clusterPO = clusterDao.findById(taskContext.getClusterId());
-
-        Long clusterId = clusterPO.getId();
+        Long clusterId = taskContext.getClusterId();
+        List<Long> hostIds = (List<Long>) 
taskContext.getProperties().get("hostIds");
+        ClusterPO clusterPO = clusterDao.findById(clusterId);
 
         ComponentQuery componentQuery =
                 ComponentQuery.builder().clusterId(clusterId).build();
 
-        List<ServicePO> servicePOList = serviceDao.findByClusterId(clusterId);
         List<ServiceConfigPO> serviceConfigPOList = 
serviceConfigDao.findByClusterId(clusterPO.getId());
         List<ComponentPO> componentPOList = 
componentDao.findByQuery(componentQuery);
         List<RepoPO> repoPOList = repoDao.findAll();
-        Iterable<SettingPO> settings = settingDao.findAll();
-        List<HostPO> hostPOList = hostDao.findAllByClusterId(clusterId);
+        List<HostPO> hostPOList = hostDao.findByIds(hostIds);
 
         clusterInfo = new ClusterInfo();
         clusterInfo.setUserGroup(clusterPO.getUserGroup());
@@ -158,21 +152,43 @@ public class CacheFileUpdateTask extends AbstractTask {
         });
 
         userMap = new HashMap<>();
-        servicePOList.forEach(x -> userMap.put(x.getName(), x.getUser()));
-
-        settingsMap = new HashMap<>();
-        settings.forEach(x -> settingsMap.put(x.getTypeName(), 
x.getConfigData()));
+        for (StackDTO stackDTO : StackUtils.getAllStacks()) {
+            for (ServiceDTO serviceDTO : 
StackUtils.getServiceDTOList(stackDTO)) {
+                userMap.put(serviceDTO.getName(), serviceDTO.getUser());
+            }
+        }
     }
 
     @SuppressWarnings("unchecked")
     private void genEmptyCaches() {
+        List<Long> hostIds = (List<Long>) 
taskContext.getProperties().get("hostIds");
+
+        List<RepoPO> repoPOList = repoDao.findAll();
+        List<HostPO> hostPOList = hostDao.findByIds(hostIds);
+
         componentInfoMap = new HashMap<>();
         serviceConfigMap = new HashMap<>();
+
+        clusterInfo = new ClusterInfo();
+        clusterInfo.setUserGroup(taskContext.getUserGroup());
+        clusterInfo.setRootDir(taskContext.getRootDir());
+
         hostMap = new HashMap<>();
-        userMap = new HashMap<>();
-        settingsMap = new HashMap<>();
+        Set<String> hostNameSet = 
hostPOList.stream().map(HostPO::getHostname).collect(Collectors.toSet());
+        hostMap.put(ALL_HOST_KEY, hostNameSet);
+
         repoList = new ArrayList<>();
-        clusterInfo = new ClusterInfo();
+        repoPOList.forEach(repoPO -> {
+            RepoInfo repoInfo = RepoConverter.INSTANCE.fromPO2Message(repoPO);
+            repoList.add(repoInfo);
+        });
+
+        userMap = new HashMap<>();
+        for (StackDTO stackDTO : StackUtils.getAllStacks()) {
+            for (ServiceDTO serviceDTO : 
StackUtils.getServiceDTOList(stackDTO)) {
+                userMap.put(serviceDTO.getName(), serviceDTO.getUser());
+            }
+        }
     }
 
     @Override
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
index 69bf8715..934d0d24 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
@@ -18,7 +18,6 @@
  */
 package org.apache.bigtop.manager.server.command.task;
 
-import org.apache.bigtop.manager.common.enums.Command;
 import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 import lombok.Data;
@@ -40,11 +39,10 @@ public class TaskContext {
 
     private String componentName;
 
+    // This is for display purpose for task info(eg. task name) only
     private String componentDisplayName;
 
-    private Command command;
-
-    private String customCommand;
+    private String userGroup;
 
     private String rootDir;
 
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
index 3502b899..3b47310e 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/utils/StackUtils.java
@@ -21,6 +21,7 @@ package org.apache.bigtop.manager.server.utils;
 import org.apache.bigtop.manager.common.enums.Command;
 import org.apache.bigtop.manager.common.utils.CaseUtils;
 import org.apache.bigtop.manager.common.utils.JsonUtils;
+import org.apache.bigtop.manager.common.utils.ProjectPathUtils;
 import org.apache.bigtop.manager.server.exception.ApiException;
 import org.apache.bigtop.manager.server.exception.ServerException;
 import org.apache.bigtop.manager.server.model.converter.ServiceConverter;
@@ -43,7 +44,6 @@ import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -58,8 +58,6 @@ public class StackUtils {
 
     private static final String META_FILE = "metainfo.xml";
 
-    private static final String STACKS_FOLDER_NAME = "stacks";
-
     private static final String SERVICES_FOLDER_NAME = "services";
 
     private static final String CONFIGURATION_FOLDER = "configuration";
@@ -78,9 +76,6 @@ public class StackUtils {
         parseStack();
     }
 
-    /**
-     *
-     */
     private static void parseStack() {
         File stacksFolder = loadStacksFolder();
         File[] stackFolders = 
Optional.ofNullable(stacksFolder.listFiles()).orElse(new File[0]);
@@ -194,12 +189,7 @@ public class StackUtils {
      * Load stack folder as file
      */
     private static File loadStacksFolder() throws ApiException {
-        URL url = 
StackUtils.class.getClassLoader().getResource(STACKS_FOLDER_NAME);
-        if (url == null) {
-            throw new ServerException("Can't find stack folder");
-        }
-
-        String stackPath = url.getPath();
+        String stackPath = ProjectPathUtils.getServerStackPath();
         File file = new File(stackPath);
         if (!file.exists()) {
             throw new ServerException("Can't find stack folder");
@@ -213,6 +203,10 @@ public class StackUtils {
         return CaseUtils.toCamelCase(stackDTO.getStackName()) + "-" + 
stackDTO.getStackVersion();
     }
 
+    public static List<StackDTO> getAllStacks() {
+        return new ArrayList<>(STACK_SERVICE_MAP.keySet());
+    }
+
     public static StackDTO getServiceStack(String serviceName) {
         for (Map.Entry<StackDTO, List<ServiceDTO>> entry : 
STACK_SERVICE_MAP.entrySet()) {
             for (ServiceDTO serviceDTO : entry.getValue()) {
diff --git a/bigtop-manager-server/src/main/resources/bin/start.sh 
b/bigtop-manager-server/src/main/resources/bin/start.sh
index 7769d50b..9e79c8f9 100755
--- a/bigtop-manager-server/src/main/resources/bin/start.sh
+++ b/bigtop-manager-server/src/main/resources/bin/start.sh
@@ -62,5 +62,4 @@ cd $BIGTOP_MANAGER_HOME
 
 $JAVA_HOME/bin/java $JAVA_OPTS \
   -cp "${BIGTOP_MANAGER_HOME}/conf":"${BIGTOP_MANAGER_HOME}/libs/*" \
-  -Dbigtop.manager.stack.path="${BIGTOP_MANAGER_HOME}/stacks" \
   org.apache.bigtop.manager.server.ServerApplication
diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql 
b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
index 1255de27..db5dcbd7 100644
--- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
@@ -265,18 +265,6 @@ CREATE TABLE `task`
     KEY               idx_task_stage_id (stage_id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
-CREATE TABLE `setting`
-(
-    `id`          BIGINT NOT NULL AUTO_INCREMENT,
-    `config_data` TEXT,
-    `create_by`   BIGINT,
-    `create_time` DATETIME,
-    `type_name`   VARCHAR(255),
-    `update_by`   BIGINT,
-    `update_time` DATETIME,
-    PRIMARY KEY (id)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
 CREATE TABLE `llm_platform`
 (
     `id`             BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
diff --git 
a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql 
b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
index 98c8173c..9cdff18d 100644
--- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
@@ -275,18 +275,6 @@ CREATE INDEX idx_task_cluster_id ON task (cluster_id);
 CREATE INDEX idx_task_job_id ON task (job_id);
 CREATE INDEX idx_task_stage_id ON task (stage_id);
 
-CREATE TABLE setting
-(
-    id          BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,
-    config_data TEXT,
-    create_by   BIGINT,
-    create_time TIMESTAMP(0),
-    type_name   VARCHAR(255),
-    update_by   BIGINT,
-    update_time TIMESTAMP(0),
-    PRIMARY KEY (id)
-);
-
 CREATE TABLE llm_platform
 (
     id             BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS IDENTITY,
diff --git 
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
 
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
index ec1ec1e9..30289202 100644
--- 
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
+++ 
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
@@ -50,6 +50,7 @@
                     <os>centos7</os>
                     <os>rocky8</os>
                     <os>openeuler22</os>
+                    <os>openeuler24</os>
                 </operating-systems>
                 <architectures>
                     <arch>x86_64</arch>
@@ -64,6 +65,7 @@
             <package-specific>
                 <operating-systems>
                     <os>openeuler22</os>
+                    <os>openeuler24</os>
                 </operating-systems>
                 <architectures>
                     <arch>aarch64</arch>
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
index b79bb0a0..b57d9ee9 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.stack.bigtop.param;
 
 import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
 import org.apache.bigtop.manager.stack.core.param.BaseParams;
+import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
 
 public abstract class BigtopParams extends BaseParams {
 
@@ -40,7 +41,7 @@ public abstract class BigtopParams extends BaseParams {
      */
     @Override
     public String serviceHome() {
-        String rootDir = this.commandPayload.getRootDir();
+        String rootDir = LocalSettings.cluster().getRootDir();
         String service = this.commandPayload.getServiceName();
         return rootDir + "/" + service.toLowerCase();
     }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
index 514ae5fb..ff3eb7f0 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
@@ -103,7 +103,8 @@ public abstract class BaseParams implements Params {
     @Override
     public RepoInfo repo() {
         return LocalSettings.repos().stream()
-                .filter(r -> OSDetection.getArch().equals(r.getArch()))
+                // Use service tarballs repo(type == 1)
+                .filter(r -> OSDetection.getArch().equals(r.getArch()) && 
r.getType() == 1)
                 .findFirst()
                 .orElseThrow(() -> new StackException(
                         "Cannot find repo for os: [{0}] and arch: [{1}]", 
OSDetection.getOS(), OSDetection.getArch()));
@@ -114,7 +115,7 @@ public abstract class BaseParams implements Params {
         RepoInfo repo = this.repo();
         List<PackageInfo> packageInfoList = new ArrayList<>();
         for (PackageSpecificInfo packageSpecificInfo : 
this.commandPayload.getPackageSpecifics()) {
-            if (packageSpecificInfo.getArch().contains(repo.getArch())) {
+            if (!packageSpecificInfo.getArch().contains(repo.getArch())) {
                 continue;
             }
 
@@ -133,7 +134,13 @@ public abstract class BaseParams implements Params {
     public String stackHome() {
         String stackName = this.commandPayload.getStackName();
         String stackVersion = this.commandPayload.getStackVersion();
-        String root = this.commandPayload.getRootDir();
+        String root = LocalSettings.cluster().getRootDir();
         return MessageFormat.format("{0}/{1}/{2}", root, 
stackName.toLowerCase(), stackVersion);
     }
+
+    @Override
+    public String serviceHome() {
+        String service = this.commandPayload.getServiceName();
+        return MessageFormat.format("{0}/{1}", stackHome(), 
service.toLowerCase());
+    }
 }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
index f78f8058..89e5ad3b 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
@@ -23,21 +23,10 @@ import 
org.apache.bigtop.manager.stack.core.param.BaseParams;
 
 import lombok.extern.slf4j.Slf4j;
 
-import java.text.MessageFormat;
-
 @Slf4j
 public abstract class InfraParams extends BaseParams {
 
     protected InfraParams(CommandPayload commandPayload) {
         super(commandPayload);
     }
-
-    /**
-     * service home dir
-     */
-    @Override
-    public String serviceHome() {
-        String service = this.commandPayload.getServiceName();
-        return MessageFormat.format("{0}/{1}", stackHome(), 
service.toLowerCase());
-    }
 }

Reply via email to