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 9d152b5e BIGTOP-4277: Adjust Service Add Command (#109)
9d152b5e is described below
commit 9d152b5eec1a26ef902df8c1a5f9915284152787
Author: Zhiguo Wu <[email protected]>
AuthorDate: Tue Nov 26 09:19:07 2024 +0800
BIGTOP-4277: Adjust Service Add Command (#109)
---
.../bigtop/manager/common/enums/Command.java | 6 +-
.../bigtop/manager/dao/repository/ClusterDao.java | 2 -
.../bigtop/manager/dao/repository/HostDao.java | 2 +-
.../bigtop/manager/dao/repository/RepoDao.java | 12 +-
.../bigtop/manager/dao/repository/ServiceDao.java | 6 +-
.../bigtop/manager/dao/repository/StageDao.java | 2 -
.../bigtop/manager/dao/repository/TaskDao.java | 2 -
.../main/resources/mapper/mysql/ClusterMapper.xml | 18 ---
.../src/main/resources/mapper/mysql/HostMapper.xml | 6 +-
.../src/main/resources/mapper/mysql/RepoMapper.xml | 29 +---
.../main/resources/mapper/mysql/ServiceMapper.xml | 20 +--
.../main/resources/mapper/mysql/StageMapper.xml | 14 --
.../src/main/resources/mapper/mysql/TaskMapper.xml | 14 --
.../resources/mapper/postgresql/ClusterMapper.xml | 18 ---
.../resources/mapper/postgresql/HostMapper.xml | 6 +-
.../resources/mapper/postgresql/RepoMapper.xml | 29 +---
.../resources/mapper/postgresql/ServiceMapper.xml | 20 +--
.../resources/mapper/postgresql/StageMapper.xml | 14 --
.../resources/mapper/postgresql/TaskMapper.xml | 14 --
...teJobFactory.java => ClusterAddJobFactory.java} | 8 +-
...JobFactory.java => ComponentAddJobFactory.java} | 4 +-
...llJobFactory.java => ServiceAddJobFactory.java} | 8 +-
.../manager/server/command/job/AbstractJob.java | 4 +-
.../server/command/job/AbstractServiceJob.java | 78 +++++------
.../{ClusterCreateJob.java => ClusterAddJob.java} | 16 +--
.../manager/server/command/job/HostAddJob.java | 69 ----------
.../manager/server/command/job/JobContext.java | 2 +
.../{ServiceInstallJob.java => ServiceAddJob.java} | 150 +++++++++++----------
...entInstallStage.java => ComponentAddStage.java} | 10 +-
.../server/command/task/CacheFileUpdateTask.java | 4 +-
...onentInstallTask.java => ComponentAddTask.java} | 22 ++-
...eateValidator.java => ClusterAddValidator.java} | 4 +-
.../server/command/validator/HostAddValidator.java | 4 +-
.../validator/RequiredServicesValidator.java | 4 +-
.../command/validator/ServiceHostValidator.java | 65 ---------
.../config/CommandGroupSequenceProvider.java | 2 +-
.../model/converter/ServiceConfigConverter.java | 5 +
.../manager/server/model/dto/ComponentHostDTO.java | 2 +-
.../model/dto/command/ServiceCommandDTO.java | 6 -
.../manager/server/model/req/ComponentHostReq.java | 4 +-
.../model/req/command/ServiceCommandReq.java | 9 --
.../bigtop/manager/server/model/vo/JobVO.java | 4 -
.../bigtop/manager/server/model/vo/ServiceVO.java | 12 +-
.../server/service/impl/CommandServiceImpl.java | 1 +
.../server/service/impl/HostServiceImpl.java | 2 +-
.../server/service/impl/JobServiceImpl.java | 1 +
.../ComponentStatusTimer.java} | 20 +--
.../HostInfoTimer.java} | 13 +-
.../bigtop/manager/server/utils/StackUtils.java | 19 +++
.../stacks/bigtop/3.3.0/services/kafka/order.json | 4 +-
.../manager/stack/bigtop/param/BigtopParams.java | 15 +--
.../manager/stack/core/param/BaseParams.java | 2 +-
.../stack/core/spi/script/AbstractScript.java | 6 +-
.../manager/stack/core/spi/script/Script.java | 7 +-
.../v1_0_0/prometheus/PrometheusServerScript.java | 4 +-
55 files changed, 277 insertions(+), 547 deletions(-)
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/Command.java
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/Command.java
index a379fcaa..4af14bc5 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/Command.java
+++
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/enums/Command.java
@@ -28,11 +28,9 @@ import lombok.Getter;
@AllArgsConstructor
@Getter
public enum Command {
- CREATE("create", "Create"),
+ ADD("add", "Add"),
- INSTALL("install", "Install"),
-
- UNINSTALL("uninstall", "Uninstall"),
+ REMOVE("remove", "Remove"),
START("start", "Start"),
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ClusterDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ClusterDao.java
index af60ee87..3ee62d96 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ClusterDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ClusterDao.java
@@ -30,6 +30,4 @@ public interface ClusterDao extends BaseDao<ClusterPO> {
ClusterPO findByName(@Param("name") String name);
Integer count();
-
- ClusterPO findByIdJoin(@Param("clusterId") Long clusterId);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/HostDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/HostDao.java
index 87bd92a9..b2fc7c17 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/HostDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/HostDao.java
@@ -35,7 +35,7 @@ public interface HostDao extends BaseDao<HostPO> {
HostPO findByHostname(@Param("hostname") String hostname);
- List<HostPO> findAllByHostnameIn(@Param("hostnames") Collection<String>
hostnames);
+ List<HostPO> findAllByHostnames(@Param("hostnames") Collection<String>
hostnames);
List<HostPO> findAllByClusterId(@Param("clusterId") Long clusterId);
}
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 3c8d3021..32e4cb08 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,14 +21,4 @@ package org.apache.bigtop.manager.dao.repository;
import org.apache.bigtop.manager.dao.po.RepoPO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface RepoDao extends BaseDao<RepoPO> {
-
- Optional<RepoPO> findByRepoName(@Param("repoName") String clusterName);
-
- List<RepoPO> findAllByClusterId(@Param("clusterId") Long clusterId);
-}
+public interface RepoDao extends BaseDao<RepoPO> {}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceDao.java
index 8901b882..7a24a3e6 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ServiceDao.java
@@ -32,9 +32,7 @@ public interface ServiceDao extends BaseDao<ServicePO> {
List<ServicePO> findByClusterId(@Param("clusterId") Long clusterId);
- ServicePO findByClusterIdAndServiceName(
- @Param("clusterId") Long clusterId, @Param("serviceName") String
serviceName);
+ ServicePO findByClusterIdAndName(@Param("clusterId") Long clusterId,
@Param("name") String name);
- List<ServicePO> findByClusterIdAndServiceNameIn(
- @Param("clusterId") Long clusterId, @Param("serviceNames")
List<String> serviceNames);
+ List<ServicePO> findByClusterIdAndNames(@Param("clusterId") Long
clusterId, @Param("name") List<String> names);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/StageDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/StageDao.java
index 993c57dc..5d355ea4 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/StageDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/StageDao.java
@@ -28,6 +28,4 @@ import java.util.List;
public interface StageDao extends BaseDao<StagePO> {
List<StagePO> findByJobId(@Param("jobId") Long jobId);
-
- void updateStateByIds(@Param("stages") List<StagePO> stages);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/TaskDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/TaskDao.java
index fcf32c3a..d4c93d58 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/TaskDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/TaskDao.java
@@ -28,6 +28,4 @@ import java.util.List;
public interface TaskDao extends BaseDao<TaskPO> {
List<TaskPO> findByStageId(@Param("stageId") Long stageId);
-
- void updateStateByIds(@Param("tasks") List<TaskPO> tasks);
}
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
index 921380b2..cd8e6df2 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
@@ -57,22 +57,4 @@
<select id="count" resultType="java.lang.Integer">
select count(*) from cluster
</select>
-
- <select id="findByIdJoin"
- resultType="org.apache.bigtop.manager.dao.po.ClusterPO">
- select
- <include refid="baseColumnsV2">
- <property name="alias" value="r"/>
- </include>
- , s.stack_name, s.stack_version
- from
- cluster r
- inner join stack s
- on r.stack_id = s.id
- <where>
- <if test="clusterId!=0">
- r.id=#{clusterId}
- </if>
- </where>
- </select>
</mapper>
\ No newline at end of file
diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/HostMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/HostMapper.xml
index 3548f4f3..9fa1a41f 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/HostMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/HostMapper.xml
@@ -58,7 +58,7 @@
and h.status = #{query.status}
</if>
</where>
- group by h.id
+ group by h.id, c.name
</select>
<select id="findDetailsById"
resultType="org.apache.bigtop.manager.dao.po.HostPO">
@@ -70,7 +70,7 @@
left join cluster c on h.cluster_id = c.id
left join component comp on h.id = comp.host_id
where h.id = #{id}
- group by h.id
+ group by h.id, c.name
limit 1
</select>
@@ -107,7 +107,7 @@
on h.cluster_id = clus.id
</select>
- <select id="findAllByHostnameIn"
+ <select id="findAllByHostnames"
resultType="org.apache.bigtop.manager.dao.po.HostPO">
select
<include refid="baseColumns"/>
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 d1f0d358..fe0670ea 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/RepoMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/RepoMapper.xml
@@ -24,33 +24,6 @@
<mapper namespace="org.apache.bigtop.manager.dao.repository.RepoDao">
<sql id="baseColumns">
- id, base_url, os, arch, repo_id, repo_name, repo_type, cluster_id
+ id, name, arch, base_url, type
</sql>
-
- <select id="findByRepoName"
resultType="org.apache.bigtop.manager.dao.po.RepoPO">
- select
- <include refid="baseColumns"/>
- from
- repo
- <where>
- <if test="repoName!=null">
- repo_name=#{repoName}
- </if>
- </where>
- limit 1
- </select>
-
- <select id="findAllByClusterId" parameterType="java.lang.Long"
- resultType="org.apache.bigtop.manager.dao.po.RepoPO">
- select
- <include refid="baseColumns"/>
- from
- repo
- <where>
- <if test="clusterId != 0">
- cluster_id = #{clusterId}
- </if>
- </where>
- </select>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
index 70cbe85d..4d1f0393 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
@@ -60,36 +60,36 @@
cluster_id = #{clusterId}
</select>
- <select id="findByClusterIdAndServiceName"
+ <select id="findByClusterIdAndName"
resultType="org.apache.bigtop.manager.dao.po.ServicePO">
select
<include refid="baseColumns"/>
from
service
<where>
- <if test="clusterId != 0">
+ <if test="clusterId != null">
cluster_id = #{clusterId}
</if>
- <if test="serviceName != null">
- and service_name = #{serviceName}
+ <if test="name != null and name != ''">
+ and name = #{name}
</if>
</where>
</select>
- <select id="findByClusterIdAndServiceNameIn"
+ <select id="findByClusterIdAndNames"
resultType="org.apache.bigtop.manager.dao.po.ServicePO">
select
<include refid="baseColumns"/>
from
service
<where>
- <if test="clusterId != 0">
+ <if test="clusterId != null">
cluster_id = #{clusterId}
</if>
- <if test="serviceNames != null and serviceNames.size() > 0">
- and service_name in
- <foreach collection="serviceNames" item="serviceName"
index="index" open="(" close=")" separator=", ">
- #{serviceName}
+ <if test="names != null and names.size() > 0">
+ and name in
+ <foreach collection="names" item="name" index="index" open="("
close=")" separator=", ">
+ #{name}
</foreach>
</if>
</where>
diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/StageMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/StageMapper.xml
index 203d9bed..5f183f0a 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/StageMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/StageMapper.xml
@@ -29,18 +29,4 @@
WHERE job_id = #{jobId}
ORDER BY `order` asc
</select>
-
- <update id="updateStateByIds" parameterType="java.util.List">
- UPDATE stage
- SET `state` = CASE
- <foreach collection="stages" item="item" index="index">
- WHEN id = #{item.id} THEN #{item.state}
- </foreach>
- END
- WHERE id IN
- <foreach collection="stages" index="index" item="item" open="("
separator="," close=")">
- #{item.id}
- </foreach>
- </update>
-
</mapper>
\ No newline at end of file
diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/TaskMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/TaskMapper.xml
index 0e6dcf47..4b6e3f53 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/TaskMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/TaskMapper.xml
@@ -29,18 +29,4 @@
WHERE stage_id = #{stageId}
ORDER BY id asc
</select>
-
- <update id="updateStateByIds" parameterType="java.util.List">
- UPDATE task
- SET `state` = CASE
- <foreach collection="tasks" item="item" index="index">
- WHEN id = #{item.id} THEN #{item.state}
- </foreach>
- END
- WHERE id IN
- <foreach collection="tasks" index="index" item="item" open="("
separator="," close=")">
- #{item.id}
- </foreach>
- </update>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ClusterMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ClusterMapper.xml
index f2334e0c..7d72590c 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ClusterMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ClusterMapper.xml
@@ -57,22 +57,4 @@
<select id="count" resultType="java.lang.Integer">
select count(*) from cluster
</select>
-
- <select id="findByIdJoin"
- resultType="org.apache.bigtop.manager.dao.po.ClusterPO">
- select
- <include refid="baseColumnsV2">
- <property name="alias" value="r"/>
- </include>
- , s.stack_name, s.stack_version
- from
- cluster r
- inner join stack s
- on r.stack_id = s.id
- <where>
- <if test="clusterId!=0">
- r.id=#{clusterId}
- </if>
- </where>
- </select>
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostMapper.xml
index 280f118e..af92a20f 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostMapper.xml
@@ -58,7 +58,7 @@
and h.status = #{query.status}
</if>
</where>
- group by h.id
+ group by h.id, c.name
</select>
<select id="findDetailsById"
resultType="org.apache.bigtop.manager.dao.po.HostPO">
@@ -70,7 +70,7 @@
left join cluster c on h.cluster_id = c.id
left join component comp on h.id = comp.host_id
where h.id = #{id}
- group by h.id
+ group by h.id, c.name
limit 1
</select>
@@ -100,7 +100,7 @@
on h.cluster_id = clus.id
</select>
- <select id="findAllByHostnameIn"
+ <select id="findAllByHostnames"
resultType="org.apache.bigtop.manager.dao.po.HostPO">
select
<include refid="baseColumns"/>
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 d1f0d358..fe0670ea 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/RepoMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/RepoMapper.xml
@@ -24,33 +24,6 @@
<mapper namespace="org.apache.bigtop.manager.dao.repository.RepoDao">
<sql id="baseColumns">
- id, base_url, os, arch, repo_id, repo_name, repo_type, cluster_id
+ id, name, arch, base_url, type
</sql>
-
- <select id="findByRepoName"
resultType="org.apache.bigtop.manager.dao.po.RepoPO">
- select
- <include refid="baseColumns"/>
- from
- repo
- <where>
- <if test="repoName!=null">
- repo_name=#{repoName}
- </if>
- </where>
- limit 1
- </select>
-
- <select id="findAllByClusterId" parameterType="java.lang.Long"
- resultType="org.apache.bigtop.manager.dao.po.RepoPO">
- select
- <include refid="baseColumns"/>
- from
- repo
- <where>
- <if test="clusterId != 0">
- cluster_id = #{clusterId}
- </if>
- </where>
- </select>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
index d540e82d..630e7026 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
@@ -60,36 +60,36 @@
cluster_id = #{clusterId}
</select>
- <select id="findByClusterIdAndServiceName"
+ <select id="findByClusterIdAndName"
resultType="org.apache.bigtop.manager.dao.po.ServicePO">
select
<include refid="baseColumns"/>
from
service
<where>
- <if test="clusterId != 0">
+ <if test="clusterId != null">
cluster_id = #{clusterId}
</if>
- <if test="serviceName != null">
- and service_name = #{serviceName}
+ <if test="name != null and name != ''">
+ and name = #{name}
</if>
</where>
</select>
- <select id="findByClusterIdAndServiceNameIn"
+ <select id="findByClusterIdAndNames"
resultType="org.apache.bigtop.manager.dao.po.ServicePO">
select
<include refid="baseColumns"/>
from
service
<where>
- <if test="clusterId != 0">
+ <if test="clusterId != null">
cluster_id = #{clusterId}
</if>
- <if test="serviceNames != null and serviceNames.size() > 0">
- and service_name in
- <foreach collection="serviceNames" item="serviceName"
index="index" open="(" close=")" separator=", ">
- #{serviceName}
+ <if test="names != null and names.size() > 0">
+ and name in
+ <foreach collection="names" item="name" index="index" open="("
close=")" separator=", ">
+ #{name}
</foreach>
</if>
</where>
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/StageMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/StageMapper.xml
index a4b3889c..5648da0a 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/StageMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/StageMapper.xml
@@ -29,18 +29,4 @@
WHERE job_id = #{jobId}
ORDER BY "order" ASC
</select>
-
- <update id="updateStateByIds" parameterType="java.util.List">
- UPDATE "stage"
- SET "state" = CASE
- <foreach collection="stages" item="item" index="index">
- WHEN id = #{item.id} THEN #{item.state}
- </foreach>
- END
- WHERE "id" IN
- <foreach collection="stages" index="index" item="item" open="("
separator="," close=")">
- #{item.id}
- </foreach>
- </update>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/TaskMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/TaskMapper.xml
index 10dbc8c3..4b6e3f53 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/TaskMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/TaskMapper.xml
@@ -29,18 +29,4 @@
WHERE stage_id = #{stageId}
ORDER BY id asc
</select>
-
- <update id="updateStateByIds" parameterType="java.util.List">
- UPDATE task
- SET "state" = CASE
- <foreach collection="tasks" item="item" index="index">
- WHEN id = #{item.id} THEN #{item.state}
- </foreach>
- END
- WHERE id IN
- <foreach collection="tasks" index="index" item="item" open="("
separator="," close=")">
- #{item.id}
- </foreach>
- </update>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/cluster/ClusterCreateJobFactory.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/cluster/ClusterAddJobFactory.java
similarity index 89%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/cluster/ClusterCreateJobFactory.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/cluster/ClusterAddJobFactory.java
index ef9f5adf..640df20d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/cluster/ClusterCreateJobFactory.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/cluster/ClusterAddJobFactory.java
@@ -20,7 +20,7 @@ package
org.apache.bigtop.manager.server.command.factory.cluster;
import org.apache.bigtop.manager.common.enums.Command;
import org.apache.bigtop.manager.server.command.CommandIdentifier;
-import org.apache.bigtop.manager.server.command.job.ClusterCreateJob;
+import org.apache.bigtop.manager.server.command.job.ClusterAddJob;
import org.apache.bigtop.manager.server.command.job.Job;
import org.apache.bigtop.manager.server.command.job.JobContext;
import org.apache.bigtop.manager.server.enums.CommandLevel;
@@ -34,15 +34,15 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-public class ClusterCreateJobFactory extends AbstractClusterJobFactory {
+public class ClusterAddJobFactory extends AbstractClusterJobFactory {
@Override
public CommandIdentifier getCommandIdentifier() {
- return new CommandIdentifier(CommandLevel.CLUSTER, Command.CREATE);
+ return new CommandIdentifier(CommandLevel.CLUSTER, Command.ADD);
}
@Override
public Job createJob(JobContext jobContext) {
- return new ClusterCreateJob(jobContext);
+ return new ClusterAddJob(jobContext);
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/component/ComponentInstallJobFactory.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/component/ComponentAddJobFactory.java
similarity index 94%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/component/ComponentInstallJobFactory.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/component/ComponentAddJobFactory.java
index 74308ec5..8f39dce3 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/component/ComponentInstallJobFactory.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/component/ComponentAddJobFactory.java
@@ -33,11 +33,11 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-public class ComponentInstallJobFactory extends AbstractComponentJobFactory {
+public class ComponentAddJobFactory extends AbstractComponentJobFactory {
@Override
public CommandIdentifier getCommandIdentifier() {
- return new CommandIdentifier(CommandLevel.COMPONENT, Command.INSTALL);
+ return new CommandIdentifier(CommandLevel.COMPONENT, Command.ADD);
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/service/ServiceInstallJobFactory.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/service/ServiceAddJobFactory.java
similarity index 88%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/service/ServiceInstallJobFactory.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/service/ServiceAddJobFactory.java
index 4b0f9d79..3d0d4f11 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/service/ServiceInstallJobFactory.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/service/ServiceAddJobFactory.java
@@ -22,7 +22,7 @@ import org.apache.bigtop.manager.common.enums.Command;
import org.apache.bigtop.manager.server.command.CommandIdentifier;
import org.apache.bigtop.manager.server.command.job.Job;
import org.apache.bigtop.manager.server.command.job.JobContext;
-import org.apache.bigtop.manager.server.command.job.ServiceInstallJob;
+import org.apache.bigtop.manager.server.command.job.ServiceAddJob;
import org.apache.bigtop.manager.server.enums.CommandLevel;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
@@ -34,15 +34,15 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-public class ServiceInstallJobFactory extends AbstractServiceJobFactory {
+public class ServiceAddJobFactory extends AbstractServiceJobFactory {
@Override
public CommandIdentifier getCommandIdentifier() {
- return new CommandIdentifier(CommandLevel.SERVICE, Command.INSTALL);
+ return new CommandIdentifier(CommandLevel.SERVICE, Command.ADD);
}
@Override
public Job createJob(JobContext jobContext) {
- return new ServiceInstallJob(jobContext);
+ return new ServiceAddJob(jobContext);
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
index bf5d3475..635d5590 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
@@ -146,10 +146,10 @@ public abstract class AbstractJob implements Job {
}
}
if (!taskPOList.isEmpty()) {
- taskDao.updateStateByIds(taskPOList);
+ taskDao.partialUpdateByIds(taskPOList);
}
if (!stagePOList.isEmpty()) {
- stageDao.updateStateByIds(stagePOList);
+ stageDao.partialUpdateByIds(stagePOList);
}
jobDao.partialUpdateById(jobPO);
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
index 6eaee595..6b73c848 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
@@ -25,10 +25,13 @@ import org.apache.bigtop.manager.dao.po.ComponentPO;
import org.apache.bigtop.manager.dao.query.ComponentQuery;
import org.apache.bigtop.manager.dao.repository.ComponentDao;
import org.apache.bigtop.manager.dao.repository.HostDao;
+import org.apache.bigtop.manager.dao.repository.ServiceConfigDao;
+import org.apache.bigtop.manager.dao.repository.ServiceConfigSnapshotDao;
+import org.apache.bigtop.manager.dao.repository.ServiceDao;
import org.apache.bigtop.manager.server.command.stage.CacheFileUpdateStage;
+import org.apache.bigtop.manager.server.command.stage.ComponentAddStage;
import org.apache.bigtop.manager.server.command.stage.ComponentCheckStage;
import org.apache.bigtop.manager.server.command.stage.ComponentConfigureStage;
-import org.apache.bigtop.manager.server.command.stage.ComponentInstallStage;
import org.apache.bigtop.manager.server.command.stage.ComponentStartStage;
import org.apache.bigtop.manager.server.command.stage.ComponentStopStage;
import org.apache.bigtop.manager.server.command.stage.StageContext;
@@ -37,11 +40,7 @@ import
org.apache.bigtop.manager.server.holder.SpringContextHolder;
import org.apache.bigtop.manager.server.model.dto.ComponentDTO;
import org.apache.bigtop.manager.server.model.dto.ComponentHostDTO;
import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
-import org.apache.bigtop.manager.server.model.dto.StackDTO;
import org.apache.bigtop.manager.server.model.dto.command.ServiceCommandDTO;
-import org.apache.bigtop.manager.server.stack.dag.ComponentCommandWrapper;
-import org.apache.bigtop.manager.server.stack.dag.DAG;
-import org.apache.bigtop.manager.server.stack.dag.DagGraphEdge;
import org.apache.bigtop.manager.server.utils.StackUtils;
import org.apache.commons.collections4.CollectionUtils;
@@ -51,14 +50,12 @@ import java.util.List;
public abstract class AbstractServiceJob extends AbstractJob {
+ protected ServiceDao serviceDao;
+ protected ServiceConfigDao serviceConfigDao;
+ protected ServiceConfigSnapshotDao serviceConfigSnapshotDao;
protected ComponentDao componentDao;
protected HostDao hostDao;
- // TODO: temp code
- protected String stackName = "bigtop";
- protected String stackVersion = "3.3.0";
- protected DAG<String, ComponentCommandWrapper, DagGraphEdge> dag =
StackUtils.DAG;
-
public AbstractServiceJob(JobContext jobContext) {
super(jobContext);
}
@@ -67,6 +64,9 @@ public abstract class AbstractServiceJob extends AbstractJob {
protected void injectBeans() {
super.injectBeans();
+ this.serviceDao = SpringContextHolder.getBean(ServiceDao.class);
+ this.serviceConfigDao =
SpringContextHolder.getBean(ServiceConfigDao.class);
+ this.serviceConfigSnapshotDao =
SpringContextHolder.getBean(ServiceConfigSnapshotDao.class);
this.componentDao = SpringContextHolder.getBean(ComponentDao.class);
this.hostDao = SpringContextHolder.getBean(HostDao.class);
}
@@ -76,12 +76,13 @@ public abstract class AbstractServiceJob extends
AbstractJob {
super.beforeCreateStages();
}
- protected StageContext createStageContext(String serviceName, String
componentName, List<String> hostnames) {
+ protected StageContext createStageContext(String serviceName, String
componentName, List<Long> hostIds) {
StageContext stageContext =
StageContext.fromCommandDTO(jobContext.getCommandDTO());
ServiceDTO serviceDTO = StackUtils.getServiceDTO(serviceName);
ComponentDTO componentDTO = StackUtils.getComponentDTO(componentName);
+ stageContext.setHostIds(hostIds);
stageContext.setServiceDTO(serviceDTO);
stageContext.setComponentDTO(componentDTO);
@@ -90,7 +91,8 @@ public abstract class AbstractServiceJob extends AbstractJob {
protected List<String> getTodoListForCommand(Command command) {
try {
- List<String> orderedList = dag.getAllNodesList().isEmpty() ? new
ArrayList<>() : dag.topologicalSort();
+ List<String> orderedList =
+ StackUtils.DAG.getAllNodesList().isEmpty() ? new
ArrayList<>() : StackUtils.DAG.topologicalSort();
List<String> componentNames = getComponentNames();
List<String> componentCommandNames = new
ArrayList<>(componentNames.stream()
.map(x -> x + "-" + command.name().toUpperCase())
@@ -118,15 +120,7 @@ public abstract class AbstractServiceJob extends
AbstractJob {
}
protected String findServiceNameByComponentName(String componentName) {
- for (ServiceDTO serviceDTO : StackUtils.getServiceDTOList(new
StackDTO(stackName, stackVersion))) {
- for (ComponentDTO componentDTO : serviceDTO.getComponents()) {
- if (componentDTO.getName().equals(componentName)) {
- return serviceDTO.getName();
- }
- }
- }
-
- return null;
+ return
StackUtils.getServiceDTOByComponentName(componentName).getName();
}
protected Boolean isMasterComponent(String componentName) {
@@ -144,7 +138,7 @@ public abstract class AbstractServiceJob extends
AbstractJob {
return
componentDTO.getCategory().equalsIgnoreCase(ComponentCategories.CLIENT);
}
- protected List<String> findHostnamesByComponentName(String componentName) {
+ protected List<Long> findHostIdsByComponentName(String componentName) {
ComponentQuery componentQuery = ComponentQuery.builder()
.clusterId(clusterPO.getId())
.name(componentName)
@@ -153,7 +147,7 @@ public abstract class AbstractServiceJob extends
AbstractJob {
if (componentPOList == null) {
return new ArrayList<>();
} else {
- return
componentPOList.stream().map(ComponentPO::getHostname).toList();
+ return
componentPOList.stream().map(ComponentPO::getHostId).toList();
}
}
@@ -162,35 +156,31 @@ public abstract class AbstractServiceJob extends
AbstractJob {
stages.add(new CacheFileUpdateStage(stageContext));
}
- protected void createInstallStages() {
- List<String> todoList = getTodoListForCommand(Command.INSTALL);
+ protected void createAddStages() {
+ List<String> todoList = getTodoListForCommand(Command.ADD);
for (String componentCommand : todoList) {
String[] split = componentCommand.split("-");
String componentName = split[0];
String serviceName = findServiceNameByComponentName(componentName);
- List<String> hostnames =
findHostnamesByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostnames)) {
+ List<Long> hostIds = findHostIdsByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostIds)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
- stages.add(new ComponentInstallStage(stageContext));
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
+ stages.add(new ComponentAddStage(stageContext));
}
}
protected void createConfigureStages() {
for (ServiceCommandDTO serviceCommand :
jobContext.getCommandDTO().getServiceCommands()) {
- if (serviceCommand.getInstalled()) {
- continue;
- }
-
for (ComponentHostDTO componentHost :
serviceCommand.getComponentHosts()) {
String serviceName = serviceCommand.getServiceName();
String componentName = componentHost.getComponentName();
- List<String> hostnames = componentHost.getHostnames();
+ List<Long> hostIds = componentHost.getHostIds();
- StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
stages.add(new ComponentConfigureStage(stageContext));
}
}
@@ -208,12 +198,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
continue;
}
- List<String> hostnames =
findHostnamesByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostnames)) {
+ List<Long> hostIds = findHostIdsByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostIds)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
stages.add(new ComponentStartStage(stageContext));
}
}
@@ -230,12 +220,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
continue;
}
- List<String> hostnames =
findHostnamesByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostnames)) {
+ List<Long> hostIds = findHostIdsByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostIds)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
stages.add(new ComponentStopStage(stageContext));
}
}
@@ -252,12 +242,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
continue;
}
- List<String> hostnames =
findHostnamesByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostnames)) {
+ List<Long> hostIds = findHostIdsByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostIds)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, List.of(hostnames.get(0)));
+ StageContext stageContext = createStageContext(serviceName,
componentName, List.of(hostIds.get(0)));
stages.add(new ComponentCheckStage(stageContext));
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
similarity index 96%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
index ebf67db4..99f1e55b 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
@@ -37,11 +37,11 @@ import
org.apache.bigtop.manager.server.model.dto.CommandDTO;
import java.util.ArrayList;
import java.util.List;
-public class ClusterCreateJob extends AbstractJob {
+public class ClusterAddJob extends AbstractJob {
private HostDao hostDao;
- public ClusterCreateJob(JobContext jobContext) {
+ public ClusterAddJob(JobContext jobContext) {
super(jobContext);
}
@@ -62,6 +62,11 @@ public class ClusterCreateJob extends AbstractJob {
@Override
public void beforeRun() {
super.beforeRun();
+ }
+
+ @Override
+ public void onSuccess() {
+ super.onSuccess();
saveCluster();
@@ -70,14 +75,9 @@ public class ClusterCreateJob extends AbstractJob {
linkJobToCluster();
}
- @Override
- public void onSuccess() {
- super.onSuccess();
- }
-
@Override
public String getName() {
- return "Create cluster";
+ return "Add cluster";
}
private void saveCluster() {
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/HostAddJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/HostAddJob.java
deleted file mode 100644
index 553787a8..00000000
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/HostAddJob.java
+++ /dev/null
@@ -1,69 +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.server.command.job;
-
-import org.apache.bigtop.manager.server.command.stage.CacheFileUpdateStage;
-import org.apache.bigtop.manager.server.command.stage.HostCheckStage;
-import org.apache.bigtop.manager.server.command.stage.StageContext;
-import org.apache.bigtop.manager.server.holder.SpringContextHolder;
-import org.apache.bigtop.manager.server.model.dto.CommandDTO;
-import org.apache.bigtop.manager.server.model.dto.command.HostCommandDTO;
-import org.apache.bigtop.manager.server.service.HostService;
-
-import java.util.List;
-
-public class HostAddJob extends AbstractJob {
-
- private HostService hostService;
-
- public HostAddJob(JobContext jobContext) {
- super(jobContext);
- }
-
- @Override
- protected void injectBeans() {
- super.injectBeans();
-
- this.hostService = SpringContextHolder.getBean(HostService.class);
- }
-
- @Override
- protected void createStages() {
- StageContext stageContext =
StageContext.fromCommandDTO(jobContext.getCommandDTO());
- stages.add(new HostCheckStage(stageContext));
- stages.add(new CacheFileUpdateStage(stageContext));
- }
-
- @Override
- public void onSuccess() {
- super.onSuccess();
-
- CommandDTO commandDTO = jobContext.getCommandDTO();
- List<HostCommandDTO> hostCommands = commandDTO.getHostCommands();
-
- List<String> hostnames =
-
hostCommands.stream().map(HostCommandDTO::getHostname).toList();
- hostService.batchSave(commandDTO.getClusterId(), hostnames);
- }
-
- @Override
- public String getName() {
- return "Add host";
- }
-}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/JobContext.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/JobContext.java
index 5b9206d3..63280cc9 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/JobContext.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/JobContext.java
@@ -26,4 +26,6 @@ import lombok.Data;
public class JobContext {
private CommandDTO commandDTO;
+
+ private Boolean retryFlag;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceInstallJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
similarity index 51%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceInstallJob.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
index 4b61a5c1..2d6d8907 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceInstallJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
@@ -18,49 +18,45 @@
*/
package org.apache.bigtop.manager.server.command.job;
-import org.apache.bigtop.manager.dao.po.ClusterPO;
+import org.apache.bigtop.manager.common.utils.JsonUtils;
import org.apache.bigtop.manager.dao.po.ComponentPO;
import org.apache.bigtop.manager.dao.po.HostPO;
+import org.apache.bigtop.manager.dao.po.ServiceConfigPO;
+import org.apache.bigtop.manager.dao.po.ServiceConfigSnapshotPO;
import org.apache.bigtop.manager.dao.po.ServicePO;
-import org.apache.bigtop.manager.dao.query.ComponentQuery;
-import org.apache.bigtop.manager.dao.repository.HostDao;
-import org.apache.bigtop.manager.dao.repository.ServiceDao;
-import org.apache.bigtop.manager.server.holder.SpringContextHolder;
+import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
import org.apache.bigtop.manager.server.model.converter.ComponentConverter;
+import org.apache.bigtop.manager.server.model.converter.ServiceConfigConverter;
import org.apache.bigtop.manager.server.model.converter.ServiceConverter;
import org.apache.bigtop.manager.server.model.dto.CommandDTO;
import org.apache.bigtop.manager.server.model.dto.ComponentDTO;
import org.apache.bigtop.manager.server.model.dto.ComponentHostDTO;
+import org.apache.bigtop.manager.server.model.dto.ServiceConfigDTO;
import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
+import org.apache.bigtop.manager.server.model.dto.StackDTO;
import org.apache.bigtop.manager.server.model.dto.command.ServiceCommandDTO;
import org.apache.bigtop.manager.server.utils.StackUtils;
-import org.apache.commons.collections4.CollectionUtils;
-
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
-public class ServiceInstallJob extends AbstractServiceJob {
-
- private ServiceDao serviceDao;
- private HostDao hostDao;
+public class ServiceAddJob extends AbstractServiceJob {
- public ServiceInstallJob(JobContext jobContext) {
+ public ServiceAddJob(JobContext jobContext) {
super(jobContext);
}
@Override
protected void injectBeans() {
super.injectBeans();
-
- this.serviceDao = SpringContextHolder.getBean(ServiceDao.class);
- this.hostDao = SpringContextHolder.getBean(HostDao.class);
}
@Override
protected void createStages() {
// Install components
- super.createInstallStages();
+ super.createAddStages();
// Update cache files after installed
super.createCacheStage();
@@ -90,25 +86,12 @@ public class ServiceInstallJob extends AbstractServiceJob {
}
@Override
- protected List<String> findHostnamesByComponentName(String componentName) {
+ protected List<Long> findHostIdsByComponentName(String componentName) {
for (ServiceCommandDTO serviceCommand :
jobContext.getCommandDTO().getServiceCommands()) {
List<ComponentHostDTO> componentHosts =
serviceCommand.getComponentHosts();
for (ComponentHostDTO componentHost : componentHosts) {
if (componentHost.getComponentName().equals(componentName)) {
- List<String> hostnames = new
ArrayList<>(componentHost.getHostnames());
- if (serviceCommand.getInstalled()) {
- ComponentQuery componentQuery =
ComponentQuery.builder()
- .clusterId(clusterPO.getId())
- .name(componentName)
- .build();
- List<String> existHostnames =
componentDao.findByQuery(componentQuery).stream()
- .map(ComponentPO::getHostname)
- .toList();
-
- hostnames.removeAll(existHostnames);
- }
-
- return hostnames;
+ return componentHost.getHostIds();
}
}
}
@@ -120,61 +103,92 @@ public class ServiceInstallJob extends AbstractServiceJob
{
public void beforeRun() {
super.beforeRun();
+ // Skip persistent if it's a retry job
+ if (jobContext.getRetryFlag()) {
+ return;
+ }
+
CommandDTO commandDTO = jobContext.getCommandDTO();
List<ServiceCommandDTO> serviceCommands =
commandDTO.getServiceCommands();
- Long clusterId = commandDTO.getClusterId();
+ for (ServiceCommandDTO serviceCommand : serviceCommands) {
+ saveService(serviceCommand);
+ }
+ }
+
+ @Override
+ public void onSuccess() {
+ super.onSuccess();
- // Persist service, component and hostComponent metadata to database
+ List<ServicePO> servicePOList = new ArrayList<>();
+ CommandDTO commandDTO = jobContext.getCommandDTO();
+ Long clusterId = commandDTO.getClusterId();
+ List<ServiceCommandDTO> serviceCommands =
commandDTO.getServiceCommands();
for (ServiceCommandDTO serviceCommand : serviceCommands) {
String serviceName = serviceCommand.getServiceName();
- ServicePO servicePO =
serviceDao.findByClusterIdAndServiceName(clusterId, serviceName);
- upsertService(servicePO, serviceCommand);
+ ServicePO servicePO = serviceDao.findByClusterIdAndName(clusterId,
serviceName);
+ servicePO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
+ servicePOList.add(servicePO);
}
+
+ serviceDao.partialUpdateByIds(servicePOList);
}
- private void upsertService(ServicePO servicePO, ServiceCommandDTO
serviceCommand) {
+ @Override
+ public String getName() {
+ return "Add services";
+ }
+
+ private void saveService(ServiceCommandDTO serviceCommand) {
CommandDTO commandDTO = jobContext.getCommandDTO();
Long clusterId = commandDTO.getClusterId();
String serviceName = serviceCommand.getServiceName();
- ClusterPO clusterPO = clusterDao.findByIdJoin(clusterId);
-
- // 1. Persist service and components
- if (servicePO == null) {
- ServiceDTO serviceDTO = StackUtils.getServiceDTO(serviceName);
- servicePO = ServiceConverter.INSTANCE.fromDTO2PO(serviceDTO);
- servicePO.setClusterId(clusterId);
- serviceDao.save(servicePO);
- }
-
- // TODO 2. Update configs
+ // 1. Persist service
+ StackDTO stackDTO = StackUtils.getServiceStack(serviceName);
+ ServiceDTO serviceDTO = StackUtils.getServiceDTO(serviceName);
+ ServicePO servicePO = ServiceConverter.INSTANCE.fromDTO2PO(serviceDTO);
+ servicePO.setClusterId(clusterId);
+ servicePO.setStack(StackUtils.getFullStackName(stackDTO));
+ servicePO.setStatus(HealthyStatusEnum.UNHEALTHY.getCode());
+ serviceDao.save(servicePO);
+
+ // 2. Persist components
+ List<ComponentPO> componentPOList = new ArrayList<>();
for (ComponentHostDTO componentHostDTO :
serviceCommand.getComponentHosts()) {
String componentName = componentHostDTO.getComponentName();
- List<String> hostnames = componentHostDTO.getHostnames();
- List<HostPO> hostPOList = hostDao.findAllByHostnameIn(hostnames);
+ List<HostPO> hostPOList =
hostDao.findByIds(componentHostDTO.getHostIds());
- // 3. Persist components
for (HostPO hostPO : hostPOList) {
- ComponentQuery componentQuery = ComponentQuery.builder()
- .clusterId(clusterPO.getId())
- .hostId(hostPO.getId())
- .name(componentName)
- .build();
- List<ComponentPO> componentPOList =
componentDao.findByQuery(componentQuery);
- if (CollectionUtils.isEmpty(componentPOList)) {
- ComponentDTO componentDTO =
StackUtils.getComponentDTO(componentName);
- ComponentPO componentPO =
ComponentConverter.INSTANCE.fromDTO2PO(componentDTO);
- componentPO.setClusterId(clusterPO.getId());
- componentPO.setHostId(hostPO.getId());
- componentPO.setServiceId(servicePO.getId());
- componentDao.save(componentPO);
- }
+ ComponentDTO componentDTO =
StackUtils.getComponentDTO(componentName);
+ ComponentPO componentPO =
ComponentConverter.INSTANCE.fromDTO2PO(componentDTO);
+ componentPO.setClusterId(clusterId);
+ componentPO.setHostId(hostPO.getId());
+ componentPO.setServiceId(servicePO.getId());
+ componentPO.setStatus(HealthyStatusEnum.UNKNOWN.getCode());
+ componentPOList.add(componentPO);
}
}
- }
- @Override
- public String getName() {
- return "Install services";
+ componentDao.saveAll(componentPOList);
+
+ // 3. Persist current configs
+ Map<String, String> confMap = new HashMap<>();
+ List<ServiceConfigDTO> configs = serviceCommand.getConfigs();
+ List<ServiceConfigPO> serviceConfigPOList =
ServiceConfigConverter.INSTANCE.fromDTO2PO(configs);
+ for (ServiceConfigPO serviceConfigPO : serviceConfigPOList) {
+ serviceConfigPO.setClusterId(clusterId);
+ serviceConfigPO.setServiceId(servicePO.getId());
+ confMap.put(serviceConfigPO.getName(),
serviceConfigPO.getPropertiesJson());
+ }
+
+ serviceConfigDao.saveAll(serviceConfigPOList);
+
+ // 4. Create initial config snapshot
+ ServiceConfigSnapshotPO serviceConfigSnapshotPO = new
ServiceConfigSnapshotPO();
+ serviceConfigSnapshotPO.setName("initial");
+ serviceConfigSnapshotPO.setDesc("Initial config snapshot");
+
serviceConfigSnapshotPO.setConfigJson(JsonUtils.writeAsString(confMap));
+ serviceConfigSnapshotPO.setServiceId(servicePO.getId());
+ serviceConfigSnapshotDao.save(serviceConfigSnapshotPO);
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
similarity index 76%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
index 512420bd..6afefea1 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
@@ -18,23 +18,23 @@
*/
package org.apache.bigtop.manager.server.command.stage;
-import org.apache.bigtop.manager.server.command.task.ComponentInstallTask;
+import org.apache.bigtop.manager.server.command.task.ComponentAddTask;
import org.apache.bigtop.manager.server.command.task.Task;
import org.apache.bigtop.manager.server.model.dto.HostDTO;
-public class ComponentInstallStage extends AbstractComponentStage {
+public class ComponentAddStage extends AbstractComponentStage {
- public ComponentInstallStage(StageContext stageContext) {
+ public ComponentAddStage(StageContext stageContext) {
super(stageContext);
}
@Override
protected Task createTask(HostDTO hostDTO) {
- return new ComponentInstallTask(createTaskContext(hostDTO));
+ return new ComponentAddTask(createTaskContext(hostDTO));
}
@Override
public String getName() {
- return "Install " + stageContext.getComponentDTO().getDisplayName();
+ return "Add " + stageContext.getComponentDTO().getDisplayName();
}
}
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 da459398..cbd45153 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
@@ -105,7 +105,7 @@ public class CacheFileUpdateTask extends AbstractTask {
}
private void genFullCaches() {
- ClusterPO clusterPO =
clusterDao.findByIdJoin(taskContext.getClusterId());
+ ClusterPO clusterPO = clusterDao.findById(taskContext.getClusterId());
Long clusterId = clusterPO.getId();
@@ -115,7 +115,7 @@ public class CacheFileUpdateTask extends AbstractTask {
List<ServicePO> servicePOList = serviceDao.findByClusterId(clusterId);
List<ServiceConfigPO> serviceConfigPOList =
serviceConfigDao.findByClusterId(clusterPO.getId());
List<ComponentPO> componentPOList =
componentDao.findByQuery(componentQuery);
- List<RepoPO> repoPOList =
repoDao.findAllByClusterId(clusterPO.getId());
+ List<RepoPO> repoPOList = repoDao.findAll();
Iterable<SettingPO> settings = settingDao.findAll();
List<HostPO> hostPOList = hostDao.findAllByClusterId(clusterId);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
similarity index 66%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
index a0b937e3..fc50700e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
@@ -18,20 +18,23 @@
*/
package org.apache.bigtop.manager.server.command.task;
+import org.apache.bigtop.manager.common.constants.ComponentCategories;
import org.apache.bigtop.manager.common.enums.Command;
import org.apache.bigtop.manager.dao.po.ComponentPO;
import org.apache.bigtop.manager.dao.query.ComponentQuery;
import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
+import org.apache.bigtop.manager.server.model.dto.ComponentDTO;
+import org.apache.bigtop.manager.server.utils.StackUtils;
-public class ComponentInstallTask extends AbstractComponentTask {
+public class ComponentAddTask extends AbstractComponentTask {
- public ComponentInstallTask(TaskContext taskContext) {
+ public ComponentAddTask(TaskContext taskContext) {
super(taskContext);
}
@Override
protected Command getCommand() {
- return Command.INSTALL;
+ return Command.ADD;
}
@Override
@@ -43,13 +46,22 @@ public class ComponentInstallTask extends
AbstractComponentTask {
ComponentQuery componentQuery =
ComponentQuery.builder().hostname(hostname).name(componentName).build();
ComponentPO componentPO =
componentDao.findByQuery(componentQuery).get(0);
- componentPO.setStatus(HealthyStatusEnum.UNKNOWN.getCode());
+
+ ComponentDTO componentDTO = StackUtils.getComponentDTO(componentName);
+ if
(componentDTO.getCategory().equalsIgnoreCase(ComponentCategories.CLIENT)) {
+ // Client components should always be healthy after added
+ componentPO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
+ } else {
+ // Master/Slave components need to start before being healthy
+ componentPO.setStatus(HealthyStatusEnum.UNHEALTHY.getCode());
+ }
+
componentDao.partialUpdateById(componentPO);
}
@Override
public String getName() {
- return "Install " + taskContext.getComponentDisplayName() + " on "
+ return "Add " + taskContext.getComponentDisplayName() + " on "
+ taskContext.getHostDTO().getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterAddValidator.java
similarity index 96%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterAddValidator.java
index ab255f20..a00a38f5 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterAddValidator.java
@@ -33,14 +33,14 @@ import jakarta.annotation.Resource;
import java.util.List;
@Component
-public class ClusterCreateValidator implements CommandValidator {
+public class ClusterAddValidator implements CommandValidator {
@Resource
private ClusterDao clusterDao;
@Override
public List<CommandIdentifier> getCommandIdentifiers() {
- return List.of(new CommandIdentifier(CommandLevel.CLUSTER,
Command.CREATE));
+ return List.of(new CommandIdentifier(CommandLevel.CLUSTER,
Command.ADD));
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/HostAddValidator.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/HostAddValidator.java
index 1003f840..ae20aa7d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/HostAddValidator.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/HostAddValidator.java
@@ -42,7 +42,7 @@ public class HostAddValidator implements CommandValidator {
@Override
public List<CommandIdentifier> getCommandIdentifiers() {
- return List.of(new CommandIdentifier(CommandLevel.HOST,
Command.INSTALL));
+ return List.of(new CommandIdentifier(CommandLevel.HOST, Command.ADD));
}
@Override
@@ -51,7 +51,7 @@ public class HostAddValidator implements CommandValidator {
.map(HostCommandDTO::getHostname)
.toList();
- List<HostPO> hostPOList = hostDao.findAllByHostnameIn(hostnames);
+ List<HostPO> hostPOList = hostDao.findAllByHostnames(hostnames);
if (CollectionUtils.isNotEmpty(hostPOList)) {
List<String> existsHostnames =
hostPOList.stream().map(HostPO::getHostname).toList();
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/RequiredServicesValidator.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/RequiredServicesValidator.java
index 17e7723c..81e8c34f 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/RequiredServicesValidator.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/RequiredServicesValidator.java
@@ -50,7 +50,7 @@ public class RequiredServicesValidator implements
CommandValidator {
@Override
public List<CommandIdentifier> getCommandIdentifiers() {
- return List.of(new CommandIdentifier(CommandLevel.SERVICE,
Command.INSTALL));
+ return List.of(new CommandIdentifier(CommandLevel.SERVICE,
Command.ADD));
}
@Override
@@ -70,7 +70,7 @@ public class RequiredServicesValidator implements
CommandValidator {
return;
}
- List<ServicePO> servicePOList =
serviceDao.findByClusterIdAndServiceNameIn(clusterId, requiredServices);
+ List<ServicePO> servicePOList =
serviceDao.findByClusterIdAndNames(clusterId, requiredServices);
List<String> list =
servicePOList.stream().map(ServicePO::getName).toList();
requiredServices.removeAll(list);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ServiceHostValidator.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ServiceHostValidator.java
deleted file mode 100644
index 73b09242..00000000
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ServiceHostValidator.java
+++ /dev/null
@@ -1,65 +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.server.command.validator;
-
-import org.apache.bigtop.manager.common.enums.Command;
-import org.apache.bigtop.manager.dao.po.HostPO;
-import org.apache.bigtop.manager.dao.repository.HostDao;
-import org.apache.bigtop.manager.server.command.CommandIdentifier;
-import org.apache.bigtop.manager.server.enums.ApiExceptionEnum;
-import org.apache.bigtop.manager.server.enums.CommandLevel;
-import org.apache.bigtop.manager.server.exception.ApiException;
-import org.apache.bigtop.manager.server.model.dto.CommandDTO;
-import org.apache.bigtop.manager.server.model.dto.command.ServiceCommandDTO;
-
-import org.springframework.stereotype.Component;
-
-import jakarta.annotation.Resource;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-@Component
-public class ServiceHostValidator implements CommandValidator {
-
- @Resource
- private HostDao hostDao;
-
- @Override
- public List<CommandIdentifier> getCommandIdentifiers() {
- return List.of(new CommandIdentifier(CommandLevel.SERVICE,
Command.INSTALL));
- }
-
- @Override
- public void validate(ValidatorContext context) {
- CommandDTO commandDTO = context.getCommandDTO();
- List<ServiceCommandDTO> serviceCommands =
commandDTO.getServiceCommands();
-
- Set<String> hostnameSet = serviceCommands.stream()
- .flatMap(x -> x.getComponentHosts().stream())
- .flatMap(x -> x.getHostnames().stream())
- .collect(Collectors.toSet());
-
- List<HostPO> hostnames = hostDao.findAllByHostnameIn(hostnameSet);
-
- if (hostnames.size() != hostnameSet.size()) {
- throw new ApiException(ApiExceptionEnum.HOST_NOT_FOUND);
- }
- }
-}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/config/CommandGroupSequenceProvider.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/config/CommandGroupSequenceProvider.java
index 650a228f..f05b9c2c 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/config/CommandGroupSequenceProvider.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/config/CommandGroupSequenceProvider.java
@@ -39,7 +39,7 @@ public class CommandGroupSequenceProvider implements
DefaultGroupSequenceProvide
switch (commandLevel) {
case SERVICE:
- if (bean.getCommand() == Command.INSTALL) {
+ if (bean.getCommand() == Command.ADD) {
defaultGroupSequence.add(ServiceInstallCommandGroup.class);
} else {
defaultGroupSequence.add(ServiceCommandGroup.class);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConfigConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConfigConverter.java
index 37d2574d..a3481239 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConfigConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConfigConverter.java
@@ -41,6 +41,11 @@ public interface ServiceConfigConverter {
List<ServiceConfigDTO> fromPO2DTO(List<ServiceConfigPO>
serviceConfigPOList);
+ @Mapping(target = "propertiesJson", source = "properties", qualifiedByName
= "obj2Json")
+ ServiceConfigPO fromDTO2PO(ServiceConfigDTO serviceConfigDTO);
+
+ List<ServiceConfigPO> fromDTO2PO(List<ServiceConfigDTO>
serviceConfigDTOList);
+
@Mapping(target = "properties", source = "propertiesJson", qualifiedByName
= "json2PropertyVOList")
ServiceConfigVO fromPO2VO(ServiceConfigPO serviceConfigPO);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ComponentHostDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ComponentHostDTO.java
index d2b4f8d9..3d6f27aa 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ComponentHostDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ComponentHostDTO.java
@@ -30,5 +30,5 @@ public class ComponentHostDTO implements Serializable {
private String componentName;
@NotEmpty
- private List<String> hostnames;
+ private List<Long> hostIds;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ServiceCommandDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ServiceCommandDTO.java
index bce58fa9..c306a717 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ServiceCommandDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ServiceCommandDTO.java
@@ -31,12 +31,6 @@ public class ServiceCommandDTO implements Serializable {
private String serviceName;
- private Boolean installed;
-
- private String configDesc;
-
- private Integer version;
-
private List<ComponentHostDTO> componentHosts;
private List<ServiceConfigDTO> configs;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ComponentHostReq.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ComponentHostReq.java
index 515e6249..1d3b9e86 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ComponentHostReq.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ComponentHostReq.java
@@ -32,6 +32,6 @@ public class ComponentHostReq {
private String componentName;
@NotEmpty
- @Schema(description = "Hostnames for component", example = "[\"node1\"]")
- private List<String> hostnames;
+ @Schema(description = "Host IDs for component", example = "[1]")
+ private List<Long> hostIds;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ServiceCommandReq.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ServiceCommandReq.java
index bbd01b6c..dd645ad5 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ServiceCommandReq.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ServiceCommandReq.java
@@ -36,15 +36,6 @@ public class ServiceCommandReq {
@NotNull @Schema(description = "Service name", example = "zookeeper")
private String serviceName;
- @Schema(description = "If service installed", example = "true")
- private Boolean installed;
-
- @Schema(description = "Config Description", example = "Initial config for
zookeeper")
- private String configDesc;
-
- @Schema(description = "Config version", example = "1")
- private Integer version;
-
@NotEmpty(groups =
{CommandGroupSequenceProvider.ServiceInstallCommandGroup.class})
@Schema(description = "Components for service on each hosts")
private List<@Valid ComponentHostReq> componentHosts;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/JobVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/JobVO.java
index d36ed3a0..38e04fbe 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/JobVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/JobVO.java
@@ -20,15 +20,11 @@ package org.apache.bigtop.manager.server.model.vo;
import lombok.Data;
-import java.util.List;
-
@Data
public class JobVO {
private Long id;
- private List<StageVO> stages;
-
private String state;
private String name;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceVO.java
index 20821951..14df0c08 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/ServiceVO.java
@@ -20,6 +20,8 @@ package org.apache.bigtop.manager.server.model.vo;
import lombok.Data;
+import java.util.List;
+
@Data
public class ServiceVO {
@@ -31,13 +33,19 @@ public class ServiceVO {
private String desc;
- private String user;
-
private String version;
+ private String user;
+
private String stack;
private Boolean needRestart;
private Integer status;
+
+ private List<ComponentVO> components;
+
+ private List<ServiceConfigVO> configs;
+
+ private List<String> requiredServices;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
index 016c37bf..3070e92a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
@@ -75,6 +75,7 @@ public class CommandServiceImpl implements CommandService {
// Create job
JobContext jobContext = new JobContext();
jobContext.setCommandDTO(commandDTO);
+ jobContext.setRetryFlag(false);
JobFactory jobFactory = JobFactories.getJobFactory(commandIdentifier);
Job job = jobFactory.createJob(jobContext);
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 0eac3bfc..30de0974 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
@@ -85,7 +85,7 @@ public class HostServiceImpl implements HostService {
@Override
public List<HostVO> batchSave(Long clusterId, List<String> hostnames) {
- List<HostPO> hostnameIn = hostDao.findAllByHostnameIn(hostnames);
+ List<HostPO> hostnameIn = hostDao.findAllByHostnames(hostnames);
List<HostPO> hostPOList = new ArrayList<>();
Map<String, HostPO> hostInMap =
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
index d74ff7e4..d316df5a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
@@ -139,6 +139,7 @@ public class JobServiceImpl implements JobService {
private Job recreateJob(JobPO jobPO) {
JobContext jobContext = JsonUtils.readFromString(jobPO.getContext(),
JobContext.class);
+ jobContext.setRetryFlag(true);
CommandIdentifier commandIdentifier = new CommandIdentifier(
jobContext.getCommandDTO().getCommandLevel(),
jobContext.getCommandDTO().getCommand());
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/timer/ComponentStatusTimer.java
similarity index 86%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/timer/ComponentStatusTimer.java
index 28299485..43f47da9 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/timer/ComponentStatusTimer.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.scheduler;
+package org.apache.bigtop.manager.server.timer;
import org.apache.bigtop.manager.dao.po.ComponentPO;
import org.apache.bigtop.manager.dao.po.HostPO;
@@ -28,28 +28,22 @@ import
org.apache.bigtop.manager.grpc.generated.ComponentStatusServiceGrpc;
import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
import org.apache.bigtop.manager.server.grpc.GrpcClient;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
import lombok.extern.slf4j.Slf4j;
-import jakarta.annotation.Resource;
import java.util.List;
-import java.util.concurrent.TimeUnit;
@Slf4j
-@Component
-public class ComponentStatusScheduler {
+// @Component
+public class ComponentStatusTimer {
- @Resource
+ // @Resource
private ComponentDao componentDao;
- @Resource
+ // @Resource
private HostDao hostDao;
- @Async
- @Scheduled(fixedDelay = 30, timeUnit = TimeUnit.SECONDS)
+ // @Async
+ // @Scheduled(fixedDelay = 30, timeUnit = TimeUnit.SECONDS)
public void execute() {
List<ComponentPO> componentPOList = componentDao.findAll();
for (ComponentPO componentPO : componentPOList) {
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/timer/HostInfoTimer.java
similarity index 85%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/timer/HostInfoTimer.java
index 32dbccd0..0868a962 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/timer/HostInfoTimer.java
@@ -16,14 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.scheduler;
+package org.apache.bigtop.manager.server.timer;
import org.apache.bigtop.manager.dao.po.HostPO;
import org.apache.bigtop.manager.dao.repository.HostDao;
import org.apache.bigtop.manager.grpc.generated.HostInfoReply;
import org.apache.bigtop.manager.grpc.generated.HostInfoRequest;
import org.apache.bigtop.manager.grpc.generated.HostInfoServiceGrpc;
+import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
import org.apache.bigtop.manager.server.grpc.GrpcClient;
+import org.apache.bigtop.manager.server.utils.ClusterUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
@@ -37,7 +39,7 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Component
-public class HostInfoScheduler {
+public class HostInfoTimer {
@Resource
private HostDao hostDao;
@@ -52,6 +54,10 @@ public class HostInfoScheduler {
}
private void getHostInfo(HostPO hostPO) {
+ if (ClusterUtils.isNoneCluster(hostPO.getClusterId())) {
+ return;
+ }
+
String hostname = hostPO.getHostname();
Integer grpcPort = hostPO.getGrpcPort();
try {
@@ -68,7 +74,10 @@ public class HostInfoScheduler {
hostPO.setTotalMemorySize(reply.getTotalMemorySize());
hostPO.setFreeDisk(reply.getFreeDisk());
hostPO.setTotalDisk(reply.getTotalDisk());
+ hostPO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
} catch (Exception e) {
+ hostPO.setStatus(HealthyStatusEnum.UNHEALTHY.getCode());
+ hostPO.setErrInfo(e.toString());
log.error("Error getting host info for {}", hostname, e);
}
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 641121fd..3502b899 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
@@ -19,6 +19,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.server.exception.ApiException;
import org.apache.bigtop.manager.server.exception.ServerException;
@@ -208,6 +209,10 @@ public class StackUtils {
return file;
}
+ public static String getFullStackName(StackDTO stackDTO) {
+ return CaseUtils.toCamelCase(stackDTO.getStackName()) + "-" +
stackDTO.getStackVersion();
+ }
+
public static StackDTO getServiceStack(String serviceName) {
for (Map.Entry<StackDTO, List<ServiceDTO>> entry :
STACK_SERVICE_MAP.entrySet()) {
for (ServiceDTO serviceDTO : entry.getValue()) {
@@ -254,4 +259,18 @@ public class StackUtils {
throw new ServerException("Component not found: " + componentName);
}
+
+ public static ServiceDTO getServiceDTOByComponentName(String
componentName) {
+ for (Map.Entry<StackDTO, List<ServiceDTO>> entry :
STACK_SERVICE_MAP.entrySet()) {
+ for (ServiceDTO serviceDTO : entry.getValue()) {
+ for (ComponentDTO componentDTO : serviceDTO.getComponents()) {
+ if (componentDTO.getName().equals(componentName)) {
+ return serviceDTO;
+ }
+ }
+ }
+ }
+
+ throw new ServerException("Service not found by component name: " +
componentName);
+ }
}
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/order.json
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/order.json
index 09585eb1..6591b238 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/order.json
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/order.json
@@ -1,6 +1,6 @@
{
- "KAFKA_BROKER-INSTALL": [
- "ZOOKEEPER_SERVER-INSTALL"
+ "KAFKA_BROKER-ADD": [
+ "ZOOKEEPER_SERVER-ADD"
],
"KAFKA_BROKER-START": [
"ZOOKEEPER_SERVER-START"
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 41a11d5e..b79bb0a0 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
@@ -21,8 +21,6 @@ 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 java.text.MessageFormat;
-
public abstract class BigtopParams extends BaseParams {
protected BigtopParams(CommandPayload commandPayload) {
@@ -30,17 +28,11 @@ public abstract class BigtopParams extends BaseParams {
}
public String stackBinDir() {
- String stackName = this.commandPayload.getStackName();
- String stackVersion = this.commandPayload.getStackVersion();
- String root = this.commandPayload.getRootDir();
- return MessageFormat.format("{0}/{1}/{2}/usr/bin", root,
stackName.toLowerCase(), stackVersion);
+ return "";
}
public String stackLibDir() {
- String stackName = this.commandPayload.getStackName();
- String stackVersion = this.commandPayload.getStackVersion();
- String root = this.commandPayload.getRootDir();
- return MessageFormat.format("{0}/{1}/{2}/usr/lib", root,
stackName.toLowerCase(), stackVersion);
+ return "";
}
/**
@@ -48,7 +40,8 @@ public abstract class BigtopParams extends BaseParams {
*/
@Override
public String serviceHome() {
+ String rootDir = this.commandPayload.getRootDir();
String service = this.commandPayload.getServiceName();
- return stackLibDir() + "/" + service.toLowerCase();
+ 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 51207e9b..514ae5fb 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
@@ -58,7 +58,7 @@ public abstract class BaseParams implements Params {
this.commandPayload = commandPayload;
Command command = commandPayload.getCommand();
- if (command == Command.INSTALL) {
+ if (command == Command.ADD) {
return;
}
// Global Parameters Injection
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
index 94733d4b..f0554857 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
@@ -37,11 +37,11 @@ public abstract class AbstractScript implements Script {
public static final String PROPERTY_KEY_SKIP_LEVELS = "skipLevels";
@Override
- public ShellResult install(Params params) {
- return this.install(params, new Properties());
+ public ShellResult add(Params params) {
+ return this.add(params, new Properties());
}
- public ShellResult install(Params params, Properties properties) {
+ public ShellResult add(Params params, Properties properties) {
RepoInfo repo = params.repo();
List<PackageInfo> packages = params.packages();
String stackHome = params.stackHome();
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/Script.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/Script.java
index aef31dcc..48cfae5d 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/Script.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/Script.java
@@ -33,7 +33,7 @@ public interface Script extends PrioritySPI {
* @param params the parameters required for installation
* @return a ShellResult object containing the result of the installation
process
*/
- ShellResult install(Params params);
+ ShellResult add(Params params);
/**
* Configure the component.
@@ -69,6 +69,8 @@ public interface Script extends PrioritySPI {
/**
* Check the healthy status of the component.
+ * A simple status check which will only check if the process is running
+ * use {@link #check(Params)} to check the real healthy status of the
component with smoke tests.
*
* @param params the parameters required to check the status
* @return a ShellResult(0 for healthy, -1 for unhealthy) object
containing the result of the status check
@@ -76,8 +78,7 @@ public interface Script extends PrioritySPI {
ShellResult status(Params params);
/**
- * Check component.
- * Usually we will run smoke tests for component to see if it works as
expected.
+ * Run smoke tests for component to see if it works as expected.
*
* @param params the parameters required to check the component
* @return a ShellResult object indicating success
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
index c9341607..78efa805 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
@@ -34,11 +34,11 @@ import java.util.Properties;
public class PrometheusServerScript extends AbstractServerScript {
@Override
- public ShellResult install(Params params) {
+ public ShellResult add(Params params) {
Properties properties = new Properties();
properties.setProperty(PROPERTY_KEY_SKIP_LEVELS, "1");
- return super.install(params, properties);
+ return super.add(params, properties);
}
@Override