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 67674c41 BIGTOP-4312: Adjust host add logic when adding new cluster
(#135)
67674c41 is described below
commit 67674c413a56729c192ada0fc906d27f0a092f9d
Author: Zhiguo Wu <[email protected]>
AuthorDate: Tue Dec 31 14:28:25 2024 +0800
BIGTOP-4312: Adjust host add logic when adding new cluster (#135)
---
.../org/apache/bigtop/manager/dao/po/HostPO.java | 3 +
.../apache/bigtop/manager/dao/po/ServicePO.java | 4 +-
.../bigtop/manager/dao/query/ServiceQuery.java | 2 +-
.../src/main/resources/mapper/mysql/HostMapper.xml | 6 +-
.../main/resources/mapper/mysql/ServiceMapper.xml | 8 +-
.../resources/mapper/postgresql/HostMapper.xml | 6 +-
.../resources/mapper/postgresql/ServiceMapper.xml | 8 +-
.../server/command/job/AbstractServiceJob.java | 36 ++---
.../manager/server/command/job/ClusterAddJob.java | 35 ++---
.../manager/server/command/job/ServiceAddJob.java | 6 +-
.../command/stage/AbstractComponentStage.java | 5 +-
.../server/command/stage/AbstractStage.java | 9 +-
.../server/command/stage/CacheFileUpdateStage.java | 19 ++-
.../server/command/stage/ComponentAddStage.java | 5 +-
.../server/command/stage/ComponentCheckStage.java | 5 +-
.../command/stage/ComponentConfigureStage.java | 5 +-
.../server/command/stage/ComponentStartStage.java | 5 +-
.../server/command/stage/ComponentStopStage.java | 5 +-
.../server/command/stage/HostCheckStage.java | 5 +-
.../server/command/stage/SetupJdkStage.java | 5 +-
.../manager/server/command/stage/StageContext.java | 4 +-
.../manager/server/command/task/AbstractTask.java | 9 +-
.../server/command/task/CacheFileUpdateTask.java | 10 +-
.../server/command/task/ComponentAddTask.java | 5 +-
.../server/command/task/ComponentCheckTask.java | 3 +-
.../command/task/ComponentConfigureTask.java | 3 +-
.../server/command/task/ComponentStartTask.java | 5 +-
.../server/command/task/ComponentStopTask.java | 5 +-
.../manager/server/command/task/HostCheckTask.java | 2 +-
.../manager/server/command/task/SetupJdkTask.java | 2 +-
.../manager/server/command/task/TaskContext.java | 4 +-
.../manager/server/controller/HostController.java | 13 +-
.../InstalledStatusEnum.java} | 32 ++--
.../manager/server/model/dto/ComponentHostDTO.java | 2 +-
.../bigtop/manager/server/model/dto/HostDTO.java | 2 +
.../model/dto/command/ClusterCommandDTO.java | 6 +-
.../manager/server/model/req/ComponentHostReq.java | 4 +-
.../bigtop/manager/server/model/req/HostReq.java | 3 +
.../model/req/command/ClusterCommandReq.java | 9 +-
.../bigtop/manager/server/model/vo/HostVO.java | 2 +
.../InstalledStatusVO.java} | 17 +--
.../bigtop/manager/server/model/vo/ServiceVO.java | 2 +-
.../bigtop/manager/server/service/HostService.java | 13 +-
.../server/service/impl/HostServiceImpl.java | 165 ++++++++++++---------
.../server/service/impl/JobServiceImpl.java | 4 +-
.../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 3 +-
.../main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 3 +-
.../bigtop/3.3.0/services/hadoop/metainfo.xml | 14 +-
48 files changed, 285 insertions(+), 243 deletions(-)
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostPO.java
index 90849558..9d685ab0 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostPO.java
@@ -39,6 +39,9 @@ public class HostPO extends BasePO implements Serializable {
@Column(name = "hostname")
private String hostname;
+ @Column(name = "agent_dir")
+ private String agentDir;
+
@Column(name = "ssh_user")
private String sshUser;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ServicePO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ServicePO.java
index d7b22003..0b9fffce 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ServicePO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ServicePO.java
@@ -53,8 +53,8 @@ public class ServicePO extends BasePO implements Serializable
{
@Column(name = "stack")
private String stack;
- @Column(name = "need_restart")
- private Boolean needRestart;
+ @Column(name = "restart_flag")
+ private Boolean restartFlag;
@Column(name = "cluster_id")
private Long clusterId;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/query/ServiceQuery.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/query/ServiceQuery.java
index 46e38df7..86830c53 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/query/ServiceQuery.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/query/ServiceQuery.java
@@ -33,7 +33,7 @@ public class ServiceQuery {
private Long clusterId;
- private Boolean needRestart;
+ private Boolean restartFlag;
private Integer status;
}
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 17bd3826..9a16c413 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/HostMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/HostMapper.xml
@@ -24,11 +24,13 @@
<mapper namespace="org.apache.bigtop.manager.dao.repository.HostDao">
<sql id="baseColumns">
- id, hostname, ipv4, ipv6, os, arch, available_processors,
free_memory_size, total_memory_size, free_disk, total_disk, status, cluster_id
+ id, hostname, agent_dir, ssh_user, ssh_port, auth_type, ssh_password,
ssh_key_string, ssh_key_filename, ssh_key_password,
+ grpc_port, ipv4, ipv6, os, arch, available_processors,
free_memory_size, total_memory_size,
+ free_disk, total_disk, desc, status, err_info, cluster_id
</sql>
<sql id="baseColumnsV2">
- ${alias}.id, ${alias}.hostname, ${alias}.ssh_user,
${alias}.ssh_port, ${alias}.auth_type,
+ ${alias}.id, ${alias}.hostname, ${alias}.agent_dir,
${alias}.ssh_user, ${alias}.ssh_port, ${alias}.auth_type,
${alias}.ssh_password, ${alias}.ssh_key_string,
${alias}.ssh_key_filename, ${alias}.ssh_key_password,
${alias}.grpc_port, ${alias}.ipv4, ${alias}.ipv6, ${alias}.os,
${alias}.arch,
${alias}.available_processors, ${alias}.free_memory_size,
${alias}.total_memory_size,
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 4d1f0393..f1179956 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
@@ -24,11 +24,11 @@
<mapper namespace="org.apache.bigtop.manager.dao.repository.ServiceDao">
<sql id="baseColumns">
- id, name, display_name, `desc`, user, version, stack, need_restart,
cluster_id, status
+ id, name, display_name, `desc`, user, version, stack, restart_flag,
cluster_id, status
</sql>
<sql id="baseColumnsV2">
- ${alias}.id, ${alias}.name, ${alias}.display_name, ${alias}.`desc`,
${alias}.user, ${alias}.version, ${alias}.stack, ${alias}.need_restart,
${alias}.cluster_id, ${alias}.status
+ ${alias}.id, ${alias}.name, ${alias}.display_name, ${alias}.`desc`,
${alias}.user, ${alias}.version, ${alias}.stack, ${alias}.restart_flag,
${alias}.cluster_id, ${alias}.status
</sql>
<select id="findByQuery"
resultType="org.apache.bigtop.manager.dao.po.ServicePO">
@@ -43,8 +43,8 @@
<if test="query.clusterId != null">
and s.cluster_id = #{query.clusterId}
</if>
- <if test="query.needRestart != null">
- and s.need_restart = #{query.needRestart}
+ <if test="query.restartFlag != null">
+ and s.restart_flag = #{query.restartFlag}
</if>
<if test="query.status != null">
and s.status = #{query.status}
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 755cc048..42e2235e 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostMapper.xml
@@ -24,11 +24,13 @@
<mapper namespace="org.apache.bigtop.manager.dao.repository.HostDao">
<sql id="baseColumns">
- id, hostname, ipv4, ipv6, os, arch, available_processors,
free_memory_size, total_memory_size, free_disk, total_disk, state, cluster_id
+ id, hostname, agent_dir, ssh_user, ssh_port, auth_type, ssh_password,
ssh_key_string, ssh_key_filename, ssh_key_password,
+ grpc_port, ipv4, ipv6, os, arch, available_processors,
free_memory_size, total_memory_size,
+ free_disk, total_disk, "desc", status, err_info, cluster_id
</sql>
<sql id="baseColumnsV2">
- ${alias}.id, ${alias}.hostname, ${alias}.ssh_user,
${alias}.ssh_port, ${alias}.auth_type,
+ ${alias}.id, ${alias}.hostname, ${alias}.agent_dir,
${alias}.ssh_user, ${alias}.ssh_port, ${alias}.auth_type,
${alias}.ssh_password, ${alias}.ssh_key_string,
${alias}.ssh_key_filename, ${alias}.ssh_key_password,
${alias}.grpc_port, ${alias}.ipv4, ${alias}.ipv6, ${alias}.os,
${alias}.arch,
${alias}.available_processors, ${alias}.free_memory_size,
${alias}.total_memory_size,
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 630e7026..df383204 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
@@ -24,11 +24,11 @@
<mapper namespace="org.apache.bigtop.manager.dao.repository.ServiceDao">
<sql id="baseColumns">
- id, name, display_name, "desc", "user", version, stack, need_restart,
cluster_id, status
+ id, name, display_name, "desc", "user", version, stack, restart_flag,
cluster_id, status
</sql>
<sql id="baseColumnsV2">
- ${alias}.id, ${alias}.name, ${alias}.display_name, ${alias}."desc",
${alias}."user", ${alias}.version, ${alias}.stack, ${alias}.need_restart,
${alias}.cluster_id, ${alias}.status
+ ${alias}.id, ${alias}.name, ${alias}.display_name, ${alias}."desc",
${alias}."user", ${alias}.version, ${alias}.stack, ${alias}.restart_flag,
${alias}.cluster_id, ${alias}.status
</sql>
<select id="findByQuery"
resultType="org.apache.bigtop.manager.dao.po.ServicePO">
@@ -43,8 +43,8 @@
<if test="query.clusterId != null">
and s.cluster_id = #{query.clusterId}
</if>
- <if test="query.needRestart != null">
- and s.need_restart = #{query.needRestart}
+ <if test="query.restartFlag != null">
+ and s.restart_flag = #{query.restartFlag}
</if>
<if test="query.status != null">
and s.status = #{query.status}
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 a5765570..996cb3c5 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
@@ -76,13 +76,13 @@ public abstract class AbstractServiceJob extends
AbstractJob {
super.beforeCreateStages();
}
- protected StageContext createStageContext(String serviceName, String
componentName, List<Long> hostIds) {
+ protected StageContext createStageContext(String serviceName, String
componentName, List<String> hostnames) {
StageContext stageContext =
StageContext.fromCommandDTO(jobContext.getCommandDTO());
ServiceDTO serviceDTO = StackUtils.getServiceDTO(serviceName);
ComponentDTO componentDTO = StackUtils.getComponentDTO(componentName);
- stageContext.setHostIds(hostIds);
+ stageContext.setHostnames(hostnames);
stageContext.setServiceDTO(serviceDTO);
stageContext.setComponentDTO(componentDTO);
@@ -133,7 +133,7 @@ public abstract class AbstractServiceJob extends
AbstractJob {
return
componentDTO.getCategory().equalsIgnoreCase(ComponentCategories.CLIENT);
}
- protected List<Long> findHostIdsByComponentName(String componentName) {
+ protected List<String> findHostnamesByComponentName(String componentName) {
ComponentQuery componentQuery = ComponentQuery.builder()
.clusterId(clusterPO.getId())
.name(componentName)
@@ -142,7 +142,7 @@ public abstract class AbstractServiceJob extends
AbstractJob {
if (componentPOList == null) {
return new ArrayList<>();
} else {
- return
componentPOList.stream().map(ComponentPO::getHostId).toList();
+ return
componentPOList.stream().map(ComponentPO::getHostname).toList();
}
}
@@ -158,12 +158,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
String[] split = componentCommand.split("-");
String componentName = split[0];
String serviceName = findServiceNameByComponentName(componentName);
- List<Long> hostIds = findHostIdsByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostIds)) {
+ List<String> hostnames =
findHostnamesByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostnames)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
stages.add(new ComponentAddStage(stageContext));
}
}
@@ -173,9 +173,9 @@ public abstract class AbstractServiceJob extends
AbstractJob {
for (ComponentHostDTO componentHost :
serviceCommand.getComponentHosts()) {
String serviceName = serviceCommand.getServiceName();
String componentName = componentHost.getComponentName();
- List<Long> hostIds = componentHost.getHostIds();
+ List<String> hostnames = componentHost.getHostnames();
- StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
stages.add(new ComponentConfigureStage(stageContext));
}
}
@@ -193,12 +193,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
continue;
}
- List<Long> hostIds = findHostIdsByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostIds)) {
+ List<String> hostnames =
findHostnamesByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostnames)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
stages.add(new ComponentStartStage(stageContext));
}
}
@@ -215,12 +215,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
continue;
}
- List<Long> hostIds = findHostIdsByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostIds)) {
+ List<String> hostnames =
findHostnamesByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostnames)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, hostIds);
+ StageContext stageContext = createStageContext(serviceName,
componentName, hostnames);
stages.add(new ComponentStopStage(stageContext));
}
}
@@ -237,12 +237,12 @@ public abstract class AbstractServiceJob extends
AbstractJob {
continue;
}
- List<Long> hostIds = findHostIdsByComponentName(componentName);
- if (CollectionUtils.isEmpty(hostIds)) {
+ List<String> hostnames =
findHostnamesByComponentName(componentName);
+ if (CollectionUtils.isEmpty(hostnames)) {
continue;
}
- StageContext stageContext = createStageContext(serviceName,
componentName, List.of(hostIds.get(0)));
+ StageContext stageContext = createStageContext(serviceName,
componentName, List.of(hostnames.get(0)));
stages.add(new ComponentCheckStage(stageContext));
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
index cad25f8f..95fe9e11 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
@@ -18,11 +18,9 @@
*/
package org.apache.bigtop.manager.server.command.job;
-import org.apache.bigtop.manager.dao.po.HostPO;
import org.apache.bigtop.manager.dao.po.JobPO;
import org.apache.bigtop.manager.dao.po.StagePO;
import org.apache.bigtop.manager.dao.po.TaskPO;
-import org.apache.bigtop.manager.dao.repository.HostDao;
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.SetupJdkStage;
@@ -34,13 +32,12 @@ import
org.apache.bigtop.manager.server.holder.SpringContextHolder;
import org.apache.bigtop.manager.server.model.converter.ClusterConverter;
import org.apache.bigtop.manager.server.model.dto.ClusterDTO;
import org.apache.bigtop.manager.server.model.dto.CommandDTO;
-
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
+import org.apache.bigtop.manager.server.service.HostService;
public class ClusterAddJob extends AbstractJob {
- private HostDao hostDao;
+ private HostService hostService;
public ClusterAddJob(JobContext jobContext) {
super(jobContext);
@@ -50,7 +47,7 @@ public class ClusterAddJob extends AbstractJob {
protected void injectBeans() {
super.injectBeans();
- hostDao = SpringContextHolder.getBean(HostDao.class);
+ hostService = SpringContextHolder.getBean(HostService.class);
}
@Override
@@ -64,15 +61,14 @@ public class ClusterAddJob extends AbstractJob {
@Override
public void beforeRun() {
super.beforeRun();
- }
- @Override
- public void onSuccess() {
- super.onSuccess();
+ if (jobContext.getRetryFlag()) {
+ return;
+ }
saveCluster();
- linkHostToCluster();
+ saveHosts();
linkJobToCluster();
}
@@ -94,18 +90,11 @@ public class ClusterAddJob extends AbstractJob {
clusterDao.save(clusterPO);
}
- private void linkHostToCluster() {
+ private void saveHosts() {
CommandDTO commandDTO = jobContext.getCommandDTO();
- List<Long> ids = commandDTO.getClusterCommand().getHostIds();
- List<HostPO> hostPOList = new ArrayList<>();
- for (Long id : ids) {
- HostPO hostPO = new HostPO();
- hostPO.setId(id);
- hostPO.setClusterId(clusterPO.getId());
- hostPOList.add(hostPO);
- }
-
- hostDao.partialUpdateByIds(hostPOList);
+ HostDTO hostDTO = commandDTO.getClusterCommand().getHosts();
+ hostDTO.setClusterId(clusterPO.getId());
+ hostService.add(hostDTO);
}
private void linkJobToCluster() {
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
index 3c708bca..9498ccd3 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ServiceAddJob.java
@@ -86,12 +86,12 @@ public class ServiceAddJob extends AbstractServiceJob {
}
@Override
- protected List<Long> findHostIdsByComponentName(String componentName) {
+ protected List<String> findHostnamesByComponentName(String componentName) {
for (ServiceCommandDTO serviceCommand :
jobContext.getCommandDTO().getServiceCommands()) {
List<ComponentHostDTO> componentHosts =
serviceCommand.getComponentHosts();
for (ComponentHostDTO componentHost : componentHosts) {
if (componentHost.getComponentName().equals(componentName)) {
- return componentHost.getHostIds();
+ return componentHost.getHostnames();
}
}
}
@@ -156,7 +156,7 @@ public class ServiceAddJob extends AbstractServiceJob {
List<ComponentPO> componentPOList = new ArrayList<>();
for (ComponentHostDTO componentHostDTO :
serviceCommand.getComponentHosts()) {
String componentName = componentHostDTO.getComponentName();
- List<HostPO> hostPOList =
hostDao.findByIds(componentHostDTO.getHostIds());
+ List<HostPO> hostPOList =
hostDao.findAllByHostnames(componentHostDTO.getHostnames());
for (HostPO hostPO : hostPOList) {
ComponentDTO componentDTO =
StackUtils.getComponentDTO(componentName);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
index 04f2d6cb..29c86a8d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
@@ -23,7 +23,6 @@ import org.apache.bigtop.manager.dao.repository.ClusterDao;
import org.apache.bigtop.manager.server.command.task.TaskContext;
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.HostDTO;
import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
import java.util.HashMap;
@@ -61,12 +60,12 @@ public abstract class AbstractComponentStage extends
AbstractStage {
return stageContext.getComponentDTO().getName();
}
- protected TaskContext createTaskContext(HostDTO hostDTO) {
+ protected TaskContext createTaskContext(String hostname) {
ServiceDTO serviceDTO = stageContext.getServiceDTO();
ComponentDTO componentDTO = stageContext.getComponentDTO();
TaskContext taskContext = new TaskContext();
- taskContext.setHostDTO(hostDTO);
+ taskContext.setHostname(hostname);
taskContext.setClusterId(clusterPO.getId());
taskContext.setClusterName(clusterPO.getName());
taskContext.setServiceName(serviceDTO.getName());
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
index 9dfaf003..47f99871 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
@@ -25,8 +25,6 @@ import org.apache.bigtop.manager.dao.repository.HostDao;
import org.apache.bigtop.manager.dao.repository.StageDao;
import org.apache.bigtop.manager.server.command.task.Task;
import org.apache.bigtop.manager.server.holder.SpringContextHolder;
-import org.apache.bigtop.manager.server.model.converter.HostConverter;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
import lombok.extern.slf4j.Slf4j;
@@ -56,9 +54,8 @@ public abstract class AbstractStage implements Stage {
beforeCreateTasks();
- List<HostDTO> hostDTOList =
HostConverter.INSTANCE.fromPO2DTO(hostDao.findByIds(stageContext.getHostIds()));
- for (HostDTO hostDTO : hostDTOList) {
- tasks.add(createTask(hostDTO));
+ for (String hostname : stageContext.getHostnames()) {
+ tasks.add(createTask(hostname));
}
}
@@ -69,7 +66,7 @@ public abstract class AbstractStage implements Stage {
protected abstract void beforeCreateTasks();
- protected abstract Task createTask(HostDTO hostDTO);
+ protected abstract Task createTask(String hostname);
protected String getServiceName() {
return "cluster";
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
index 0d25c0a8..88c57081 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.dao.po.HostPO;
import org.apache.bigtop.manager.server.command.task.CacheFileUpdateTask;
import org.apache.bigtop.manager.server.command.task.Task;
import org.apache.bigtop.manager.server.command.task.TaskContext;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
import java.util.ArrayList;
import java.util.HashMap;
@@ -42,24 +41,24 @@ public class CacheFileUpdateStage extends AbstractStage {
@Override
protected void beforeCreateTasks() {
- List<Long> hostIds = new ArrayList<>();
+ List<String> hostnames = new ArrayList<>();
if (stageContext.getClusterId() == null) {
- hostIds.addAll(stageContext.getHostIds() == null ? List.of() :
stageContext.getHostIds());
+ hostnames.addAll(stageContext.getHostnames() == null ? List.of() :
stageContext.getHostnames());
} else {
- hostIds.addAll(stageContext.getHostIds() == null ? List.of() :
stageContext.getHostIds());
-
hostIds.addAll(hostDao.findAllByClusterId(stageContext.getClusterId()).stream()
- .map(HostPO::getId)
+ hostnames.addAll(stageContext.getHostnames() == null ? List.of() :
stageContext.getHostnames());
+
hostnames.addAll(hostDao.findAllByClusterId(stageContext.getClusterId()).stream()
+ .map(HostPO::getHostname)
.toList());
}
- stageContext.setHostIds(hostIds);
+ stageContext.setHostnames(hostnames);
}
@Override
- protected Task createTask(HostDTO hostDTO) {
+ protected Task createTask(String hostname) {
TaskContext taskContext = new TaskContext();
- taskContext.setHostDTO(hostDTO);
+ taskContext.setHostname(hostname);
taskContext.setClusterId(stageContext.getClusterId());
taskContext.setClusterName(stageContext.getClusterName());
taskContext.setUserGroup(stageContext.getUserGroup());
@@ -70,7 +69,7 @@ public class CacheFileUpdateStage extends AbstractStage {
taskContext.setComponentDisplayName("Agent");
Map<String, Object> properties = new HashMap<>();
- properties.put("hostIds", stageContext.getHostIds());
+ properties.put("hostnames", stageContext.getHostnames());
taskContext.setProperties(properties);
return new CacheFileUpdateTask(taskContext);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
index 6afefea1..883ce8ef 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentAddStage.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.command.stage;
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 ComponentAddStage extends AbstractComponentStage {
@@ -29,8 +28,8 @@ public class ComponentAddStage extends AbstractComponentStage
{
}
@Override
- protected Task createTask(HostDTO hostDTO) {
- return new ComponentAddTask(createTaskContext(hostDTO));
+ protected Task createTask(String hostname) {
+ return new ComponentAddTask(createTaskContext(hostname));
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
index 75970261..7498ce7d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.command.stage;
import org.apache.bigtop.manager.server.command.task.ComponentCheckTask;
import org.apache.bigtop.manager.server.command.task.Task;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
public class ComponentCheckStage extends AbstractComponentStage {
@@ -29,8 +28,8 @@ public class ComponentCheckStage extends
AbstractComponentStage {
}
@Override
- protected Task createTask(HostDTO hostDTO) {
- return new ComponentCheckTask(createTaskContext(hostDTO));
+ protected Task createTask(String hostname) {
+ return new ComponentCheckTask(createTaskContext(hostname));
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
index d1aa4519..08eea2ad 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.command.stage;
import org.apache.bigtop.manager.server.command.task.ComponentConfigureTask;
import org.apache.bigtop.manager.server.command.task.Task;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
public class ComponentConfigureStage extends AbstractComponentStage {
@@ -29,8 +28,8 @@ public class ComponentConfigureStage extends
AbstractComponentStage {
}
@Override
- protected Task createTask(HostDTO hostDTO) {
- return new ComponentConfigureTask(createTaskContext(hostDTO));
+ protected Task createTask(String hostname) {
+ return new ComponentConfigureTask(createTaskContext(hostname));
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
index fffef483..00f67f8a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.command.stage;
import org.apache.bigtop.manager.server.command.task.ComponentStartTask;
import org.apache.bigtop.manager.server.command.task.Task;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
public class ComponentStartStage extends AbstractComponentStage {
@@ -29,8 +28,8 @@ public class ComponentStartStage extends
AbstractComponentStage {
}
@Override
- protected Task createTask(HostDTO hostDTO) {
- return new ComponentStartTask(createTaskContext(hostDTO));
+ protected Task createTask(String hostname) {
+ return new ComponentStartTask(createTaskContext(hostname));
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
index 8133f106..b3678150 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.command.stage;
import org.apache.bigtop.manager.server.command.task.ComponentStopTask;
import org.apache.bigtop.manager.server.command.task.Task;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
public class ComponentStopStage extends AbstractComponentStage {
@@ -29,8 +28,8 @@ public class ComponentStopStage extends
AbstractComponentStage {
}
@Override
- protected Task createTask(HostDTO hostDTO) {
- return new ComponentStopTask(createTaskContext(hostDTO));
+ protected Task createTask(String hostname) {
+ return new ComponentStopTask(createTaskContext(hostname));
}
@Override
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
index 49ca5f62..5c9c1b65 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
@@ -21,7 +21,6 @@ package org.apache.bigtop.manager.server.command.stage;
import org.apache.bigtop.manager.server.command.task.HostCheckTask;
import org.apache.bigtop.manager.server.command.task.Task;
import org.apache.bigtop.manager.server.command.task.TaskContext;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
public class HostCheckStage extends AbstractStage {
@@ -38,9 +37,9 @@ public class HostCheckStage extends AbstractStage {
protected void beforeCreateTasks() {}
@Override
- protected Task createTask(HostDTO hostDTO) {
+ protected Task createTask(String hostname) {
TaskContext taskContext = new TaskContext();
- taskContext.setHostDTO(hostDTO);
+ taskContext.setHostname(hostname);
taskContext.setClusterId(stageContext.getClusterId());
taskContext.setClusterName(stageContext.getClusterName());
taskContext.setServiceName("cluster");
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/SetupJdkStage.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/SetupJdkStage.java
index 023a5bd9..d3f0d161 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/SetupJdkStage.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/SetupJdkStage.java
@@ -21,7 +21,6 @@ package org.apache.bigtop.manager.server.command.stage;
import org.apache.bigtop.manager.server.command.task.SetupJdkTask;
import org.apache.bigtop.manager.server.command.task.Task;
import org.apache.bigtop.manager.server.command.task.TaskContext;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
public class SetupJdkStage extends AbstractStage {
@@ -38,9 +37,9 @@ public class SetupJdkStage extends AbstractStage {
protected void beforeCreateTasks() {}
@Override
- protected Task createTask(HostDTO hostDTO) {
+ protected Task createTask(String hostname) {
TaskContext taskContext = new TaskContext();
- taskContext.setHostDTO(hostDTO);
+ taskContext.setHostname(hostname);
taskContext.setClusterId(stageContext.getClusterId());
taskContext.setClusterName(stageContext.getClusterName());
taskContext.setServiceName("cluster");
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
index ec699506..cc1536ce 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
@@ -39,7 +39,7 @@ public class StageContext {
private String rootDir;
- private List<Long> hostIds;
+ private List<String> hostnames;
private ServiceDTO serviceDTO;
@@ -68,7 +68,7 @@ public class StageContext {
ClusterCommandDTO clusterCommand = commandDTO.getClusterCommand();
context.setClusterName(clusterCommand.getName());
- context.setHostIds(clusterCommand.getHostIds());
+ context.setHostnames(clusterCommand.getHosts().getHostnames());
context.setUserGroup(clusterCommand.getUserGroup());
context.setRootDir(clusterCommand.getRootDir());
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
index becfd6ab..0d1ed195 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
@@ -23,6 +23,7 @@ import org.apache.bigtop.manager.common.enums.Command;
import org.apache.bigtop.manager.common.enums.JobState;
import org.apache.bigtop.manager.common.utils.JsonUtils;
import org.apache.bigtop.manager.dao.po.TaskPO;
+import org.apache.bigtop.manager.dao.repository.HostDao;
import org.apache.bigtop.manager.dao.repository.TaskDao;
import org.apache.bigtop.manager.grpc.generated.CommandReply;
import org.apache.bigtop.manager.grpc.generated.CommandRequest;
@@ -30,6 +31,7 @@ import
org.apache.bigtop.manager.grpc.generated.CommandServiceGrpc;
import org.apache.bigtop.manager.grpc.utils.ProtobufUtil;
import org.apache.bigtop.manager.server.grpc.GrpcClient;
import org.apache.bigtop.manager.server.holder.SpringContextHolder;
+import org.apache.bigtop.manager.server.model.converter.HostConverter;
import org.apache.bigtop.manager.server.model.dto.HostDTO;
import lombok.extern.slf4j.Slf4j;
@@ -37,6 +39,8 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public abstract class AbstractTask implements Task {
+ protected HostDao hostDao;
+
protected TaskDao taskDao;
protected TaskContext taskContext;
@@ -55,6 +59,7 @@ public abstract class AbstractTask implements Task {
}
protected void injectBeans() {
+ this.hostDao = SpringContextHolder.getBean(HostDao.class);
this.taskDao = SpringContextHolder.getBean(TaskDao.class);
}
@@ -83,7 +88,7 @@ public abstract class AbstractTask implements Task {
builder.setTaskId(getTaskPO().getId());
commandRequest = builder.build();
- HostDTO hostDTO = taskContext.getHostDTO();
+ HostDTO hostDTO =
HostConverter.INSTANCE.fromPO2DTO(hostDao.findByHostname(taskContext.getHostname()));
CommandServiceGrpc.CommandServiceBlockingStub stub =
GrpcClient.getBlockingStub(
hostDTO.getHostname(), hostDTO.getGrpcPort(),
CommandServiceGrpc.CommandServiceBlockingStub.class);
CommandReply reply = stub.exec(commandRequest);
@@ -135,7 +140,7 @@ public abstract class AbstractTask implements Task {
taskPO = new TaskPO();
taskPO.setName(getName());
taskPO.setContext(JsonUtils.writeAsString(taskContext));
- taskPO.setHostname(taskContext.getHostDTO().getHostname());
+ taskPO.setHostname(taskContext.getHostname());
taskPO.setServiceName(taskContext.getServiceName());
taskPO.setServiceUser(taskContext.getServiceUser());
taskPO.setComponentName(taskContext.getComponentName());
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 d231a38b..42468e4e 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
@@ -101,7 +101,7 @@ public class CacheFileUpdateTask extends AbstractTask {
@SuppressWarnings("unchecked")
private void genFullCaches() {
Long clusterId = taskContext.getClusterId();
- List<Long> hostIds = (List<Long>)
taskContext.getProperties().get("hostIds");
+ List<String> hostnames = (List<String>)
taskContext.getProperties().get("hostnames");
ClusterPO clusterPO = clusterDao.findById(clusterId);
ComponentQuery componentQuery =
@@ -110,7 +110,7 @@ public class CacheFileUpdateTask extends AbstractTask {
List<ServiceConfigPO> serviceConfigPOList =
serviceConfigDao.findByClusterId(clusterPO.getId());
List<ComponentPO> componentPOList =
componentDao.findByQuery(componentQuery);
List<RepoPO> repoPOList = repoDao.findAll();
- List<HostPO> hostPOList = hostDao.findByIds(hostIds);
+ List<HostPO> hostPOList = hostDao.findAllByHostnames(hostnames);
clusterInfo = new ClusterInfo();
clusterInfo.setName(clusterPO.getName());
@@ -165,10 +165,10 @@ public class CacheFileUpdateTask extends AbstractTask {
@SuppressWarnings("unchecked")
private void genEmptyCaches() {
- List<Long> hostIds = (List<Long>)
taskContext.getProperties().get("hostIds");
+ List<String> hostnames = (List<String>)
taskContext.getProperties().get("hostnames");
List<RepoPO> repoPOList = repoDao.findAll();
- List<HostPO> hostPOList = hostDao.findByIds(hostIds);
+ List<HostPO> hostPOList = hostDao.findAllByHostnames(hostnames);
componentInfoMap = new HashMap<>();
serviceConfigMap = new HashMap<>();
@@ -224,6 +224,6 @@ public class CacheFileUpdateTask extends AbstractTask {
@Override
public String getName() {
- return "Update cache files on " +
taskContext.getHostDTO().getHostname();
+ return "Update cache files on " + taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
index fc50700e..4c8ea99e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentAddTask.java
@@ -42,7 +42,7 @@ public class ComponentAddTask extends AbstractComponentTask {
super.onSuccess();
String componentName = taskContext.getComponentName();
- String hostname = taskContext.getHostDTO().getHostname();
+ String hostname = taskContext.getHostname();
ComponentQuery componentQuery =
ComponentQuery.builder().hostname(hostname).name(componentName).build();
ComponentPO componentPO =
componentDao.findByQuery(componentQuery).get(0);
@@ -61,7 +61,6 @@ public class ComponentAddTask extends AbstractComponentTask {
@Override
public String getName() {
- return "Add " + taskContext.getComponentDisplayName() + " on "
- + taskContext.getHostDTO().getHostname();
+ return "Add " + taskContext.getComponentDisplayName() + " on " +
taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
index e387da4c..121b5b92 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
@@ -33,7 +33,6 @@ public class ComponentCheckTask extends AbstractComponentTask
{
@Override
public String getName() {
- return "Check " + taskContext.getComponentDisplayName() + " on "
- + taskContext.getHostDTO().getHostname();
+ return "Check " + taskContext.getComponentDisplayName() + " on " +
taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
index e1873899..553d35ab 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
@@ -33,7 +33,6 @@ public class ComponentConfigureTask extends
AbstractComponentTask {
@Override
public String getName() {
- return "Configure " + taskContext.getComponentDisplayName() + " on "
- + taskContext.getHostDTO().getHostname();
+ return "Configure " + taskContext.getComponentDisplayName() + " on " +
taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
index a582daf4..451aef25 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
@@ -39,7 +39,7 @@ public class ComponentStartTask extends AbstractComponentTask
{
super.onSuccess();
String componentName = taskContext.getComponentName();
- String hostname = taskContext.getHostDTO().getHostname();
+ String hostname = taskContext.getHostname();
ComponentQuery componentQuery =
ComponentQuery.builder().hostname(hostname).name(componentName).build();
ComponentPO componentPO =
componentDao.findByQuery(componentQuery).get(0);
@@ -49,7 +49,6 @@ public class ComponentStartTask extends AbstractComponentTask
{
@Override
public String getName() {
- return "Start " + taskContext.getComponentDisplayName() + " on "
- + taskContext.getHostDTO().getHostname();
+ return "Start " + taskContext.getComponentDisplayName() + " on " +
taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
index 07301799..24d8294e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
@@ -39,7 +39,7 @@ public class ComponentStopTask extends AbstractComponentTask {
super.onSuccess();
String componentName = taskContext.getComponentName();
- String hostname = taskContext.getHostDTO().getHostname();
+ String hostname = taskContext.getHostname();
ComponentQuery componentQuery =
ComponentQuery.builder().hostname(hostname).name(componentName).build();
ComponentPO componentPO =
componentDao.findByQuery(componentQuery).get(0);
@@ -49,7 +49,6 @@ public class ComponentStopTask extends AbstractComponentTask {
@Override
public String getName() {
- return "Stop " + taskContext.getComponentDisplayName() + " on "
- + taskContext.getHostDTO().getHostname();
+ return "Stop " + taskContext.getComponentDisplayName() + " on " +
taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
index b37b432e..94e6296a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
@@ -53,6 +53,6 @@ public class HostCheckTask extends AbstractTask {
@Override
public String getName() {
- return "Check host " + taskContext.getHostDTO().getHostname();
+ return "Check host " + taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/SetupJdkTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/SetupJdkTask.java
index 179171bd..bcaf184a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/SetupJdkTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/SetupJdkTask.java
@@ -47,6 +47,6 @@ public class SetupJdkTask extends AbstractTask {
@Override
public String getName() {
- return "Setup jdk for " + taskContext.getHostDTO().getHostname();
+ return "Setup jdk for " + taskContext.getHostname();
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
index 934d0d24..92e99e4d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
@@ -18,8 +18,6 @@
*/
package org.apache.bigtop.manager.server.command.task;
-import org.apache.bigtop.manager.server.model.dto.HostDTO;
-
import lombok.Data;
import java.util.Map;
@@ -31,7 +29,7 @@ public class TaskContext {
private String clusterName;
- private HostDTO hostDTO;
+ private String hostname;
private String serviceName;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/HostController.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/HostController.java
index b8fdafcf..aa53c51a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/HostController.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/HostController.java
@@ -21,9 +21,9 @@ package org.apache.bigtop.manager.server.controller;
import org.apache.bigtop.manager.dao.query.HostQuery;
import org.apache.bigtop.manager.server.model.converter.HostConverter;
import org.apache.bigtop.manager.server.model.dto.HostDTO;
-import org.apache.bigtop.manager.server.model.req.HostPathReq;
import org.apache.bigtop.manager.server.model.req.HostReq;
import org.apache.bigtop.manager.server.model.vo.HostVO;
+import org.apache.bigtop.manager.server.model.vo.InstalledStatusVO;
import org.apache.bigtop.manager.server.model.vo.PageVO;
import org.apache.bigtop.manager.server.service.HostService;
import org.apache.bigtop.manager.server.utils.ResponseEntity;
@@ -107,7 +107,14 @@ public class HostController {
@Operation(summary = "Install dependencies", description = "Install
dependencies on a host")
@PostMapping("/install-dependencies")
- public ResponseEntity<Boolean> checkConnection(@RequestBody @Validated
HostPathReq hostPathReq) {
- return
ResponseEntity.success(hostService.installDependencies(hostPathReq.getHostIds(),
hostPathReq.getPath()));
+ public ResponseEntity<Boolean> installDependencies(@RequestBody @Validated
HostReq hostReq) {
+ HostDTO hostDTO = HostConverter.INSTANCE.fromReq2DTO(hostReq);
+ return
ResponseEntity.success(hostService.installDependencies(hostDTO));
+ }
+
+ @Operation(summary = "Installed status", description = "Install status for
a host")
+ @GetMapping("/installed-status")
+ public ResponseEntity<List<InstalledStatusVO>> installedStatus() {
+ return ResponseEntity.success(hostService.installedStatus());
}
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/InstalledStatusEnum.java
similarity index 61%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/InstalledStatusEnum.java
index e387da4c..543f4856 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/InstalledStatusEnum.java
@@ -16,24 +16,30 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.command.task;
+package org.apache.bigtop.manager.server.enums;
-import org.apache.bigtop.manager.common.enums.Command;
+import lombok.Getter;
-public class ComponentCheckTask extends AbstractComponentTask {
+@Getter
+public enum InstalledStatusEnum {
+ INSTALLING(1),
+ SUCCESS(2),
+ FAILED(3),
+ ;
- public ComponentCheckTask(TaskContext taskContext) {
- super(taskContext);
- }
+ private final Integer code;
- @Override
- protected Command getCommand() {
- return Command.CHECK;
+ InstalledStatusEnum(Integer code) {
+ this.code = code;
}
- @Override
- public String getName() {
- return "Check " + taskContext.getComponentDisplayName() + " on "
- + taskContext.getHostDTO().getHostname();
+ public static InstalledStatusEnum fromCode(Integer code) {
+ for (InstalledStatusEnum status : InstalledStatusEnum.values()) {
+ if (status.code.equals(code)) {
+ return status;
+ }
+ }
+
+ return FAILED;
}
}
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 3d6f27aa..d2b4f8d9 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<Long> hostIds;
+ private List<String> hostnames;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
index 6e8ff4f1..4581d3ac 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
@@ -33,6 +33,8 @@ public class HostDTO {
// Used when converted from PO
private String hostname;
+ private String agentDir;
+
private Long clusterId;
private String sshUser;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ClusterCommandDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ClusterCommandDTO.java
index 9b97662b..25f40007 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ClusterCommandDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/ClusterCommandDTO.java
@@ -18,9 +18,9 @@
*/
package org.apache.bigtop.manager.server.model.dto.command;
-import lombok.Data;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
-import java.util.List;
+import lombok.Data;
@Data
public class ClusterCommandDTO {
@@ -37,5 +37,5 @@ public class ClusterCommandDTO {
private String rootDir;
- private List<Long> hostIds;
+ private HostDTO hosts;
}
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 1d3b9e86..34ed4d13 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 = "Host IDs for component", example = "[1]")
- private List<Long> hostIds;
+ @Schema(description = "Hostnames for component", example = "[host1]")
+ private List<String> hostnames;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/HostReq.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/HostReq.java
index 35eb5317..3adbd95e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/HostReq.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/HostReq.java
@@ -29,6 +29,9 @@ public class HostReq {
@Schema(example = "[host1, host2]")
private List<String> hostnames;
+ @Schema(example = "/opt")
+ private String agentDir;
+
@Schema(example = "1")
private Long clusterId;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ClusterCommandReq.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ClusterCommandReq.java
index 2ee6b885..1d5ae3ba 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ClusterCommandReq.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/ClusterCommandReq.java
@@ -18,12 +18,14 @@
*/
package org.apache.bigtop.manager.server.model.req.command;
+import org.apache.bigtop.manager.server.config.CommandGroupSequenceProvider;
+import org.apache.bigtop.manager.server.model.req.HostReq;
+
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
-import java.util.List;
@Data
public class ClusterCommandReq {
@@ -48,6 +50,7 @@ public class ClusterCommandReq {
@Schema(example = "/opt")
private String rootDir;
- @Schema(example = "[1, 2]")
- private List<Long> hostIds;
+ @NotEmpty(groups =
{CommandGroupSequenceProvider.ClusterCommandGroup.class})
+ @Schema(description = "Hosts info for this cluster")
+ private HostReq hosts;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/HostVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/HostVO.java
index e8545b40..f79cab2f 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/HostVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/HostVO.java
@@ -27,6 +27,8 @@ public class HostVO {
private String hostname;
+ private String agentDir;
+
private String sshUser;
private Integer sshPort;
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/vo/InstalledStatusVO.java
similarity index 74%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ComponentHostDTO.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/InstalledStatusVO.java
index 3d6f27aa..e84e55b4 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/vo/InstalledStatusVO.java
@@ -16,19 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.model.dto;
+package org.apache.bigtop.manager.server.model.vo;
-import lombok.Data;
+import org.apache.bigtop.manager.server.enums.InstalledStatusEnum;
-import jakarta.validation.constraints.NotEmpty;
-import java.io.Serializable;
-import java.util.List;
+import lombok.Data;
@Data
-public class ComponentHostDTO implements Serializable {
+public class InstalledStatusVO {
+
+ private String hostname;
- private String componentName;
+ private InstalledStatusEnum status;
- @NotEmpty
- private List<Long> hostIds;
+ private String message;
}
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 14df0c08..185532ad 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
@@ -39,7 +39,7 @@ public class ServiceVO {
private String stack;
- private Boolean needRestart;
+ private Boolean restartFlag;
private Integer status;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/HostService.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/HostService.java
index 210cae4b..96e50176 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/HostService.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/HostService.java
@@ -21,6 +21,7 @@ package org.apache.bigtop.manager.server.service;
import org.apache.bigtop.manager.dao.query.HostQuery;
import org.apache.bigtop.manager.server.model.dto.HostDTO;
import org.apache.bigtop.manager.server.model.vo.HostVO;
+import org.apache.bigtop.manager.server.model.vo.InstalledStatusVO;
import org.apache.bigtop.manager.server.model.vo.PageVO;
import java.util.List;
@@ -75,9 +76,15 @@ public interface HostService {
/**
* Install dependencies
*
- * @param hostIds host ids
- * @param path remote host path
+ * @param hostDTO host infos
* @return true if all dependencies are installed
*/
- Boolean installDependencies(List<Long> hostIds, String path);
+ Boolean installDependencies(HostDTO hostDTO);
+
+ /**
+ * Get dependency installed status
+ *
+ * @return installed status
+ */
+ List<InstalledStatusVO> installedStatus();
}
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 70b37eb9..172c5dd2 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
@@ -29,11 +29,13 @@ 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;
+import org.apache.bigtop.manager.server.enums.InstalledStatusEnum;
import org.apache.bigtop.manager.server.exception.ApiException;
import org.apache.bigtop.manager.server.model.converter.HostConverter;
import org.apache.bigtop.manager.server.model.dto.HostDTO;
import org.apache.bigtop.manager.server.model.query.PageQuery;
import org.apache.bigtop.manager.server.model.vo.HostVO;
+import org.apache.bigtop.manager.server.model.vo.InstalledStatusVO;
import org.apache.bigtop.manager.server.model.vo.PageVO;
import org.apache.bigtop.manager.server.service.HostService;
import org.apache.bigtop.manager.server.utils.PageUtils;
@@ -50,6 +52,9 @@ import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@Slf4j
@@ -65,6 +70,10 @@ public class HostServiceImpl implements HostService {
@Resource
private ComponentDao componentDao;
+ private final List<InstalledStatusVO> installedStatus = new
CopyOnWriteArrayList<>();
+
+ private final ExecutorService executorService =
Executors.newFixedThreadPool(5);
+
@Override
public PageVO<HostVO> list(HostQuery hostQuery) {
PageQuery pageQuery = PageUtils.getPageQuery();
@@ -82,7 +91,7 @@ public class HostServiceImpl implements HostService {
public List<HostVO> add(HostDTO hostDTO) {
List<HostPO> hostPOList =
HostConverter.INSTANCE.fromDTO2POListUsingHostnames(hostDTO);
for (HostPO hostPO : hostPOList) {
- hostPO.setStatus(HealthyStatusEnum.UNKNOWN.getCode());
+ hostPO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
}
hostDao.saveAll(hostPOList);
@@ -165,92 +174,102 @@ public class HostServiceImpl implements HostService {
}
@Override
- public Boolean installDependencies(List<Long> hostIds, String path) {
+ public Boolean installDependencies(HostDTO hostDTO) {
List<RepoPO> repoPOList = repoDao.findAll();
Map<String, RepoPO> archRepoMap = repoPOList.stream()
.filter(repoPO -> repoPO.getType() == 2)
.collect(Collectors.toMap(RepoPO::getArch, repo -> repo));
- List<HostPO> hostPOList = hostDao.findByIds(hostIds);
- for (HostPO hostPO : hostPOList) {
- HostDTO hostDTO = HostConverter.INSTANCE.fromPO2DTO(hostPO);
-
- // Get host arch
- String arch = execCommandOnRemoteHost(hostDTO,
hostDTO.getHostname(), "arch")
- .getOutput()
- .trim();
- arch = arch.equals("arm64") ? "aarch64" : arch;
-
- // Download & Extract agent tarball
- String repoUrl = archRepoMap.get(arch).getBaseUrl();
- String tarballUrl = repoUrl + "/bigtop-manager-agent.tar.gz";
- String command = "sudo mkdir -p " + path + " &&"
- + " sudo chown -R " + hostDTO.getSshUser() + ":" +
hostDTO.getSshUser() + " " + path
- + " && curl -L " + tarballUrl + " | tar -xz -C " + path;
- ShellResult result = execCommandOnRemoteHost(hostDTO,
hostDTO.getHostname(), command);
- if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
- hostPO.setErrInfo(result.getErrMsg());
- hostDao.updateById(hostPO);
-
- log.error(
- "Unable to download & extract agent tarball, hostname:
{}, msg: {}",
- hostDTO.getHostname(),
- result.getErrMsg());
- throw new
ApiException(ApiExceptionEnum.HOST_UNABLE_TO_EXEC_COMMAND,
hostDTO.getHostname());
- }
+ // Clear cache list
+ installedStatus.clear();
- // Update agent conf
- // Current only grpc port needs to be updated if it's not default
port
- if (hostDTO.getGrpcPort() != 8835) {
- command = "sed -i 's/port: 8835/port: " +
hostDTO.getGrpcPort() + "/' " + path
- + "/bigtop-manager-agent/conf/application.yml";
- result = execCommandOnRemoteHost(hostDTO,
hostDTO.getHostname(), command);
- if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
- hostPO.setErrInfo(result.getErrMsg());
- hostDao.updateById(hostPO);
-
- log.error(
- "Unable to update agent config, hostname: {}, msg:
{}",
- hostDTO.getHostname(),
- result.getErrMsg());
- throw new
ApiException(ApiExceptionEnum.HOST_UNABLE_TO_EXEC_COMMAND,
hostDTO.getHostname());
- }
- }
+ for (String hostname : hostDTO.getHostnames()) {
+ InstalledStatusVO installedStatusVO = new InstalledStatusVO();
+ installedStatusVO.setHostname(hostname);
+ installedStatusVO.setStatus(InstalledStatusEnum.INSTALLING);
+ installedStatus.add(installedStatusVO);
+
+ // Async install dependencies
+ executorService.submit(() -> installDependencies(archRepoMap,
hostDTO, hostname, installedStatusVO));
+ }
+
+ return true;
+ }
- // Run agent in background
- command = "nohup " + path + "/bigtop-manager-agent/bin/start.sh
--debug > /dev/null 2>&1 &";
- result = execCommandOnRemoteHost(hostDTO, hostDTO.getHostname(),
command);
+ @Override
+ public List<InstalledStatusVO> installedStatus() {
+ return installedStatus;
+ }
+
+ public void installDependencies(
+ Map<String, RepoPO> archRepoMap, HostDTO hostDTO, String hostname,
InstalledStatusVO installedStatusVO) {
+ String path = hostDTO.getAgentDir();
+ // Get host arch
+ String arch =
+ execCommandOnRemoteHost(hostDTO, hostname,
"arch").getOutput().trim();
+ arch = arch.equals("arm64") ? "aarch64" : arch;
+
+ // Download & Extract agent tarball
+ String repoUrl = archRepoMap.get(arch).getBaseUrl();
+ String tarballUrl = repoUrl + "/bigtop-manager-agent.tar.gz";
+ String command = "sudo mkdir -p " + path + " &&"
+ + " sudo chown -R " + hostDTO.getSshUser() + ":" +
hostDTO.getSshUser() + " " + path
+ + " && curl -L " + tarballUrl + " | tar -xz -C " + path;
+ ShellResult result = execCommandOnRemoteHost(hostDTO, hostname,
command);
+ if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
+ log.error(
+ "Unable to download & extract agent tarball, hostname: {},
msg: {}", hostname, result.getErrMsg());
+
+ installedStatusVO.setStatus(InstalledStatusEnum.FAILED);
+ installedStatusVO.setMessage(result.getErrMsg());
+ return;
+ }
+
+ // Update agent conf
+ // Current only grpc port needs to be updated if it's not default port
+ if (hostDTO.getGrpcPort() != 8835) {
+ command = "sed -i 's/port: 8835/port: " + hostDTO.getGrpcPort() +
"/' " + path
+ + "/bigtop-manager-agent/conf/application.yml";
+ result = execCommandOnRemoteHost(hostDTO, hostname, command);
if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
- hostPO.setErrInfo(result.getErrMsg());
- hostDao.updateById(hostPO);
+ log.error("Unable to update agent config, hostname: {}, msg:
{}", hostname, result.getErrMsg());
- log.error("Unable to start agent, hostname: {}, msg: {}",
hostDTO.getHostname(), result.getErrMsg());
- throw new
ApiException(ApiExceptionEnum.HOST_UNABLE_TO_EXEC_COMMAND,
hostDTO.getHostname());
+ installedStatusVO.setStatus(InstalledStatusEnum.FAILED);
+ installedStatusVO.setMessage(result.getErrMsg());
+ return;
}
+ }
- // Check the process, the agent may encounter some errors and exit
when starting
- // So we need to wait for a while before the check
- try {
- Thread.sleep(10 * 1000);
- } catch (InterruptedException e) {
- log.error("Thread sleep interrupted", e);
- }
- command = "ps -ef | grep bigtop-manager-agent | grep -v grep";
- result = execCommandOnRemoteHost(hostDTO, hostDTO.getHostname(),
command);
- if (result.getExitCode() != MessageConstants.SUCCESS_CODE
- || !result.getOutput().contains("bigtop-manager-agent")) {
- hostPO.setErrInfo("Unable to start agent process, please check
the log");
- hostDao.updateById(hostPO);
-
- log.error("Unable to start agent process, hostname: {}",
hostDTO.getHostname());
- throw new
ApiException(ApiExceptionEnum.HOST_UNABLE_TO_EXEC_COMMAND,
hostDTO.getHostname());
- }
+ // Run agent in background
+ command = "nohup " + path + "/bigtop-manager-agent/bin/start.sh
--debug > /dev/null 2>&1 &";
+ result = execCommandOnRemoteHost(hostDTO, hostname, command);
+ if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
+ log.error("Unable to start agent, hostname: {}, msg: {}",
hostname, result.getErrMsg());
- hostPO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
- hostDao.updateById(hostPO);
+ installedStatusVO.setStatus(InstalledStatusEnum.FAILED);
+ installedStatusVO.setMessage(result.getErrMsg());
+ return;
}
- return true;
+ // Check the process, the agent may encounter some errors and exit
when starting
+ // So we need to wait for a while before the check
+ try {
+ Thread.sleep(10 * 1000);
+ } catch (InterruptedException e) {
+ log.error("Thread sleep interrupted", e);
+ }
+ command = "ps -ef | grep bigtop-manager-agent | grep -v grep";
+ result = execCommandOnRemoteHost(hostDTO, hostname, command);
+ if (result.getExitCode() != MessageConstants.SUCCESS_CODE
+ || !result.getOutput().contains("bigtop-manager-agent")) {
+ log.error("Unable to start agent process, hostname: {}", hostname);
+
+ installedStatusVO.setStatus(InstalledStatusEnum.FAILED);
+ installedStatusVO.setMessage("Unable to start agent, please check
the log.");
+ return;
+ }
+
+ installedStatusVO.setStatus(InstalledStatusEnum.SUCCESS);
}
private ShellResult execCommandOnRemoteHost(HostDTO hostDTO, String
hostname, String command) {
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 d316df5a..f66712ca 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
@@ -160,8 +160,8 @@ public class JobServiceImpl implements JobService {
for (int j = 0; j < stage.getTasks().size(); j++) {
Task task = stage.getTasks().get(j);
- TaskPO taskPO = findCorrectTaskPO(
- taskPOList,
task.getTaskContext().getHostDTO().getHostname());
+ TaskPO taskPO =
+ findCorrectTaskPO(taskPOList,
task.getTaskContext().getHostname());
if (taskPO == null) {
throw new ApiException(ApiExceptionEnum.JOB_NOT_RETRYABLE);
}
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 4c1ff01a..88c94961 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
@@ -91,6 +91,7 @@ CREATE TABLE `host`
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`cluster_id` BIGINT(20) UNSIGNED DEFAULT NULL,
`hostname` VARCHAR(255) DEFAULT NULL,
+ `agent_dir` VARCHAR(255) DEFAULT NULL,
`ssh_user` VARCHAR(255) DEFAULT NULL,
`ssh_port` INTEGER DEFAULT NULL,
`auth_type` INTEGER DEFAULT NULL COMMENT '1-password, 2-key,
3-no_auth',
@@ -143,7 +144,7 @@ CREATE TABLE `service`
`user` VARCHAR(255) DEFAULT NULL,
`version` VARCHAR(255) DEFAULT NULL,
`stack` VARCHAR(255) DEFAULT NULL,
- `need_restart` BOOLEAN DEFAULT FALSE,
+ `restart_flag` BOOLEAN DEFAULT FALSE,
`cluster_id` BIGINT,
`status` INTEGER DEFAULT NULL COMMENT '1-healthy, 2-unhealthy,
3-unknown',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
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 3d133f72..a8180144 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
@@ -80,6 +80,7 @@ CREATE TABLE host
id BIGINT CHECK (id > 0) NOT NULL GENERATED
ALWAYS AS IDENTITY,
cluster_id BIGINT DEFAULT NULL,
hostname VARCHAR(255) DEFAULT NULL,
+ agent_dir VARCHAR(255) DEFAULT NULL,
ssh_user VARCHAR(255) DEFAULT NULL,
ssh_port INT DEFAULT NULL,
auth_type INT DEFAULT NULL,
@@ -139,7 +140,7 @@ CREATE TABLE service
"user" VARCHAR(255) DEFAULT NULL,
version VARCHAR(255) DEFAULT NULL,
stack VARCHAR(255) DEFAULT NULL,
- need_restart BOOLEAN DEFAULT FALSE,
+ restart_flag BOOLEAN DEFAULT FALSE,
cluster_id BIGINT,
status INTEGER DEFAULT NULL,
create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/metainfo.xml
index 0ced8143..e81dc559 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/metainfo.xml
@@ -107,12 +107,22 @@
<package-specific>
<architectures>
<arch>x86_64</arch>
+ </architectures>
+ <packages>
+ <package>
+ <name>hadoop-3.3.6-1-x86_64.tar.gz</name>
+
<checksum>SHA-256:4727109fe75e87c9611e7ed3c473510fe6cb6c56d28edeaca1de1aeec305bf2e</checksum>
+ </package>
+ </packages>
+ </package-specific>
+ <package-specific>
+ <architectures>
<arch>aarch64</arch>
</architectures>
<packages>
<package>
- <name>hadoop-3.3.6-1.tar.gz</name>
-
<checksum>SHA-256:0da6364126c6ea6dd0f5b545afec33957ee801d6db6c0874edb0aa5be1e89995</checksum>
+ <name>hadoop-3.3.6-1-aarch64.tar.gz</name>
+
<checksum>SHA-256:2a9312eac69a542c6266f1689d29ded243dde2d61add333a9762829008f97442</checksum>
</package>
</packages>
</package-specific>