You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ja...@apache.org on 2014/07/10 00:21:27 UTC

git commit: AMBARI-6444. component to service mapping should not be hardcode. (jaimin)

Repository: ambari
Updated Branches:
  refs/heads/trunk b94eb716b -> 70eec3b86


AMBARI-6444. component to service mapping should not be hardcode. (jaimin)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/70eec3b8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/70eec3b8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/70eec3b8

Branch: refs/heads/trunk
Commit: 70eec3b86ebcff9989c303ae1f2ec944cbd9c67c
Parents: b94eb71
Author: Jaimin Jetly <ja...@hortonworks.com>
Authored: Wed Jul 9 15:20:48 2014 -0700
Committer: Jaimin Jetly <ja...@hortonworks.com>
Committed: Wed Jul 9 15:20:57 2014 -0700

----------------------------------------------------------------------
 ambari-web/app/app.js                           |  9 ++++
 .../global/background_operations_controller.js  |  2 +-
 .../main/admin/security/add/step3.js            |  2 +-
 ambari-web/app/controllers/main/host.js         |  2 +-
 .../app/controllers/main/host/add_controller.js | 23 ++++-----
 .../controllers/main/service/add_controller.js  | 10 ++--
 .../controllers/main/service/info/configs.js    |  3 +-
 .../service/manage_config_groups_controller.js  |  5 +-
 .../app/controllers/wizard/step7_controller.js  |  9 +++-
 ambari-web/app/mappers/server_data_mapper.js    | 53 --------------------
 ambari-web/app/models/service.js                | 27 ----------
 ambari-web/app/models/stack_service.js          | 10 ++++
 .../app/utils/batch_scheduled_requests.js       | 11 ++--
 ambari-web/app/utils/config.js                  |  2 +-
 ambari-web/app/views/main/host/summary.js       | 15 +++---
 ambari-web/app/views/main/service/item.js       |  5 +-
 16 files changed, 66 insertions(+), 122 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/app.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js
index 5e31627..7baea87 100644
--- a/ambari-web/app/app.js
+++ b/ambari-web/app/app.js
@@ -103,9 +103,18 @@ module.exports = Em.Application.create({
       return App.StackService.find().filterProperty('hasClient').mapProperty('serviceName');
     }.property('App.router.clusterController.isLoaded'),
 
+    hasMaster: function () {
+      return App.StackService.find().filterProperty('hasMaster').mapProperty('serviceName');
+    }.property('App.router.clusterController.isLoaded'),
+
+    hasSlave: function () {
+      return App.StackService.find().filterProperty('hasSlave').mapProperty('serviceName');
+    }.property('App.router.clusterController.isLoaded'),
+
     noConfigTypes: function () {
       return App.StackService.find().filterProperty('isNoConfigTypes').mapProperty('serviceName');
     }.property('App.router.clusterController.isLoaded'),
+
     monitoring: function () {
       return App.StackService.find().filterProperty('isMonitoringService').mapProperty('serviceName');
     }.property('App.router.clusterController.isLoaded')

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/global/background_operations_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/background_operations_controller.js b/ambari-web/app/controllers/global/background_operations_controller.js
index 99cc81f..c1d0e78 100644
--- a/ambari-web/app/controllers/global/background_operations_controller.js
+++ b/ambari-web/app/controllers/global/background_operations_controller.js
@@ -283,7 +283,7 @@ App.BackgroundOperationsController = Em.Controller.extend({
           if (service === 'ALL_SERVICES') {
             parsedRequestContext = Em.I18n.t("requestInfo." + contextCommand.toLowerCase()).format(Em.I18n.t('common.allServices'));
           } else {
-            parsedRequestContext = Em.I18n.t("requestInfo." + contextCommand.toLowerCase()).format(App.Service.DisplayNames[service]);
+            parsedRequestContext = Em.I18n.t("requestInfo." + contextCommand.toLowerCase()).format(App.format.role(service));
           }
           break;
         case "ROLLING-RESTART":

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/main/admin/security/add/step3.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/security/add/step3.js b/ambari-web/app/controllers/main/admin/security/add/step3.js
index 0b0969f..659afde 100644
--- a/ambari-web/app/controllers/main/admin/security/add/step3.js
+++ b/ambari-web/app/controllers/main/admin/security/add/step3.js
@@ -256,7 +256,7 @@ App.MainAdminSecurityAddStep3Controller = Em.Controller.extend({
 
       if (hostComponents.someProperty('componentName', component.componentName)) {
         var configs = this.get('content.serviceConfigProperties');
-        var serviceName = App.QuickDataMapper.componentServiceMap()[component.componentName];
+        var serviceName = App.StackServiceComponent.find(component.componentName).get('serviceName');
         var serviceConfigs = configs.filterProperty('serviceName', serviceName);
         var servicePrincipal = serviceConfigs.findProperty('name', component.principal);
         var serviceKeytabPath = serviceConfigs.findProperty('name', component.keytab).value;

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host.js b/ambari-web/app/controllers/main/host.js
index e6cf3b7..cc9b26c 100644
--- a/ambari-web/app/controllers/main/host.js
+++ b/ambari-web/app/controllers/main/host.js
@@ -900,7 +900,7 @@ App.MainHostController = Em.ArrayController.extend({
         host.host_components.forEach(function (hostComponent) {
           wrappedHostComponents.push(Em.Object.create({
             componentName: hostComponent.HostRoles.component_name,
-            serviceName: App.QuickDataMapper.componentServiceMap()[hostComponent.HostRoles.component_name],
+            serviceName: operationData.serviceName,
             hostName: host.Hosts.host_name,
             hostPassiveState: host.Hosts.maintenance_state,
             staleConfigs: hostComponent.HostRoles.stale_configs,

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/main/host/add_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/add_controller.js b/ambari-web/app/controllers/main/host/add_controller.js
index a0f08bd..cbf20bf 100644
--- a/ambari-web/app/controllers/main/host/add_controller.js
+++ b/ambari-web/app/controllers/main/host/add_controller.js
@@ -257,20 +257,19 @@ App.AddHostController = App.WizardController.extend({
    * @param selectedServices
    */
   loadServiceConfigGroupsBySlaves: function (selectedServices) {
-    var componentServiceMap = App.QuickDataMapper.componentServiceMap();
     var slaveComponentHosts = this.get('content.slaveComponentHosts');
     if (slaveComponentHosts && slaveComponentHosts.length > 0) {
       slaveComponentHosts.forEach(function (slave) {
         if (slave.hosts.length > 0) {
           if (slave.componentName !== "CLIENT") {
-            var service = componentServiceMap[slave.componentName];
+            var service = App.StackServiceComponent.find(slave.componentName).get('stackService');
             var configGroups = this.get('content.configGroups').filterProperty('ConfigGroup.tag', service);
             var configGroupsNames = configGroups.mapProperty('ConfigGroup.group_name');
-            var defaultGroupName = App.Service.DisplayNames[service] + ' Default';
+            var defaultGroupName = service.get('displayName') + ' Default';
             configGroupsNames.unshift(defaultGroupName);
             selectedServices.push({
-              serviceId: service,
-              displayName: App.Service.DisplayNames[service],
+              serviceId: service.get('serviceName'),
+              displayName: service.get('displayName'),
               hosts: slave.hosts.mapProperty('hostName'),
               configGroupsNames: configGroupsNames,
               configGroups: configGroups,
@@ -289,7 +288,6 @@ App.AddHostController = App.WizardController.extend({
    * @param selectedServices
    */
   loadServiceConfigGroupsByClients: function (selectedServices) {
-    var componentServiceMap = App.QuickDataMapper.componentServiceMap();
     var slaveComponentHosts = this.get('content.slaveComponentHosts');
     var clients = this.get('content.clients');
     var client = slaveComponentHosts && slaveComponentHosts.findProperty('componentName', 'CLIENT');
@@ -297,18 +295,19 @@ App.AddHostController = App.WizardController.extend({
     if (clients && selectedClientHosts && clients.length > 0 && selectedClientHosts.length > 0) {
       this.loadClients();
       clients.forEach(function (client) {
-        var service = componentServiceMap[client.component_name];
-        var serviceMatch = selectedServices.findProperty('serviceId', service);
+        var service = App.StackServiceComponent.find(client.component_name).get('stackService');
+        var serviceName = service.get('serviceName');
+        var serviceMatch = selectedServices.findProperty('serviceId', serviceName);
         if (serviceMatch) {
           serviceMatch.hosts = serviceMatch.hosts.concat(selectedClientHosts).uniq();
         } else {
-          var configGroups = this.get('content.configGroups').filterProperty('ConfigGroup.tag', service);
+          var configGroups = this.get('content.configGroups').filterProperty('ConfigGroup.tag', serviceName);
           var configGroupsNames = configGroups.mapProperty('ConfigGroup.group_name').sort();
-          var defaultGroupName = App.Service.DisplayNames[service] + ' Default';
+          var defaultGroupName = service.get('displayName') + ' Default';
           configGroupsNames.unshift(defaultGroupName);
           selectedServices.push({
-            serviceId: service,
-            displayName: App.Service.DisplayNames[service],
+            serviceId: serviceName,
+            displayName: service.get('displayName'),
             hosts: selectedClientHosts,
             configGroupsNames: configGroupsNames,
             configGroups: configGroups,

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/main/service/add_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/add_controller.js b/ambari-web/app/controllers/main/service/add_controller.js
index 89669ff..1e764ca 100644
--- a/ambari-web/app/controllers/main/service/add_controller.js
+++ b/ambari-web/app/controllers/main/service/add_controller.js
@@ -114,10 +114,9 @@ App.AddServiceController = App.WizardController.extend({
         item.set('isSelected', isSelected);
         item.set('isInstalled', isInstalled);
       },this);
-      var serviceNames = App.StackService.find().filterProperty('isSelected', true).filterProperty('isInstalled', false).mapProperty('serviceName');
-      console.log('selected services ', serviceNames);
+      var isServiceWithSlave = App.StackService.find().filterProperty('isSelected').filterProperty('hasSlave').filterProperty('isInstalled', false).mapProperty('serviceName').length;
 
-      this.set('content.skipSlavesStep', !serviceNames.contains('MAPREDUCE') && !serviceNames.contains('HBASE')  && !serviceNames.contains('STORM') && !serviceNames.contains('YARN'));
+      this.set('content.skipSlavesStep', !isServiceWithSlave);
       if (this.get('content.skipSlavesStep')) {
         this.get('isStepDisabled').findProperty('step', 3).set('value', this.get('content.skipSlavesStep'));
       }
@@ -130,7 +129,6 @@ App.AddServiceController = App.WizardController.extend({
    * @param stepController App.WizardStep4Controller
    */
   saveServices: function (stepController) {
-    var serviceNames = [];
     var services = {
       selectedServices: [],
       installedServices: []
@@ -143,8 +141,8 @@ App.AddServiceController = App.WizardController.extend({
 
     this.set('content.selectedServiceNames', selectedServices);
     this.setDBProperty('selectedServiceNames',selectedServices);
-
-    this.set('content.skipSlavesStep', !serviceNames.contains('MAPREDUCE') && !serviceNames.contains('HBASE') && !serviceNames.contains('STORM') && !serviceNames.contains('YARN'));
+    var isServiceWithSlave = stepController.get('content').filterProperty('isSelected').filterProperty('hasSlave').filterProperty('isInstalled', false).mapProperty('serviceName').length;
+    this.set('content.skipSlavesStep', !isServiceWithSlave);
     if (this.get('content.skipSlavesStep')) {
       this.get('isStepDisabled').findProperty('step', 3).set('value', this.get('content.skipSlavesStep'));
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index 5f4c977..cca2c6d 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -222,6 +222,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   setConfigGroups: function (data, opt, params) {
     var serviceConfigsDef = params.serviceConfigsDef;
     var serviceName = this.get('content.serviceName');
+    var displayName = this.get('content.displayName');
     console.debug("loadServiceConfigs(): data=", data);
     // Create default configuration group
     var selectedConfigGroup;
@@ -271,7 +272,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       this.set('configGroups', configGroups);
     }
     var defaultConfigGroup = App.ConfigGroup.create({
-      name: App.Service.DisplayNames[serviceName] + " Default",
+      name: displayName + " Default",
       description: "Default cluster level " + serviceName + " configuration",
       isDefault: true,
       hosts: {

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
index 2849adb..25db736 100644
--- a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
+++ b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
@@ -159,8 +159,9 @@ App.ManageConfigGroupsController = Em.Controller.extend({
     var usedHosts = [];
     var unusedHosts = [];
     var serviceName = this.get('serviceName');
+    var serviceDisplayName =  this.get('displayName');
     var defaultConfigGroup = App.ConfigGroup.create({
-      name: App.Service.DisplayNames[serviceName] + " Default",
+      name: serviceDisplayName + " Default",
       description: "Default cluster level " + this.get('serviceName') + " configuration",
       isDefault: true,
       parentConfigGroup: null,
@@ -273,7 +274,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
     var availableHosts = this.get('selectedConfigGroup.availableHosts');
     var popupDescription = {
       header: Em.I18n.t('hosts.selectHostsDialog.title'),
-      dialogMessage: Em.I18n.t('hosts.selectHostsDialog.message').format(App.Service.DisplayNames[this.get('serviceName')])
+      dialogMessage: Em.I18n.t('hosts.selectHostsDialog.message').format(this.get('displayName'))
     };
     hostsManagement.launchHostsSelectionDialog(availableHosts, [], false, this.get('componentsForFilter'), this.addHostsCallback.bind(this), popupDescription);
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js b/ambari-web/app/controllers/wizard/step7_controller.js
index cb3bec3..4baa5fe 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -44,6 +44,11 @@ App.WizardStep7Controller = Em.Controller.extend({
   slaveHostToGroup: null,
 
   /**
+   * used in services_config.js view to mark a config with security icon
+   */
+  secureConfigs: require('data/secure_mapping'),
+
+  /**
    * If miscConfigChange Modal is shown
    * @type {bool}
    */
@@ -300,7 +305,7 @@ App.WizardStep7Controller = Em.Controller.extend({
       }
     }
     var defaultConfigGroup = App.ConfigGroup.create({
-      name: App.Service.DisplayNames[serviceName] + " Default",
+      name: App.format.role(serviceName) + " Default",
       description: "Default cluster level " + serviceName + " configuration",
       isDefault: true,
       hosts: defaultConfigGroupHosts,
@@ -910,7 +915,7 @@ App.WizardStep7Controller = Em.Controller.extend({
       if (!serviceRawGroups.length) {
         service.set('configGroups', [
           App.ConfigGroup.create({
-            name: App.Service.DisplayNames[service.serviceName] + " Default",
+            name: service.displayName + " Default",
             description: "Default cluster level " + service.serviceName + " configuration",
             isDefault: true,
             hosts: Em.copy(hosts),

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/mappers/server_data_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/server_data_mapper.js b/ambari-web/app/mappers/server_data_mapper.js
index d97f9b4..58abb71 100644
--- a/ambari-web/app/mappers/server_data_mapper.js
+++ b/ambari-web/app/mappers/server_data_mapper.js
@@ -198,56 +198,3 @@ App.QuickDataMapper = App.ServerDataMapper.extend({
     return json;
   }
 });
-
-App.QuickDataMapper.componentServiceMap = function () {
-  return {
-    'NAMENODE': 'HDFS',
-    'SECONDARY_NAMENODE': 'HDFS',
-    'DATANODE': 'HDFS',
-    'HDFS_CLIENT': 'HDFS',
-    'JOURNALNODE': 'HDFS',
-    'ZKFC': 'HDFS',
-    'JOBTRACKER': 'MAPREDUCE',
-    'TASKTRACKER': 'MAPREDUCE',
-    'MAPREDUCE_CLIENT': 'MAPREDUCE',
-    'MAPREDUCE2_CLIENT': 'MAPREDUCE2',
-    'HISTORYSERVER': App.get('isHadoop2Stack') ? 'MAPREDUCE2' : 'MAPREDUCE',
-    'TEZ_CLIENT': 'TEZ',
-    'RESOURCEMANAGER': 'YARN',
-    'YARN_CLIENT': 'YARN',
-    'NODEMANAGER': 'YARN',
-    'APP_TIMELINE_SERVER': 'YARN',
-    'ZOOKEEPER_SERVER': 'ZOOKEEPER',
-    'ZOOKEEPER_CLIENT': 'ZOOKEEPER',
-    'HBASE_MASTER': 'HBASE',
-    'HBASE_REGIONSERVER': 'HBASE',
-    'HBASE_CLIENT': 'HBASE',
-    'PIG': 'PIG',
-    'SQOOP': 'SQOOP',
-    'OOZIE_SERVER': 'OOZIE',
-    'OOZIE_CLIENT': 'OOZIE',
-    'HIVE_SERVER': 'HIVE',
-    'HIVE_METASTORE': 'HIVE',
-    'HIVE_CLIENT': 'HIVE',
-    'MYSQL_SERVER': 'HIVE',
-    'HCAT': 'HCATALOG',
-    'WEBHCAT_SERVER': 'WEBHCAT',
-    'NAGIOS_SERVER': 'NAGIOS',
-    'GANGLIA_SERVER': 'GANGLIA',
-    'GANGLIA_MONITOR': 'GANGLIA',
-    'KERBEROS_SERVER': 'KERBEROS',
-    'KERBEROS_ADMIN_CLIENT': 'KERBEROS',
-    'KERBEROS_CLIENT': 'KERBEROS',
-    'HUE_SERVER': 'HUE',
-    'GLUSTERFS_CLIENT': 'GLUSTERFS',
-    'GLUSTERFS': 'GLUSTERFS',
-    'FALCON_SERVER': 'FALCON',
-    'FALCON_CLIENT': 'FALCON',
-    'NIMBUS': 'STORM',
-    'SUPERVISOR': 'STORM',
-    'STORM_UI_SERVER': 'STORM',
-    'DRPC_SERVER': 'STORM',
-    'STORM_REST_API': 'STORM',
-    'FLUME_HANDLER': 'FLUME'
-  }
-};

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/models/service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service.js b/ambari-web/app/models/service.js
index 9952855..567d6fd 100644
--- a/ambari-web/app/models/service.js
+++ b/ambari-web/app/models/service.js
@@ -83,10 +83,6 @@ App.Service = DS.Model.extend(App.ServiceModelMixin, {
     return typeServiceMap[this.get('serviceName')] || [];
   }.property('serviceName'),
 
-  displayName: function () {
-    return App.Service.DisplayNames[this.get('serviceName')];
-  }.property('serviceName'),
-
   /**
    * For each host-component, if the desired_configs dont match the
    * actual_configs, then a restart is required. Except for Global site
@@ -177,29 +173,6 @@ App.Service.Health = {
   }
 };
 
-App.Service.DisplayNames = {
-  'HDFS': 'HDFS',
-  'GLUSTERFS': 'GLUSTERFS',
-  'YARN': 'YARN',
-  'MAPREDUCE': 'MapReduce',
-  'MAPREDUCE2': 'MapReduce2',
-  'TEZ': 'Tez',
-  'HBASE': 'HBase',
-  'OOZIE': 'Oozie',
-  'HIVE': 'Hive',
-  'HCATALOG': 'HCat',
-  'ZOOKEEPER': 'ZooKeeper',
-  'PIG': 'Pig',
-  'SQOOP': 'Sqoop',
-  'WEBHCAT': 'WebHCat',
-  'GANGLIA': 'Ganglia',
-  'NAGIOS': 'Nagios',
-  'HUE': 'Hue',
-  'FLUME': 'Flume',
-  'FALCON': 'Falcon',
-  'STORM': 'Storm'
-};
-
 /**
  * association between service and extended model name
  * @type {Object}

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/models/stack_service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_service.js b/ambari-web/app/models/stack_service.js
index 8085a03..2431675 100644
--- a/ambari-web/app/models/stack_service.js
+++ b/ambari-web/app/models/stack_service.js
@@ -125,6 +125,16 @@ App.StackService = DS.Model.extend(App.ServiceModelMixin, {
     return serviceComponents.someProperty('isClient');
   }.property('serviceName'),
 
+  hasMaster: function () {
+    var serviceComponents = this.get('serviceComponents');
+    return serviceComponents.someProperty('isMaster');
+  }.property('serviceName'),
+
+  hasSlave: function () {
+    var serviceComponents = this.get('serviceComponents');
+    return serviceComponents.someProperty('isSlave');
+  }.property('serviceName'),
+
   isClientOnlyService: function () {
     var serviceComponents = this.get('serviceComponents');
     return serviceComponents.everyProperty('isClient');

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/utils/batch_scheduled_requests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/batch_scheduled_requests.js b/ambari-web/app/utils/batch_scheduled_requests.js
index c165a8e..65745b2 100644
--- a/ambari-web/app/utils/batch_scheduled_requests.js
+++ b/ambari-web/app/utils/batch_scheduled_requests.js
@@ -199,7 +199,6 @@ module.exports = {
      */
     var componentToHostsMap = {};
     var hosts = [];
-    var componentServiceMap = App.QuickDataMapper.componentServiceMap();
     hostComponentsList.forEach(function(hc) {
       var hostName = hc.get('hostName');
       var componentName = hc.get('componentName');
@@ -213,15 +212,17 @@ module.exports = {
     for (var componentName in componentToHostsMap) {
       if (componentToHostsMap.hasOwnProperty(componentName)) {
         resource_filters.push({
-          service_name: componentServiceMap[componentName],
+          service_name: App.StackServiceComponent.find(componentName).get('serviceName'),
           component_name: componentName,
           hosts: componentToHostsMap[componentName].join(",")
         });
       }
     }
     if (hostComponentsList.length > 0) {
-      var operation_level = this.getOperationLevelobject(level, componentServiceMap[hostComponentsList[0].get("componentName")],
-        hostComponentsList[0].get("componentName"));
+      var serviceComponentName = hostComponentsList[0].get("componentName");
+      var serviceName = App.StackServiceComponent.find(serviceComponentName).get('serviceName');
+      var operation_level = this.getOperationLevelobject(level, serviceName,
+        serviceComponentName);
     }
 
 
@@ -415,7 +416,7 @@ module.exports = {
               host.host_components.forEach(function(hostComponent){
                 wrappedHostComponents.push(Em.Object.create({
                   componentName: hostComponent.HostRoles.component_name,
-                  serviceName: App.QuickDataMapper.componentServiceMap()[hostComponent.HostRoles.component_name],
+                  serviceName: App.StackServiceComponent.find(hostComponent.HostRoles.component_name).get('serviceName'),
                   hostName: host.Hosts.host_name,
                   staleConfigs: hostComponent.HostRoles.stale_configs,
                   hostPassiveState: host.Hosts.maintenance_state,

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 700da2f..1c4137d 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1238,7 +1238,7 @@ App.config = Em.Object.create({
     availableConfigGroups = result;
     var selectedConfigGroup = availableConfigGroups && availableConfigGroups.length > 0 ?
       availableConfigGroups[0] : null;
-    var serviceName = App.Service.DisplayNames[serviceId];
+    var serviceName = App.format.role(serviceId);
     App.ModalPopup.show({
       classNames: [ 'sixty-percent-width-modal' ],
       header: Em.I18n.t('config.group.selection.dialog.title').format(serviceName),

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/views/main/host/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/summary.js b/ambari-web/app/views/main/host/summary.js
index a7fc43a..4609b66 100644
--- a/ambari-web/app/views/main/host/summary.js
+++ b/ambari-web/app/views/main/host/summary.js
@@ -237,14 +237,14 @@ App.MainHostSummaryView = Em.View.extend({
     if (!App.supports.deleteHost) {
       return [];
     }
-    var componentServiceMap = App.QuickDataMapper.componentServiceMap();
-    var allClients = App.StackServiceComponent.find().filterProperty('isClient',true).mapProperty('componentName');
+    var clientComponents = App.StackServiceComponent.find().filterProperty('isClient');
     var installedServices = this.get('installedServices');
     var installedClients = this.get('clients').mapProperty('componentName');
-    return allClients.filter(function(componentName) {
+    var installableClients = clientComponents.filter(function(componentName) {
       // service for current client is installed but client isn't installed on current host
-      return installedServices.contains(componentServiceMap[componentName]) && !installedClients.contains(componentName);
+      return installedServices.contains(clientComponents.get('serviceName')) && !installedClients.contains(clientComponents.get('componentName'));
     });
+    return installableClients.mapProperty('componentName');
   }.property('content.hostComponents.length', 'installedServices.length', 'App.supports.deleteHost'),
 
   /**
@@ -256,13 +256,12 @@ App.MainHostSummaryView = Em.View.extend({
     var self = this;
     var installableClients = this.get('installableClientComponents');
     var installedComponents = this.get('content.hostComponents').mapProperty('componentName');
-    var addableToHostComponents = App.get('components.addableToHost');
+    var addableToHostComponents = App.StackServiceComponent.find().filterProperty('isAddableToHost');
     var installedServices = this.get('installedServices');
-    var componentServiceMap = App.QuickDataMapper.componentServiceMap();
 
     addableToHostComponents.forEach(function(addableComponent) {
-      if(installedServices.contains(componentServiceMap[addableComponent]) && !installedComponents.contains(addableComponent)) {
-        components.pushObject(self.addableComponentObject.create({'componentName': addableComponent, 'serviceName': componentServiceMap[addableComponent]}));
+      if(installedServices.contains(addableComponent.get('serviceName')) && !installedComponents.contains(addableComponent.get('componentName'))) {
+        components.pushObject(self.addableComponentObject.create({'componentName': addableComponent.get('componentName'), 'serviceName': addableComponent.get('serviceName')}));
       }
     });
     if (installableClients.length > 0) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/70eec3b8/ambari-web/app/views/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/item.js b/ambari-web/app/views/main/service/item.js
index 15d9835..234059b 100644
--- a/ambari-web/app/views/main/service/item.js
+++ b/ambari-web/app/views/main/service/item.js
@@ -28,6 +28,7 @@ App.MainServiceItemView = Em.View.extend({
     var allMasters = this.get('controller.content.hostComponents').filterProperty('isMaster').mapProperty('componentName').uniq();
     var disabled = this.get('controller.isStopDisabled');
     var serviceName = service.get('serviceName');
+    var displayName = service.get('displayName');
     var disableRefreshConfgis = !service.get('isRestartRequired');
 
     if (this.get('controller.isClientsOnlyService')) {
@@ -76,8 +77,8 @@ App.MainServiceItemView = Em.View.extend({
           options.push({action: 'runSmokeTest', cssClass: 'icon-thumbs-up-alt', 'label': Em.I18n.t('services.service.actions.run.smoke'), disabled:disabled});
       }
       var requestLabel = service.get('passiveState') === "OFF" ?
-          Em.I18n.t('passiveState.turnOnFor').format(App.Service.DisplayNames[serviceName]) :
-          Em.I18n.t('passiveState.turnOffFor').format(App.Service.DisplayNames[serviceName]);
+          Em.I18n.t('passiveState.turnOnFor').format(displayName) :
+          Em.I18n.t('passiveState.turnOffFor').format(displayName);
       var passiveLabel = service.get('passiveState') === "OFF" ?
           Em.I18n.t('passiveState.turnOn') :
           Em.I18n.t('passiveState.turnOff');