AMBARI-22297 Fix getComponentInfo (benyoka)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c118e515 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c118e515 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c118e515 Branch: refs/heads/branch-feature-AMBARI-14714-ui Commit: c118e515ab1973603362d149d253269c8b7c17a4 Parents: e1fb736 Author: Balazs Bence Sari <[email protected]> Authored: Wed Oct 25 12:00:08 2017 +0200 Committer: Balazs Bence Sari <[email protected]> Committed: Wed Oct 25 12:18:28 2017 +0200 ---------------------------------------------------------------------- .../ambari/server/controller/StackV2.java | 18 ++++------- .../server/controller/StackV2Factory.java | 34 +++++++++++++++++++- 2 files changed, 39 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/c118e515/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2.java index 040e604..0b0329c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2.java @@ -91,6 +91,8 @@ public class StackV2 { /** Map of service to set of excluded config types */ private final Map<String, Set<String>> excludedConfigurationTypes; + private final Map<String, ComponentInfo> componentInfos; + public StackV2(String name, String version, String repoVersion, @@ -101,7 +103,8 @@ public class StackV2 { Map<String, Map<String, Map<String, ConfigProperty>>> serviceConfigurations, Map<String, Map<String, Map<String, ConfigProperty>>> requiredServiceConfigurations, Map<String, Map<String, ConfigProperty>> stackConfigurations, - Map<String, Set<String>> excludedConfigurationTypes) { + Map<String, Set<String>> excludedConfigurationTypes, + Map<String, ComponentInfo> componentInfos) { this.name = name; this.version = version; this.repoVersion = repoVersion; @@ -128,6 +131,7 @@ public class StackV2 { this.requiredServiceConfigurations = requiredServiceConfigurations; this.stackConfigurations = stackConfigurations; this.excludedConfigurationTypes = excludedConfigurationTypes; + this.componentInfos = componentInfos; } /** @return stack name */ @@ -181,17 +185,7 @@ public class StackV2 { */ @Deprecated public ComponentInfo getComponentInfo(String component) { - ComponentInfo componentInfo = null; -// String service = getServiceForComponent(component); -// if (service != null) { -// try { -// componentInfo = controller.getAmbariMetaInfo().getComponent( -// getName(), getVersion(), service, component); -// } catch (AmbariException e) { -// // just return null if component doesn't exist -// } -// } - return componentInfo; + return componentInfos.get(component); } /** http://git-wip-us.apache.org/repos/asf/ambari/blob/c118e515/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2Factory.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2Factory.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2Factory.java index ed1bbf8..784b368 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2Factory.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackV2Factory.java @@ -18,20 +18,29 @@ package org.apache.ambari.server.controller; +import static java.util.AbstractMap.SimpleImmutableEntry; + import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.orm.entities.StackEntity; import org.apache.ambari.server.state.AutoDeployInfo; +import org.apache.ambari.server.state.ComponentInfo; import org.apache.ambari.server.state.DependencyInfo; import org.apache.ambari.server.state.StackId; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class StackV2Factory { + private final static Logger LOG = LoggerFactory.getLogger(StackV2Factory.class); + private AmbariManagementController controller; @@ -64,9 +73,30 @@ public class StackV2Factory { //todo: already done for each service parseStackConfigurations(stackData); + getComponentInfos(stackData); + return new StackV2(name, version, stackData.repoVersion /* TODO */, stackData.serviceComponents, stackData.dependencies, stackData.dbDependencyInfo, stackData.componentAutoDeployInfo, stackData.serviceConfigurations, - stackData.requiredServiceConfigurations, stackData.stackConfigurations, stackData.excludedConfigurationTypes); + stackData.requiredServiceConfigurations, stackData.stackConfigurations, stackData.excludedConfigurationTypes, + stackData.componentInfos); + } + + private void getComponentInfos(StackData stackData) { + List<Map.Entry<String, String>> componentServices = stackData.serviceComponents.entrySet().stream(). + flatMap(e -> e.getValue().stream().map( v -> new SimpleImmutableEntry<>(e.getKey(), v))). + collect(Collectors.toList()); + componentServices.stream().forEach( componentService -> { + try { + ComponentInfo componentInfo = controller.getAmbariMetaInfo().getComponent(stackData.stackName, + stackData.stackVersion, componentService.getKey(), componentService.getValue()); + if (null != componentInfo) { + stackData.componentInfos.put(componentService.getKey(), componentInfo); + } + } catch (AmbariException e) { + LOG.debug("No component info for service: {}, component: {}, stack name: {}, stack version: {}, Exception: {}", + componentService.getKey(), componentService.getValue(), stackData.stackName, stackData.stackVersion, e); + } + }); } /** @@ -172,6 +202,7 @@ public class StackV2Factory { stackData.masterComponents.add(componentName); } } + stackData.serviceComponents.put(service, componentSet); } @@ -215,5 +246,6 @@ public class StackV2Factory { final Map<String, String> dbDependencyInfo = new HashMap<>(); final Map<String, Set<String>> excludedConfigurationTypes = new HashMap<>(); final Map<String, Map<String, StackV2.ConfigProperty>> stackConfigurations = new HashMap<>(); + final Map<String, ComponentInfo> componentInfos = new HashMap<>(); } }
