You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2017/10/30 19:05:00 UTC

[24/30] ambari git commit: AMBARI-22297 Fix getComponentInfo (benyoka)

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 <be...@apache.org>
Authored: Wed Oct 25 12:00:08 2017 +0200
Committer: Balazs Bence Sari <be...@apache.org>
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<>();
   }
 }