Browse Source

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

Jaimin Jetly 10 năm trước cách đây
mục cha
commit
02ee3d4405
54 tập tin đã thay đổi với 312 bổ sung87 xóa
  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,