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 6f2f19e BIGTOP-4194: Add infra stack with the simplest Prometheus
support (#51)
6f2f19e is described below
commit 6f2f19e80f0bf2b7d69de0aa1d91306d49bcc25e
Author: Zhiguo Wu <[email protected]>
AuthorDate: Fri Aug 23 17:03:38 2024 +0800
BIGTOP-4194: Add infra stack with the simplest Prometheus support (#51)
---
bigtop-manager-agent/pom.xml | 5 +
bigtop-manager-bom/pom.xml | 9 +-
.../message/entity/payload/CommandPayload.java | 4 +-
.../pojo/{RepoInfo.java => PackageInfo.java} | 14 +--
...SSpecificInfo.java => PackageSpecificInfo.java} | 4 +-
.../common/message/entity/pojo/RepoInfo.java | 2 +
.../org/apache/bigtop/manager/dao/po/RepoPO.java | 3 +
.../apache/bigtop/manager/dao/po/ServicePO.java | 6 +-
.../manager/server/command/job/AbstractJob.java | 25 ++--
.../server/command/job/AbstractServiceJob.java | 2 +-
.../command/stage/AbstractComponentStage.java | 2 +-
.../server/command/stage/AbstractStage.java | 39 ++++---
.../server/command/task/AbstractComponentTask.java | 36 +++---
.../manager/server/command/task/AbstractTask.java | 22 ++--
.../server/model/converter/ServiceConverter.java | 2 +-
.../model/dto/{RepoDTO.java => PackageDTO.java} | 12 +-
...{OSSpecificDTO.java => PackageSpecificDTO.java} | 4 +-
.../bigtop/manager/server/model/dto/RepoDTO.java | 2 +
.../manager/server/model/dto/ServiceDTO.java | 2 +-
.../bigtop/manager/server/model/dto/StackDTO.java | 2 +
.../bigtop/manager/server/model/req/RepoReq.java | 2 +
.../bigtop/manager/server/model/vo/RepoVO.java | 2 +
.../RepoVO.java => stack/model/PackageModel.java} | 18 ++-
...pecificModel.java => PackageSpecificModel.java} | 4 +-
.../manager/server/stack/model/RepoModel.java | 6 +
.../manager/server/stack/model/ServiceModel.java | 6 +-
.../manager/server/stack/model/StackModel.java | 9 +-
.../src/main/resources/ddl/DaMeng-DDL-CREATE.sql | 2 +-
.../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 5 +-
.../resources/stacks/bigtop/3.3.0/metainfo.xml | 16 +--
.../bigtop/3.3.0/services/flink/metainfo.xml | 12 +-
.../stacks/bigtop/3.3.0/services/hdfs/metainfo.xml | 20 ++--
.../bigtop/3.3.0/services/kafka/metainfo.xml | 12 +-
.../bigtop/3.3.0/services/mapred/metainfo.xml | 20 ++--
.../stacks/bigtop/3.3.0/services/solr/metainfo.xml | 13 ++-
.../stacks/bigtop/3.3.0/services/tez/metainfo.xml | 12 +-
.../stacks/bigtop/3.3.0/services/yarn/metainfo.xml | 20 ++--
.../bigtop/3.3.0/services/zookeeper/metainfo.xml | 12 +-
.../main/resources/stacks/infra/1.0.0/metainfo.xml | 41 +++++++
.../prometheus/configuration/prometheus.xml | 51 ++++++++
.../1.0.0/services/prometheus}/metainfo.xml | 46 ++++----
.../infra/1.0.0/services/prometheus/order.json | 1 +
.../manager/stack/bigtop/param/BigtopParams.java | 54 +++++++++
.../bigtop/v3_3_0/flink/FlinkClientScript.java | 6 -
.../v3_3_0/flink/FlinkHistoryServerScript.java | 6 -
.../stack/bigtop/v3_3_0/flink/FlinkParams.java | 4 +-
.../stack/bigtop/v3_3_0/hdfs/DataNodeScript.java | 6 -
.../stack/bigtop/v3_3_0/hdfs/HdfsClientScript.java | 6 -
.../stack/bigtop/v3_3_0/hdfs/HdfsParams.java | 4 +-
.../stack/bigtop/v3_3_0/hdfs/NameNodeScript.java | 6 -
.../stack/bigtop/v3_3_0/hdfs/SNameNodeScript.java | 6 -
.../bigtop/v3_3_0/kafka/KafkaBrokerScript.java | 6 -
.../stack/bigtop/v3_3_0/kafka/KafkaParams.java | 4 +-
.../bigtop/v3_3_0/mapred/HistoryServerScript.java | 6 -
.../bigtop/v3_3_0/mapred/MapredClientScript.java | 6 -
.../bigtop/v3_3_0/mapred/Mapreduce2Params.java | 4 +-
.../stack/bigtop/v3_3_0/solr/SolrClientScript.java | 6 -
.../stack/bigtop/v3_3_0/solr/SolrParams.java | 4 +-
.../stack/bigtop/v3_3_0/solr/SolrServerScript.java | 6 -
.../stack/bigtop/v3_3_0/tez/TezClientScript.java | 6 -
.../manager/stack/bigtop/v3_3_0/tez/TezParams.java | 4 +-
.../bigtop/v3_3_0/yarn/NodeManagerScript.java | 6 -
.../bigtop/v3_3_0/yarn/ResourceManagerScript.java | 6 -
.../stack/bigtop/v3_3_0/yarn/YarnClientScript.java | 6 -
.../stack/bigtop/v3_3_0/yarn/YarnParams.java | 4 +-
.../v3_3_0/zookeeper/ZookeeperClientScript.java | 6 -
.../bigtop/v3_3_0/zookeeper/ZookeeperParams.java | 4 +-
.../v3_3_0/zookeeper/ZookeeperServerScript.java | 6 -
.../bigtop-manager-stack-core/pom.xml | 5 +
.../manager/stack/core/param/BaseParams.java | 88 +++++++-------
.../bigtop/manager/stack/core/param/Params.java | 15 ++-
.../manager/stack/core/spi/hook/InstallHook.java | 3 +-
.../stack/core/spi/script/AbstractScript.java | 48 ++++++++
.../stack/core/tarball/ChecksumValidator.java | 55 +++++++++
.../stack/core/tarball/TarballDownloader.java | 86 ++++++++++++++
.../stack/core/tarball/TarballExtractor.java | 129 +++++++++++++++++++++
.../manager/stack/core/utils/TarballUtils.java | 86 ++++++++++++++
.../stack/core/utils/linux/LinuxFileUtils.java | 12 +-
.../pom.xml | 22 +---
.../manager/stack/infra/param/InfraParams.java | 34 +++---
.../infra/v1_0_0/prometheus/PrometheusParams.java | 31 +++--
.../v1_0_0/prometheus/PrometheusServerScript.java} | 40 ++++---
.../infra/v1_0_0/prometheus/PrometheusSetup.java} | 36 +++---
bigtop-manager-stack/pom.xml | 1 +
bigtop-manager-ui/src/api/repo/types.ts | 1 +
pom.xml | 6 +
86 files changed, 973 insertions(+), 440 deletions(-)
diff --git a/bigtop-manager-agent/pom.xml b/bigtop-manager-agent/pom.xml
index 08fdcfc..7923b0f 100644
--- a/bigtop-manager-agent/pom.xml
+++ b/bigtop-manager-agent/pom.xml
@@ -63,6 +63,11 @@
<artifactId>bigtop-manager-stack-bigtop</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.bigtop</groupId>
+ <artifactId>bigtop-manager-stack-infra</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
diff --git a/bigtop-manager-bom/pom.xml b/bigtop-manager-bom/pom.xml
index d0a4ad4..72f101a 100644
--- a/bigtop-manager-bom/pom.xml
+++ b/bigtop-manager-bom/pom.xml
@@ -36,9 +36,10 @@
<freemarker.version>2.3.32</freemarker.version>
<common-lang3.version>3.12.0</common-lang3.version>
<snakeyaml.version>2.0</snakeyaml.version>
- <commons-io.version>2.13.0</commons-io.version>
+ <commons-io.version>2.16.1</commons-io.version>
<guava.version>32.1.1-jre</guava.version>
<commons-collections4.version>4.4</commons-collections4.version>
+ <commons-compress.version>1.26.2</commons-compress.version>
<jwt.version>4.4.0</jwt.version>
<janino.version>3.0.16</janino.version>
<eclipse-link.version>4.0.2</eclipse-link.version>
@@ -128,6 +129,12 @@
<version>${commons-collections4.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-compress</artifactId>
+ <version>${commons-compress.version}</version>
+ </dependency>
+
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
index a3b7a3c..bf7951c 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
+++
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/CommandPayload.java
@@ -20,7 +20,7 @@ package
org.apache.bigtop.manager.common.message.entity.payload;
import org.apache.bigtop.manager.common.enums.Command;
import org.apache.bigtop.manager.common.message.entity.pojo.CustomCommandInfo;
-import org.apache.bigtop.manager.common.message.entity.pojo.OSSpecificInfo;
+import
org.apache.bigtop.manager.common.message.entity.pojo.PackageSpecificInfo;
import org.apache.bigtop.manager.common.message.entity.pojo.ScriptInfo;
import lombok.Data;
@@ -56,5 +56,5 @@ public class CommandPayload extends BasePayload {
private String componentName;
- private List<OSSpecificInfo> osSpecifics;
+ private List<PackageSpecificInfo> packageSpecifics;
}
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java
similarity index 84%
copy from
bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
copy to
bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java
index c48c8b1..dfccbc5 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
+++
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java
@@ -25,17 +25,9 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class RepoInfo {
+public class PackageInfo {
- private String repoId;
+ private String name;
- private String repoName;
-
- private String baseUrl;
-
- private String os;
-
- private String arch;
-
- private String mirrorList;
+ private String checksum;
}
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/OSSpecificInfo.java
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageSpecificInfo.java
similarity index 92%
rename from
bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/OSSpecificInfo.java
rename to
bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageSpecificInfo.java
index 9c061e8..13be034 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/OSSpecificInfo.java
+++
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageSpecificInfo.java
@@ -23,11 +23,11 @@ import lombok.Data;
import java.util.List;
@Data
-public class OSSpecificInfo {
+public class PackageSpecificInfo {
private List<String> os;
private List<String> arch;
- private List<String> packages;
+ private List<PackageInfo> packages;
}
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
index c48c8b1..4eb4890 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
+++
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
@@ -31,6 +31,8 @@ public class RepoInfo {
private String repoName;
+ private String repoType;
+
private String baseUrl;
private String os;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
index 4f502bf..d0a922a 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/RepoPO.java
@@ -69,6 +69,9 @@ public class RepoPO extends BasePO {
@Column(name = "repo_name")
private String repoName;
+ @Column(name = "repo_type")
+ private String repoType;
+
@ManyToOne
@JoinColumn(name = "cluster_id", foreignKey =
@ForeignKey(ConstraintMode.NO_CONSTRAINT))
private ClusterPO clusterPO;
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 f49a254..51a7369 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
@@ -64,14 +64,14 @@ public class ServicePO extends BasePO {
@Column(name = "display_name")
private String displayName;
- @Column(name = "service_desc")
+ @Column(name = "service_desc", length = 1024)
private String serviceDesc;
@Column(name = "service_version")
private String serviceVersion;
- @Column(name = "os_specifics")
- private String osSpecifics;
+ @Column(name = "package_specifics", length = 1024)
+ private String packageSpecifics;
@Column(name = "service_user")
private String serviceUser;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
index 8987db0..2dc180e 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractJob.java
@@ -87,18 +87,23 @@ public abstract class AbstractJob implements Job {
@Override
public void run() {
- beforeRun();
-
boolean success = true;
- LinkedBlockingQueue<Stage> queue = new LinkedBlockingQueue<>(stages);
- while (!queue.isEmpty()) {
- Stage stage = queue.poll();
- Boolean stageSuccess = stage.run();
-
- if (!stageSuccess) {
- success = false;
- break;
+
+ try {
+ beforeRun();
+
+ LinkedBlockingQueue<Stage> queue = new
LinkedBlockingQueue<>(stages);
+ while (!queue.isEmpty()) {
+ Stage stage = queue.poll();
+ Boolean stageSuccess = stage.run();
+
+ if (!stageSuccess) {
+ success = false;
+ break;
+ }
}
+ } catch (Exception e) {
+ success = false;
}
if (success) {
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 76bf6f5..a5bd909 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
@@ -96,7 +96,7 @@ public abstract class AbstractServiceJob extends AbstractJob {
protected List<String> getTodoListForCommand(Command command) {
try {
- List<String> orderedList = dag.topologicalSort();
+ List<String> orderedList = dag.getAllNodesList().isEmpty() ? new
ArrayList<>() : dag.topologicalSort();
List<String> componentNames = getComponentNames();
List<String> componentCommandNames = new
ArrayList<>(componentNames.stream()
.map(x -> x + "-" + command.name().toUpperCase())
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 9e2b589..fb6029a 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
@@ -78,7 +78,7 @@ public abstract class AbstractComponentStage extends
AbstractStage {
Map<String, Object> properties = new HashMap<>();
properties.put("customCommands", componentDTO.getCustomCommands());
- properties.put("osSpecifics", serviceDTO.getOsSpecifics());
+ properties.put("packageSpecifics", serviceDTO.getPackageSpecifics());
properties.put("commandScript", componentDTO.getCommandScript());
taskContext.setProperties(properties);
return taskContext;
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 4b72b62..fd30373 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
@@ -79,24 +79,31 @@ public abstract class AbstractStage implements Stage {
@Override
public Boolean run() {
- beforeRun();
-
- List<CompletableFuture<Boolean>> futures = new ArrayList<>();
- for (Task task : tasks) {
- futures.add(CompletableFuture.supplyAsync(task::run));
+ boolean allTaskSuccess;
+
+ try {
+ beforeRun();
+
+ List<CompletableFuture<Boolean>> futures = new ArrayList<>();
+ for (Task task : tasks) {
+ futures.add(CompletableFuture.supplyAsync(task::run));
+ }
+
+ List<Boolean> taskResults = futures.stream()
+ .map((future) -> {
+ try {
+ return future.get();
+ } catch (Exception e) {
+ return false;
+ }
+ })
+ .toList();
+
+ allTaskSuccess =
taskResults.stream().allMatch(Boolean::booleanValue);
+ } catch (Exception e) {
+ allTaskSuccess = false;
}
- List<Boolean> taskResults = futures.stream()
- .map((future) -> {
- try {
- return future.get();
- } catch (Exception e) {
- return false;
- }
- })
- .toList();
-
- boolean allTaskSuccess =
taskResults.stream().allMatch(Boolean::booleanValue);
if (allTaskSuccess) {
onSuccess();
} else {
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
index 7ab444f..763bf0a 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
@@ -20,7 +20,8 @@ package org.apache.bigtop.manager.server.command.task;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
import org.apache.bigtop.manager.common.message.entity.pojo.CustomCommandInfo;
-import org.apache.bigtop.manager.common.message.entity.pojo.OSSpecificInfo;
+import org.apache.bigtop.manager.common.message.entity.pojo.PackageInfo;
+import
org.apache.bigtop.manager.common.message.entity.pojo.PackageSpecificInfo;
import org.apache.bigtop.manager.common.message.entity.pojo.ScriptInfo;
import org.apache.bigtop.manager.common.utils.JsonUtils;
import org.apache.bigtop.manager.dao.repository.HostComponentRepository;
@@ -28,7 +29,8 @@ import
org.apache.bigtop.manager.grpc.generated.CommandRequest;
import org.apache.bigtop.manager.grpc.generated.CommandType;
import org.apache.bigtop.manager.server.holder.SpringContextHolder;
import org.apache.bigtop.manager.server.model.dto.CustomCommandDTO;
-import org.apache.bigtop.manager.server.model.dto.OSSpecificDTO;
+import org.apache.bigtop.manager.server.model.dto.PackageDTO;
+import org.apache.bigtop.manager.server.model.dto.PackageSpecificDTO;
import org.apache.bigtop.manager.server.model.dto.ScriptDTO;
import java.util.ArrayList;
@@ -67,7 +69,8 @@ public abstract class AbstractComponentTask extends
AbstractTask {
commandPayload.setCustomCommands(
convertCustomCommandInfo((List<CustomCommandDTO>)
properties.get("customCommands")));
-
commandPayload.setOsSpecifics(convertOSSpecificInfo((List<OSSpecificDTO>)
properties.get("osSpecifics")));
+ commandPayload.setPackageSpecifics(
+ convertPackageSpecificInfo((List<PackageSpecificDTO>)
properties.get("packageSpecifics")));
commandPayload.setCommandScript(convertScriptInfo((ScriptDTO)
properties.get("commandScript")));
CommandRequest.Builder builder = CommandRequest.newBuilder();
@@ -90,21 +93,28 @@ public abstract class AbstractComponentTask extends
AbstractTask {
return scriptInfo;
}
- private List<OSSpecificInfo> convertOSSpecificInfo(List<OSSpecificDTO>
osSpecificDTOs) {
- if (osSpecificDTOs == null) {
+ private List<PackageSpecificInfo>
convertPackageSpecificInfo(List<PackageSpecificDTO> packageSpecificDTOList) {
+ if (packageSpecificDTOList == null) {
return new ArrayList<>();
}
- List<OSSpecificInfo> osSpecificInfos = new ArrayList<>();
- for (OSSpecificDTO osSpecificDTO : osSpecificDTOs) {
- OSSpecificInfo osSpecificInfo = new OSSpecificInfo();
- osSpecificInfo.setOs(osSpecificDTO.getOs());
- osSpecificInfo.setArch(osSpecificDTO.getArch());
- osSpecificInfo.setPackages(osSpecificDTO.getPackages());
- osSpecificInfos.add(osSpecificInfo);
+ List<PackageSpecificInfo> packageSpecificInfos = new ArrayList<>();
+ for (PackageSpecificDTO packageSpecificDTO : packageSpecificDTOList) {
+ PackageSpecificInfo packageSpecificInfo = new
PackageSpecificInfo();
+ packageSpecificInfo.setOs(packageSpecificDTO.getOs());
+ packageSpecificInfo.setArch(packageSpecificDTO.getArch());
+ List<PackageInfo> packageInfoList = new ArrayList<>();
+ for (PackageDTO packageDTO : packageSpecificDTO.getPackages()) {
+ PackageInfo packageInfo = new PackageInfo();
+ packageInfo.setName(packageDTO.getName());
+ packageInfo.setChecksum(packageDTO.getChecksum());
+ packageInfoList.add(packageInfo);
+ }
+ packageSpecificInfo.setPackages(packageInfoList);
+ packageSpecificInfos.add(packageSpecificInfo);
}
- return osSpecificInfos;
+ return packageSpecificInfos;
}
private List<CustomCommandInfo>
convertCustomCommandInfo(List<CustomCommandDTO> customCommandDTOs) {
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 c0916ee..fc750b7 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
@@ -71,17 +71,23 @@ public abstract class AbstractTask implements Task {
@Override
public Boolean run() {
- beforeRun();
+ boolean taskSuccess;
- CommandRequest.Builder builder =
CommandRequest.newBuilder(getCommandRequest());
- builder.setTaskId(getTaskPO().getId());
- commandRequest = builder.build();
+ try {
+ beforeRun();
- CommandServiceGrpc.CommandServiceBlockingStub stub =
GrpcClient.getBlockingStub(
- taskContext.getHostname(),
CommandServiceGrpc.CommandServiceBlockingStub.class);
- CommandReply reply = stub.exec(commandRequest);
+ CommandRequest.Builder builder =
CommandRequest.newBuilder(getCommandRequest());
+ builder.setTaskId(getTaskPO().getId());
+ commandRequest = builder.build();
- boolean taskSuccess = reply != null && reply.getCode() ==
MessageConstants.SUCCESS_CODE;
+ CommandServiceGrpc.CommandServiceBlockingStub stub =
GrpcClient.getBlockingStub(
+ taskContext.getHostname(),
CommandServiceGrpc.CommandServiceBlockingStub.class);
+ CommandReply reply = stub.exec(commandRequest);
+
+ taskSuccess = reply != null && reply.getCode() ==
MessageConstants.SUCCESS_CODE;
+ } catch (Exception e) {
+ taskSuccess = false;
+ }
if (taskSuccess) {
onSuccess();
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConverter.java
index bee6a7f..320f204 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ServiceConverter.java
@@ -41,7 +41,7 @@ public interface ServiceConverter {
ServiceConverter INSTANCE = Mappers.getMapper(ServiceConverter.class);
- @Mapping(target = "osSpecifics", source = "osSpecifics", qualifiedByName =
"obj2Json")
+ @Mapping(target = "packageSpecifics", source = "packageSpecifics",
qualifiedByName = "obj2Json")
@Mapping(target = "requiredServices", source = "requiredServices",
qualifiedByName = "obj2Json")
@Mapping(target = "clusterPO", expression = "java(clusterPO)")
ServicePO fromDTO2PO(ServiceDTO serviceDTO, @Context ClusterPO clusterPO);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
similarity index 86%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
index aee938d..8cabb51 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java
@@ -25,15 +25,9 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class RepoDTO {
+public class PackageDTO {
- private String repoId;
+ private String name;
- private String repoName;
-
- private String baseUrl;
-
- private String os;
-
- private String arch;
+ private String checksum;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/OSSpecificDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageSpecificDTO.java
similarity index 93%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/OSSpecificDTO.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageSpecificDTO.java
index 4160f07..23c81a4 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/OSSpecificDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageSpecificDTO.java
@@ -23,11 +23,11 @@ import lombok.Data;
import java.util.List;
@Data
-public class OSSpecificDTO {
+public class PackageSpecificDTO {
private List<String> os;
private List<String> arch;
- private List<String> packages;
+ private List<PackageDTO> packages;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
index aee938d..6683956 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/RepoDTO.java
@@ -31,6 +31,8 @@ public class RepoDTO {
private String repoName;
+ private String repoType;
+
private String baseUrl;
private String os;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceDTO.java
index b0c5a32..cb742ee 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ServiceDTO.java
@@ -35,7 +35,7 @@ public class ServiceDTO {
private String serviceUser;
- private List<OSSpecificDTO> osSpecifics;
+ private List<PackageSpecificDTO> packageSpecifics;
private List<ComponentDTO> components;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/StackDTO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/StackDTO.java
index a1cac07..9ad94ac 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/StackDTO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/StackDTO.java
@@ -29,6 +29,8 @@ public class StackDTO {
private String stackVersion;
+ private String scope;
+
private String root;
private String userGroup;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/RepoReq.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/RepoReq.java
index c2d26ca..324dc97 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/RepoReq.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/RepoReq.java
@@ -31,6 +31,8 @@ public class RepoReq {
private String repoName;
+ private String repoType;
+
private String baseUrl;
private String os;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
index ee7ca0f..5968ea0 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
@@ -27,6 +27,8 @@ public class RepoVO {
private String repoName;
+ private String repoType;
+
private String baseUrl;
private String os;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
similarity index 75%
copy from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
index ee7ca0f..ca9b2be 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/RepoVO.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java
@@ -16,20 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.server.model.vo;
+package org.apache.bigtop.manager.server.stack.model;
import lombok.Data;
-@Data
-public class RepoVO {
-
- private String repoId;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
- private String repoName;
-
- private String baseUrl;
+@Data
+@XmlAccessorType(XmlAccessType.FIELD)
+public class PackageModel {
- private String os;
+ private String name;
- private String arch;
+ private String checksum;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/OSSpecificModel.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageSpecificModel.java
similarity index 95%
rename from
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/OSSpecificModel.java
rename to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageSpecificModel.java
index b2dc423..a600b76 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/OSSpecificModel.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageSpecificModel.java
@@ -29,7 +29,7 @@ import java.util.List;
@Data
@XmlAccessorType(XmlAccessType.FIELD)
-public class OSSpecificModel {
+public class PackageSpecificModel {
@XmlElementWrapper(name = "operating-systems")
@XmlElements(@XmlElement(name = "os"))
@@ -41,5 +41,5 @@ public class OSSpecificModel {
@XmlElementWrapper(name = "packages")
@XmlElements(@XmlElement(name = "package"))
- private List<String> packages;
+ private List<PackageModel> packages;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/RepoModel.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/RepoModel.java
index 3ea4887..d759e4d 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/RepoModel.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/RepoModel.java
@@ -38,6 +38,12 @@ public class RepoModel {
@XmlElement(name = "repo-name")
private String repoName;
+ /**
+ * Type of repositories, values can be 'binary', 'tarball'.
+ */
+ @XmlElement(name = "repo-type")
+ private String repoType;
+
@XmlElement(name = "base-url")
private String baseUrl;
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/ServiceModel.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/ServiceModel.java
index 944bb0a..00a1092 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/ServiceModel.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/ServiceModel.java
@@ -42,9 +42,9 @@ public class ServiceModel {
private String user;
- @XmlElementWrapper(name = "os-specifics")
- @XmlElements(@XmlElement(name = "os-specific"))
- private List<OSSpecificModel> osSpecifics;
+ @XmlElementWrapper(name = "package-specifics")
+ @XmlElements(@XmlElement(name = "package-specific"))
+ private List<PackageSpecificModel> packageSpecifics;
@XmlElementWrapper(name = "components")
@XmlElements(@XmlElement(name = "component"))
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/StackModel.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/StackModel.java
index 45aeb40..a896586 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/StackModel.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/StackModel.java
@@ -37,11 +37,16 @@ public class StackModel {
@XmlElement(name = "stack-version")
private String stackVersion;
- private String root;
-
@XmlElement(name = "user-group")
private String userGroup;
+ /**
+ * The scope of the stack, should be one of 'global' or 'cluster'.
+ */
+ private String scope;
+
+ private String root;
+
private String packages;
@XmlElement(name = "repo-template")
diff --git a/bigtop-manager-server/src/main/resources/ddl/DaMeng-DDL-CREATE.sql
b/bigtop-manager-server/src/main/resources/ddl/DaMeng-DDL-CREATE.sql
index f2eabdd..6e24db9 100644
--- a/bigtop-manager-server/src/main/resources/ddl/DaMeng-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/DaMeng-DDL-CREATE.sql
@@ -188,7 +188,7 @@ CREATE TABLE "bigtop_manager"."service" (
"update_by" BIGINT NULL,
"update_time" DATETIME NULL,
"display_name" VARCHAR(255) NULL,
- "os_specifics" VARCHAR(255) NULL,
+ "package_specifics" VARCHAR(255) NULL,
"required_service" VARCHAR(255) NULL,
"service_desc" VARCHAR(255) NULL,
"service_group" VARCHAR(255) NULL,
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 1573200..ba9147f 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
@@ -168,6 +168,7 @@ CREATE TABLE `repo`
`base_url` VARCHAR(64) DEFAULT NULL,
`repo_id` VARCHAR(32) DEFAULT NULL,
`repo_name` VARCHAR(64) DEFAULT NULL,
+ `repo_type` VARCHAR(64) DEFAULT NULL,
`create_time` DATETIME DEFAULT NULL,
`update_time` DATETIME DEFAULT NULL,
`create_by` BIGINT,
@@ -256,9 +257,9 @@ CREATE TABLE `service`
`create_by` BIGINT,
`create_time` DATETIME,
`display_name` VARCHAR(255),
- `os_specifics` VARCHAR(255),
+ `package_specifics` VARCHAR(1024),
`required_services` VARCHAR(255),
- `service_desc` VARCHAR(255),
+ `service_desc` VARCHAR(1024),
`service_name` VARCHAR(255),
`service_user` VARCHAR(255),
`service_version` VARCHAR(255),
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/metainfo.xml
index ea14359..53a82c3 100644
--- a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/metainfo.xml
+++ b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/metainfo.xml
@@ -23,6 +23,7 @@
<stack-name>bigtop</stack-name>
<stack-version>3.3.0</stack-version>
<user-group>hadoop</user-group>
+ <scope>cluster</scope>
<root>/opt</root>
<packages>curl,wget</packages>
<repo-template><![CDATA[
@@ -39,23 +40,10 @@ gpgcheck=0
]]>
</repo-template>
<repos>
- <repo>
- <repo-id>Bigtop-3.3.0</repo-id>
- <repo-name>Bigtop-3.3.0 for CentOS-7 x86_64</repo-name>
- <os>centos7</os>
- <arch>x86_64</arch>
-
<base-url>http://123.56.2.244/bigtop/3.3.0/centos7/x86_64/</base-url>
- </repo>
- <repo>
- <repo-id>Bigtop-3.3.0</repo-id>
- <repo-name>Bigtop-3.3.0 for CentOS-7 aarch64</repo-name>
- <os>centos7</os>
- <arch>aarch64</arch>
-
<base-url>https://bigtop-snapshot.s3.amazonaws.com/centos-7/$basearch</base-url>
- </repo>
<repo>
<repo-id>Bigtop-3.3.0</repo-id>
<repo-name>Bigtop-3.3.0 for RockyLinux-8 x86_64</repo-name>
+ <repo-type>binary</repo-type>
<os>rocky8</os>
<arch>x86_64</arch>
<base-url>http://123.56.2.244/bigtop/3.3.0/rocky8/x86_64/</base-url>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/flink/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/flink/metainfo.xml
index 5598716..c62639a 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/flink/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/flink/metainfo.xml
@@ -58,8 +58,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -68,10 +68,12 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>flink_3_3_0</package>
+ <package>
+ <name>flink_3_3_0</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
<required-services>
<service>yarn</service>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hdfs/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hdfs/metainfo.xml
index 52dd1fb..5878f17 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hdfs/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hdfs/metainfo.xml
@@ -98,8 +98,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -108,12 +108,18 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>hadoop_3_3_0</package>
- <package>hadoop_3_3_0-client</package>
- <package>hadoop_3_3_0-libhdfs</package>
+ <package>
+ <name>hadoop_3_3_0</name>
+ </package>
+ <package>
+ <name>hadoop_3_3_0-client</name>
+ </package>
+ <package>
+ <name>hadoop_3_3_0-libhdfs</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
<required-services>
<service>zookeeper</service>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/metainfo.xml
index 93febf4..a31f99c 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/kafka/metainfo.xml
@@ -54,8 +54,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -64,10 +64,12 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>kafka_3_3_0</package>
+ <package>
+ <name>kafka_3_3_0</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
<required-services>
<service>zookeeper</service>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/mapred/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/mapred/metainfo.xml
index 95d6894..4ece698 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/mapred/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/mapred/metainfo.xml
@@ -58,8 +58,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -68,12 +68,18 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>hadoop_3_3_0-yarn</package>
- <package>hadoop_3_3_0-hdfs</package>
- <package>hadoop_3_3_0-mapreduce</package>
+ <package>
+ <name>hadoop_3_3_0-yarn</name>
+ </package>
+ <package>
+ <name>hadoop_3_3_0-hdfs</name>
+ </package>
+ <package>
+ <name>hadoop_3_3_0-mapreduce</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
<required-services>
<service>yarn</service>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
index 15581b2..753f5cf 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
@@ -48,8 +48,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -58,10 +58,13 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>solr_3_3_0</package>
+ <package>
+ <name>solr_3_3_0</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
+
<required-services>
<service>zookeeper</service>
</required-services>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/tez/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/tez/metainfo.xml
index 86c9ed8..59aacf0 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/tez/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/tez/metainfo.xml
@@ -40,8 +40,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -50,10 +50,12 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>tez_3_3_0</package>
+ <package>
+ <name>tez_3_3_0</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
<required-services>
<service>hdfs</service>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/yarn/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/yarn/metainfo.xml
index f66e0ae..6ccd747 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/yarn/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/yarn/metainfo.xml
@@ -87,8 +87,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -97,12 +97,18 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>hadoop_3_3_0-yarn</package>
- <package>hadoop_3_3_0-hdfs</package>
- <package>hadoop_3_3_0-mapreduce</package>
+ <package>
+ <name>hadoop_3_3_0-yarn</name>
+ </package>
+ <package>
+ <name>hadoop_3_3_0-hdfs</name>
+ </package>
+ <package>
+ <name>hadoop_3_3_0-mapreduce</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
<required-services>
<service>zookeeper</service>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/metainfo.xml
index 620bf9c..df686c0 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/metainfo.xml
@@ -54,8 +54,8 @@
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -64,9 +64,11 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>zookeeper_3_3_0</package>
+ <package>
+ <name>zookeeper_3_3_0</name>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
+ </package-specific>
+ </package-specifics>
</service>
</metainfo>
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/metainfo.xml
new file mode 100644
index 0000000..74a38f3
--- /dev/null
+++ b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/metainfo.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<metainfo>
+ <stack>
+ <stack-name>infra</stack-name>
+ <stack-version>1.0.0</stack-version>
+ <user-group>hadoop</user-group>
+ <scope>global</scope>
+ <root>/opt</root>
+ <packages>curl,wget</packages>
+ <repo-template />
+ <repos>
+ <repo>
+ <repo-id>Infra-1.0.0</repo-id>
+ <repo-name>Infra-1.0.0 for RockyLinux-8 x86_64</repo-name>
+ <repo-type>tarball</repo-type>
+ <os>rocky8</os>
+ <arch>x86_64</arch>
+ <base-url>http://123.56.2.244/infra/1.0.0/tarballs/</base-url>
+ </repo>
+ </repos>
+ </stack>
+</metainfo>
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/configuration/prometheus.xml
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/configuration/prometheus.xml
new file mode 100644
index 0000000..03d7e8a
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/configuration/prometheus.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<configuration>
+ <property>
+ <name>content</name>
+ <description>This is the freemarker template for prometheus.yml
file</description>
+ <value><![CDATA[
+global:
+ scrape_interval: 15s # By default, scrape targets every 15 seconds.
+
+ # Attach these labels to any time series or alerts when communicating with
+ # external systems (federation, remote storage, Alertmanager).
+ external_labels:
+ monitor: 'codelab-monitor'
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+ # The job name is added as a label `job=<job_name>` to any timeseries
scraped from this config.
+ - job_name: 'prometheus'
+
+ # Override the global default and scrape targets from this job every 5
seconds.
+ scrape_interval: 5s
+
+ static_configs:
+ - targets: ['localhost:9090']
+]]>
+ </value>
+ <attrs>
+ <type>longtext</type>
+ </attrs>
+ </property>
+</configuration>
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
similarity index 57%
copy from
bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
copy to
bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
index 15581b2..92b2fdd 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/solr/metainfo.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml
@@ -17,39 +17,35 @@
~ specific language governing permissions and limitations
~ under the License.
-->
+
<metainfo>
- <schema-version>2.0</schema-version>
<service>
- <name>solr</name>
- <display-name>Solr</display-name>
+ <name>prometheus</name>
+ <display-name>Prometheus</display-name>
<desc>
- Solr is the popular, blazing-fast, open source enterprise search
platform built on Apache Lucene.
+ Prometheus, a Cloud Native Computing Foundation project, is a
systems and service monitoring system. It
+ collects metrics from configured targets at given intervals,
evaluates rule expressions, displays the
+ results, and can trigger alerts when specified conditions are
observed.
</desc>
- <version>8.11.2-2</version>
- <user>solr</user>
+ <version>2.54.0</version>
+ <user>prometheus</user>
+
<components>
<component>
- <name>solr_instance</name>
- <display-name>Solr Instance</display-name>
+ <name>prometheus_server</name>
+ <display-name>Prometheus Server</display-name>
<category>master</category>
<cardinality>1+</cardinality>
<command-script>
-
<script-id>org.apache.bigtop.manager.stack.bigtop.v3_3_0.solr.SolrServerScript</script-id>
+
<script-id>org.apache.bigtop.manager.stack.infra.v1_0_0.prometheus.PrometheusServerScript</script-id>
<script-type>java</script-type>
<timeout>1200</timeout>
</command-script>
- <quick-link>
- <display-name>Solr UI</display-name>
- <http-port-property>solr_port</http-port-property>
- <http-port-default>8983</http-port-default>
- <https-port-property>solr_port</https-port-property>
- <https-port-default>8983</https-port-default>
- </quick-link>
</component>
</components>
- <os-specifics>
- <os-specific>
+ <package-specifics>
+ <package-specific>
<operating-systems>
<os>centos7</os>
<os>rocky8</os>
@@ -58,12 +54,12 @@
<arch>x86_64</arch>
</architectures>
<packages>
- <package>solr_3_3_0</package>
+ <package>
+ <name>prometheus-2.54.0.linux-amd64.tar.gz</name>
+
<checksum>SHA-256:465e1393a0cca9705598f6ffaf96ffa78d0347808ab21386b0c6aaec2cf7aa13</checksum>
+ </package>
</packages>
- </os-specific>
- </os-specifics>
- <required-services>
- <service>zookeeper</service>
- </required-services>
+ </package-specific>
+ </package-specifics>
</service>
-</metainfo>
+</metainfo>
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/order.json
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/order.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/order.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
new file mode 100644
index 0000000..8ffe694
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java
@@ -0,0 +1,54 @@
+/*
+ * 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.stack.bigtop.param;
+
+import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.core.param.BaseParams;
+
+import java.text.MessageFormat;
+
+public abstract class BigtopParams extends BaseParams {
+
+ protected BigtopParams(CommandPayload commandPayload) {
+ super(commandPayload);
+ }
+
+ public String stackBinDir() {
+ String stackName = this.commandPayload.getStackName();
+ String stackVersion = this.commandPayload.getStackVersion();
+ String root = this.commandPayload.getRoot();
+ return MessageFormat.format("{0}/{1}/{2}/usr/bin", root,
stackName.toLowerCase(), stackVersion);
+ }
+
+ public String stackLibDir() {
+ String stackName = this.commandPayload.getStackName();
+ String stackVersion = this.commandPayload.getStackVersion();
+ String root = this.commandPayload.getRoot();
+ return MessageFormat.format("{0}/{1}/{2}/usr/lib", root,
stackName.toLowerCase(), stackVersion);
+ }
+
+ /**
+ * service home dir
+ */
+ @Override
+ public String serviceHome() {
+ String service = this.commandPayload.getServiceName();
+ return stackLibDir() + "/" + service.toLowerCase();
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkClientScript.java
index cdda767..fdfaccd 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class FlinkClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return FlinkSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkHistoryServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkHistoryServerScript.java
index e4dc063..3466393 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkHistoryServerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkHistoryServerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -31,11 +30,6 @@ import com.google.auto.service.AutoService;
@AutoService(Script.class)
public class FlinkHistoryServerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return FlinkSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkParams.java
index 8ae12cd..6c8b0b4 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/flink/FlinkParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.flink;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import lombok.Getter;
@@ -31,7 +31,7 @@ import java.util.Map;
@Getter
@Slf4j
-public class FlinkParams extends BaseParams {
+public class FlinkParams extends BigtopParams {
private String flinkLogDir;
private String flinkPidDir;
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/DataNodeScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/DataNodeScript.java
index 2085834..b48090f 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/DataNodeScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/DataNodeScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -35,11 +34,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class DataNodeScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return HdfsSetup.config(params, "datanode");
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsClientScript.java
index 02262e7..455d940 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class HdfsClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return HdfsSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsParams.java
index aa45a5d..df7122a 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/HdfsParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hdfs;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import org.apache.commons.lang3.StringUtils;
@@ -35,7 +35,7 @@ import java.util.Map;
@Getter
@Slf4j
-public class HdfsParams extends BaseParams {
+public class HdfsParams extends BigtopParams {
private String hadoopLogDir = "/var/log/hadoop";
private String hadoopPidDir = "/var/run/hadoop";
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/NameNodeScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/NameNodeScript.java
index 5f30f29..2172414 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/NameNodeScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/NameNodeScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -35,11 +34,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class NameNodeScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return HdfsSetup.config(params, "namenode");
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/SNameNodeScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/SNameNodeScript.java
index 67eba56..c92a283 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/SNameNodeScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hdfs/SNameNodeScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -35,11 +34,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class SNameNodeScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return HdfsSetup.config(params, "secondarynamenode");
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaBrokerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaBrokerScript.java
index 7cc29c4..308b102 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaBrokerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaBrokerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -36,11 +35,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class KafkaBrokerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return KafkaSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaParams.java
index c3c6411..faa6ea1 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/kafka/KafkaParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.kafka;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import lombok.Getter;
@@ -28,7 +28,7 @@ import lombok.Getter;
import java.util.Map;
@Getter
-public class KafkaParams extends BaseParams {
+public class KafkaParams extends BigtopParams {
private String kafkaLogDir = "/var/log/kafka";
private String kafkaPidDir = "/var/run/kafka";
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
index 58e5b39..b07d4b9 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -33,11 +32,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class HistoryServerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return MapredSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/MapredClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/MapredClientScript.java
index 48429f5..1aea957 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/MapredClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/MapredClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class MapredClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return MapredSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/Mapreduce2Params.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/Mapreduce2Params.java
index f690b09..f4491f6 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/Mapreduce2Params.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/Mapreduce2Params.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.mapred;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import lombok.Getter;
@@ -31,7 +31,7 @@ import java.util.Map;
@Getter
@Slf4j
-public class Mapreduce2Params extends BaseParams {
+public class Mapreduce2Params extends BigtopParams {
private String mapredEnvContent;
private String mapredLogDir;
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrClientScript.java
index 23320fe..e7a2b6a 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class SolrClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return SolrSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrParams.java
index 2f5a9f1..4e68b79 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.solr;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import lombok.Getter;
@@ -32,7 +32,7 @@ import java.util.Map;
@Getter
@Slf4j
-public class SolrParams extends BaseParams {
+public class SolrParams extends BigtopParams {
private String solrPort = "8983";
private String solrLogDir = "/var/log/solr";
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrServerScript.java
index fdff7da..dd93fa7 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrServerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/solr/SolrServerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -36,11 +35,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class SolrServerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return SolrSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezClientScript.java
index 5db7b46..832ada5 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class TezClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return TezSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezParams.java
index f74724d..261fd0e 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/tez/TezParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.tez;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import org.apache.commons.lang3.StringUtils;
@@ -33,7 +33,7 @@ import java.util.Map;
@Getter
@Slf4j
-public class TezParams extends BaseParams {
+public class TezParams extends BigtopParams {
private String headDumpOpts;
private String tezEnvContent;
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/NodeManagerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/NodeManagerScript.java
index 8f89d71..ac90d6b 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/NodeManagerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/NodeManagerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -35,11 +34,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class NodeManagerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return YarnSetup.config(params, "nodemanager");
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/ResourceManagerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/ResourceManagerScript.java
index 0db3b11..416b69f 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/ResourceManagerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/ResourceManagerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -35,11 +34,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class ResourceManagerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return YarnSetup.config(params, "resourcemanager");
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnClientScript.java
index 10e3d00..cbd29d0 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class YarnClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return YarnSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnParams.java
index e92dafa..24fbb1d 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/yarn/YarnParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.yarn;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import lombok.Getter;
@@ -32,7 +32,7 @@ import java.util.Map;
@Getter
@Slf4j
-public class YarnParams extends BaseParams {
+public class YarnParams extends BigtopParams {
private String yarnLogDir = "/var/log/hadoop-yarn";
private String yarnPidDir = "/var/run/hadoop-yarn";
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperClientScript.java
index 067ef09..87faa20 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperClientScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperClientScript.java
@@ -22,7 +22,6 @@ import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +30,6 @@ import lombok.extern.slf4j.Slf4j;
@AutoService(Script.class)
public class ZookeeperClientScript extends AbstractClientScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return ZookeeperSetup.config(params);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperParams.java
index f74faba..05678f7 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperParams.java
@@ -19,8 +19,8 @@
package org.apache.bigtop.manager.stack.bigtop.v3_3_0.zookeeper;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
-import org.apache.bigtop.manager.stack.core.param.BaseParams;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import lombok.Getter;
@@ -28,7 +28,7 @@ import lombok.Getter;
import java.util.Map;
@Getter
-public class ZookeeperParams extends BaseParams {
+public class ZookeeperParams extends BigtopParams {
private String zookeeperLogDir = "/var/log/zookeeper";
private String zookeeperPidDir = "/var/run/zookeeper";
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperServerScript.java
index 4483094..0a7ed50 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperServerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/zookeeper/ZookeeperServerScript.java
@@ -23,7 +23,6 @@ import
org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
@@ -36,11 +35,6 @@ import java.text.MessageFormat;
@AutoService(Script.class)
public class ZookeeperServerScript extends AbstractServerScript {
- @Override
- public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
- }
-
@Override
public ShellResult configure(Params params) {
return ZookeeperSetup.config(params);
diff --git a/bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
b/bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
index 0423dce..d9591a6 100644
--- a/bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
+++ b/bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
@@ -49,5 +49,10 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-compress</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
index 49bd5ce..4a4111b 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/BaseParams.java
@@ -20,10 +20,13 @@ package org.apache.bigtop.manager.stack.core.param;
import org.apache.bigtop.manager.common.enums.Command;
import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
-import org.apache.bigtop.manager.common.message.entity.pojo.OSSpecificInfo;
+import org.apache.bigtop.manager.common.message.entity.pojo.PackageInfo;
+import
org.apache.bigtop.manager.common.message.entity.pojo.PackageSpecificInfo;
+import org.apache.bigtop.manager.common.message.entity.pojo.RepoInfo;
import org.apache.bigtop.manager.common.utils.NetUtils;
import org.apache.bigtop.manager.common.utils.os.OSDetection;
import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
+import org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
import org.apache.commons.lang3.StringUtils;
@@ -33,6 +36,7 @@ import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Method;
import java.text.MessageFormat;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -72,72 +76,66 @@ public abstract class BaseParams implements Params {
globalParamsMap.remove("content");
}
- /**
- * get the package list according to the os and arch
- */
- public List<String> getPackageList() {
- List<OSSpecificInfo> osSpecifics =
this.commandPayload.getOsSpecifics();
- if (osSpecifics == null) {
- return List.of();
- }
-
- String os = OSDetection.getOS();
- String arch = OSDetection.getArch();
- for (OSSpecificInfo osSpecific : osSpecifics) {
- List<String> pkgOS = osSpecific.getOs();
- List<String> pkgArch = osSpecific.getArch();
- if (pkgOS.contains(os) && pkgArch.contains(arch)) {
- return osSpecific.getPackages();
- }
- }
-
- return List.of();
- }
-
public String hostname() {
return NetUtils.getHostname();
}
- public String stackBinDir() {
- String stackName = this.commandPayload.getStackName();
- String stackVersion = this.commandPayload.getStackVersion();
- String root = this.commandPayload.getRoot();
- return MessageFormat.format("{0}/{1}/{2}/usr/bin", root,
stackName.toLowerCase(), stackVersion);
- }
-
- public String stackLibDir() {
- String stackName = this.commandPayload.getStackName();
- String stackVersion = this.commandPayload.getStackVersion();
- String root = this.commandPayload.getRoot();
- return MessageFormat.format("{0}/{1}/{2}/usr/lib", root,
stackName.toLowerCase(), stackVersion);
- }
-
- /**
- * service home dir
- */
- public String serviceHome() {
- String service = this.commandPayload.getServiceName();
- return stackLibDir() + "/" + service.toLowerCase();
- }
-
/**
* service conf dir
*/
+ @Override
public String confDir() {
return "/etc/" + this.commandPayload.getServiceName().toLowerCase() +
"/conf";
}
+ @Override
public String user() {
return StringUtils.isNotBlank(this.commandPayload.getServiceUser())
? this.commandPayload.getServiceUser()
: ROOT_USER;
}
+ @Override
public String group() {
return LocalSettings.cluster().getUserGroup();
}
+ @Override
+ public RepoInfo repo() {
+ return LocalSettings.repos().stream()
+ .filter(r -> OSDetection.getOS().equals(r.getOs())
+ && OSDetection.getArch().equals(r.getArch()))
+ .findFirst()
+ .orElseThrow(() -> new StackException(
+ "Cannot find repo for os: [{}] and arch: [{}]",
OSDetection.getOS(), OSDetection.getArch()));
+ }
+
+ @Override
+ public List<PackageInfo> packages() {
+ RepoInfo repo = this.repo();
+ List<PackageInfo> packageInfoList = new ArrayList<>();
+ for (PackageSpecificInfo packageSpecificInfo :
this.commandPayload.getPackageSpecifics()) {
+ if (!packageSpecificInfo.getOs().contains(repo.getOs())
+ ||
!packageSpecificInfo.getArch().contains(repo.getArch())) {
+ continue;
+ }
+
+ packageInfoList.addAll(packageSpecificInfo.getPackages());
+ }
+
+ return packageInfoList;
+ }
+
+ @Override
public String serviceName() {
return this.commandPayload.getServiceName();
}
+
+ @Override
+ public String stackHome() {
+ String stackName = this.commandPayload.getStackName();
+ String stackVersion = this.commandPayload.getStackVersion();
+ String root = this.commandPayload.getRoot();
+ return MessageFormat.format("{0}/{1}/{2}", root,
stackName.toLowerCase(), stackVersion);
+ }
}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/Params.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/Params.java
index fdaf10f..1028329 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/Params.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/param/Params.java
@@ -18,19 +18,26 @@
*/
package org.apache.bigtop.manager.stack.core.param;
+import org.apache.bigtop.manager.common.message.entity.pojo.PackageInfo;
+import org.apache.bigtop.manager.common.message.entity.pojo.RepoInfo;
+
import java.util.List;
public interface Params {
- List<String> getPackageList();
-
- String serviceHome();
-
String confDir();
String user();
String group();
+ RepoInfo repo();
+
+ List<PackageInfo> packages();
+
String serviceName();
+
+ String serviceHome();
+
+ String stackHome();
}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/hook/InstallHook.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/hook/InstallHook.java
index c10279d..1015a10 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/hook/InstallHook.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/hook/InstallHook.java
@@ -75,7 +75,8 @@ public class InstallHook extends AbstractHook {
private void writeRepo(Params params) {
RepoInfo repo = LocalSettings.repos().stream()
.filter(r -> OSDetection.getOS().equals(r.getOs())
- && OSDetection.getArch().equals(r.getArch()))
+ && OSDetection.getArch().equals(r.getArch())
+ && !r.getRepoType().equals("tarball"))
.findFirst()
.orElse(null);
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
index 535d987..3342a3b 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
@@ -18,16 +18,64 @@
*/
package org.apache.bigtop.manager.stack.core.spi.script;
+import org.apache.bigtop.manager.common.message.entity.pojo.PackageInfo;
+import org.apache.bigtop.manager.common.message.entity.pojo.RepoInfo;
import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
+import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
+import org.apache.bigtop.manager.stack.core.utils.TarballUtils;
import org.apache.commons.lang3.StringUtils;
import lombok.extern.slf4j.Slf4j;
+import java.util.List;
+import java.util.Properties;
+
@Slf4j
public abstract class AbstractScript implements Script {
+ public static final String REPO_TYPE_BINARY = "binary";
+ public static final String REPO_TYPE_TARBALL = "tarball";
+
+ public static final String PROPERTY_KEY_SKIP_LEVELS = "skipLevels";
+
+ @Override
+ public ShellResult install(Params params) {
+ return this.install(params, new Properties());
+ }
+
+ public ShellResult install(Params params, Properties properties) {
+ if (params.repo().getRepoType().equals(REPO_TYPE_BINARY)) {
+ return installBinary(params);
+ } else if (params.repo().getRepoType().equals(REPO_TYPE_TARBALL)) {
+ return installTarball(params, properties);
+ } else {
+ log.error("Unsupported repo type: {}",
params.repo().getRepoType());
+ return ShellResult.fail();
+ }
+ }
+
+ private ShellResult installBinary(Params params) {
+ List<PackageInfo> packages = params.packages();
+ List<String> packageNames =
packages.stream().map(PackageInfo::getName).toList();
+ return PackageUtils.install(packageNames);
+ }
+
+ private ShellResult installTarball(Params params, Properties properties) {
+ RepoInfo repo = params.repo();
+ List<PackageInfo> packages = params.packages();
+ String stackHome = params.stackHome();
+ String serviceHome = params.serviceHome();
+
+ for (PackageInfo packageInfo : packages) {
+ Integer skipLevels =
Integer.parseInt(properties.getProperty(PROPERTY_KEY_SKIP_LEVELS, "0"));
+ TarballUtils.installPackage(repo.getBaseUrl(), stackHome,
serviceHome, packageInfo, skipLevels);
+ }
+
+ return ShellResult.success();
+ }
+
public ShellResult restart(Params params) {
ShellResult shellResult = stop(params);
if (shellResult.getExitCode() != 0) {
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/ChecksumValidator.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/ChecksumValidator.java
new file mode 100644
index 0000000..81b407f
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/ChecksumValidator.java
@@ -0,0 +1,55 @@
+/*
+ * 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.stack.core.tarball;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.MessageDigest;
+
+@Slf4j
+public class ChecksumValidator {
+
+ public static boolean validateChecksum(String algorithm, String value,
File file) {
+ try {
+ MessageDigest digest =
MessageDigest.getInstance(algorithm.toUpperCase());
+ FileInputStream fis = new FileInputStream(file);
+ byte[] byteArray = new byte[1024];
+ int bytesCount;
+
+ while ((bytesCount = fis.read(byteArray)) != -1) {
+ digest.update(byteArray, 0, bytesCount);
+ }
+ fis.close();
+
+ byte[] bytes = digest.digest();
+ StringBuilder sb = new StringBuilder();
+ for (byte b : bytes) {
+ sb.append(String.format("%02x", b));
+ }
+
+ String calculatedChecksum = sb.toString();
+ return calculatedChecksum.equalsIgnoreCase(value);
+ } catch (Exception e) {
+ log.error("Error while validating checksum", e);
+ return false;
+ }
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballDownloader.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballDownloader.java
new file mode 100644
index 0000000..ace5bae
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballDownloader.java
@@ -0,0 +1,86 @@
+/*
+ * 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.stack.core.tarball;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+@Slf4j
+public class TarballDownloader {
+
+ @SuppressWarnings("ResultOfMethodCallIgnored")
+ public static Boolean downloadFile(String fileUrl, String saveDir) {
+ HttpURLConnection httpConn = null;
+ try {
+ URL url = new URL(fileUrl);
+ httpConn = (HttpURLConnection) url.openConnection();
+ int responseCode = httpConn.getResponseCode();
+
+ if (responseCode == HttpURLConnection.HTTP_OK) {
+ String fileName = "";
+ String disposition =
httpConn.getHeaderField("Content-Disposition");
+
+ if (disposition != null) {
+ int index = disposition.indexOf("filename=");
+ if (index > 0) {
+ fileName = disposition.substring(index + 10,
disposition.length() - 1);
+ }
+ } else {
+ fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
+ }
+
+ InputStream inputStream = httpConn.getInputStream();
+ String saveFilePath = saveDir + File.separator + fileName;
+
+ if (!new File(saveDir).exists()) {
+ new File(saveDir).mkdirs();
+ }
+
+ FileOutputStream outputStream = new
FileOutputStream(saveFilePath);
+
+ int bytesRead = -1;
+ byte[] buffer = new byte[4096];
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+
+ outputStream.close();
+ inputStream.close();
+
+ log.info("File downloaded: {}", saveFilePath);
+ return true;
+ } else {
+ log.info("No file to download. Server replied HTTP code: {}",
responseCode);
+ return false;
+ }
+ } catch (Exception e) {
+ log.error("Error downloading file: {}", e.getMessage());
+ return false;
+ } finally {
+ if (httpConn != null) {
+ httpConn.disconnect();
+ }
+ }
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballExtractor.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballExtractor.java
new file mode 100644
index 0000000..e087028
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballExtractor.java
@@ -0,0 +1,129 @@
+/*
+ * 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.stack.core.tarball;
+
+import org.apache.bigtop.manager.stack.core.exception.StackException;
+
+import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
+import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.function.Function;
+
+@Slf4j
+public class TarballExtractor {
+
+ public static void extractTarball(String source, String dest) {
+ extractTarball(source, dest, 0);
+ }
+
+ public static void extractTarball(String source, String dest, Integer
skipLevels) {
+ File tarball = new File(source);
+ File destDir = new File(dest);
+
+ if (isTarGz(source)) {
+ extractTarGz(tarball, tis -> extract(tis, destDir, skipLevels));
+ } else if (isTar(source)) {
+ extractTar(tarball, tis -> extract(tis, destDir, skipLevels));
+ } else {
+ log.info("Unsupported file type: {}", source);
+ }
+ }
+
+ @SuppressWarnings("ResultOfMethodCallIgnored")
+ private static Boolean extract(TarArchiveInputStream tis, File destDir,
Integer skipLevels) {
+ try {
+ TarArchiveEntry entry;
+ while ((entry = tis.getNextEntry()) != null) {
+ String entryName = entry.getName();
+ String[] parts = entryName.split("/");
+ if (parts.length <= skipLevels) {
+ continue; // Skip this entry
+ }
+ StringBuilder newName = new StringBuilder();
+ for (int i = skipLevels; i < parts.length; i++) {
+ newName.append(parts[i]);
+ if (i < parts.length - 1) {
+ newName.append(File.separator);
+ }
+ }
+ File outputFile = new File(destDir, newName.toString());
+
+ if (entry.isDirectory()) {
+ if (!outputFile.exists()) {
+ outputFile.mkdirs();
+ }
+ } else {
+ File parent = outputFile.getParentFile();
+ if (!parent.exists()) {
+ parent.mkdirs();
+ }
+
+ try (FileOutputStream fos = new
FileOutputStream(outputFile)) {
+ byte[] buffer = new byte[1024];
+ int len;
+ while ((len = tis.read(buffer)) != -1) {
+ fos.write(buffer, 0, len);
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.info("Error extracting tarball", e);
+ throw new StackException(e);
+ }
+
+ return true;
+ }
+
+ private static void extractTar(File tarball,
Function<TarArchiveInputStream, Boolean> func) {
+ try (InputStream fis = Files.newInputStream(tarball.toPath());
+ TarArchiveInputStream tis = new TarArchiveInputStream(fis)) {
+ func.apply(tis);
+ } catch (Exception e) {
+ log.error("Error extracting tarball", e);
+ throw new StackException(e);
+ }
+ }
+
+ private static void extractTarGz(File tarball,
Function<TarArchiveInputStream, Boolean> func) {
+ try (InputStream fis = Files.newInputStream(tarball.toPath());
+ GzipCompressorInputStream gis = new
GzipCompressorInputStream(fis);
+ TarArchiveInputStream tis = new TarArchiveInputStream(gis)) {
+ func.apply(tis);
+ } catch (Exception e) {
+ log.error("Error extracting tarball", e);
+ throw new StackException(e);
+ }
+ }
+
+ private static boolean isTarGz(String filePath) {
+ return filePath.endsWith(".tar.gz");
+ }
+
+ private static boolean isTar(String filePath) {
+ return filePath.endsWith(".tar");
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
new file mode 100644
index 0000000..cb6bf08
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java
@@ -0,0 +1,86 @@
+/*
+ * 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.stack.core.utils;
+
+import org.apache.bigtop.manager.common.message.entity.pojo.PackageInfo;
+import org.apache.bigtop.manager.stack.core.exception.StackException;
+import org.apache.bigtop.manager.stack.core.tarball.ChecksumValidator;
+import org.apache.bigtop.manager.stack.core.tarball.TarballDownloader;
+import org.apache.bigtop.manager.stack.core.tarball.TarballExtractor;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+
+@Slf4j
+public class TarballUtils {
+
+ @SuppressWarnings("ResultOfMethodCallIgnored")
+ public static void installPackage(
+ String repoUrl, String stackHome, String serviceHome, PackageInfo
packageInfo, Integer skipLevels) {
+ String remoteUrl = repoUrl + File.separator + packageInfo.getName();
+ File localFile = new File(stackHome + File.separator +
packageInfo.getName());
+ String algorithm = packageInfo.getChecksum().split(":")[0];
+ String checksum = packageInfo.getChecksum().split(":")[1];
+
+ if (localFile.exists()) {
+ log.info("File [{}] exists, validating checksum",
localFile.getAbsolutePath());
+ } else {
+ log.info("Downloading [{}] to [{}]", remoteUrl, stackHome);
+ downloadPackage(remoteUrl, stackHome);
+ }
+
+ boolean validateChecksum =
ChecksumValidator.validateChecksum(algorithm, checksum, localFile);
+ if (!validateChecksum) {
+ log.warn("Invalid checksum for [{}], re-downloading...",
localFile.getAbsolutePath());
+ localFile.delete();
+ downloadPackage(remoteUrl, stackHome);
+ }
+
+ validateChecksum = ChecksumValidator.validateChecksum(algorithm,
checksum, localFile);
+ if (!validateChecksum) {
+ log.error("Invalid checksum for [{}], exiting...",
localFile.getAbsolutePath());
+ throw new StackException("Invalid checksum for " +
localFile.getAbsolutePath());
+ }
+
+ log.info("Checksum validate successfully for [{}]",
localFile.getAbsolutePath());
+ log.info("Extracting [{}] to [{}]", localFile.getAbsolutePath(),
serviceHome);
+ TarballExtractor.extractTarball(localFile.getAbsolutePath(),
serviceHome, skipLevels);
+ log.info("File [{}] successfully extracted to [{}]",
localFile.getAbsolutePath(), serviceHome);
+ }
+
+ private static void downloadPackage(String remoteUrl, String saveDir) {
+ int i = 1;
+ while (true) {
+ Boolean downloaded = TarballDownloader.downloadFile(remoteUrl,
saveDir);
+ if (downloaded) {
+ break;
+ } else {
+ if (i == 3) {
+ log.error("Failed to download [{}], exiting...",
remoteUrl);
+ throw new StackException("Failed to download " +
remoteUrl);
+ } else {
+ log.error("Failed to download [{}], retrying...: {}",
remoteUrl, i);
+ }
+ }
+
+ i++;
+ }
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/linux/LinuxFileUtils.java
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/linux/LinuxFileUtils.java
index fcf70b2..a143afa 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/linux/LinuxFileUtils.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/linux/LinuxFileUtils.java
@@ -224,8 +224,8 @@ public class LinuxFileUtils {
log.error("dirPath must not be null");
return;
}
- Path path = Paths.get(dirPath);
+ Path path = Paths.get(dirPath);
if (Files.isSymbolicLink(path)) {
log.error("Directory is symbolic link: [{}]", dirPath);
return;
@@ -233,7 +233,15 @@ public class LinuxFileUtils {
try {
log.info("Creating directory: [{}]", path);
- Files.createDirectories(path);
+ if (Files.exists(path)) {
+ if (Files.isDirectory(path)) {
+ log.info("Directory already exists: [{}], skip creating",
path);
+ } else {
+ throw new IOException("Path exists and is not a directory:
" + path);
+ }
+ } else {
+ Files.createDirectories(path);
+ }
} catch (IOException e) {
log.error("Error when create directory", e);
}
diff --git a/bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
b/bigtop-manager-stack/bigtop-manager-stack-infra/pom.xml
similarity index 70%
copy from bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
copy to bigtop-manager-stack/bigtop-manager-stack-infra/pom.xml
index 0423dce..a7e0c80 100644
--- a/bigtop-manager-stack/bigtop-manager-stack-core/pom.xml
+++ b/bigtop-manager-stack/bigtop-manager-stack-infra/pom.xml
@@ -25,29 +25,15 @@
<version>${revision}</version>
</parent>
- <artifactId>bigtop-manager-stack-core</artifactId>
+ <artifactId>bigtop-manager-stack-infra</artifactId>
<name>${project.artifactId}</name>
- <description>Bigtop Manager Stack Core</description>
+ <description>Bigtop Manager Stack Infra</description>
<dependencies>
<dependency>
<groupId>org.apache.bigtop</groupId>
- <artifactId>bigtop-manager-common</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.google.auto.service</groupId>
- <artifactId>auto-service</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
+ <artifactId>bigtop-manager-stack-core</artifactId>
</dependency>
</dependencies>
+
</project>
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
similarity index 55%
copy from
bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
copy to
bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
index c48c8b1..f78f805 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java
@@ -16,26 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.common.message.entity.pojo;
+package org.apache.bigtop.manager.stack.infra.param;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.core.param.BaseParams;
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class RepoInfo {
+import lombok.extern.slf4j.Slf4j;
- private String repoId;
+import java.text.MessageFormat;
- private String repoName;
+@Slf4j
+public abstract class InfraParams extends BaseParams {
- private String baseUrl;
+ protected InfraParams(CommandPayload commandPayload) {
+ super(commandPayload);
+ }
- private String os;
-
- private String arch;
-
- private String mirrorList;
+ /**
+ * service home dir
+ */
+ @Override
+ public String serviceHome() {
+ String service = this.commandPayload.getServiceName();
+ return MessageFormat.format("{0}/{1}", stackHome(),
service.toLowerCase());
+ }
}
diff --git
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java
similarity index 59%
copy from
bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
copy to
bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java
index c48c8b1..7c96773 100644
---
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/RepoInfo.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java
@@ -16,26 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.common.message.entity.pojo;
+package org.apache.bigtop.manager.stack.infra.v1_0_0.prometheus;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.stack.infra.param.InfraParams;
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class RepoInfo {
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
- private String repoId;
+import java.text.MessageFormat;
- private String repoName;
+@Getter
+@Slf4j
+public class PrometheusParams extends InfraParams {
- private String baseUrl;
+ public PrometheusParams(CommandPayload commandPayload) {
+ super(commandPayload);
+ }
- private String os;
-
- private String arch;
-
- private String mirrorList;
+ public String dataDir() {
+ return MessageFormat.format("{0}/data", serviceHome());
+ }
}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
similarity index 59%
copy from
bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
copy to
bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
index 58e5b39..581ddb6 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/mapred/HistoryServerScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java
@@ -16,40 +16,45 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.stack.bigtop.v3_3_0.mapred;
+package org.apache.bigtop.manager.stack.infra.v1_0_0.prometheus;
import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.exception.StackException;
import org.apache.bigtop.manager.stack.core.param.Params;
import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
import org.apache.bigtop.manager.stack.core.spi.script.Script;
-import org.apache.bigtop.manager.stack.core.utils.PackageUtils;
import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
import com.google.auto.service.AutoService;
import java.text.MessageFormat;
+import java.util.Properties;
@AutoService(Script.class)
-public class HistoryServerScript extends AbstractServerScript {
+public class PrometheusServerScript extends AbstractServerScript {
@Override
public ShellResult install(Params params) {
- return PackageUtils.install(params.getPackageList());
+ Properties properties = new Properties();
+ properties.setProperty(PROPERTY_KEY_SKIP_LEVELS, "1");
+
+ return super.install(params, properties);
}
@Override
public ShellResult configure(Params params) {
- return MapredSetup.config(params);
+ return PrometheusSetup.config(params);
}
@Override
public ShellResult start(Params params) {
configure(params);
- Mapreduce2Params mapreduce2Params = (Mapreduce2Params) params;
- String cmd = MessageFormat.format("{0} --daemon start historyserver",
mapreduce2Params.mapredExec());
+ PrometheusParams prometheusParams = (PrometheusParams) params;
+ String cmd = MessageFormat.format(
+ "nohup {0}/prometheus --config.file={0}/prometheus.yml
--storage.tsdb.path={0}/data > {0}/nohup.out 2>&1 &",
+ prometheusParams.serviceHome());
try {
- return LinuxOSUtils.sudoExecCmd(cmd, mapreduce2Params.user());
+ return LinuxOSUtils.sudoExecCmd(cmd, prometheusParams.user());
} catch (Exception e) {
throw new StackException(e);
}
@@ -57,10 +62,10 @@ public class HistoryServerScript extends
AbstractServerScript {
@Override
public ShellResult stop(Params params) {
- Mapreduce2Params mapreduce2Params = (Mapreduce2Params) params;
- String cmd = MessageFormat.format("{0} --daemon stop historyserver",
mapreduce2Params.mapredExec());
+ PrometheusParams prometheusParams = (PrometheusParams) params;
+ String cmd = "pkill -f prometheus";
try {
- return LinuxOSUtils.sudoExecCmd(cmd, mapreduce2Params.user());
+ return LinuxOSUtils.sudoExecCmd(cmd, prometheusParams.user());
} catch (Exception e) {
throw new StackException(e);
}
@@ -68,7 +73,16 @@ public class HistoryServerScript extends
AbstractServerScript {
@Override
public ShellResult status(Params params) {
- Mapreduce2Params mapreduce2Params = (Mapreduce2Params) params;
- return
LinuxOSUtils.checkProcess(mapreduce2Params.getHistoryServerPidFile());
+ String cmd = "pgrep -f prometheus";
+ try {
+ ShellResult result = LinuxOSUtils.execCmd(cmd);
+ if (result.getExitCode() == 0) {
+ return ShellResult.success();
+ } else {
+ return new ShellResult(-1, "", "Prometheus is not running");
+ }
+ } catch (Exception e) {
+ throw new StackException(e);
+ }
}
}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java
similarity index 53%
copy from
bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
copy to
bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java
index 535d987..0a1eb35 100644
---
a/bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/spi/script/AbstractScript.java
+++
b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java
@@ -16,36 +16,30 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.stack.core.spi.script;
+package org.apache.bigtop.manager.stack.infra.v1_0_0.prometheus;
import org.apache.bigtop.manager.common.shell.ShellResult;
import org.apache.bigtop.manager.stack.core.param.Params;
+import org.apache.bigtop.manager.stack.core.utils.linux.LinuxFileUtils;
-import org.apache.commons.lang3.StringUtils;
-
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import static
org.apache.bigtop.manager.common.constants.Constants.PERMISSION_755;
+
@Slf4j
-public abstract class AbstractScript implements Script {
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class PrometheusSetup {
- public ShellResult restart(Params params) {
- ShellResult shellResult = stop(params);
- if (shellResult.getExitCode() != 0) {
- return shellResult;
- }
- ShellResult shellResult1 = start(params);
- if (shellResult1.getExitCode() != 0) {
- return shellResult1;
- }
+ public static ShellResult config(Params params) {
+ PrometheusParams prometheusParams = (PrometheusParams) params;
+ String user = prometheusParams.user();
+ String group = prometheusParams.group();
- return new ShellResult(
- 0,
- StringUtils.join(shellResult.getOutput(),
shellResult1.getOutput()),
- StringUtils.join(shellResult.getErrMsg(),
shellResult1.getErrMsg()));
- }
+ LinuxFileUtils.createDirectories(prometheusParams.serviceHome(), user,
group, PERMISSION_755, true);
+ LinuxFileUtils.createDirectories(prometheusParams.dataDir(), user,
group, PERMISSION_755, true);
- @Override
- public ShellResult check(Params params) {
- return ShellResult.success();
+ return ShellResult.success("Prometheus Configure success!");
}
}
diff --git a/bigtop-manager-stack/pom.xml b/bigtop-manager-stack/pom.xml
index 265065f..9334c1b 100644
--- a/bigtop-manager-stack/pom.xml
+++ b/bigtop-manager-stack/pom.xml
@@ -35,6 +35,7 @@
<modules>
<module>bigtop-manager-stack-core</module>
<module>bigtop-manager-stack-bigtop</module>
+ <module>bigtop-manager-stack-infra</module>
</modules>
<properties>
diff --git a/bigtop-manager-ui/src/api/repo/types.ts
b/bigtop-manager-ui/src/api/repo/types.ts
index 46e1ce6..ade4275 100644
--- a/bigtop-manager-ui/src/api/repo/types.ts
+++ b/bigtop-manager-ui/src/api/repo/types.ts
@@ -20,6 +20,7 @@
export interface RepoVO {
repoId: string
repoName: string
+ repoType: string
baseUrl: string
os: string
arch: string
diff --git a/pom.xml b/pom.xml
index dfb4d99..66f14b0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,12 @@
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.bigtop</groupId>
+ <artifactId>bigtop-manager-stack-infra</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.bigtop</groupId>
<artifactId>bigtop-manager-ui</artifactId>