Browse Source

AMBARI-7018. Stack API should provide display name for services and components. (jaimin)

Jaimin Jetly 10 years ago
parent
commit
02ee3d4405
54 changed files with 312 additions and 87 deletions
  1. 9 0
      ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java
  2. 29 4
      ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java
  3. 13 3
      ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceResponse.java
  4. 9 13
      ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java
  5. 9 13
      ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceResourceProvider.java
  6. 11 3
      ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
  7. 9 0
      ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java
  8. 2 0
      ambari-server/src/main/resources/properties.json
  9. 3 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/GANGLIA/metainfo.xml
  10. 4 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HBASE/metainfo.xml
  11. 5 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/metainfo.xml
  12. 10 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/metainfo.xml
  13. 5 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/metainfo.xml
  14. 2 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/NAGIOS/metainfo.xml
  15. 3 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/OOZIE/metainfo.xml
  16. 2 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/PIG/metainfo.xml
  17. 2 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/SQOOP/metainfo.xml
  18. 3 1
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/WEBHCAT/metainfo.xml
  19. 3 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/ZOOKEEPER/metainfo.xml
  20. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/FLUME/metainfo.xml
  21. 3 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/GANGLIA/metainfo.xml
  22. 4 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HBASE/metainfo.xml
  23. 7 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/metainfo.xml
  24. 10 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/metainfo.xml
  25. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml
  26. 3 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/OOZIE/metainfo.xml
  27. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/PIG/metainfo.xml
  28. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/SQOOP/metainfo.xml
  29. 3 1
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/WEBHCAT/metainfo.xml
  30. 7 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/metainfo.xml
  31. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/ZOOKEEPER/metainfo.xml
  32. 3 0
      ambari-server/src/main/resources/stacks/HDP/2.1/services/FALCON/metainfo.xml
  33. 6 0
      ambari-server/src/main/resources/stacks/HDP/2.1/services/STORM/metainfo.xml
  34. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.1/services/TEZ/metainfo.xml
  35. 2 0
      ambari-server/src/main/resources/stacks/HDP/2.1/services/YARN/metainfo.xml
  36. 2 0
      ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java
  37. 2 0
      ambari-server/src/test/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml
  38. 1 0
      ambari-server/src/test/resources/stacks/HDP/2.0.6/services/WEBHCAT/metainfo.xml
  39. 4 0
      ambari-server/src/test/resources/stacks/HDP/2.0.6/services/YARN/metainfo.xml
  40. 4 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HBASE/metainfo.xml
  41. 7 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HDFS/metainfo.xml
  42. 5 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HIVE/metainfo.xml
  43. 3 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/services/ZOOKEEPER/metainfo.xml
  44. 1 0
      ambari-server/src/test/resources/stacks/HDP/2.0.8/services/SQOOP/metainfo.xml
  45. 4 0
      ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metainfo.xml
  46. 2 0
      ambari-web/app/mappers/stack_service_mapper.js
  47. 0 1
      ambari-web/app/mixins.js
  48. 0 30
      ambari-web/app/mixins/models/service_mixin.js
  49. 5 2
      ambari-web/app/models/service.js
  50. 3 2
      ambari-web/app/models/stack_service.js
  51. 1 9
      ambari-web/app/models/stack_service_component.js
  52. 13 2
      ambari-web/app/utils/helper.js
  53. 1 1
      ambari-web/test/app_test.js
  54. 61 0
      ambari-web/test/service_components.js

+ 9 - 0
ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java

@@ -138,6 +138,10 @@ public class StackExtensionHelper {
     mergedServiceInfo.setName(childService.getName());
     mergedServiceInfo.setComment(childService.getComment());
     mergedServiceInfo.setVersion(childService.getVersion());
+    mergedServiceInfo.setDisplayName(
+        childService.getDisplayName() != null ?
+            childService.getDisplayName() :
+            parentService.getDisplayName());
     mergedServiceInfo.setConfigDependencies(
         childService.getConfigDependencies() != null ?
             childService.getConfigDependencies() :
@@ -306,10 +310,15 @@ public class StackExtensionHelper {
       result.setCommandScript(parent.getCommandScript());
     }
     //keep the same semantic as for ServiceInfo
+    result.setDisplayName(
+        child.getDisplayName() != null ?
+            child.getDisplayName() : parent.getDisplayName());
+
     result.setConfigDependencies(
         child.getConfigDependencies() != null ?
             child.getConfigDependencies() : parent.getConfigDependencies());
 
+
 //    HashSet downloadSource = child.getDownloadSource();
 //    if (downloadSource != null) {
 //      result.setDownloadSource(child.getDownloadSource());

+ 29 - 4
ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceComponentResponse.java

@@ -18,14 +18,14 @@
 
 package org.apache.ambari.server.controller;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.ambari.server.state.AutoDeployInfo;
 import org.apache.ambari.server.state.ComponentInfo;
 import org.apache.ambari.server.state.CustomCommandDefinition;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Stack service component response.
  */
@@ -50,6 +50,11 @@ public class StackServiceComponentResponse {
    */
   private String componentName;
 
+  /**
+   * component display name
+   */
+  private String componentDisplayName;
+
   /**
    * component category
    */
@@ -89,6 +94,7 @@ public class StackServiceComponentResponse {
    */
   public StackServiceComponentResponse(ComponentInfo component) {
     componentName = component.getName();
+    componentDisplayName = component.getDisplayName();
     componentCategory = component.getCategory();
     isClient = component.isClient();
     isMaster = component.isMaster();
@@ -179,6 +185,25 @@ public class StackServiceComponentResponse {
     this.componentName = componentName;
   }
 
+  /**
+   * Get component display name.
+   *
+   * @return component display name
+   */
+
+  public String getComponentDisplayName() {
+    return componentDisplayName;
+  }
+
+  /**
+   * Set component display name.
+   *
+   * @param componentDisplayName  component display name
+   */
+  public void setComponentDisplayName(String componentDisplayName) {
+    this.componentDisplayName = componentDisplayName;
+  }
+
   /**
    * Get component category.
    *

+ 13 - 3
ambari-server/src/main/java/org/apache/ambari/server/controller/StackServiceResponse.java

@@ -18,19 +18,20 @@
 
 package org.apache.ambari.server.controller;
 
+import org.apache.ambari.server.state.CustomCommandDefinition;
+import org.apache.ambari.server.state.ServiceInfo;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.ambari.server.state.CustomCommandDefinition;
-import org.apache.ambari.server.state.ServiceInfo;
-
 public class StackServiceResponse {
 
   private String stackName;
   private String stackVersion;
   private String serviceName;
+  private String serviceDisplayName;
   private String userName;
   private String comments;
   private String serviceVersion;
@@ -48,6 +49,7 @@ public class StackServiceResponse {
    */
   public StackServiceResponse(ServiceInfo service) {
     serviceName = service.getName();
+    serviceDisplayName = service.getDisplayName();
     userName = null;
     comments = service.getComment();
     serviceVersion = service.getVersion();
@@ -91,6 +93,14 @@ public class StackServiceResponse {
     this.serviceName = serviceName;
   }
 
+  public String getServiceDisplayName() {
+    return serviceDisplayName;
+  }
+
+  public void setServiceDisplayName(String serviceDisplayName) {
+    this.serviceDisplayName = serviceDisplayName;
+  }
+
   public String getUserName() {
     return userName;
   }

+ 9 - 13
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceComponentResourceProvider.java

@@ -18,27 +18,17 @@
 
 package org.apache.ambari.server.controller.internal;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.StackServiceComponentRequest;
 import org.apache.ambari.server.controller.StackServiceComponentResponse;
-import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
-import org.apache.ambari.server.controller.spi.NoSuchResourceException;
-import org.apache.ambari.server.controller.spi.Predicate;
-import org.apache.ambari.server.controller.spi.Request;
-import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.*;
 import org.apache.ambari.server.controller.spi.Resource.Type;
-import org.apache.ambari.server.controller.spi.SystemException;
-import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.state.AutoDeployInfo;
 
+import java.util.*;
+
 public class StackServiceComponentResourceProvider extends
     ReadOnlyResourceProvider {
 
@@ -54,6 +44,9 @@ public class StackServiceComponentResourceProvider extends
   private static final String COMPONENT_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(
       "StackServiceComponents", "component_name");
 
+  private static final String COMPONENT_DISPLAY_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(
+          "StackServiceComponents", "display_name");
+
   private static final String COMPONENT_CATEGORY_PROPERTY_ID = PropertyHelper.getPropertyId(
       "StackServiceComponents", "component_category");
 
@@ -127,6 +120,9 @@ public class StackServiceComponentResourceProvider extends
       setResourceProperty(resource, COMPONENT_NAME_PROPERTY_ID,
           response.getComponentName(), requestedIds);
 
+      setResourceProperty(resource, COMPONENT_DISPLAY_NAME_PROPERTY_ID,
+              response.getComponentDisplayName(), requestedIds);
+
       setResourceProperty(resource, COMPONENT_CATEGORY_PROPERTY_ID,
           response.getComponentCategory(), requestedIds);
 

+ 9 - 13
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackServiceResourceProvider.java

@@ -19,26 +19,16 @@
 
 package org.apache.ambari.server.controller.internal;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.StackServiceRequest;
 import org.apache.ambari.server.controller.StackServiceResponse;
-import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
-import org.apache.ambari.server.controller.spi.NoSuchResourceException;
-import org.apache.ambari.server.controller.spi.Predicate;
-import org.apache.ambari.server.controller.spi.Request;
-import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.*;
 import org.apache.ambari.server.controller.spi.Resource.Type;
-import org.apache.ambari.server.controller.spi.SystemException;
-import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
 
+import java.util.*;
+
 public class StackServiceResourceProvider extends ReadOnlyResourceProvider {
 
   protected static final String SERVICE_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(
@@ -50,6 +40,9 @@ public class StackServiceResourceProvider extends ReadOnlyResourceProvider {
   public static final String STACK_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId(
       "StackServices", "stack_version");
 
+  private static final String SERVICE_DISPLAY_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(
+      "StackServices", "display_name");
+
   private static final String USER_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(
       "StackServices", "user_name");
 
@@ -119,6 +112,9 @@ public class StackServiceResourceProvider extends ReadOnlyResourceProvider {
       setResourceProperty(resource, SERVICE_NAME_PROPERTY_ID,
           response.getServiceName(), requestedIds);
 
+      setResourceProperty(resource, SERVICE_DISPLAY_NAME_PROPERTY_ID,
+              response.getServiceDisplayName(), requestedIds);
+
       setResourceProperty(resource, USER_NAME_PROPERTY_ID,
           response.getUserName(), requestedIds);
 

+ 11 - 3
ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java

@@ -18,18 +18,18 @@
 
 package org.apache.ambari.server.state;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlElements;
+import java.util.ArrayList;
+import java.util.List;
 
 @XmlAccessorType(XmlAccessType.FIELD)
 public class ComponentInfo {
   private String name;
+  private String displayName;
   private String category;
   private boolean deleted;
   private String cardinality;
@@ -95,6 +95,14 @@ public class ComponentInfo {
     this.name = name;
   }
 
+  public String getDisplayName() {
+    return displayName;
+  }
+
+  public void setDisplayName(String displayName) {
+    this.displayName = displayName;
+  }
+
   public String getCategory() {
     return category;
   }

+ 9 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java

@@ -52,6 +52,7 @@ public class ServiceInfo {
   private String schemaVersion;
 
   private String name;
+  private String displayName;
   private String version;
   private String comment;
   private List<PropertyInfo> properties;
@@ -163,6 +164,14 @@ public class ServiceInfo {
     this.name = name;
   }
 
+  public String getDisplayName() {
+    return displayName;
+  }
+
+  public void setDisplayName(String displayName) {
+    this.displayName = displayName;
+  }
+
   public String getVersion() {
     return version;
   }

+ 2 - 0
ambari-server/src/main/resources/properties.json

@@ -226,6 +226,7 @@
         "StackServices/stack_name",
         "StackServices/stack_version",
         "StackServices/service_name",
+        "StackServices/display_name",
         "StackServices/user_name",
         "StackServices/comments",
         "StackServices/service_version",
@@ -251,6 +252,7 @@
         "StackServiceComponents/stack_version",
         "StackServiceComponents/service_name",
         "StackServiceComponents/component_name",
+        "StackServiceComponents/display_name",
         "StackServiceComponents/component_category",
         "StackServiceComponents/is_client",
         "StackServiceComponents/is_master",

+ 3 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/GANGLIA/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>GANGLIA</name>
+      <displayName>Ganglia</displayName>
       <comment>Ganglia Metrics Collection system (&lt;a href=&quot;http://oss.oetiker.ch/rrdtool/&quot; target=&quot;_blank&quot;&gt;RRDTool&lt;/a&gt; will be installed too)</comment>
       <version>3.5.0</version>
       <components>
         <component>
           <name>GANGLIA_SERVER</name>
+          <displayName>Ganglia Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -36,6 +38,7 @@
 
         <component>
           <name>GANGLIA_MONITOR</name>
+          <displayName>Ganglia Monitor</displayName>
           <category>SLAVE</category>
           <cardinality>ALL</cardinality>
           <auto-deploy>

+ 4 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HBASE/metainfo.xml

@@ -20,6 +20,7 @@
   <services>
     <service>
       <name>HBASE</name>
+      <displayName>HBase</displayName>
       <comment>Non-relational distributed database and centralized service for configuration management &amp;
         synchronization
       </comment>
@@ -27,6 +28,7 @@
       <components>
         <component>
           <name>HBASE_MASTER</name>
+          <displayName>HBase Master</displayName>
           <category>MASTER</category>
           <cardinality>1+</cardinality>
           <dependencies>
@@ -65,6 +67,7 @@
 
         <component>
           <name>HBASE_REGIONSERVER</name>
+          <displayName>RegionServer</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -85,6 +88,7 @@
 
         <component>
           <name>HBASE_CLIENT</name>
+          <displayName>HBase Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 5 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>HDFS</name>
+      <displayName>HDFS</displayName>
       <comment>Apache Hadoop Distributed File System</comment>
       <version>1.2.0.1.3.3.0</version>
 
       <components>
         <component>
           <name>NAMENODE</name>
+          <displayName>NameNode</displayName>
           <category>MASTER</category>
           <cardinality>1-2</cardinality>
           <commandScript>
@@ -47,6 +49,7 @@
 
         <component>
           <name>DATANODE</name>
+          <displayName>DataNode</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -58,6 +61,7 @@
 
         <component>
           <name>SECONDARY_NAMENODE</name>
+          <displayName>SNameNode</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -69,6 +73,7 @@
 
         <component>
           <name>HDFS_CLIENT</name>
+          <displayName>HDFS Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 10 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>HIVE</name>
+      <displayName>Hive</displayName>
       <comment>Data warehouse system for ad-hoc queries &amp; analysis of large datasets and table &amp; storage management service</comment>
       <version>0.11.0.1.3.3.0</version>
       <components>
 
         <component>
           <name>HIVE_METASTORE</name>
+          <displayName>Hive Metastore</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <auto-deploy>
@@ -41,6 +43,7 @@
 
         <component>
           <name>HIVE_SERVER</name>
+          <displayName>HiveServer2</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>
@@ -68,6 +71,7 @@
 
         <component>
           <name>MYSQL_SERVER</name>
+          <displayName>MySQL Server</displayName>
           <category>MASTER</category>
           <cardinality>0-1</cardinality>
           <commandScript>
@@ -78,6 +82,7 @@
 
         <component>
           <name>HIVE_CLIENT</name>
+          <displayName>Hive Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -163,11 +168,15 @@
 
     <service>
       <name>HCATALOG</name>
-      <comment>This is comment for HCATALOG service</comment>
+      <displayName>HCatalog</displayName>
+      <comment>A table and storage management layer for Hadoop that enables users with different data processing tools
+        to more easily read and write data on the grid.
+      </comment>
       <version>0.11.0.1.3.3.0</version>
       <components>
         <component>
           <name>HCAT</name>
+          <displayName>HCat</displayName>
           <category>CLIENT</category>
           <commandScript>
             <script>scripts/hcat_client.py</script>

+ 5 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/metainfo.xml

@@ -21,11 +21,13 @@
   <services>
     <service>
       <name>MAPREDUCE</name>
+      <displayName>MapReduce</displayName>
       <comment>Apache Hadoop Distributed Processing Framework</comment>
       <version>1.2.0.1.3.3.0</version>
       <components>
         <component>
           <name>JOBTRACKER</name>
+          <displayName>JobTracker</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -47,6 +49,7 @@
 
         <component>
           <name>TASKTRACKER</name>
+          <displayName>TaskTracker</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -58,6 +61,7 @@
 
         <component>
           <name>MAPREDUCE_CLIENT</name>
+          <displayName>MapReduce Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -91,6 +95,7 @@
               
         <component>
           <name>HISTORYSERVER</name>
+          <displayName>History Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <auto-deploy>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/NAGIOS/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>NAGIOS</name>
+      <displayName>Nagios</displayName>
       <comment>Nagios Monitoring and Alerting system</comment>
       <version>3.5.0</version>
       <components>
         <component>
           <name>NAGIOS_SERVER</name>
+          <displayName>Nagios Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>

+ 3 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/OOZIE/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>OOZIE</name>
+      <displayName>Oozie</displayName>
       <comment>System for workflow coordination and execution of Apache Hadoop jobs.  This also includes the installation of the optional Oozie Web Console which relies on and will install the &lt;a target="_blank" href="http://www.sencha.com/legal/open-source-faq/"&gt;ExtJS&lt;/a&gt; Library.
       </comment>
       <version>3.3.2.1.3.3.0</version>
       <components>
         <component>
           <name>OOZIE_SERVER</name>
+          <displayName>Oozie Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>
@@ -53,6 +55,7 @@
 
         <component>
           <name>OOZIE_CLIENT</name>
+          <displayName>Oozie Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <dependencies>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/PIG/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>PIG</name>
+      <displayName>Pig</displayName>
       <comment>Scripting platform for analyzing large datasets</comment>
       <version>0.11.1.1.3.3.0</version>
       <components>
         <component>
           <name>PIG</name>
+          <displayName>Pig</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/SQOOP/metainfo.xml

@@ -20,6 +20,7 @@
   <services>
     <service>
       <name>SQOOP</name>
+      <displayName>Sqoop</displayName>
       <comment>Tool for transferring bulk data between Apache Hadoop and
         structured data stores such as relational databases
       </comment>
@@ -28,6 +29,7 @@
       <components>
         <component>
           <name>SQOOP</name>
+          <displayName>Pig</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <dependencies>

+ 3 - 1
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/WEBHCAT/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>WEBHCAT</name>
-      <comment>This is comment for WEBHCAT service</comment>
+      <displayName>WebHCat</displayName>
+      <comment>Provides a REST-like web API for HCatalog and related Hadoop components.</comment>
       <version>0.11.0.1.3.3.0</version>
       <components>
         <component>
           <name>WEBHCAT_SERVER</name>
+          <displayName>WebHCat Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>

+ 3 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/ZOOKEEPER/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>ZOOKEEPER</name>
+      <displayName>ZooKeeper</displayName>
       <comment>Centralized service which provides highly reliable distributed coordination</comment>
       <version>3.4.5.1.3.3.0</version>
       <components>
 
         <component>
           <name>ZOOKEEPER_SERVER</name>
+          <displayName>ZooKeeper Server</displayName>
           <category>MASTER</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -37,6 +39,7 @@
 
         <component>
           <name>ZOOKEEPER_CLIENT</name>
+          <displayName>ZooKeeper Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/FLUME/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>FLUME</name>
+      <displayName>Flume</displayName>
       <comment>Data management and processing platform</comment>
       <version>1.4.0.2.0</version>
       <components>
         <component>
           <name>FLUME_HANDLER</name>
+          <displayName>Flume</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 3 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/GANGLIA/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>GANGLIA</name>
+      <displayName>Ganglia</displayName>
       <comment>Ganglia Metrics Collection system (&lt;a href=&quot;http://oss.oetiker.ch/rrdtool/&quot; target=&quot;_blank&quot;&gt;RRDTool&lt;/a&gt; will be installed too)</comment>
       <version>3.5.0</version>
       <components>
         <component>
           <name>GANGLIA_SERVER</name>
+          <displayName>Ganglia Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -36,6 +38,7 @@
 
         <component>
           <name>GANGLIA_MONITOR</name>
+          <displayName>Ganglia Monitor</displayName>
           <category>SLAVE</category>
           <cardinality>ALL</cardinality>
           <auto-deploy>

+ 4 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HBASE/metainfo.xml

@@ -20,6 +20,7 @@
   <services>
     <service>
       <name>HBASE</name>
+      <displayName>HBase</displayName>
       <comment>Non-relational distributed database and centralized service for configuration management &amp;
         synchronization
       </comment>
@@ -27,6 +28,7 @@
       <components>
         <component>
           <name>HBASE_MASTER</name>
+          <displayName>HBase Master</displayName>
           <category>MASTER</category>
           <cardinality>1+</cardinality>
           <dependencies>
@@ -65,6 +67,7 @@
 
         <component>
           <name>HBASE_REGIONSERVER</name>
+          <displayName>RegionServer</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -75,6 +78,7 @@
 
         <component>
           <name>HBASE_CLIENT</name>
+          <displayName>HBase Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 7 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>HDFS</name>
+      <displayName>HDFS</displayName>
       <comment>Apache Hadoop Distributed File System</comment>
       <version>2.1.0.2.0</version>
 
       <components>
         <component>
           <name>NAMENODE</name>
+          <displayName>NameNode</displayName>
           <category>MASTER</category>
           <cardinality>1-2</cardinality>
           <commandScript>
@@ -55,6 +57,7 @@
 
         <component>
           <name>DATANODE</name>
+          <displayName>DataNode</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -66,6 +69,7 @@
 
         <component>
           <name>SECONDARY_NAMENODE</name>
+          <displayName>SNameNode</displayName>
           <!-- TODO:  cardinality is conditional on HA usage -->
           <cardinality>1</cardinality>
           <category>MASTER</category>
@@ -78,6 +82,7 @@
 
         <component>
           <name>HDFS_CLIENT</name>
+          <displayName>HDFS Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -111,6 +116,7 @@
 
         <component>
           <name>JOURNALNODE</name>
+          <displayName>JournalNode</displayName>
           <category>SLAVE</category>
           <cardinality>0+</cardinality>
           <commandScript>
@@ -122,6 +128,7 @@
 
         <component>
           <name>ZKFC</name>
+          <displayName>ZKFailoverController</displayName>
           <category>SLAVE</category>
           <!-- TODO: cardinality is conditional on HA topology -->
           <cardinality>0+</cardinality>

+ 10 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>HIVE</name>
+      <displayName>Hive</displayName>
       <comment>Data warehouse system for ad-hoc queries &amp; analysis of large datasets and table &amp; storage management service</comment>
       <version>0.12.0.2.0</version>
       <components>
 
         <component>
           <name>HIVE_METASTORE</name>
+          <displayName>Hive Metastore</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <auto-deploy>
@@ -41,6 +43,7 @@
 
         <component>
           <name>HIVE_SERVER</name>
+          <displayName>HiveServer2</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>
@@ -75,6 +78,7 @@
 
         <component>
           <name>MYSQL_SERVER</name>
+          <displayName>MySQL Server</displayName>
           <category>MASTER</category>
           <cardinality>0-1</cardinality>
           <commandScript>
@@ -85,6 +89,7 @@
 
         <component>
           <name>HIVE_CLIENT</name>
+          <displayName>Hive Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -176,11 +181,15 @@
 
     <service>
       <name>HCATALOG</name>
-      <comment>This is comment for HCATALOG service</comment>
+      <displayName>HCatalog</displayName>
+      <comment>A table and storage management layer for Hadoop that enables users with different data processing tools
+        to more easily read and write data on the grid.
+      </comment>
       <version>0.12.0.2.0.6.0</version>
       <components>
         <component>
           <name>HCAT</name>
+          <displayName>HCat</displayName>
           <category>CLIENT</category>
           <commandScript>
             <script>scripts/hcat_client.py</script>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>NAGIOS</name>
+      <displayName>Nagios</displayName>
       <comment>Nagios Monitoring and Alerting system</comment>
       <version>3.5.0</version>
       <components>
         <component>
            <name>NAGIOS_SERVER</name>
+          <displayName>Nagios Server</displayName>
            <category>MASTER</category>
            <cardinality>1</cardinality>
           <dependencies>

+ 3 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/OOZIE/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>OOZIE</name>
+      <displayName>Oozie</displayName>
       <comment>System for workflow coordination and execution of Apache Hadoop jobs.  This also includes the installation of the optional Oozie Web Console which relies on and will install the &lt;a target="_blank" href="http://www.sencha.com/legal/open-source-faq/"&gt;ExtJS&lt;/a&gt; Library.
       </comment>
       <version>4.0.0.2.0</version>
       <components>
         <component>
           <name>OOZIE_SERVER</name>
+          <displayName>Oozie Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>
@@ -60,6 +62,7 @@
 
         <component>
           <name>OOZIE_CLIENT</name>
+          <displayName>Oozie Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <dependencies>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/PIG/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>PIG</name>
+      <displayName>Pig</displayName>
       <comment>Scripting platform for analyzing large datasets</comment>
       <version>0.12.0.2.0</version>
       <components>
         <component>
           <name>PIG</name>
+          <displayName>Pig</displayName>
           <category>CLIENT</category>
           <cardinality>0+</cardinality>
           <commandScript>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/SQOOP/metainfo.xml

@@ -20,6 +20,7 @@
   <services>
     <service>
       <name>SQOOP</name>
+      <displayName>Sqoop</displayName>
       <comment>Tool for transferring bulk data between Apache Hadoop and
         structured data stores such as relational databases
       </comment>
@@ -28,6 +29,7 @@
       <components>
         <component>
           <name>SQOOP</name>
+          <displayName>Sqoop</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <dependencies>

+ 3 - 1
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/WEBHCAT/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>WEBHCAT</name>
-      <comment>This is comment for WEBHCAT service</comment>
+      <displayName>WebHCat</displayName>
+      <comment>Provides a REST-like web API for HCatalog and related Hadoop components.</comment>
       <version>0.12.0.2.0</version>
       <components>
         <component>
           <name>WEBHCAT_SERVER</name>
+          <displayName>WebHCat Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>

+ 7 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/YARN/metainfo.xml

@@ -21,12 +21,14 @@
   <services>
     <service>
       <name>YARN</name>
+      <displayName>YARN</displayName>
       <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
       <version>2.1.0.2.0</version>
       <components>
 
         <component>
           <name>RESOURCEMANAGER</name>
+          <displayName>ResourceManager</displayName>
           <category>MASTER</category>
           <cardinality>1-2</cardinality>
           <commandScript>
@@ -59,6 +61,7 @@
 
         <component>
           <name>NODEMANAGER</name>
+          <displayName>NodeManager</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -70,6 +73,7 @@
 
         <component>
           <name>YARN_CLIENT</name>
+          <displayName>Yarn Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -143,11 +147,13 @@
 
     <service>
       <name>MAPREDUCE2</name>
+      <displayName>MapReduce2</displayName>
       <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
       <version>2.1.0.2.0.6.0</version>
       <components>
         <component>
           <name>HISTORYSERVER</name>
+          <displayName>History Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <auto-deploy>
@@ -172,6 +178,7 @@
 
         <component>
           <name>MAPREDUCE2_CLIENT</name>
+          <displayName>MapReduce2 Client</displayName>
           <category>CLIENT</category>
           <cardinality>0+</cardinality>
           <commandScript>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/ZOOKEEPER/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>ZOOKEEPER</name>
+      <displayName>ZooKeeper</displayName>
       <comment>Centralized service which provides highly reliable distributed coordination</comment>
       <version>3.4.5.2.0</version>
       <components>
 
         <component>
           <name>ZOOKEEPER_SERVER</name>
+          <displayName>ZooKeeper Server</displayName>
           <category>MASTER</category>
           <cardinality>1+</cardinality>
           <commandScript>

+ 3 - 0
ambari-server/src/main/resources/stacks/HDP/2.1/services/FALCON/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>FALCON</name>
+      <displayName>Falcon</displayName>
       <comment>Data management and processing platform</comment>
       <version>0.5.0.2.1</version>
       <components>
         <component>
           <name>FALCON_CLIENT</name>
+          <displayName>Falcon Client</displayName>
           <category>CLIENT</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -42,6 +44,7 @@
         </component>
         <component>
           <name>FALCON_SERVER</name>
+          <displayName>Falcon Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/2.1/services/STORM/metainfo.xml

@@ -21,12 +21,14 @@
   <services>
     <service>
       <name>STORM</name>
+      <displayName>Storm</displayName>
       <comment>Apache Hadoop Stream processing framework</comment>
       <version>0.9.1.2.1</version>
       <components>
 
         <component>
           <name>NIMBUS</name>
+          <displayName>Nimbus</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>
@@ -47,6 +49,7 @@
 
         <component>
           <name>STORM_REST_API</name>
+          <displayName>Storm REST API Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -58,6 +61,7 @@
 
         <component>
           <name>SUPERVISOR</name>
+          <displayName>Supervisor</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -69,6 +73,7 @@
 
         <component>
           <name>STORM_UI_SERVER</name>
+          <displayName>Storm UI Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -80,6 +85,7 @@
 
         <component>
           <name>DRPC_SERVER</name>
+          <displayName>DRPC Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.1/services/TEZ/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>TEZ</name>
+      <displayName>Tez</displayName>
       <comment>Tez is the next generation Hadoop Query Processing framework written on top of YARN.</comment>
       <version>0.4.0.2.1</version>
       <components>
         <component>
           <name>TEZ_CLIENT</name>
+          <displayName>Tez Client</displayName>
           <cardinality>1+</cardinality>
           <category>CLIENT</category>
           <commandScript>

+ 2 - 0
ambari-server/src/main/resources/stacks/HDP/2.1/services/YARN/metainfo.xml

@@ -21,12 +21,14 @@
   <services>
     <service>
       <name>YARN</name>
+      <displayName>YARN</displayName>
       <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
       <version>2.4.0.2.1</version>
       <components>
 
         <component>
           <name>APP_TIMELINE_SERVER</name>
+          <displayName>App Timeline Server</displayName>
           <category>MASTER</category>
           <cardinality>0-1</cardinality>
           <commandScript>

+ 2 - 0
ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java

@@ -81,12 +81,14 @@ public class StackExtensionHelperTest {
       if (serviceInfo.getName().equals("HIVE")) {
         // Check old-style service
         assertEquals("HIVE", serviceInfo.getName());
+        assertEquals("Hive", serviceInfo.getDisplayName());
         assertEquals("2.0", serviceInfo.getSchemaVersion());
         assertTrue(serviceInfo.getComment().startsWith("Data warehouse system"));
         assertEquals("0.11.0.2.0.5.0", serviceInfo.getVersion());
         // Check some component definitions
         List<ComponentInfo> components = serviceInfo.getComponents();
         assertEquals("HIVE_METASTORE", components.get(0).getName());
+        assertEquals("Hive Metastore", components.get(0).getDisplayName());
         assertEquals("MASTER", components.get(0).getCategory());
         List<PropertyInfo> properties = serviceInfo.getProperties();
         // Check some property

+ 2 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml

@@ -20,11 +20,13 @@
   <services>
     <service>
       <name>NAGIOS</name>
+      <displayName>Nagios</displayName>
       <comment>Nagios Monitoring and Alerting system</comment>
       <version>3.5.0</version>
       <components>
         <component>
            <name>NAGIOS_SERVER</name>
+           <displayName>Nagios Server</displayName>
            <category>MASTER</category>
            <cardinality>1</cardinality>
           <dependencies>

+ 1 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.6/services/WEBHCAT/metainfo.xml

@@ -20,6 +20,7 @@
   <services>
     <service>
       <name>WEBHCAT</name>
+      <displayName>WebHCat</displayName>
       <comment>This is comment for WEBHCAT service</comment>
       <version>0.11.0.2.0.5.0</version>
     </service>

+ 4 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.6/services/YARN/metainfo.xml

@@ -21,12 +21,14 @@
   <services>
     <service>
       <name>YARN</name>
+      <displayName>YARN</displayName>
       <comment>Apache Hadoop NextGen MapReduce (YARN)</comment>
       <version>2.1.0.2.0.6.0</version>
       <components>
 
         <component>
           <name>RESOURCEMANAGER</name>
+          <displayName>ResourceManager</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -59,6 +61,7 @@
 
         <component>
           <name>NODEMANAGER</name>
+          <displayName>NodeManager</displayName>
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <commandScript>
@@ -69,6 +72,7 @@
         </component>
         <component>
           <name>YARN_CLIENT</name>
+          <displayName>Yarn Client</displayName>
           <category>CLIENT</category>
           <deleted>true</deleted>
           <cardinality>0+</cardinality>

+ 4 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HBASE/metainfo.xml

@@ -23,6 +23,7 @@
   <services>
     <service>
       <name>HBASE</name>
+      <displayName>HBase</displayName>
       <comment>Non-relational distributed database and centralized service for configuration management &amp;
         synchronization
       </comment>
@@ -30,6 +31,7 @@
       <components>
         <component>
           <name>HBASE_MASTER</name>
+          <displayName>HBase Master</displayName>
           <category>MASTER</category>
           <commandScript> <!--This is the script to handle all default commands -->
             <script>scripts/hbase_master.py</script>
@@ -58,6 +60,7 @@
 
         <component>
           <name>HBASE_REGIONSERVER</name>
+          <displayName>RegionServer</displayName>
           <category>SLAVE</category>
           <commandScript> <!--This is the script to handle all default commands -->
             <script>scripts/hbase_master.py</script>
@@ -67,6 +70,7 @@
 
         <component>
           <name>HBASE_CLIENT</name>
+          <displayName>HBase Client</displayName>
           <category>CLIENT</category>
         </component>
       </components>

+ 7 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HDFS/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>HDFS</name>
+      <displayName>HDFS</displayName>
       <comment>Apache Hadoop Distributed File System</comment>
       <version>2.1.0.2.0.6.0</version>
 
       <components>
         <component>
           <name>NAMENODE</name>
+          <displayName>NameNode</displayName>
           <category>MASTER</category>
           <commandScript>
             <script>scripts/namenode.py</script>
@@ -54,6 +56,7 @@
 
         <component>
           <name>DATANODE</name>
+          <displayName>DataNode</displayName>
           <category>SLAVE</category>
           <commandScript>
             <script>scripts/datanode.py</script>
@@ -64,6 +67,7 @@
 
         <component>
           <name>SECONDARY_NAMENODE</name>
+          <displayName>SNameNode</displayName>
           <category>MASTER</category>
           <commandScript>
             <script>scripts/snamenode.py</script>
@@ -74,6 +78,7 @@
 
         <component>
           <name>HDFS_CLIENT</name>
+          <displayName>HDFS Client</displayName>
           <category>CLIENT</category>
           <commandScript>
             <script>scripts/hdfs_client.py</script>
@@ -84,6 +89,7 @@
 
         <component>
           <name>JOURNALNODE</name>
+          <displayName>JournalNode</displayName>
           <category>MASTER</category>
           <commandScript>
             <script>scripts/journalnode.py</script>
@@ -94,6 +100,7 @@
 
         <component>
           <name>ZKFC</name>
+          <displayName>ZKFailoverController</displayName>
           <category>SLAVE</category>
           <commandScript>
             <script>scripts/zkfc_slave.py</script>

+ 5 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HIVE/metainfo.xml

@@ -21,6 +21,7 @@
     <service>
 
       <name>HIVE</name>
+      <displayName>Hive</displayName>
       <comment>Data warehouse system for ad-hoc queries &amp; analysis of large datasets and table &amp; storage management service</comment>
       <version>0.11.0.2.0.5.0</version>
 
@@ -28,6 +29,7 @@
 
         <component>
           <name>HIVE_METASTORE</name>
+          <displayName>Hive Metastore</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <auto-deploy>
@@ -43,6 +45,7 @@
 
         <component>
           <name>HIVE_SERVER</name>
+          <displayName>HiveServer2</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <dependencies>
@@ -84,6 +87,7 @@
 
         <component>
           <name>MYSQL_SERVER</name>
+          <displayName>MySQL Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -94,6 +98,7 @@
 
         <component>
           <name>HIVE_CLIENT</name>
+          <displayName>Hive Client</displayName>
           <category>CLIENT</category>
           <cardinality>0+</cardinality>
           <commandScript>

+ 3 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.7/services/ZOOKEEPER/metainfo.xml

@@ -20,12 +20,14 @@
   <services>
     <service>
       <name>ZOOKEEPER</name>
+      <displayName>ZooKeeper</displayName>
       <comment>Centralized service which provides highly reliable distributed coordination</comment>
       <version>3.4.5.2.0</version>
       <components>
 
         <component>
           <name>ZOOKEEPER_SERVER</name>
+          <displayName>ZooKeeper Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
           <commandScript>
@@ -37,6 +39,7 @@
 
         <component>
           <name>ZOOKEEPER_CLIENT</name>
+          <displayName>ZooKeeper Client</displayName>
           <category>CLIENT</category>
           <cardinality>0+</cardinality>
           <commandScript>

+ 1 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.8/services/SQOOP/metainfo.xml

@@ -20,6 +20,7 @@
   <services>
     <service>
       <name>SQOOP</name>
+      <displayName>Sqoop</displayName>
       <comment>Tool for transferring bulk data between Apache Hadoop and structured data stores such as relational databases</comment>
       <version>1.23</version>
       <components>

+ 4 - 0
ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metainfo.xml

@@ -37,6 +37,7 @@
 
         <component>
           <name>STORM_REST_API</name>
+          <displayName>Storm REST API Server</displayName>
           <category>MASTER</category>
           <commandScript>
             <script>scripts/rest_api.py</script>
@@ -47,6 +48,7 @@
 
         <component>
           <name>SUPERVISOR</name>
+          <displayName>Supervisor</displayName>
           <category>SLAVE</category>
           <commandScript>
             <script>scripts/supervisor.py</script>
@@ -57,6 +59,7 @@
 
         <component>
           <name>STORM_UI_SERVER</name>
+          <displayName>Storm UI Server</displayName>
           <category>MASTER</category>
           <commandScript>
             <script>scripts/ui_server.py</script>
@@ -67,6 +70,7 @@
 
         <component>
           <name>DRPC_SERVER</name>
+          <displayName>DRPC Server</displayName>
           <category>MASTER</category>
           <commandScript>
             <script>scripts/drpc_server.py</script>

+ 2 - 0
ambari-web/app/mappers/stack_service_mapper.js

@@ -24,6 +24,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
   config: {
     id: 'service_name',
     service_name: 'service_name',
+    display_name: 'display_name',
     config_types: 'config_types',
     comments: 'comments',
     service_version: 'service_version',
@@ -42,6 +43,7 @@ App.stackServiceMapper = App.QuickDataMapper.create({
   component_config: {
     id: 'component_name',
     component_name: 'component_name',
+    display_name: 'display_name',
     cardinality: 'cardinality',
     custom_commands: 'custom_commands',
     service_name: 'service_name',

+ 0 - 1
ambari-web/app/mixins.js

@@ -23,7 +23,6 @@ require('mixins/common/blueprint');
 require('mixins/common/localStorage');
 require('mixins/common/userPref');
 require('mixins/common/serverValidator');
-require('mixins/models/service_mixin');
 require('mixins/common/tableServerProvider');
 require('mixins/common/table_server_mixin');
 require('mixins/main/host/details/host_components/decommissionable');

+ 0 - 30
ambari-web/app/mixins/models/service_mixin.js

@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://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.
- */
-
-var App = require('app');
-
-/**
- * Service Mixin that used for App.StackService and App.Service models.
- *
- **/
-App.ServiceModelMixin = Em.Mixin.create({
-  serviceName: DS.attr('string'),
-  displayName: function() {
-    return App.format.role(this.get('serviceName'));
-  }.property('serviceName')
-});

+ 5 - 2
ambari-web/app/models/service.js

@@ -19,9 +19,12 @@
 
 var App = require('app');
 require('utils/config');
-require('mixins/models/service_mixin');
 
-App.Service = DS.Model.extend(App.ServiceModelMixin, {
+App.Service = DS.Model.extend({
+  serviceName: DS.attr('string'),
+  displayName: function() {
+    return App.format.role(this.get('serviceName'));
+  }.property('serviceName'),
   passiveState: DS.attr('string'),
   workStatus: DS.attr('string'),
   rand: DS.attr('string'),

+ 3 - 2
ambari-web/app/models/stack_service.js

@@ -18,7 +18,6 @@
 
 var App = require('app');
 require('utils/helper');
-require('mixins/models/service_mixin');
 require('models/service_config');
 //TODO after moving validation/recommendation to BE belove requirements must be deleted
 require('utils/configs/defaults_providers/yarn_defaults_provider');
@@ -37,7 +36,9 @@ require('utils/configs/validators/storm_configs_validator');
  * The model maps to the  http://hostname:8080/api/v1/stacks2/HDP/versions/${versionNumber}/stackServices?fields=StackServices/*,serviceComponents/*
  * @type {*}
  */
-App.StackService = DS.Model.extend(App.ServiceModelMixin, {
+App.StackService = DS.Model.extend({
+  serviceName: DS.attr('string'),
+  displayName: DS.attr('string'),
   comments: DS.attr('string'),
   configTypes: DS.attr('object'),
   serviceVersion: DS.attr('string'),

+ 1 - 9
ambari-web/app/models/stack_service_component.js

@@ -24,6 +24,7 @@ var numberUtils = require('utils/number_utils');
  */
 App.StackServiceComponent = DS.Model.extend({
   componentName: DS.attr('string'),
+  displayName: DS.attr('string'),
   cardinality: DS.attr('string'),
   customCommands: DS.attr('array'),
   dependencies: DS.attr('array'),
@@ -54,15 +55,6 @@ App.StackServiceComponent = DS.Model.extend({
     return numberUtils.getCardinalityValue(this.get('cardinality'), true);
   }.property('cardinality'),
 
-  /** @property {String} displayName**/
-  displayName: function() {
-    if (App.format.role(this.get('componentName'))) {
-      return App.format.role(this.get('componentName'));
-    } else {
-      return this.get('componentName');
-    }
-  }.property('componentName'),
-
   /** @property {Boolean} isRequired - component required to install **/
   isRequired: function() {
     return this.get('minToInstall') > 0;

+ 13 - 2
ambari-web/app/utils/helper.js

@@ -373,7 +373,18 @@ App.format = {
    * return {string}
    */
   role:function (role) {
-    return this.normalizeName(role);
+    var result;
+    var models = [App.StackService, App.StackServiceComponent];
+    models.forEach(function(model){
+      var instance =  model.find().findProperty('id',role);
+      if (instance) {
+        result = instance.get('displayName');
+      }
+    },this);
+    if (!result)  {
+      result =  this.normalizeName(role);
+    }
+    return result;
   },
 
   /**
@@ -397,7 +408,7 @@ App.format = {
       suffixRegExp.lastIndex = 0;
       var matches = suffixRegExp.exec(name);
       name = matches[1].capitalize() + matches[2].capitalize();
-    };
+    }
     return name.capitalize();
   },
 

+ 1 - 1
ambari-web/test/app_test.js

@@ -458,7 +458,7 @@ describe('App', function () {
     afterEach(function () {
       i++;
       App.StackServiceComponent.find.restore();
-    })
+    });
 
     testCases.forEach(function (test) {
       it(test.key + ' should contain ' + test.result, function () {

+ 61 - 0
ambari-web/test/service_components.js

@@ -22,6 +22,7 @@ module.exports = {
       "StackServices" : {
         "comments" : "Apache Hadoop Distributed Processing Framework",
         "service_name" : "MAPREDUCE",
+        "display_name" : "MapReduce",
         "service_version" : "1.2.0.1.3.3.0",
         "stack_name" : "HDP",
         "stack_version" : "1.3.2"
@@ -31,6 +32,7 @@ module.exports = {
           "StackServiceComponents" : {
             "component_category" : "MASTER",
             "component_name" : "HISTORYSERVER",
+            "display_name" : "History Server",
             "is_client" : false,
             "is_master" : true,
             "service_name" : "MAPREDUCE",
@@ -43,6 +45,7 @@ module.exports = {
           "StackServiceComponents" : {
             "component_category" : "MASTER",
             "component_name" : "JOBTRACKER",
+            "display_name" : "JobTracker",
             "is_client" : false,
             "is_master" : true,
             "service_name" : "MAPREDUCE",
@@ -55,6 +58,7 @@ module.exports = {
           "StackServiceComponents" : {
             "component_category" : "CLIENT",
             "component_name" : "MAPREDUCE_CLIENT",
+            "display_name" : "MapReduce Client",
             "is_client" : true,
             "is_master" : false,
             "service_name" : "MAPREDUCE",
@@ -67,6 +71,7 @@ module.exports = {
           "StackServiceComponents" : {
             "component_category" : "SLAVE",
             "component_name" : "TASKTRACKER",
+            "display_name" : "TaskTracker",
             "is_client" : false,
             "is_master" : false,
             "service_name" : "MAPREDUCE",
@@ -84,6 +89,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "FALCON",
+        "display_name" : "Falcon",
         "service_version" : "0.5.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -118,6 +124,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "FALCON_CLIENT",
+            "display_name" : "Falcon Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -133,6 +140,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "FALCON_SERVER",
+            "display_name" : "Falcon Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -172,6 +180,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "FLUME",
+        "display_name" : "Flume",
         "service_version" : "1.4.0.2.1.1.0",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -201,6 +210,7 @@ module.exports = {
             "cardinality" : "0+",
             "component_category" : "SLAVE",
             "component_name" : "FLUME_HANDLER",
+            "display_name" : "Flume",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -219,6 +229,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : false,
         "service_name" : "GANGLIA",
+        "display_name" : "Ganglia",
         "service_version" : "3.5.0",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -238,6 +249,7 @@ module.exports = {
             "cardinality" : "ALL",
             "component_category" : "SLAVE",
             "component_name" : "GANGLIA_MONITOR",
+            "display_name" : "Ganglia Monitor",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -256,6 +268,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "GANGLIA_SERVER",
+            "display_name" : "Ganglia Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -274,6 +287,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "HBASE",
+        "display_name" : "HBase",
         "service_version" : "0.98.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -308,6 +322,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "HBASE_CLIENT",
+            "display_name" : "HBase Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -323,6 +338,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "MASTER",
             "component_name" : "HBASE_MASTER",
+            "display_name" : "HBase Master",
             "custom_commands" : [
               "DECOMMISSION"
             ],
@@ -361,6 +377,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "SLAVE",
             "component_name" : "HBASE_REGIONSERVER",
+            "display_name" : "RegionServer",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -379,6 +396,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "HCATALOG",
+        "display_name" : "HCatalog",
         "service_version" : "0.12.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -403,6 +421,7 @@ module.exports = {
             "cardinality" : null,
             "component_category" : "CLIENT",
             "component_name" : "HCAT",
+            "display_name" : "HCat",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -421,6 +440,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "HDFS",
+        "display_name" : "HDFS",
         "service_version" : "2.4.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -460,6 +480,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "SLAVE",
             "component_name" : "DATANODE",
+            "display_name" : "DataNode",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -475,6 +496,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "HDFS_CLIENT",
+            "display_name" : "HDFS Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -490,6 +512,7 @@ module.exports = {
             "cardinality" : "0+",
             "component_category" : "SLAVE",
             "component_name" : "JOURNALNODE",
+            "display_name" : "JournalNode",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -505,6 +528,7 @@ module.exports = {
             "cardinality" : "1-2",
             "component_category" : "MASTER",
             "component_name" : "NAMENODE",
+            "display_name" : "NameNode",
             "custom_commands" : [
               "DECOMMISSION"
             ],
@@ -522,6 +546,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "SECONDARY_NAMENODE",
+            "display_name" : "SNameNode",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -537,6 +562,7 @@ module.exports = {
             "cardinality" : "0+",
             "component_category" : "SLAVE",
             "component_name" : "ZKFC",
+            "display_name" : "ZKFailoverController",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -555,6 +581,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "HIVE",
+        "display_name" : "Hive",
         "service_version" : "0.13.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -594,6 +621,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "HIVE_CLIENT",
+            "display_name" : "Hive Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -609,6 +637,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "HIVE_METASTORE",
+            "display_name" : "Hive Metastore",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -628,6 +657,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "HIVE_SERVER",
+            "display_name" : "HiveServer2",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -684,6 +714,7 @@ module.exports = {
             "cardinality" : "0-1",
             "component_category" : "MASTER",
             "component_name" : "MYSQL_SERVER",
+            "display_name" : "MySQL Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -702,6 +733,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "MAPREDUCE2",
+        "display_name" : "MapReduce2",
         "service_version" : "2.1.0.2.0.6.0",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -736,6 +768,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "HISTORYSERVER",
+            "display_name" : "History Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -766,6 +799,7 @@ module.exports = {
             "cardinality" : "0+",
             "component_category" : "CLIENT",
             "component_name" : "MAPREDUCE2_CLIENT",
+            "display_name" : "MapReduce2 Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -784,6 +818,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : false,
         "service_name" : "NAGIOS",
+        "display_name" : "Nagios",
         "service_version" : "3.5.0",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -803,6 +838,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "NAGIOS_SERVER",
+            "display_name" : "Nagios Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -882,6 +918,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "OOZIE",
+        "display_name" : "Oozie",
         "service_version" : "4.0.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -916,6 +953,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "OOZIE_CLIENT",
+            "display_name" : "Oozie Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -952,6 +990,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "OOZIE_SERVER",
+            "display_name" : "Oozie Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1001,6 +1040,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "PIG",
+        "display_name" : "Pig",
         "service_version" : "0.12.1.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1030,6 +1070,7 @@ module.exports = {
             "cardinality" : "0+",
             "component_category" : "CLIENT",
             "component_name" : "PIG",
+            "display_name" : "Pig",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -1048,6 +1089,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "SQOOP",
+        "display_name" : "Sqoop",
         "service_version" : "1.4.4.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1067,6 +1109,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "SQOOP",
+            "display_name" : "Sqoop",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -1106,6 +1149,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "STORM",
+        "display_name" : "Storm",
         "service_version" : "0.9.1.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1130,6 +1174,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "DRPC_SERVER",
+            "display_name" : "DRPC Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1145,6 +1190,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "NIMBUS",
+            "display_name" : "Nimbus",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1171,6 +1217,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "STORM_REST_API",
+            "display_name" : "Storm REST API Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1186,6 +1233,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "STORM_UI_SERVER",
+            "display_name" : "Storm UI Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1201,6 +1249,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "SLAVE",
             "component_name" : "SUPERVISOR",
+            "display_name" : "Supervisor",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -1219,6 +1268,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : false,
         "service_name" : "TEZ",
+        "display_name" : "Tez",
         "service_version" : "0.4.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1243,6 +1293,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "TEZ_CLIENT",
+            "display_name" : "Tez Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -1261,6 +1312,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "WEBHCAT",
+        "display_name" : "WebHCat",
         "service_version" : "0.13.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1285,6 +1337,7 @@ module.exports = {
             "cardinality" : "1",
             "component_category" : "MASTER",
             "component_name" : "WEBHCAT_SERVER",
+            "display_name" : "WebHCat Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1354,6 +1407,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "YARN",
+        "display_name" : "YARN",
         "service_version" : "2.4.0.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1393,6 +1447,7 @@ module.exports = {
             "cardinality" : "0-1",
             "component_category" : "MASTER",
             "component_name" : "APP_TIMELINE_SERVER",
+            "display_name" : "App Timeline Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,
@@ -1408,6 +1463,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "SLAVE",
             "component_name" : "NODEMANAGER",
+            "display_name" : "NodeManager",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : false,
@@ -1423,6 +1479,7 @@ module.exports = {
             "cardinality" : "1-2",
             "component_category" : "MASTER",
             "component_name" : "RESOURCEMANAGER",
+            "display_name" : "ResourceManager",
             "custom_commands" : [
               "DECOMMISSION",
               "REFRESHQUEUES"
@@ -1441,6 +1498,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "YARN_CLIENT",
+            "display_name" : "YARN Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -1459,6 +1517,7 @@ module.exports = {
         "custom_commands" : [ ],
         "service_check_supported" : true,
         "service_name" : "ZOOKEEPER",
+        "display_name" : "ZooKeeper",
         "service_version" : "3.4.5.2.1",
         "stack_name" : "HDP",
         "stack_version" : "2.1",
@@ -1488,6 +1547,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "CLIENT",
             "component_name" : "ZOOKEEPER_CLIENT",
+            "display_name" : "ZooKeeper Client",
             "custom_commands" : [ ],
             "is_client" : true,
             "is_master" : false,
@@ -1503,6 +1563,7 @@ module.exports = {
             "cardinality" : "1+",
             "component_category" : "MASTER",
             "component_name" : "ZOOKEEPER_SERVER",
+            "display_name" : "ZooKeeper Server",
             "custom_commands" : [ ],
             "is_client" : false,
             "is_master" : true,