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

houyu 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 1537fc87 BIGTOP-4467: Merge tool table data into repo table (#244)
1537fc87 is described below

commit 1537fc87d473ec24388a9719fb58e148b2508e58
Author: Zhiguo Wu <[email protected]>
AuthorDate: Thu Jul 17 22:59:16 2025 +0800

    BIGTOP-4467: Merge tool table data into repo table (#244)
---
 .../grpc/service/SetupJdkServiceGrpcImpl.java      | 17 ++++---
 .../org/apache/bigtop/manager/dao/po/RepoPO.java   |  9 ++++
 .../org/apache/bigtop/manager/dao/po/ToolPO.java   | 52 ----------------------
 .../bigtop/manager/dao/repository/RepoDao.java     |  7 ++-
 .../bigtop/manager/dao/repository/ToolDao.java     | 29 ------------
 .../src/main/resources/mapper/mysql/RepoMapper.xml | 16 ++++++-
 .../src/main/resources/mapper/mysql/ToolMapper.xml | 41 -----------------
 .../resources/mapper/postgresql/RepoMapper.xml     | 16 ++++++-
 .../resources/mapper/postgresql/ToolMapper.xml     | 41 -----------------
 .../bigtop/manager/grpc/pojo/ClusterInfo.java      |  4 --
 .../bigtop/manager/grpc/pojo/PackageInfo.java      |  2 -
 .../apache/bigtop/manager/grpc/pojo/RepoInfo.java  |  6 +++
 .../apache/bigtop/manager/grpc/pojo/ToolInfo.java  | 35 ---------------
 .../server/command/helper/JobCacheHelper.java      | 21 ++-------
 .../server/command/task/AbstractComponentTask.java |  1 -
 .../manager/server/model/dto/PackageDTO.java       |  2 -
 .../bigtop/manager/server/model/dto/RepoDTO.java   |  6 +++
 .../bigtop/manager/server/model/vo/RepoVO.java     |  6 +++
 .../manager/server/prometheus/PrometheusProxy.java |  6 +--
 .../server/service/impl/HostServiceImpl.java       |  9 ++--
 .../manager/server/stack/model/PackageModel.java   |  2 -
 .../src/main/resources/ddl/MySQL-DDL-CREATE.sql    | 37 +++++----------
 .../main/resources/ddl/PostgreSQL-DDL-CREATE.sql   | 38 ++++++----------
 .../infra/1.0.0/services/grafana/metainfo.xml      |  2 -
 .../stacks/infra/1.0.0/services/mysql/metainfo.xml |  2 -
 .../bigtop/v3_3_0/hive/HiveMetastoreScript.java    |  8 ++--
 .../manager/stack/core/spi/param/BaseParams.java   | 12 ++---
 .../manager/stack/core/tarball/FileDownloader.java | 10 ++---
 .../manager/stack/core/utils/LocalSettings.java    | 29 +++++-------
 .../manager/stack/core/utils/TarballUtils.java     |  6 +--
 .../stack/core/spi/param/BaseParamsTest.java       | 16 ++++---
 .../stack/core/utils/LocalSettingsTest.java        |  8 ++--
 .../stack/infra/v1_0_0/grafana/GrafanaParams.java  | 16 ++++---
 .../stack/infra/v1_0_0/mysql/MySQLParams.java      |  6 +++
 34 files changed, 158 insertions(+), 360 deletions(-)

diff --git 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/service/SetupJdkServiceGrpcImpl.java
 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/service/SetupJdkServiceGrpcImpl.java
index 4a999454..5edc6f06 100644
--- 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/service/SetupJdkServiceGrpcImpl.java
+++ 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/service/SetupJdkServiceGrpcImpl.java
@@ -26,7 +26,7 @@ import 
org.apache.bigtop.manager.grpc.generated.SetupJdkRequest;
 import org.apache.bigtop.manager.grpc.generated.SetupJdkServiceGrpc;
 import org.apache.bigtop.manager.grpc.pojo.ClusterInfo;
 import org.apache.bigtop.manager.grpc.pojo.PackageInfo;
-import org.apache.bigtop.manager.grpc.pojo.ToolInfo;
+import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
 import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
 import org.apache.bigtop.manager.stack.core.utils.TarballUtils;
 import org.apache.bigtop.manager.stack.core.utils.linux.LinuxFileUtils;
@@ -53,17 +53,16 @@ public class SetupJdkServiceGrpcImpl extends 
SetupJdkServiceGrpc.SetupJdkService
 
             log.info("Setting up cluster jdk...");
             ClusterInfo clusterInfo = LocalSettings.cluster();
-            String toolsHome = clusterInfo.getRootDir() + "/tools";
+            String dependenciesHome = clusterInfo.getRootDir() + 
"/dependencies";
             String user = System.getProperty("user.name");
-            LinuxFileUtils.createDirectories(toolsHome, user, user, 
Constants.PERMISSION_755, true);
+            LinuxFileUtils.createDirectories(dependenciesHome, user, user, 
Constants.PERMISSION_755, true);
 
-            String jdkHome = toolsHome + "/jdk";
-            ToolInfo tool = LocalSettings.getTool("jdk8");
+            String jdkHome = dependenciesHome + "/jdk";
+            RepoInfo repoInfo = LocalSettings.repo("jdk8");
             PackageInfo packageInfo = new PackageInfo();
-            packageInfo.setUrl(tool.getBaseUrl());
-            packageInfo.setName(tool.getPkgName());
-            packageInfo.setChecksum(tool.getChecksum());
-            TarballUtils.installPackage(null, toolsHome, jdkHome, packageInfo, 
1);
+            packageInfo.setName(repoInfo.getPkgName());
+            packageInfo.setChecksum(repoInfo.getChecksum());
+            TarballUtils.installPackage(repoInfo.getBaseUrl(), 
dependenciesHome, jdkHome, packageInfo, 1);
             LinuxFileUtils.createDirectories(jdkHome, user, user, 
Constants.PERMISSION_755, true);
 
             SetupJdkReply reply = SetupJdkReply.newBuilder()
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
index bd64fc49..ae995fd7 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
@@ -43,4 +43,13 @@ public class RepoPO extends BasePO implements Serializable {
 
     @Column(name = "base_url")
     private String baseUrl;
+
+    @Column(name = "pkg_name")
+    private String pkgName;
+
+    @Column(name = "checksum")
+    private String checksum;
+
+    @Column(name = "type")
+    private Integer type;
 }
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ToolPO.java 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ToolPO.java
deleted file mode 100644
index b7e16ca9..00000000
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ToolPO.java
+++ /dev/null
@@ -1,52 +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 = "tool")
-public class ToolPO extends BasePO implements Serializable {
-
-    @Id
-    @Column(name = "id")
-    private Long id;
-
-    @Column(name = "name")
-    private String name;
-
-    @Column(name = "base_url")
-    private String baseUrl;
-
-    @Column(name = "pkg_name")
-    private String pkgName;
-
-    @Column(name = "arch")
-    private String arch;
-
-    @Column(name = "checksum")
-    private String checksum;
-}
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/RepoDao.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/RepoDao.java
index 32e4cb08..62870c84 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/RepoDao.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/RepoDao.java
@@ -21,4 +21,9 @@ package org.apache.bigtop.manager.dao.repository;
 
 import org.apache.bigtop.manager.dao.po.RepoPO;
 
-public interface RepoDao extends BaseDao<RepoPO> {}
+import org.apache.ibatis.annotations.Param;
+
+public interface RepoDao extends BaseDao<RepoPO> {
+
+    RepoPO findByName(@Param("name") String name);
+}
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ToolDao.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ToolDao.java
deleted file mode 100644
index b09f60ba..00000000
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ToolDao.java
+++ /dev/null
@@ -1,29 +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.ToolPO;
-
-import org.apache.ibatis.annotations.Param;
-
-public interface ToolDao extends BaseDao<ToolPO> {
-
-    ToolPO findByName(@Param("name") String name);
-}
diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/RepoMapper.xml 
b/bigtop-manager-dao/src/main/resources/mapper/mysql/RepoMapper.xml
index fe0670ea..f94f35a6 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/RepoMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/RepoMapper.xml
@@ -24,6 +24,18 @@
 <mapper namespace="org.apache.bigtop.manager.dao.repository.RepoDao">
 
     <sql id="baseColumns">
-        id, name, arch, base_url, type
+        id, name, arch, base_url, pkg_name, checksum, type
     </sql>
-</mapper>
\ No newline at end of file
+    <sql id="baseColumnsV2">
+        ${alias}.id, ${alias}.name, ${alias}.arch, ${alias}.base_url, 
${alias}.pkg_name, ${alias}.checksum, ${alias}.type
+    </sql>
+
+    <select id="findByName" 
resultType="org.apache.bigtop.manager.dao.po.RepoPO">
+        select
+        <include refid="baseColumns"/>
+        from
+        repo
+        where name = #{name}
+        limit 1
+    </select>
+</mapper>
diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/ToolMapper.xml 
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ToolMapper.xml
deleted file mode 100644
index bf95e536..00000000
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ToolMapper.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~ 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.
--->
-
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd";>
-<mapper namespace="org.apache.bigtop.manager.dao.repository.ToolDao">
-
-    <sql id="baseColumns">
-        id, name, base_url, pkg_name, arch, checksum
-    </sql>
-    <sql id="baseColumnsV2">
-        ${alias}.id, ${alias}.name, ${alias}.base_url, ${alias}.pkg_name, 
${alias}.arch, ${alias}.checksum
-    </sql>
-
-    <select id="findByName" 
resultType="org.apache.bigtop.manager.dao.po.ToolPO">
-        select
-        <include refid="baseColumns"/>
-        from
-        tool
-        where name = #{name}
-        limit 1
-    </select>
-</mapper>
\ No newline at end of file
diff --git 
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/RepoMapper.xml 
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/RepoMapper.xml
index fe0670ea..f94f35a6 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/RepoMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/RepoMapper.xml
@@ -24,6 +24,18 @@
 <mapper namespace="org.apache.bigtop.manager.dao.repository.RepoDao">
 
     <sql id="baseColumns">
-        id, name, arch, base_url, type
+        id, name, arch, base_url, pkg_name, checksum, type
     </sql>
-</mapper>
\ No newline at end of file
+    <sql id="baseColumnsV2">
+        ${alias}.id, ${alias}.name, ${alias}.arch, ${alias}.base_url, 
${alias}.pkg_name, ${alias}.checksum, ${alias}.type
+    </sql>
+
+    <select id="findByName" 
resultType="org.apache.bigtop.manager.dao.po.RepoPO">
+        select
+        <include refid="baseColumns"/>
+        from
+        repo
+        where name = #{name}
+        limit 1
+    </select>
+</mapper>
diff --git 
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ToolMapper.xml 
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ToolMapper.xml
deleted file mode 100644
index bf95e536..00000000
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ToolMapper.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~ 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.
--->
-
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd";>
-<mapper namespace="org.apache.bigtop.manager.dao.repository.ToolDao">
-
-    <sql id="baseColumns">
-        id, name, base_url, pkg_name, arch, checksum
-    </sql>
-    <sql id="baseColumnsV2">
-        ${alias}.id, ${alias}.name, ${alias}.base_url, ${alias}.pkg_name, 
${alias}.arch, ${alias}.checksum
-    </sql>
-
-    <select id="findByName" 
resultType="org.apache.bigtop.manager.dao.po.ToolPO">
-        select
-        <include refid="baseColumns"/>
-        from
-        tool
-        where name = #{name}
-        limit 1
-    </select>
-</mapper>
\ No newline at end of file
diff --git 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ClusterInfo.java
 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ClusterInfo.java
index 358e646a..957e0c86 100644
--- 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ClusterInfo.java
+++ 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ClusterInfo.java
@@ -20,8 +20,6 @@ package org.apache.bigtop.manager.grpc.pojo;
 
 import lombok.Data;
 
-import java.util.List;
-
 @Data
 public class ClusterInfo {
 
@@ -30,6 +28,4 @@ public class ClusterInfo {
     private String userGroup;
 
     private String rootDir;
-
-    private List<ToolInfo> tools;
 }
diff --git 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/PackageInfo.java
 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/PackageInfo.java
index 4dada510..ca8ace38 100644
--- 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/PackageInfo.java
+++ 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/PackageInfo.java
@@ -27,8 +27,6 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class PackageInfo {
 
-    private String url;
-
     private String name;
 
     private String checksum;
diff --git 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/RepoInfo.java
 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/RepoInfo.java
index e92415b2..97eca2ac 100644
--- 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/RepoInfo.java
+++ 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/RepoInfo.java
@@ -32,4 +32,10 @@ public class RepoInfo {
     private String arch;
 
     private String baseUrl;
+
+    private String pkgName;
+
+    private String checksum;
+
+    private Integer type;
 }
diff --git 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ToolInfo.java
 
b/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ToolInfo.java
deleted file mode 100644
index 6069809e..00000000
--- 
a/bigtop-manager-grpc/src/main/java/org/apache/bigtop/manager/grpc/pojo/ToolInfo.java
+++ /dev/null
@@ -1,35 +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.grpc.pojo;
-
-import lombok.Data;
-
-@Data
-public class ToolInfo {
-
-    private String name;
-
-    private String baseUrl;
-
-    private String pkgName;
-
-    private String arch;
-
-    private String checksum;
-}
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/helper/JobCacheHelper.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/helper/JobCacheHelper.java
index 6abf0f2c..d02f4fb5 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/helper/JobCacheHelper.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/helper/JobCacheHelper.java
@@ -25,21 +25,18 @@ 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.ToolPO;
 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.ToolDao;
 import org.apache.bigtop.manager.grpc.generated.JobCacheReply;
 import org.apache.bigtop.manager.grpc.generated.JobCacheRequest;
 import org.apache.bigtop.manager.grpc.generated.JobCacheServiceGrpc;
 import org.apache.bigtop.manager.grpc.payload.JobCachePayload;
 import org.apache.bigtop.manager.grpc.pojo.ClusterInfo;
 import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
-import org.apache.bigtop.manager.grpc.pojo.ToolInfo;
 import org.apache.bigtop.manager.server.exception.ServerException;
 import org.apache.bigtop.manager.server.grpc.GrpcClient;
 import org.apache.bigtop.manager.server.holder.SpringContextHolder;
@@ -66,7 +63,6 @@ public class JobCacheHelper {
     private static RepoDao repoDao;
     private static HostDao hostDao;
     private static ComponentDao componentDao;
-    private static ToolDao toolDao;
 
     private static final AtomicBoolean INITIALIZED = new AtomicBoolean(false);
 
@@ -76,7 +72,6 @@ public class JobCacheHelper {
         repoDao = SpringContextHolder.getBean(RepoDao.class);
         hostDao = SpringContextHolder.getBean(HostDao.class);
         componentDao = SpringContextHolder.getBean(ComponentDao.class);
-        toolDao = SpringContextHolder.getBean(ToolDao.class);
 
         INITIALIZED.set(true);
     }
@@ -132,25 +127,12 @@ public class JobCacheHelper {
         }
 
         ClusterPO clusterPO = clusterDao.findById(clusterId);
-        List<ToolPO> toolPOList = toolDao.findAll();
 
         ClusterInfo clusterInfo = new ClusterInfo();
         clusterInfo.setName(clusterPO.getName());
         clusterInfo.setUserGroup(clusterPO.getUserGroup());
         clusterInfo.setRootDir(clusterPO.getRootDir());
 
-        List<ToolInfo> toolInfoList = new ArrayList<>();
-        for (ToolPO toolPO : toolPOList) {
-            ToolInfo toolInfo = new ToolInfo();
-            toolInfo.setName(toolPO.getName());
-            toolInfo.setBaseUrl(toolPO.getBaseUrl());
-            toolInfo.setPkgName(toolPO.getPkgName());
-            toolInfo.setArch(toolPO.getArch());
-            toolInfo.setChecksum(toolPO.getChecksum());
-            toolInfoList.add(toolInfo);
-        }
-        clusterInfo.setTools(toolInfoList);
-
         Map<String, Map<String, String>> serviceConfigMap = 
payload.getConfigurations();
         serviceConfigMap.putAll(getServiceConfigMap(clusterId));
 
@@ -180,6 +162,9 @@ public class JobCacheHelper {
             repoInfo.setName(repoPO.getName());
             repoInfo.setArch(repoPO.getArch());
             repoInfo.setBaseUrl(repoPO.getBaseUrl());
+            repoInfo.setPkgName(repoPO.getPkgName());
+            repoInfo.setChecksum(repoPO.getChecksum());
+            repoInfo.setType(repoPO.getType());
             repoList.add(repoInfo);
         });
 
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 3f50a4a1..9d141fc2 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
@@ -127,7 +127,6 @@ public abstract class AbstractComponentTask extends 
AbstractTask {
             List<PackageInfo> packageInfoList = new ArrayList<>();
             for (PackageDTO packageDTO : packageSpecificDTO.getPackages()) {
                 PackageInfo packageInfo = new PackageInfo();
-                packageInfo.setUrl(packageDTO.getUrl());
                 packageInfo.setName(packageDTO.getName());
                 packageInfo.setChecksum(packageDTO.getChecksum());
                 packageInfoList.add(packageInfo);
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
index eb0c37ab..8cabb51a 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
@@ -27,8 +27,6 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class PackageDTO {
 
-    private String url;
-
     private String name;
 
     private String checksum;
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
index 28c1dd84..7fbc41ea 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
@@ -34,4 +34,10 @@ public class RepoDTO {
     private String arch;
 
     private String baseUrl;
+
+    private String pkgName;
+
+    private String checksum;
+
+    private Integer type;
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
index 6c3143b9..7a49a2a9 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
@@ -30,4 +30,10 @@ public class RepoVO {
     private String arch;
 
     private String baseUrl;
+
+    private String pkgName;
+
+    private String checksum;
+
+    private Integer type;
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
index 07984207..a41cfc0a 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/prometheus/PrometheusProxy.java
@@ -436,15 +436,11 @@ public class PrometheusProxy {
 
     private List<String> convertList(List<BigDecimal> list, Integer multiply) {
         List<String> resultList = getEmptyList();
-        if (list == null) {
-            Collections.fill(resultList, "");
-        } else {
+        if (list != null) {
             for (int i = 0; i < list.size(); i++) {
                 BigDecimal value = list.get(i);
                 if (value != null) {
                     resultList.set(i, value.multiply(new 
BigDecimal(multiply)).toString());
-                } else {
-                    resultList.set(i, "");
                 }
             }
         }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
index 969b8977..e726ae9b 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
@@ -28,7 +28,7 @@ import org.apache.bigtop.manager.dao.query.ComponentQuery;
 import org.apache.bigtop.manager.dao.query.HostQuery;
 import org.apache.bigtop.manager.dao.repository.ComponentDao;
 import org.apache.bigtop.manager.dao.repository.HostDao;
-import org.apache.bigtop.manager.dao.repository.ToolDao;
+import org.apache.bigtop.manager.dao.repository.RepoDao;
 import org.apache.bigtop.manager.server.enums.ApiExceptionEnum;
 import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
 import org.apache.bigtop.manager.server.enums.HostAuthTypeEnum;
@@ -47,6 +47,7 @@ import org.apache.bigtop.manager.server.utils.PageUtils;
 import org.apache.bigtop.manager.server.utils.RemoteSSHUtils;
 
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -80,7 +81,7 @@ public class HostServiceImpl implements HostService {
     private ComponentDao componentDao;
 
     @Resource
-    private ToolDao toolDao;
+    private RepoDao repoDao;
 
     private final List<InstalledStatusVO> installedStatus = new 
CopyOnWriteArrayList<>();
 
@@ -273,7 +274,7 @@ public class HostServiceImpl implements HostService {
 
     public void installDependencies(HostDTO hostDTO, String hostname, 
InstalledStatusVO installedStatusVO) {
         String path = hostDTO.getAgentDir();
-        String repoUrl = toolDao.findByName("agent").getBaseUrl();
+        String repoUrl = repoDao.findByName("agent").getBaseUrl();
         int grpcPort = hostDTO.getGrpcPort();
 
         String command;
@@ -340,7 +341,7 @@ public class HostServiceImpl implements HostService {
         if (hostDTO.getSshPort() == null) {
             hostDTO.setSshPort(DEFAULT_SSH_PORT);
         }
-        if (hostDTO.getAgentDir() == null) {
+        if (StringUtils.isBlank(hostDTO.getAgentDir())) {
             hostDTO.setAgentDir(DEFAULT_AGENT_DIR);
         }
     }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
index df9a8f45..ca9b2bea 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
@@ -27,8 +27,6 @@ import jakarta.xml.bind.annotation.XmlAccessorType;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class PackageModel {
 
-    private String url;
-
     private String name;
 
     private String checksum;
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 9ab4f66f..e9118535 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
@@ -127,6 +127,9 @@ CREATE TABLE `repo`
     `name`        VARCHAR(32) DEFAULT NULL,
     `arch`        VARCHAR(32) DEFAULT NULL,
     `base_url`    VARCHAR(255) DEFAULT NULL,
+    `pkg_name`    VARCHAR(64)   DEFAULT NULL,
+    `checksum`    VARCHAR(255)  DEFAULT NULL,
+    `type`        INTEGER  DEFAULT NULL COMMENT '1-service, 2-dependency',
     `create_time` DATETIME    DEFAULT CURRENT_TIMESTAMP,
     `update_time` DATETIME    DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
     `create_by`   BIGINT,
@@ -331,29 +334,20 @@ CREATE TABLE `llm_chat_message`
     KEY              `idx_user_id` (`user_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
-CREATE TABLE `tool`
-(
-    `id`          BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-    `name`        VARCHAR(64) DEFAULT NULL,
-    `base_url`    VARCHAR(255) DEFAULT NULL,
-    `pkg_name`    VARCHAR(64) DEFAULT NULL,
-    `arch`        VARCHAR(64) DEFAULT NULL,
-    `checksum`    VARCHAR(255) DEFAULT NULL,
-    `create_time` DATETIME    DEFAULT CURRENT_TIMESTAMP,
-    `update_time` DATETIME    DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
-    `create_by`   BIGINT,
-    `update_by`   BIGINT,
-    PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
 -- Adding default admin user
 INSERT INTO user (username, password, nickname, status)
 VALUES ('admin', 
'$2b$10$bdTvADKA0dSJYT3wMU3LFeIEnxzKQHeWN3XcHJ5jQpsIo7ju1U5Yi', 
'Administrator', true);
 
-INSERT INTO repo (name, arch, base_url)
+INSERT INTO repo (name, arch, base_url, pkg_name, checksum, type)
 VALUES
-('Service tarballs', 'x86_64', 'http://your-repo/'),
-('Service tarballs', 'aarch64', 'http://your-repo/');
+('general', 'x86_64,aarch64', 'http://your-repo/', null, null, 1),
+('mysql', 'x86_64,aarch64', 'https://dev.mysql.com/get/Downloads/MySQL-8.0/', 
null, null, 1),
+('grafana', 'x86_64,aarch64', 'https://dl.grafana.com/oss/release/', null, 
null, 1),
+('agent', 'x86_64,aarch64', 'http://your-repo/', 
'bigtop-manager-agent.tar.gz', null, 2),
+('jdk8', 'x86_64', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_x64_linux_hotspot_8u452b09.tar.gz', 
'SHA-256:9448308a21841960a591b47927cf2d44fdc4c0533a5f8111a4b243a6bafb5d27', 2),
+('jdk8', 'aarch64', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_aarch64_linux_hotspot_8u452b09.tar.gz', 
'SHA-256:d8a1aecea0913b7a1e0d737ba6f7ea99059b3f6fd17813d4a24e8b3fc3aee278', 2),
+('mysql-connector-j', 'x86_64,aarch64', 
'https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/', 
'mysql-connector-j-8.0.33.jar', 
'SHA-256:e2a3b2fc726a1ac64e998585db86b30fa8bf3f706195b78bb77c5f99bf877bd9', 2);
+
 
 -- Adding default llm platform
 INSERT INTO llm_platform (credential, name, support_models)
@@ -378,10 +372,3 @@ WHERE `name` = 'QianFan';
 UPDATE `llm_platform`
 SET `desc` = 'Get your API Key in https://platform.deepseek.com'
 WHERE `name` = 'DeepSeek';
-
-INSERT INTO tool (name, base_url, pkg_name, arch, checksum)
-VALUES
-('agent', 'http://your-repo/', 'bigtop-manager-agent.tar.gz', 
'x86_64,aarch64', null),
-('jdk8', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_x64_linux_hotspot_8u452b09.tar.gz', 'x86_64', 
'SHA-256:9448308a21841960a591b47927cf2d44fdc4c0533a5f8111a4b243a6bafb5d27'),
-('jdk8', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_aarch64_linux_hotspot_8u452b09.tar.gz', 'aarch64', 
'SHA-256:d8a1aecea0913b7a1e0d737ba6f7ea99059b3f6fd17813d4a24e8b3fc3aee278'),
-('mysql-connector-j', 
'https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/', 
'mysql-connector-j-8.0.33.jar', 'x86_64,aarch64', 
'SHA-256:e2a3b2fc726a1ac64e998585db86b30fa8bf3f706195b78bb77c5f99bf877bd9');
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 76eee364..71001cf4 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
@@ -121,6 +121,9 @@ CREATE TABLE repo
     name        VARCHAR(32)  DEFAULT NULL,
     arch        VARCHAR(32)  DEFAULT NULL,
     base_url    VARCHAR(255)  DEFAULT NULL,
+    pkg_name    VARCHAR(64)   DEFAULT NULL,
+    checksum    VARCHAR(255)  DEFAULT NULL,
+    type        INT  DEFAULT NULL,
     create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
     update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
     create_by   BIGINT,
@@ -128,6 +131,8 @@ CREATE TABLE repo
     PRIMARY KEY (id)
 );
 
+COMMENT ON COLUMN repo.type IS '1-service, 2-dependency';
+
 CREATE TABLE service
 (
     id                BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,
@@ -340,31 +345,21 @@ CREATE TABLE llm_chat_message
     PRIMARY KEY (id)
 );
 
-CREATE TABLE tool
-(
-    id          BIGINT CHECK (id > 0)        NOT NULL GENERATED ALWAYS AS 
IDENTITY,
-    name        VARCHAR(64)                  NOT NULL,
-    base_url    VARCHAR(255)                 DEFAULT NULL,
-    pkg_name    VARCHAR(64)                  DEFAULT NULL,
-    arch        VARCHAR(64)                  DEFAULT NULL,
-    checksum    VARCHAR(255)                 DEFAULT NULL,
-    create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
-    update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
-    create_by   BIGINT,
-    update_by   BIGINT,
-    PRIMARY KEY (id)
-);
-
 CREATE INDEX idx_thread_id ON llm_chat_message (thread_id);
 CREATE INDEX idx_message_user_id ON llm_chat_message (user_id);
 
 INSERT INTO "user" (username, password, nickname, status)
 VALUES ('admin', 
'$2b$10$bdTvADKA0dSJYT3wMU3LFeIEnxzKQHeWN3XcHJ5jQpsIo7ju1U5Yi', 
'Administrator', true);
 
-INSERT INTO repo (name, arch, base_url)
+INSERT INTO repo (name, arch, base_url, pkg_name, checksum, type)
 VALUES
-('Service tarballs', 'x86_64', 'http://your-repo/'),
-('Service tarballs', 'aarch64', 'http://your-repo/');
+('general', 'x86_64,aarch64', 'http://your-repo/', null, null, 1),
+('mysql', 'x86_64,aarch64', 'https://dev.mysql.com/get/Downloads/MySQL-8.0/', 
null, null, 1),
+('grafana', 'x86_64,aarch64', 'https://dl.grafana.com/oss/release/', null, 
null, 1),
+('agent', 'x86_64,aarch64', 'http://your-repo/', 
'bigtop-manager-agent.tar.gz', null, 2),
+('jdk8', 'x86_64', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_x64_linux_hotspot_8u452b09.tar.gz', 
'SHA-256:9448308a21841960a591b47927cf2d44fdc4c0533a5f8111a4b243a6bafb5d27', 2),
+('jdk8', 'aarch64', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_aarch64_linux_hotspot_8u452b09.tar.gz', 
'SHA-256:d8a1aecea0913b7a1e0d737ba6f7ea99059b3f6fd17813d4a24e8b3fc3aee278', 2),
+('mysql-connector-j', 'x86_64,aarch64', 
'https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/', 
'mysql-connector-j-8.0.33.jar', 
'SHA-256:e2a3b2fc726a1ac64e998585db86b30fa8bf3f706195b78bb77c5f99bf877bd9', 2);
 
 INSERT INTO llm_platform (credential, name, support_models)
 VALUES
@@ -388,10 +383,3 @@ WHERE "name" = 'QianFan';
 UPDATE llm_platform
 SET "desc" = 'Get your API Key in https://platform.deepseek.com'
 WHERE "name" = 'DeepSeek';
-
-INSERT INTO tool (name, base_url, pkg_name, arch, checksum)
-VALUES
-('agent', 'http://your-repo/', 'bigtop-manager-agent.tar.gz', 
'x86_64,aarch64', null),
-('jdk8', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_x64_linux_hotspot_8u452b09.tar.gz', 'x86_64', 
'SHA-256:9448308a21841960a591b47927cf2d44fdc4c0533a5f8111a4b243a6bafb5d27'),
-('jdk8', 
'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/',
 'OpenJDK8U-jdk_aarch64_linux_hotspot_8u452b09.tar.gz', 'aarch64', 
'SHA-256:d8a1aecea0913b7a1e0d737ba6f7ea99059b3f6fd17813d4a24e8b3fc3aee278'),
-('mysql-connector-j', 
'https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/', 
'mysql-connector-j-8.0.33.jar', 'x86_64,aarch64', 
'SHA-256:e2a3b2fc726a1ac64e998585db86b30fa8bf3f706195b78bb77c5f99bf877bd9');
diff --git 
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/grafana/metainfo.xml
 
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/grafana/metainfo.xml
index ee540d94..45465e02 100644
--- 
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/grafana/metainfo.xml
+++ 
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/grafana/metainfo.xml
@@ -54,7 +54,6 @@
                 </architectures>
                 <packages>
                     <package>
-                        <url>https://dl.grafana.com/oss/release</url>
                         <name>grafana-11.4.0.linux-amd64.tar.gz</name>
                         
<checksum>SHA-256:3550c73f4455435642976e82cc89aa354f076a75b766a408781107f4f5d4744c</checksum>
                     </package>
@@ -66,7 +65,6 @@
                 </architectures>
                 <packages>
                     <package>
-                        <url>https://dl.grafana.com/oss/release</url>
                         <name>grafana-11.4.0.linux-arm64.tar.gz</name>
                         
<checksum>SHA-256:c978b46a61d92883119131641c03b8a1323a284e74ab9a20e7e48207dc1a11e1</checksum>
                     </package>
diff --git 
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/mysql/metainfo.xml
 
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/mysql/metainfo.xml
index b3a38ae2..302df203 100644
--- 
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/mysql/metainfo.xml
+++ 
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/mysql/metainfo.xml
@@ -53,7 +53,6 @@
                 </architectures>
                 <packages>
                     <package>
-                        
<url>https://dev.mysql.com/get/Downloads/MySQL-8.0</url>
                         <name>mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz</name>
                         
<checksum>MD5:dcf2702f953d1969be44083f4f063f18</checksum>
                     </package>
@@ -65,7 +64,6 @@
                 </architectures>
                 <packages>
                     <package>
-                        
<url>https://dev.mysql.com/get/Downloads/MySQL-8.0</url>
                         
<name>mysql-8.0.40-linux-glibc2.28-aarch64.tar.xz</name>
                         
<checksum>MD5:a79f41ce62784a1a0e081c76116008de</checksum>
                     </package>
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hive/HiveMetastoreScript.java
 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hive/HiveMetastoreScript.java
index 065a6d2a..7da71bad 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hive/HiveMetastoreScript.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hive/HiveMetastoreScript.java
@@ -21,7 +21,7 @@ package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hive;
 import org.apache.bigtop.manager.common.constants.Constants;
 import org.apache.bigtop.manager.common.constants.MessageConstants;
 import org.apache.bigtop.manager.common.shell.ShellResult;
-import org.apache.bigtop.manager.grpc.pojo.ToolInfo;
+import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
 import org.apache.bigtop.manager.stack.core.exception.StackException;
 import org.apache.bigtop.manager.stack.core.spi.param.Params;
 import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
@@ -34,7 +34,6 @@ import 
org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
 import com.google.auto.service.AutoService;
 import lombok.extern.slf4j.Slf4j;
 
-import java.io.File;
 import java.io.IOException;
 import java.text.MessageFormat;
 import java.util.Properties;
@@ -115,9 +114,8 @@ public class HiveMetastoreScript extends 
AbstractServerScript {
     }
 
     private void downloadMySQLJdbcDriver(Params params) {
-        ToolInfo tool = LocalSettings.getTool("mysql-connector-j");
-        String downloadUrl = tool.getBaseUrl() + File.separator + 
tool.getPkgName();
-        FileDownloader.download(downloadUrl, params.stackHome(), tool);
+        RepoInfo repoInfo = LocalSettings.repo("mysql-connector-j");
+        FileDownloader.download(params.stackHome(), repoInfo);
         LinuxFileUtils.moveFile(params.stackHome() + 
"/mysql-connector-j-8.0.33.jar", params.serviceHome() + "/lib/");
         LinuxFileUtils.updateOwner(params.serviceHome() + "/lib", 
params.user(), params.group(), true);
         LinuxFileUtils.updatePermissions(params.serviceHome() + "/lib", 
Constants.PERMISSION_755, true);
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParams.java
index 80693276..d47a3c8d 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParams.java
@@ -26,7 +26,6 @@ import 
org.apache.bigtop.manager.grpc.pojo.PackageSpecificInfo;
 import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
 import org.apache.bigtop.manager.grpc.pojo.TemplateInfo;
 import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.exception.StackException;
 import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
 
 import lombok.NoArgsConstructor;
@@ -172,19 +171,14 @@ public abstract class BaseParams implements Params {
 
     @Override
     public RepoInfo repo() {
-        return LocalSettings.repos().stream()
-                .filter(r -> OSDetection.getArch().equals(r.getArch()))
-                .findFirst()
-                .orElseThrow(() -> new StackException(
-                        "Cannot find repo for os: [{0}] and arch: [{1}]", 
OSDetection.getOS(), OSDetection.getArch()));
+        return LocalSettings.repo("general");
     }
 
     @Override
     public List<PackageInfo> packages() {
-        RepoInfo repo = this.repo();
         List<PackageInfo> packageInfoList = new ArrayList<>();
         for (PackageSpecificInfo packageSpecificInfo : 
this.payload.getPackageSpecifics()) {
-            if (!packageSpecificInfo.getArch().contains(repo.getArch())) {
+            if 
(!packageSpecificInfo.getArch().contains(OSDetection.getArch())) {
                 continue;
             }
 
@@ -202,7 +196,7 @@ public abstract class BaseParams implements Params {
     @Override
     public String javaHome() {
         String root = LocalSettings.cluster().getRootDir();
-        return MessageFormat.format("{0}/tools/jdk", root);
+        return MessageFormat.format("{0}/dependencies/jdk", root);
     }
 
     @Override
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/FileDownloader.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/FileDownloader.java
index 1e5608ba..2d623495 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/FileDownloader.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/FileDownloader.java
@@ -19,7 +19,7 @@
 package org.apache.bigtop.manager.stack.core.tarball;
 
 import org.apache.bigtop.manager.grpc.pojo.PackageInfo;
-import org.apache.bigtop.manager.grpc.pojo.ToolInfo;
+import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
 import org.apache.bigtop.manager.stack.core.exception.StackException;
 
 import lombok.extern.slf4j.Slf4j;
@@ -33,12 +33,12 @@ import java.net.URL;
 @Slf4j
 public class FileDownloader {
 
-    public static void download(String remoteUrl, String saveDir, ToolInfo 
toolInfo) {
+    public static void download(String saveDir, RepoInfo repoInfo) {
         PackageInfo packageInfo = new PackageInfo();
-        packageInfo.setUrl(toolInfo.getBaseUrl());
-        packageInfo.setName(toolInfo.getPkgName());
-        packageInfo.setChecksum(toolInfo.getChecksum());
+        packageInfo.setName(repoInfo.getPkgName());
+        packageInfo.setChecksum(repoInfo.getChecksum());
 
+        String remoteUrl = repoInfo.getBaseUrl() + File.separator + 
repoInfo.getPkgName();
         download(remoteUrl, saveDir, packageInfo);
     }
 
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/LocalSettings.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/LocalSettings.java
index 7e90001d..f8690599 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/LocalSettings.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/LocalSettings.java
@@ -24,7 +24,6 @@ import 
org.apache.bigtop.manager.common.utils.ProjectPathUtils;
 import org.apache.bigtop.manager.common.utils.os.OSDetection;
 import org.apache.bigtop.manager.grpc.pojo.ClusterInfo;
 import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
-import org.apache.bigtop.manager.grpc.pojo.ToolInfo;
 import org.apache.bigtop.manager.stack.core.exception.StackException;
 
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -97,6 +96,18 @@ public class LocalSettings {
         return List.of();
     }
 
+    public static RepoInfo repo(String name) {
+        String arch = OSDetection.getArch();
+        List<RepoInfo> repoInfoList = repos();
+        for (RepoInfo repoInfo : repoInfoList) {
+            if (repoInfo.getName().equals(name) && 
repoInfo.getArch().contains(arch)) {
+                return repoInfo;
+            }
+        }
+        log.error("Cannot find repo: [{}], arch: [{}]", name, arch);
+        throw new StackException("Repo not found: " + name);
+    }
+
     public static List<RepoInfo> repos() {
         List<RepoInfo> repoInfoList = List.of();
         File file = createFile(ProjectPathUtils.getAgentCachePath() + 
CacheFiles.REPOS_INFO);
@@ -115,22 +126,6 @@ public class LocalSettings {
         return clusterInfo;
     }
 
-    public static ToolInfo getTool(String name) {
-        return getTool(name, OSDetection.getArch());
-    }
-
-    public static ToolInfo getTool(String name, String arch) {
-        ClusterInfo clusterInfo = cluster();
-        for (ToolInfo toolInfo : clusterInfo.getTools()) {
-            if (toolInfo.getName().equals(name) && 
toolInfo.getArch().contains(arch)) {
-                return toolInfo;
-            }
-        }
-
-        log.error("Cannot find tool: [{}] for arch: [{}]", name, arch);
-        throw new StackException("Tool not found: " + name);
-    }
-
     protected static File createFile(String fileName) {
         return new File(fileName);
     }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
index bed366e6..1939cda2 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
@@ -22,8 +22,6 @@ import org.apache.bigtop.manager.grpc.pojo.PackageInfo;
 import org.apache.bigtop.manager.stack.core.tarball.FileDownloader;
 import org.apache.bigtop.manager.stack.core.tarball.TarballExtractor;
 
-import org.apache.commons.lang3.StringUtils;
-
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;
@@ -40,9 +38,7 @@ public class TarballUtils {
             return;
         }
 
-        String remoteUrl = StringUtils.isEmpty(packageInfo.getUrl())
-                ? repoUrl + File.separator + packageInfo.getName()
-                : packageInfo.getUrl() + File.separator + 
packageInfo.getName();
+        String remoteUrl = repoUrl + File.separator + packageInfo.getName();
         File localFile = new File(stackHome + File.separator + 
packageInfo.getName());
         FileDownloader.download(remoteUrl, stackHome, packageInfo);
 
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParamsTest.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParamsTest.java
index 782e6d36..6300a47c 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParamsTest.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/spi/param/BaseParamsTest.java
@@ -40,6 +40,7 @@ import java.util.List;
 import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mockStatic;
 
 @ExtendWith(MockitoExtension.class)
@@ -58,15 +59,17 @@ public class BaseParamsTest {
     @BeforeEach
     public void setUp() {
         List<RepoInfo> repos = new ArrayList<>();
-        repos.add(new RepoInfo("repo2", "mockArch", "testURL"));
-        repos.add(new RepoInfo("repo3", "mockArch", "testURL"));
+        RepoInfo general = new RepoInfo("general", "mockArch", "testURL", 
"testPkgName", "testChecksum", 1);
+        RepoInfo test = new RepoInfo("test", "mockArch", "testURL", 
"testPkgName", "testChecksum", 1);
+        repos.add(general);
+        repos.add(test);
 
         List<String> arch = new ArrayList<>();
         arch.add("mockArch");
 
         List<PackageInfo> packages = new ArrayList<>();
-        packages.add(new PackageInfo(null, "package1", "testChecksum1"));
-        packages.add(new PackageInfo(null, "package2", "testChecksum2"));
+        packages.add(new PackageInfo("package1", "testChecksum1"));
+        packages.add(new PackageInfo("package2", "testChecksum2"));
 
         List<PackageSpecificInfo> packageSpecifics = new ArrayList<>();
         PackageSpecificInfo packageSpecific = new PackageSpecificInfo();
@@ -94,6 +97,7 @@ public class BaseParamsTest {
         osDetectionMockedStatic = mockStatic(OSDetection.class);
         netUtilsMockedStatic = mockStatic(NetUtils.class);
         
netUtilsMockedStatic.when(NetUtils::getHostname).thenReturn("mockHostname");
+        localSettingsMockedStatic.when(() -> 
LocalSettings.repo(any())).thenReturn(general);
         localSettingsMockedStatic.when(LocalSettings::repos).thenReturn(repos);
         
localSettingsMockedStatic.when(LocalSettings::cluster).thenReturn(clusterInfo);
         
osDetectionMockedStatic.when(OSDetection::getArch).thenReturn("mockArch");
@@ -154,7 +158,7 @@ public class BaseParamsTest {
     @Test
     public void testRepo() {
         RepoInfo repo = mockBaseParams.repo();
-        assertEquals("repo2", repo.getName());
+        assertEquals("general", repo.getName());
         assertEquals("mockArch", repo.getArch());
     }
 
@@ -178,7 +182,7 @@ public class BaseParamsTest {
     @Test
     public void testJavaHome() {
         String javaHome = mockBaseParams.javaHome();
-        assertEquals("/mockRoot/tools/jdk", javaHome);
+        assertEquals("/mockRoot/dependencies/jdk", javaHome);
     }
 
     @Test
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/utils/LocalSettingsTest.java
 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/utils/LocalSettingsTest.java
index b5f31d45..73d0ca87 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/utils/LocalSettingsTest.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-core/src/test/java/org/apache/bigtop/manager/stack/core/utils/LocalSettingsTest.java
@@ -174,8 +174,8 @@ public class LocalSettingsTest {
 
     @Test
     public void testRepos() {
-        RepoInfo repo1 = new RepoInfo("repo1", "x86_64", "http://repo1.com";);
-        RepoInfo repo2 = new RepoInfo("repo2", "arch64", "http://repo2.com";);
+        RepoInfo repo1 = new RepoInfo("repo1", "x86_64", "http://repo1.com";, 
"pkg", "MD5:123", 1);
+        RepoInfo repo2 = new RepoInfo("repo2", "arch64", "http://repo2.com";, 
"pkg", "MD5:123", 1);
         List<RepoInfo> repoInfoList = List.of(repo1, repo2);
 
         File file = mock(File.class);
@@ -190,8 +190,8 @@ public class LocalSettingsTest {
         
localSettingsMockedStatic.when(LocalSettings::repos).thenCallRealMethod();
 
         List<RepoInfo> expectedRepoInfoList = List.of(
-                new RepoInfo("repo1", "x86_64", "http://repo1.com";),
-                new RepoInfo("repo2", "arch64", "http://repo2.com";));
+                new RepoInfo("repo1", "x86_64", "http://repo1.com";, "pkg", 
"MD5:123", 1),
+                new RepoInfo("repo2", "arch64", "http://repo2.com";, "pkg", 
"MD5:123", 1));
         assertEquals(expectedRepoInfoList, LocalSettings.repos());
     }
 
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/grafana/GrafanaParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/grafana/GrafanaParams.java
index 692fa737..22a215ef 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/grafana/GrafanaParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/grafana/GrafanaParams.java
@@ -19,6 +19,7 @@
 package org.apache.bigtop.manager.stack.infra.v1_0_0.grafana;
 
 import org.apache.bigtop.manager.grpc.payload.ComponentCommandPayload;
+import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
 import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
 import org.apache.bigtop.manager.stack.core.spi.param.Params;
 import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
@@ -138,11 +139,6 @@ public class GrafanaParams extends InfraParams {
         return configuration;
     }
 
-    @Override
-    public String getServiceName() {
-        return "grafana";
-    }
-
     public List<String> getClusters() {
         if (getClusterHosts() == null) {
             return null;
@@ -181,4 +177,14 @@ public class GrafanaParams extends InfraParams {
             globalParamsMap.put("default_host_name", defaultHost);
         }
     }
+
+    @Override
+    public RepoInfo repo() {
+        return LocalSettings.repo("grafana");
+    }
+
+    @Override
+    public String getServiceName() {
+        return "grafana";
+    }
 }
diff --git 
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/mysql/MySQLParams.java
 
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/mysql/MySQLParams.java
index b7bc49b0..4ca7cf00 100644
--- 
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/mysql/MySQLParams.java
+++ 
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/mysql/MySQLParams.java
@@ -19,6 +19,7 @@
 package org.apache.bigtop.manager.stack.infra.v1_0_0.mysql;
 
 import org.apache.bigtop.manager.grpc.payload.ComponentCommandPayload;
+import org.apache.bigtop.manager.grpc.pojo.RepoInfo;
 import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
 import org.apache.bigtop.manager.stack.core.spi.param.Params;
 import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
@@ -78,6 +79,11 @@ public class MySQLParams extends InfraParams {
         return myCnf;
     }
 
+    @Override
+    public RepoInfo repo() {
+        return LocalSettings.repo("mysql");
+    }
+
     @Override
     public String getServiceName() {
         return "mysql";

Reply via email to