From 6f2f19e80f0bf2b7d69de0aa1d91306d49bcc25e Mon Sep 17 00:00:00 2001 From: Zhiguo Wu Date: Fri, 23 Aug 2024 17:03:38 +0800 Subject: [PATCH] BIGTOP-4194: Add infra stack with the simplest Prometheus support (#51) --- bigtop-manager-agent/pom.xml | 5 + bigtop-manager-bom/pom.xml | 9 +- .../entity/payload/CommandPayload.java | 4 +- .../message/entity/pojo/PackageInfo.java | 33 +++++ ...ificInfo.java => PackageSpecificInfo.java} | 4 +- .../common/message/entity/pojo/RepoInfo.java | 2 + .../apache/bigtop/manager/dao/po/RepoPO.java | 3 + .../bigtop/manager/dao/po/ServicePO.java | 6 +- .../server/command/job/AbstractJob.java | 25 ++-- .../command/job/AbstractServiceJob.java | 2 +- .../command/stage/AbstractComponentStage.java | 2 +- .../server/command/stage/AbstractStage.java | 39 +++--- .../command/task/AbstractComponentTask.java | 36 +++-- .../server/command/task/AbstractTask.java | 22 +-- .../model/converter/ServiceConverter.java | 2 +- .../manager/server/model/dto/PackageDTO.java | 33 +++++ ...ecificDTO.java => PackageSpecificDTO.java} | 4 +- .../manager/server/model/dto/RepoDTO.java | 2 + .../manager/server/model/dto/ServiceDTO.java | 2 +- .../manager/server/model/dto/StackDTO.java | 2 + .../manager/server/model/req/RepoReq.java | 2 + .../manager/server/model/vo/RepoVO.java | 2 + .../server/stack/model/PackageModel.java | 33 +++++ ...icModel.java => PackageSpecificModel.java} | 4 +- .../manager/server/stack/model/RepoModel.java | 6 + .../server/stack/model/ServiceModel.java | 6 +- .../server/stack/model/StackModel.java | 9 +- .../main/resources/ddl/DaMeng-DDL-CREATE.sql | 2 +- .../main/resources/ddl/MySQL-DDL-CREATE.sql | 5 +- .../stacks/bigtop/3.3.0/metainfo.xml | 16 +-- .../bigtop/3.3.0/services/flink/metainfo.xml | 12 +- .../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 ++- .../bigtop/3.3.0/services/solr/metainfo.xml | 13 +- .../bigtop/3.3.0/services/tez/metainfo.xml | 12 +- .../bigtop/3.3.0/services/yarn/metainfo.xml | 20 ++- .../3.3.0/services/zookeeper/metainfo.xml | 12 +- .../resources/stacks/infra/1.0.0/metainfo.xml | 41 ++++++ .../prometheus/configuration/prometheus.xml | 51 +++++++ .../1.0.0/services/prometheus/metainfo.xml | 65 +++++++++ .../1.0.0/services/prometheus/order.json | 1 + .../stack/bigtop/param/BigtopParams.java | 54 ++++++++ .../v3_3_0/flink/FlinkClientScript.java | 6 - .../flink/FlinkHistoryServerScript.java | 6 - .../bigtop/v3_3_0/flink/FlinkParams.java | 4 +- .../bigtop/v3_3_0/hdfs/DataNodeScript.java | 6 - .../bigtop/v3_3_0/hdfs/HdfsClientScript.java | 6 - .../stack/bigtop/v3_3_0/hdfs/HdfsParams.java | 4 +- .../bigtop/v3_3_0/hdfs/NameNodeScript.java | 6 - .../bigtop/v3_3_0/hdfs/SNameNodeScript.java | 6 - .../v3_3_0/kafka/KafkaBrokerScript.java | 6 - .../bigtop/v3_3_0/kafka/KafkaParams.java | 4 +- .../v3_3_0/mapred/HistoryServerScript.java | 6 - .../v3_3_0/mapred/MapredClientScript.java | 6 - .../v3_3_0/mapred/Mapreduce2Params.java | 4 +- .../bigtop/v3_3_0/solr/SolrClientScript.java | 6 - .../stack/bigtop/v3_3_0/solr/SolrParams.java | 4 +- .../bigtop/v3_3_0/solr/SolrServerScript.java | 6 - .../bigtop/v3_3_0/tez/TezClientScript.java | 6 - .../stack/bigtop/v3_3_0/tez/TezParams.java | 4 +- .../bigtop/v3_3_0/yarn/NodeManagerScript.java | 6 - .../v3_3_0/yarn/ResourceManagerScript.java | 6 - .../bigtop/v3_3_0/yarn/YarnClientScript.java | 6 - .../stack/bigtop/v3_3_0/yarn/YarnParams.java | 4 +- .../zookeeper/ZookeeperClientScript.java | 6 - .../v3_3_0/zookeeper/ZookeeperParams.java | 4 +- .../zookeeper/ZookeeperServerScript.java | 6 - .../bigtop-manager-stack-core/pom.xml | 5 + .../manager/stack/core/param/BaseParams.java | 88 ++++++------ .../manager/stack/core/param/Params.java | 15 +- .../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 ++++++++++++++++++ .../stack/core/utils/TarballUtils.java | 86 ++++++++++++ .../core/utils/linux/LinuxFileUtils.java | 12 +- .../bigtop-manager-stack-infra/pom.xml | 39 ++++++ .../stack/infra/param/InfraParams.java | 43 ++++++ .../v1_0_0/prometheus/PrometheusParams.java | 40 ++++++ .../prometheus/PrometheusServerScript.java | 88 ++++++++++++ .../v1_0_0/prometheus/PrometheusSetup.java | 45 ++++++ bigtop-manager-stack/pom.xml | 1 + bigtop-manager-ui/src/api/repo/types.ts | 1 + pom.xml | 6 + 86 files changed, 1278 insertions(+), 301 deletions(-) create mode 100644 bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java rename bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/{OSSpecificInfo.java => PackageSpecificInfo.java} (92%) create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java rename bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/{OSSpecificDTO.java => PackageSpecificDTO.java} (93%) create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java rename bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/{OSSpecificModel.java => PackageSpecificModel.java} (95%) create mode 100644 bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/metainfo.xml create mode 100644 bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/configuration/prometheus.xml create mode 100644 bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml create mode 100644 bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/order.json create mode 100644 bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/param/BigtopParams.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/ChecksumValidator.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballDownloader.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/tarball/TarballExtractor.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-core/src/main/java/org/apache/bigtop/manager/stack/core/utils/TarballUtils.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-infra/pom.xml create mode 100644 bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java create mode 100644 bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java diff --git a/bigtop-manager-agent/pom.xml b/bigtop-manager-agent/pom.xml index 08fdcfcf..7923b0f9 100644 --- a/bigtop-manager-agent/pom.xml +++ b/bigtop-manager-agent/pom.xml @@ -63,6 +63,11 @@ bigtop-manager-stack-bigtop + + org.apache.bigtop + bigtop-manager-stack-infra + + org.springframework.boot spring-boot-starter-web diff --git a/bigtop-manager-bom/pom.xml b/bigtop-manager-bom/pom.xml index d0a4ad40..72f101ad 100644 --- a/bigtop-manager-bom/pom.xml +++ b/bigtop-manager-bom/pom.xml @@ -36,9 +36,10 @@ 2.3.32 3.12.0 2.0 - 2.13.0 + 2.16.1 32.1.1-jre 4.4 + 1.26.2 4.4.0 3.0.16 4.0.2 @@ -128,6 +129,12 @@ ${commons-collections4.version} + + org.apache.commons + commons-compress + ${commons-compress.version} + + com.google.guava guava 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 a3b7a3cc..bf7951c9 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 @@ 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 osSpecifics; + private List packageSpecifics; } diff --git a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java new file mode 100644 index 00000000..dfccbc53 --- /dev/null +++ b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/pojo/PackageInfo.java @@ -0,0 +1,33 @@ +/* + * 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.common.message.entity.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PackageInfo { + + private String name; + + 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 9c061e85..13be0345 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 java.util.List; @Data -public class OSSpecificInfo { +public class PackageSpecificInfo { private List os; private List arch; - private List packages; + private List 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 c48c8b1d..4eb48905 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 4f502bfe..d0a922a4 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 f49a254d..51a7369b 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 8987db00..2dc180e9 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 void beforeRun() { @Override public void run() { - beforeRun(); - boolean success = true; - LinkedBlockingQueue queue = new LinkedBlockingQueue<>(stages); - while (!queue.isEmpty()) { - Stage stage = queue.poll(); - Boolean stageSuccess = stage.run(); - - if (!stageSuccess) { - success = false; - break; + + try { + beforeRun(); + + LinkedBlockingQueue 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 76bf6f5e..a5bd909d 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 @@ protected StageContext createStageContext(String serviceName, String componentNa protected List getTodoListForCommand(Command command) { try { - List orderedList = dag.topologicalSort(); + List orderedList = dag.getAllNodesList().isEmpty() ? new ArrayList<>() : dag.topologicalSort(); List componentNames = getComponentNames(); List 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 9e2b5890..fb6029ad 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 @@ protected TaskContext createTaskContext(String hostname) { Map 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 4b72b62c..fd303739 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 void beforeRun() { @Override public Boolean run() { - beforeRun(); - - List> futures = new ArrayList<>(); - for (Task task : tasks) { - futures.add(CompletableFuture.supplyAsync(task::run)); + boolean allTaskSuccess; + + try { + beforeRun(); + + List> futures = new ArrayList<>(); + for (Task task : tasks) { + futures.add(CompletableFuture.supplyAsync(task::run)); + } + + List 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 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 7ab444f5..763bf0a1 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 @@ 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.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 @@ protected CommandRequest getCommandRequest() { commandPayload.setCustomCommands( convertCustomCommandInfo((List) properties.get("customCommands"))); - commandPayload.setOsSpecifics(convertOSSpecificInfo((List) properties.get("osSpecifics"))); + commandPayload.setPackageSpecifics( + convertPackageSpecificInfo((List) properties.get("packageSpecifics"))); commandPayload.setCommandScript(convertScriptInfo((ScriptDTO) properties.get("commandScript"))); CommandRequest.Builder builder = CommandRequest.newBuilder(); @@ -90,21 +93,28 @@ private ScriptInfo convertScriptInfo(ScriptDTO scriptDTO) { return scriptInfo; } - private List convertOSSpecificInfo(List osSpecificDTOs) { - if (osSpecificDTOs == null) { + private List convertPackageSpecificInfo(List packageSpecificDTOList) { + if (packageSpecificDTOList == null) { return new ArrayList<>(); } - List 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 packageSpecificInfos = new ArrayList<>(); + for (PackageSpecificDTO packageSpecificDTO : packageSpecificDTOList) { + PackageSpecificInfo packageSpecificInfo = new PackageSpecificInfo(); + packageSpecificInfo.setOs(packageSpecificDTO.getOs()); + packageSpecificInfo.setArch(packageSpecificDTO.getArch()); + List 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 convertCustomCommandInfo(List 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 c0916ee5..fc750b76 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 void beforeRun() { @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 bee6a7fd..320f204c 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/PackageDTO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java new file mode 100644 index 00000000..8cabb51a --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/PackageDTO.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PackageDTO { + + private String name; + + 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 4160f071..23c81a4c 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 java.util.List; @Data -public class OSSpecificDTO { +public class PackageSpecificDTO { private List os; private List arch; - private List packages; + private List 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 aee938d1..66839563 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 b0c5a325..cb742eee 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 osSpecifics; + private List packageSpecifics; private List 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 a1cac071..9ad94ac3 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 c2d26ca5..324dc978 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 ee7ca0f5..5968ea02 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/stack/model/PackageModel.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java new file mode 100644 index 00000000..ca9b2bea --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/stack/model/PackageModel.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.stack.model; + +import lombok.Data; + +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; + +@Data +@XmlAccessorType(XmlAccessType.FIELD) +public class PackageModel { + + private String name; + + 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 b2dc4230..a600b763 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 @@ @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 packages; + private List 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 3ea48876..d759e4da 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 944bb0ad..00a1092d 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 osSpecifics; + @XmlElementWrapper(name = "package-specifics") + @XmlElements(@XmlElement(name = "package-specific")) + private List 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 45aeb40e..a8965862 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 f2eabdd9..6e24db99 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 1573200e..ba9147fc 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 ea143593..53a82c37 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 @@ bigtop 3.3.0 hadoop + cluster /opt curl,wget - - Bigtop-3.3.0 - Bigtop-3.3.0 for CentOS-7 x86_64 - centos7 - x86_64 - http://123.56.2.244/bigtop/3.3.0/centos7/x86_64/ - - - Bigtop-3.3.0 - Bigtop-3.3.0 for CentOS-7 aarch64 - centos7 - aarch64 - https://bigtop-snapshot.s3.amazonaws.com/centos-7/$basearch - Bigtop-3.3.0 Bigtop-3.3.0 for RockyLinux-8 x86_64 + binary rocky8 x86_64 http://123.56.2.244/bigtop/3.3.0/rocky8/x86_64/ 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 55987163..c62639a8 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 @@ - - + + centos7 rocky8 @@ -68,10 +68,12 @@ x86_64 - flink_3_3_0 + + flink_3_3_0 + - - + + yarn 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 52dd1fb2..5878f17f 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 @@ - - + + centos7 rocky8 @@ -108,12 +108,18 @@ x86_64 - hadoop_3_3_0 - hadoop_3_3_0-client - hadoop_3_3_0-libhdfs + + hadoop_3_3_0 + + + hadoop_3_3_0-client + + + hadoop_3_3_0-libhdfs + - - + + zookeeper 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 93febf4f..a31f99c3 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 @@ - - + + centos7 rocky8 @@ -64,10 +64,12 @@ x86_64 - kafka_3_3_0 + + kafka_3_3_0 + - - + + zookeeper 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 95d6894b..4ece698e 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 @@ - - + + centos7 rocky8 @@ -68,12 +68,18 @@ x86_64 - hadoop_3_3_0-yarn - hadoop_3_3_0-hdfs - hadoop_3_3_0-mapreduce + + hadoop_3_3_0-yarn + + + hadoop_3_3_0-hdfs + + + hadoop_3_3_0-mapreduce + - - + + yarn 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 15581b29..753f5cf7 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 @@ - - + + centos7 rocky8 @@ -58,10 +58,13 @@ x86_64 - solr_3_3_0 + + solr_3_3_0 + - - + + + zookeeper 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 86c9ed84..59aacf0e 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 @@ - - + + centos7 rocky8 @@ -50,10 +50,12 @@ x86_64 - tez_3_3_0 + + tez_3_3_0 + - - + + hdfs 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 f66e0ae3..6ccd7477 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 @@ - - + + centos7 rocky8 @@ -97,12 +97,18 @@ x86_64 - hadoop_3_3_0-yarn - hadoop_3_3_0-hdfs - hadoop_3_3_0-mapreduce + + hadoop_3_3_0-yarn + + + hadoop_3_3_0-hdfs + + + hadoop_3_3_0-mapreduce + - - + + zookeeper 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 620bf9cc..df686c0f 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 @@ - - + + centos7 rocky8 @@ -64,9 +64,11 @@ x86_64 - zookeeper_3_3_0 + + zookeeper_3_3_0 + - - + + \ 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 00000000..74a38f3d --- /dev/null +++ b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/metainfo.xml @@ -0,0 +1,41 @@ + + + + + + infra + 1.0.0 + hadoop + global + /opt + curl,wget + + + + Infra-1.0.0 + Infra-1.0.0 for RockyLinux-8 x86_64 + tarball + rocky8 + x86_64 + http://123.56.2.244/infra/1.0.0/tarballs/ + + + + \ 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 00000000..03d7e8a3 --- /dev/null +++ b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/configuration/prometheus.xml @@ -0,0 +1,51 @@ + + + + + + content + This is the freemarker template for prometheus.yml file + ` 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'] +]]> + + + longtext + + + \ No newline at end of file diff --git a/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml new file mode 100644 index 00000000..92b2fdd5 --- /dev/null +++ b/bigtop-manager-server/src/main/resources/stacks/infra/1.0.0/services/prometheus/metainfo.xml @@ -0,0 +1,65 @@ + + + + + + prometheus + Prometheus + + 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. + + 2.54.0 + prometheus + + + + prometheus_server + Prometheus Server + master + 1+ + + org.apache.bigtop.manager.stack.infra.v1_0_0.prometheus.PrometheusServerScript + java + 1200 + + + + + + + + centos7 + rocky8 + + + x86_64 + + + + prometheus-2.54.0.linux-amd64.tar.gz + SHA-256:465e1393a0cca9705598f6ffaf96ffa78d0347808ab21386b0c6aaec2cf7aa13 + + + + + + \ 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 00000000..9e26dfee --- /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 00000000..8ffe6946 --- /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 cdda7670..fdfaccd5 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.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 @@ @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 e4dc0636..34663933 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.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 @@ @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 8ae12cdc..6c8b0b4c 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 @@ @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 2085834c..b48090f8 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.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 @@ @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 02262e7c..455d9400 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.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 @@ @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 aa45a5d2..df7122ac 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 @@ @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 5f30f29f..2172414a 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.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 @@ @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 67eba56f..c92a2831 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.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 @@ @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 7cc29c48..308b102b 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.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 @@ @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 c3c6411b..faa6ea1d 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 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 58e5b39c..b07d4b9f 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.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 @@ @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 48429f5c..1aea9577 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.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 @@ @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 f690b09f..f4491f6c 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 @@ @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 23320fe2..e7a2b6ac 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.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 @@ @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 2f5a9f1b..4e68b79f 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 @@ @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 fdff7da4..dd93fa79 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.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 @@ @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 5db7b467..832ada59 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.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 @@ @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 f74724d5..261fd0e2 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 @@ @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 8f89d711..ac90d6b9 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.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 @@ @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 0db3b118..416b69fe 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.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 @@ @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 10e3d006..cbd29d0e 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.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 @@ @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 e92dafab..24fbb1db 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 @@ @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 067ef09d..87faa209 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.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 @@ @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 f74faba7..05678f73 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 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 4483094c..0a7ed502 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.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 @@ @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 0423dce5..d9591a6b 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 @@ commons-io commons-io + + + org.apache.commons + commons-compress + 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 49bd5ce9..4a4111bd 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 @@ 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 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 @@ protected BaseParams(CommandPayload commandPayload) { globalParamsMap.remove("content"); } - /** - * get the package list according to the os and arch - */ - public List getPackageList() { - List osSpecifics = this.commandPayload.getOsSpecifics(); - if (osSpecifics == null) { - return List.of(); - } - - String os = OSDetection.getOS(); - String arch = OSDetection.getArch(); - for (OSSpecificInfo osSpecific : osSpecifics) { - List pkgOS = osSpecific.getOs(); - List 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 packages() { + RepoInfo repo = this.repo(); + List 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 fdaf10fd..10283295 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 getPackageList(); - - String serviceHome(); - String confDir(); String user(); String group(); + RepoInfo repo(); + + List 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 c10279de..1015a106 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 @@ private void addUserAndGroup(Params params) { 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 535d9872..3342a3b1 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 packages = params.packages(); + List packageNames = packages.stream().map(PackageInfo::getName).toList(); + return PackageUtils.install(packageNames); + } + + private ShellResult installTarball(Params params, Properties properties) { + RepoInfo repo = params.repo(); + List 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 00000000..81b407f7 --- /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 00000000..ace5bae8 --- /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 00000000..e087028e --- /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 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 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 00000000..cb6bf087 --- /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 fcf70b22..a143afae 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 static void createDirectories( 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 static void createDirectories( 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-infra/pom.xml b/bigtop-manager-stack/bigtop-manager-stack-infra/pom.xml new file mode 100644 index 00000000..a7e0c800 --- /dev/null +++ b/bigtop-manager-stack/bigtop-manager-stack-infra/pom.xml @@ -0,0 +1,39 @@ + + + + 4.0.0 + + org.apache.bigtop + bigtop-manager-stack + ${revision} + + + bigtop-manager-stack-infra + ${project.artifactId} + Bigtop Manager Stack Infra + + + + org.apache.bigtop + bigtop-manager-stack-core + + + + diff --git a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java new file mode 100644 index 00000000..f78f8058 --- /dev/null +++ b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/param/InfraParams.java @@ -0,0 +1,43 @@ +/* + * 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.infra.param; + +import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload; +import org.apache.bigtop.manager.stack.core.param.BaseParams; + +import lombok.extern.slf4j.Slf4j; + +import java.text.MessageFormat; + +@Slf4j +public abstract class InfraParams extends BaseParams { + + protected InfraParams(CommandPayload commandPayload) { + super(commandPayload); + } + + /** + * 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-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java new file mode 100644 index 00000000..7c96773c --- /dev/null +++ b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusParams.java @@ -0,0 +1,40 @@ +/* + * 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.infra.v1_0_0.prometheus; + +import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload; +import org.apache.bigtop.manager.stack.infra.param.InfraParams; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import java.text.MessageFormat; + +@Getter +@Slf4j +public class PrometheusParams extends InfraParams { + + public PrometheusParams(CommandPayload commandPayload) { + super(commandPayload); + } + + public String dataDir() { + return MessageFormat.format("{0}/data", serviceHome()); + } +} diff --git a/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java new file mode 100644 index 00000000..581ddb67 --- /dev/null +++ b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusServerScript.java @@ -0,0 +1,88 @@ +/* + * 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.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.linux.LinuxOSUtils; + +import com.google.auto.service.AutoService; + +import java.text.MessageFormat; +import java.util.Properties; + +@AutoService(Script.class) +public class PrometheusServerScript extends AbstractServerScript { + + @Override + public ShellResult install(Params params) { + Properties properties = new Properties(); + properties.setProperty(PROPERTY_KEY_SKIP_LEVELS, "1"); + + return super.install(params, properties); + } + + @Override + public ShellResult configure(Params params) { + return PrometheusSetup.config(params); + } + + @Override + public ShellResult start(Params params) { + configure(params); + 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, prometheusParams.user()); + } catch (Exception e) { + throw new StackException(e); + } + } + + @Override + public ShellResult stop(Params params) { + PrometheusParams prometheusParams = (PrometheusParams) params; + String cmd = "pkill -f prometheus"; + try { + return LinuxOSUtils.sudoExecCmd(cmd, prometheusParams.user()); + } catch (Exception e) { + throw new StackException(e); + } + } + + @Override + public ShellResult status(Params params) { + 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-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java new file mode 100644 index 00000000..0a1eb357 --- /dev/null +++ b/bigtop-manager-stack/bigtop-manager-stack-infra/src/main/java/org/apache/bigtop/manager/stack/infra/v1_0_0/prometheus/PrometheusSetup.java @@ -0,0 +1,45 @@ +/* + * 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.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 lombok.AccessLevel; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import static org.apache.bigtop.manager.common.constants.Constants.PERMISSION_755; + +@Slf4j +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class PrometheusSetup { + + public static ShellResult config(Params params) { + PrometheusParams prometheusParams = (PrometheusParams) params; + String user = prometheusParams.user(); + String group = prometheusParams.group(); + + LinuxFileUtils.createDirectories(prometheusParams.serviceHome(), user, group, PERMISSION_755, true); + LinuxFileUtils.createDirectories(prometheusParams.dataDir(), user, group, PERMISSION_755, true); + + return ShellResult.success("Prometheus Configure success!"); + } +} diff --git a/bigtop-manager-stack/pom.xml b/bigtop-manager-stack/pom.xml index 265065f6..9334c1b2 100644 --- a/bigtop-manager-stack/pom.xml +++ b/bigtop-manager-stack/pom.xml @@ -35,6 +35,7 @@ bigtop-manager-stack-core bigtop-manager-stack-bigtop + bigtop-manager-stack-infra diff --git a/bigtop-manager-ui/src/api/repo/types.ts b/bigtop-manager-ui/src/api/repo/types.ts index 46e1ce6e..ade42756 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 dfb4d99c..66f14b04 100644 --- a/pom.xml +++ b/pom.xml @@ -106,6 +106,12 @@ ${project.version} + + org.apache.bigtop + bigtop-manager-stack-infra + ${project.version} + + org.apache.bigtop bigtop-manager-ui