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 ba2a8e9d BIGTOP-4314: Adjust host add command (#137)
ba2a8e9d is described below

commit ba2a8e9d2e76a0048211d522410b6935ab3c781f
Author: Zhiguo Wu <[email protected]>
AuthorDate: Wed Jan 1 11:39:17 2025 +0800

    BIGTOP-4314: Adjust host add command (#137)
---
 .../org/apache/bigtop/manager/dao/po/JobPO.java    |  5 --
 .../org/apache/bigtop/manager/dao/po/StagePO.java  |  5 --
 .../command/factory/host/HostAddJobFactory.java    | 49 +++++++++++++++++++
 .../server/command/job/AbstractServiceJob.java     |  3 +-
 .../manager/server/command/job/ClusterAddJob.java  | 10 ++--
 .../job/{ClusterAddJob.java => HostAddJob.java}    | 57 ++++------------------
 .../manager/server/command/stage/StageContext.java | 37 +++++++++-----
 .../server/command/validator/HostAddValidator.java |  3 +-
 .../server/model/converter/HostConverter.java      |  5 ++
 .../model/dto/command/ClusterCommandDTO.java       |  4 +-
 .../server/model/dto/command/HostCommandDTO.java   | 25 +++++++++-
 .../model/req/command/ClusterCommandReq.java       |  3 +-
 .../server/model/req/command/HostCommandReq.java   | 40 +++++++++++++--
 .../bigtop/manager/server/model/vo/StageVO.java    |  4 --
 14 files changed, 163 insertions(+), 87 deletions(-)

diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java
index d787c3ff..c0c8bfb9 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java
@@ -20,14 +20,12 @@ package org.apache.bigtop.manager.dao.po;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import lombok.ToString;
 
 import jakarta.persistence.Column;
 import jakarta.persistence.Id;
 import jakarta.persistence.Lob;
 import jakarta.persistence.Table;
 import java.io.Serializable;
-import java.util.List;
 
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -50,7 +48,4 @@ public class JobPO extends BasePO implements Serializable {
 
     @Column(name = "cluster_id")
     private Long clusterId;
-
-    @ToString.Exclude
-    private List<StagePO> stages;
 }
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
index b2f8cdaf..07831655 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
@@ -20,13 +20,11 @@ package org.apache.bigtop.manager.dao.po;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import lombok.ToString;
 
 import jakarta.persistence.Column;
 import jakarta.persistence.Id;
 import jakarta.persistence.Table;
 import java.io.Serializable;
-import java.util.List;
 
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -60,7 +58,4 @@ public class StagePO extends BasePO implements Serializable {
 
     @Column(name = "job_id", nullable = false)
     private Long jobId;
-
-    @ToString.Exclude
-    private List<TaskPO> tasks;
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/host/HostAddJobFactory.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/host/HostAddJobFactory.java
new file mode 100644
index 00000000..ecf9b911
--- /dev/null
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/host/HostAddJobFactory.java
@@ -0,0 +1,49 @@
+/*
+ * 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.factory.host;
+
+import org.apache.bigtop.manager.common.enums.Command;
+import org.apache.bigtop.manager.server.command.CommandIdentifier;
+import 
org.apache.bigtop.manager.server.command.factory.cluster.AbstractClusterJobFactory;
+import org.apache.bigtop.manager.server.command.job.HostAddJob;
+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;
+
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Component
+@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+public class HostAddJobFactory extends AbstractClusterJobFactory {
+
+    @Override
+    public CommandIdentifier getCommandIdentifier() {
+        return new CommandIdentifier(CommandLevel.HOST, Command.ADD);
+    }
+
+    @Override
+    public Job createJob(JobContext jobContext) {
+        return new HostAddJob(jobContext);
+    }
+}
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 996cb3c5..8f128f1a 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
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.command.job;
 
 import org.apache.bigtop.manager.common.constants.ComponentCategories;
 import org.apache.bigtop.manager.common.enums.Command;
-import org.apache.bigtop.manager.common.utils.JsonUtils;
 import org.apache.bigtop.manager.dao.po.ComponentPO;
 import org.apache.bigtop.manager.dao.query.ComponentQuery;
 import org.apache.bigtop.manager.dao.repository.ComponentDao;
@@ -147,7 +146,7 @@ public abstract class AbstractServiceJob extends 
AbstractJob {
     }
 
     protected void createCacheStage() {
-        StageContext stageContext = 
StageContext.fromPayload(JsonUtils.writeAsString(jobContext.getCommandDTO()));
+        StageContext stageContext = 
StageContext.fromCommandDTO(jobContext.getCommandDTO());
         stages.add(new CacheFileUpdateStage(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 95fe9e11..6bf52fee 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
@@ -35,6 +35,8 @@ import org.apache.bigtop.manager.server.model.dto.CommandDTO;
 import org.apache.bigtop.manager.server.model.dto.HostDTO;
 import org.apache.bigtop.manager.server.service.HostService;
 
+import java.util.List;
+
 public class ClusterAddJob extends AbstractJob {
 
     private HostService hostService;
@@ -92,9 +94,11 @@ public class ClusterAddJob extends AbstractJob {
 
     private void saveHosts() {
         CommandDTO commandDTO = jobContext.getCommandDTO();
-        HostDTO hostDTO = commandDTO.getClusterCommand().getHosts();
-        hostDTO.setClusterId(clusterPO.getId());
-        hostService.add(hostDTO);
+        List<HostDTO> hostDTOList = commandDTO.getClusterCommand().getHosts();
+        for (HostDTO hostDTO : hostDTOList) {
+            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/ClusterAddJob.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/HostAddJob.java
similarity index 54%
copy from 
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterAddJob.java
copy to 
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/HostAddJob.java
index 95fe9e11..6f2d9b1a 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/HostAddJob.java
@@ -18,28 +18,23 @@
  */
 package org.apache.bigtop.manager.server.command.job;
 
-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.server.command.stage.CacheFileUpdateStage;
 import org.apache.bigtop.manager.server.command.stage.HostCheckStage;
 import org.apache.bigtop.manager.server.command.stage.SetupJdkStage;
-import org.apache.bigtop.manager.server.command.stage.Stage;
 import org.apache.bigtop.manager.server.command.stage.StageContext;
-import org.apache.bigtop.manager.server.command.task.Task;
-import org.apache.bigtop.manager.server.enums.HealthyStatusEnum;
 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.converter.HostConverter;
 import org.apache.bigtop.manager.server.model.dto.CommandDTO;
 import org.apache.bigtop.manager.server.model.dto.HostDTO;
 import org.apache.bigtop.manager.server.service.HostService;
 
-public class ClusterAddJob extends AbstractJob {
+import java.util.List;
+
+public class HostAddJob extends AbstractJob {
 
     private HostService hostService;
 
-    public ClusterAddJob(JobContext jobContext) {
+    public HostAddJob(JobContext jobContext) {
         super(jobContext);
     }
 
@@ -66,52 +61,20 @@ public class ClusterAddJob extends AbstractJob {
             return;
         }
 
-        saveCluster();
-
         saveHosts();
-
-        linkJobToCluster();
     }
 
     @Override
     public String getName() {
-        return "Add cluster";
-    }
-
-    private void saveCluster() {
-        CommandDTO commandDTO = jobContext.getCommandDTO();
-        ClusterDTO clusterDTO = 
ClusterConverter.INSTANCE.fromCommand2DTO(commandDTO.getClusterCommand());
-        clusterPO = clusterDao.findByName(clusterDTO.getName());
-        if (clusterPO == null) {
-            clusterPO = ClusterConverter.INSTANCE.fromDTO2PO(clusterDTO);
-        }
-
-        clusterPO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
-        clusterDao.save(clusterPO);
+        return "Add hosts";
     }
 
     private void saveHosts() {
         CommandDTO commandDTO = jobContext.getCommandDTO();
-        HostDTO hostDTO = commandDTO.getClusterCommand().getHosts();
-        hostDTO.setClusterId(clusterPO.getId());
-        hostService.add(hostDTO);
-    }
-
-    private void linkJobToCluster() {
-        JobPO jobPO = getJobPO();
-        jobPO.setClusterId(clusterPO.getId());
-        jobDao.partialUpdateById(jobPO);
-
-        for (Stage stage : getStages()) {
-            StagePO stagePO = stage.getStagePO();
-            stagePO.setClusterId(clusterPO.getId());
-            stageDao.partialUpdateById(stagePO);
-
-            for (Task task : stage.getTasks()) {
-                TaskPO taskPO = task.getTaskPO();
-                taskPO.setClusterId(clusterPO.getId());
-                taskDao.partialUpdateById(taskPO);
-            }
+        List<HostDTO> hostDTOList = 
HostConverter.INSTANCE.fromCommand2DTO(commandDTO.getHostCommands());
+        for (HostDTO hostDTO : hostDTOList) {
+            hostDTO.setClusterId(clusterPO.getId());
+            hostService.add(hostDTO);
         }
     }
 }
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 cc1536ce..a3823b4c 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
@@ -18,7 +18,9 @@
  */
 package org.apache.bigtop.manager.server.command.stage;
 
-import org.apache.bigtop.manager.common.utils.JsonUtils;
+import org.apache.bigtop.manager.dao.po.ClusterPO;
+import org.apache.bigtop.manager.dao.repository.ClusterDao;
+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.ComponentDTO;
 import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
@@ -45,14 +47,17 @@ public class StageContext {
 
     private ComponentDTO componentDTO;
 
-    public static StageContext fromPayload(String payload) {
-        CommandDTO commandDTO = JsonUtils.readFromString(payload, 
CommandDTO.class);
-        return fromCommandDTO(commandDTO);
-    }
-
     public static StageContext fromCommandDTO(CommandDTO commandDTO) {
         StageContext context = new StageContext();
-        context.setClusterId(commandDTO.getClusterId());
+
+        if (commandDTO.getClusterId() != null) {
+            ClusterDao clusterDao = 
SpringContextHolder.getBean(ClusterDao.class);
+            ClusterPO clusterPO = 
clusterDao.findById(commandDTO.getClusterId());
+            context.setClusterId(clusterPO.getId());
+            context.setClusterName(clusterPO.getName());
+            context.setUserGroup(clusterPO.getUserGroup());
+            context.setRootDir(clusterPO.getRootDir());
+        }
 
         switch (commandDTO.getCommandLevel()) {
             case CLUSTER -> fromClusterCommandPayload(context, commandDTO);
@@ -67,14 +72,22 @@ public class StageContext {
     private static void fromClusterCommandPayload(StageContext context, 
CommandDTO commandDTO) {
         ClusterCommandDTO clusterCommand = commandDTO.getClusterCommand();
 
-        context.setClusterName(clusterCommand.getName());
-        context.setHostnames(clusterCommand.getHosts().getHostnames());
-        context.setUserGroup(clusterCommand.getUserGroup());
-        context.setRootDir(clusterCommand.getRootDir());
+        if (context.getClusterId() == null) {
+            List<String> hostnames = clusterCommand.getHosts().stream()
+                    .flatMap(hostDTO -> hostDTO.getHostnames().stream())
+                    .toList();
+            context.setHostnames(hostnames);
+            context.setClusterName(clusterCommand.getName());
+            context.setUserGroup(clusterCommand.getUserGroup());
+            context.setRootDir(clusterCommand.getRootDir());
+        }
     }
 
     private static void fromHostCommandPayload(StageContext context, 
CommandDTO commandDTO) {
-        // No need to set anything here, we should deal with this in the host 
job factory
+        List<String> hostnames = commandDTO.getHostCommands().stream()
+                .flatMap(hostDTO -> hostDTO.getHostnames().stream())
+                .toList();
+        context.setHostnames(hostnames);
     }
 
     private static void fromServiceCommandPayload(StageContext context, 
CommandDTO commandDTO) {
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 ae20aa7d..d10e6bac 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
@@ -25,7 +25,6 @@ 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.command.HostCommandDTO;
 
 import org.apache.commons.collections4.CollectionUtils;
 
@@ -48,7 +47,7 @@ public class HostAddValidator implements CommandValidator {
     @Override
     public void validate(ValidatorContext context) {
         List<String> hostnames = 
context.getCommandDTO().getHostCommands().stream()
-                .map(HostCommandDTO::getHostname)
+                .flatMap(hostCommandDTO -> 
hostCommandDTO.getHostnames().stream())
                 .toList();
 
         List<HostPO> hostPOList = hostDao.findAllByHostnames(hostnames);
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
index 0b02ce23..a0ff5e0d 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
@@ -21,6 +21,7 @@ package org.apache.bigtop.manager.server.model.converter;
 import org.apache.bigtop.manager.dao.po.HostPO;
 import org.apache.bigtop.manager.server.config.MapStructSharedConfig;
 import org.apache.bigtop.manager.server.model.dto.HostDTO;
+import org.apache.bigtop.manager.server.model.dto.command.HostCommandDTO;
 import org.apache.bigtop.manager.server.model.req.HostReq;
 import org.apache.bigtop.manager.server.model.vo.HostVO;
 
@@ -37,6 +38,10 @@ public interface HostConverter {
 
     HostDTO fromReq2DTO(HostReq hostReq);
 
+    HostDTO fromCommand2DTO(HostCommandDTO hostCommandDTO);
+
+    List<HostDTO> fromCommand2DTO(List<HostCommandDTO> hostCommandDTOList);
+
     HostDTO fromPO2DTO(HostPO hostPO);
 
     List<HostDTO> fromPO2DTO(List<HostPO> hostPOList);
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 25f40007..a9f32a7e 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
@@ -22,6 +22,8 @@ import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class ClusterCommandDTO {
 
@@ -37,5 +39,5 @@ public class ClusterCommandDTO {
 
     private String rootDir;
 
-    private HostDTO hosts;
+    private List<HostDTO> hosts;
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/HostCommandDTO.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/HostCommandDTO.java
index 94764880..4c01776b 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/HostCommandDTO.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/command/HostCommandDTO.java
@@ -21,9 +21,32 @@ package org.apache.bigtop.manager.server.model.dto.command;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 @Data
 public class HostCommandDTO implements Serializable {
 
-    private String hostname;
+    private List<String> hostnames;
+
+    private String agentDir;
+
+    private Long clusterId;
+
+    private String sshUser;
+
+    private Integer sshPort;
+
+    private Integer authType;
+
+    private String sshPassword;
+
+    private String sshKeyString;
+
+    private String sshKeyFilename;
+
+    private String sshKeyPassword;
+
+    private Integer grpcPort;
+
+    private String desc;
 }
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 1d5ae3ba..e75d71b1 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
@@ -26,6 +26,7 @@ import lombok.Data;
 
 import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
+import java.util.List;
 
 @Data
 public class ClusterCommandReq {
@@ -52,5 +53,5 @@ public class ClusterCommandReq {
 
     @NotEmpty(groups = 
{CommandGroupSequenceProvider.ClusterCommandGroup.class})
     @Schema(description = "Hosts info for this cluster")
-    private HostReq hosts;
+    private List<HostReq> hosts;
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/HostCommandReq.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/HostCommandReq.java
index d7b8f653..f6ba2ee4 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/HostCommandReq.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/command/HostCommandReq.java
@@ -21,12 +21,44 @@ package org.apache.bigtop.manager.server.model.req.command;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import jakarta.validation.constraints.NotBlank;
+import java.util.List;
 
 @Data
 public class HostCommandReq {
 
-    @NotBlank
-    @Schema(description = "Host Name", example = "bigtop-manager-server")
-    private String hostname;
+    @Schema(example = "[host1, host2]")
+    private List<String> hostnames;
+
+    @Schema(example = "/opt")
+    private String agentDir;
+
+    @Schema(example = "1")
+    private Long clusterId;
+
+    @Schema(example = "root")
+    private String sshUser;
+
+    @Schema(example = "22")
+    private Integer sshPort;
+
+    @Schema(example = "1")
+    private Integer authType;
+
+    @Schema(example = "password")
+    private String sshPassword;
+
+    @Schema(example = "sshKeyString")
+    private String sshKeyString;
+
+    @Schema(example = "id_rsa123")
+    private String sshKeyFilename;
+
+    @Schema(example = "password")
+    private String sshKeyPassword;
+
+    @Schema(example = "8835")
+    private Integer grpcPort;
+
+    @Schema(example = "description")
+    private String desc;
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/StageVO.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/StageVO.java
index f47429f4..e5ace5af 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/StageVO.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/StageVO.java
@@ -20,8 +20,6 @@ package org.apache.bigtop.manager.server.model.vo;
 
 import lombok.Data;
 
-import java.util.List;
-
 @Data
 public class StageVO {
 
@@ -29,8 +27,6 @@ public class StageVO {
 
     private String name;
 
-    private List<TaskVO> tasks;
-
     private String state;
 
     private Integer order;

Reply via email to