浏览代码

AMBARI-7023. Incorrect ATS metric request for non-HDP stack with version 2.1. (jaimin)

Jaimin Jetly 10 年之前
父节点
当前提交
13f6cac88f

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

@@ -30,7 +30,7 @@
           <name>RESOURCEMANAGER</name>
           <name>RESOURCEMANAGER</name>
           <displayName>ResourceManager</displayName>
           <displayName>ResourceManager</displayName>
           <category>MASTER</category>
           <category>MASTER</category>
-          <cardinality>1-2</cardinality>
+          <cardinality>1</cardinality>
           <commandScript>
           <commandScript>
             <script>scripts/resourcemanager.py</script>
             <script>scripts/resourcemanager.py</script>
             <scriptType>PYTHON</scriptType>
             <scriptType>PYTHON</scriptType>

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

@@ -41,6 +41,7 @@
        <component>
        <component>
          <name>RESOURCEMANAGER</name>
          <name>RESOURCEMANAGER</name>
          <category>MASTER</category>
          <category>MASTER</category>
+         <cardinality>1-2</cardinality>
           <configuration-dependencies>
           <configuration-dependencies>
             <config-type>capacity-scheduler</config-type>
             <config-type>capacity-scheduler</config-type>
           </configuration-dependencies>
           </configuration-dependencies>

+ 7 - 8
ambari-web/app/app.js

@@ -66,11 +66,6 @@ module.exports = Em.Application.create({
       stringUtils.compareVersions(this.get('currentStackVersionNumber'), "2.0") === 0)
       stringUtils.compareVersions(this.get('currentStackVersionNumber'), "2.0") === 0)
   }.property('currentStackVersionNumber'),
   }.property('currentStackVersionNumber'),
 
 
-  isHadoop21Stack: function () {
-    return (stringUtils.compareVersions(this.get('currentStackVersionNumber'), "2.1") === 1 ||
-      stringUtils.compareVersions(this.get('currentStackVersionNumber'), "2.1") === 0)
-  }.property('currentStackVersionNumber'),
-
   /**
   /**
    * If NameNode High Availability is enabled
    * If NameNode High Availability is enabled
    * Based on <code>clusterStatus.isInstalled</code>, stack version, <code>SNameNode</code> availability
    * Based on <code>clusterStatus.isInstalled</code>, stack version, <code>SNameNode</code> availability
@@ -89,9 +84,13 @@ module.exports = Em.Application.create({
    * @type {bool}
    * @type {bool}
    */
    */
   isRMHaEnabled: function () {
   isRMHaEnabled: function () {
-    if (!this.get('isHadoop2Stack')) return false;
-    return this.HostComponent.find().filterProperty('componentName', 'RESOURCEMANAGER').length > 1;
-  }.property('router.clusterController.isLoaded', 'isHadoop2Stack'),
+    var result = false;
+    var rmStackComponent = App.StackServiceComponent.find().findProperty('componentName','RESOURCEMANAGER');
+    if (rmStackComponent && rmStackComponent.get('isMultipleAllowed')) {
+      result = this.HostComponent.find().filterProperty('componentName', 'RESOURCEMANAGER').length > 1;
+    }
+    return result;
+  }.property('router.clusterController.isLoaded'),
 
 
   /**
   /**
    * Object with utility functions for list of service names with similar behavior
    * Object with utility functions for list of service names with similar behavior

+ 2 - 1
ambari-web/app/controllers/global/update_controller.js

@@ -337,12 +337,13 @@ App.UpdateController = Em.Controller.extend({
   updateServiceMetric: function (callback) {
   updateServiceMetric: function (callback) {
     var self = this;
     var self = this;
     self.set('isUpdated', false);
     self.set('isUpdated', false);
+    var isATSPresent = App.StackServiceComponent.find().findProperty('componentName','APP_TIMELINE_SERVER');
 
 
     var conditionalFields = this.getConditionalFields(),
     var conditionalFields = this.getConditionalFields(),
       conditionalFieldsString = conditionalFields.length > 0 ? ',' + conditionalFields.join(',') : '',
       conditionalFieldsString = conditionalFields.length > 0 ? ',' + conditionalFields.join(',') : '',
       testUrl = App.get('isHadoop2Stack') ? '/data/dashboard/HDP2/master_components.json' : '/data/dashboard/services.json',
       testUrl = App.get('isHadoop2Stack') ? '/data/dashboard/HDP2/master_components.json' : '/data/dashboard/services.json',
       isFlumeInstalled = App.cache['services'].mapProperty('ServiceInfo.service_name').contains('FLUME'),
       isFlumeInstalled = App.cache['services'].mapProperty('ServiceInfo.service_name').contains('FLUME'),
-      isATSInstalled = App.cache['services'].mapProperty('ServiceInfo.service_name').contains('YARN') && App.get('isHadoop21Stack'),
+      isATSInstalled = App.cache['services'].mapProperty('ServiceInfo.service_name').contains('YARN') && isATSPresent,
       flumeHandlerParam = isFlumeInstalled ? 'ServiceComponentInfo/component_name=FLUME_HANDLER|' : '',
       flumeHandlerParam = isFlumeInstalled ? 'ServiceComponentInfo/component_name=FLUME_HANDLER|' : '',
       atsHandlerParam = isATSInstalled ? 'ServiceComponentInfo/component_name=APP_TIMELINE_SERVER|' : '',
       atsHandlerParam = isATSInstalled ? 'ServiceComponentInfo/component_name=APP_TIMELINE_SERVER|' : '',
       haComponents = App.get('isHaEnabled') ? 'ServiceComponentInfo/component_name=JOURNALNODE|ServiceComponentInfo/component_name=ZKFC|' : '',
       haComponents = App.get('isHaEnabled') ? 'ServiceComponentInfo/component_name=JOURNALNODE|ServiceComponentInfo/component_name=ZKFC|' : '',

+ 13 - 4
ambari-web/app/controllers/main/admin/serviceAccounts_controller.js

@@ -55,7 +55,7 @@ App.MainAdminServiceAccountsController = App.MainServiceInfoConfigsController.ex
       }
       }
     }
     }
     this.setServiceConfigTags(loadedClusterSiteToTagMap);
     this.setServiceConfigTags(loadedClusterSiteToTagMap);
-    App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags')).done(function(configGroups){
+    App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags')).done(function (configGroups) {
       var configSet = App.config.mergePreDefinedWithLoaded(configGroups, [], self.get('serviceConfigTags'), serviceName);
       var configSet = App.config.mergePreDefinedWithLoaded(configGroups, [], self.get('serviceConfigTags'), serviceName);
 
 
       var misc_configs = configSet.configs.filterProperty('serviceName', self.get('selectedService')).filterProperty('category', 'Users and Groups').filterProperty('isVisible', true);
       var misc_configs = configSet.configs.filterProperty('serviceName', self.get('selectedService')).filterProperty('category', 'Users and Groups').filterProperty('isVisible', true);
@@ -64,7 +64,7 @@ App.MainAdminServiceAccountsController = App.MainServiceInfoConfigsController.ex
 
 
       var sortOrder = self.get('configs').filterProperty('serviceName', self.get('selectedService')).filterProperty('category', 'Users and Groups').filterProperty('isVisible', true).mapProperty('name');
       var sortOrder = self.get('configs').filterProperty('serviceName', self.get('selectedService')).filterProperty('category', 'Users and Groups').filterProperty('isVisible', true).mapProperty('name');
 
 
-      //stack, with version lower than 2.1, doesn't have Falcon service
+
       self.setProxyUserGroupLabel(misc_configs);
       self.setProxyUserGroupLabel(misc_configs);
 
 
       self.set('users', self.sortByOrder(sortOrder, misc_configs));
       self.set('users', self.sortByOrder(sortOrder, misc_configs));
@@ -120,8 +120,17 @@ App.MainAdminServiceAccountsController = App.MainServiceInfoConfigsController.ex
    */
    */
   setProxyUserGroupLabel: function (misc_configs) {
   setProxyUserGroupLabel: function (misc_configs) {
     var proxyUserGroup = misc_configs.findProperty('name', 'proxyuser_group');
     var proxyUserGroup = misc_configs.findProperty('name', 'proxyuser_group');
-    if (proxyUserGroup && !App.get('isHadoop21Stack')) {
-      proxyUserGroup.set('displayName', "Proxy group for Hive, WebHCat and Oozie");
+    //stack, with version lower than 2.1, doesn't have Falcon service
+    if (proxyUserGroup) {
+      var proxyServices = ['HIVE', 'WEBHCAT', 'OOZIE', 'FALCON'];
+      var services = Em.A([]);
+      proxyServices.forEach(function (serviceName) {
+        var stackService = App.StackService.find(serviceName);
+        if (stackService) {
+          services.push(stackService.get('displayName'));
+        }
+      }, this);
+      proxyUserGroup.set('displayName', "Proxy group for " + stringUtils.getFormattedStringFromArray(services));
     }
     }
   }
   }
 });
 });

+ 1 - 1
ambari-web/app/views/main/service/item.js

@@ -84,7 +84,7 @@ App.MainServiceItemView = Em.View.extend({
         action: 'enableRMHighAvailability',
         action: 'enableRMHighAvailability',
         label: Em.I18n.t('admin.rm_highAvailability.button.enable'),
         label: Em.I18n.t('admin.rm_highAvailability.button.enable'),
         cssClass: 'icon-arrow-up',
         cssClass: 'icon-arrow-up',
-        isHidden: !App.get('supports.resourceManagerHighAvailability') || App.get('isRMHaEnabled') || !App.get('isHadoop21Stack')
+        isHidden: !App.get('supports.resourceManagerHighAvailability') || App.get('isRMHaEnabled')
       },
       },
       MOVE_COMPONENT: {
       MOVE_COMPONENT: {
         action: 'reassignMaster',
         action: 'reassignMaster',

+ 0 - 55
ambari-web/test/app_test.js

@@ -199,61 +199,6 @@ describe('App', function () {
     });
     });
   });
   });
 
 
-  describe('#isHadoop21Stack', function () {
-    var tests = [
-      {
-        v: '',
-        e: false
-      },
-      {
-        v: 'HDP',
-        e: false
-      },
-      {
-        v: 'HDP1',
-        e: false
-      },
-      {
-        v: 'HDP-1',
-        e: false
-      },
-      {
-        v: 'HDP-2.0',
-        e: false
-      },
-      {
-        v: 'HDP-2.0.1000',
-        e: false
-      },
-      {
-        v: 'HDP-2.1',
-        e: true
-      },
-      {
-        v: 'HDP-2.1.3434',
-        e: true
-      },
-      {
-        v: 'HDP-2.2',
-        e: true
-      },
-      {
-        v: 'HDP-2.2.1212',
-        e: true
-      }
-    ];
-    tests.forEach(function (test) {
-      it(test.v, function () {
-        App.QuickViewLinks.prototype.setQuickLinks = function () {
-        };
-        App.set('currentStackVersion', test.v);
-        var calculated = App.get('isHadoop21Stack');
-        var expected = test.e;
-        expect(calculated).to.equal(expected);
-      });
-    });
-  });
-
   describe('#isHaEnabled', function () {
   describe('#isHaEnabled', function () {
 
 
     it('if hadoop stack version less than 2 then isHaEnabled should be false', function () {
     it('if hadoop stack version less than 2 then isHaEnabled should be false', function () {

+ 0 - 24
ambari-web/test/controllers/main/admin/serviceAccounts_controller_test.js

@@ -194,29 +194,5 @@ describe('App.MainAdminServiceAccountsController', function () {
       controller.setProxyUserGroupLabel(misc_configs);
       controller.setProxyUserGroupLabel(misc_configs);
       expect(misc_configs.findProperty('name', 'proxyuser_group')).to.be.undefined;
       expect(misc_configs.findProperty('name', 'proxyuser_group')).to.be.undefined;
     });
     });
-    it('proxyuser_group config defined and isHadoop21Stack is true', function () {
-      var misc_configs = [Em.Object.create({
-        name: 'proxyuser_group',
-        displayName: 'test'
-      })];
-      sinon.stub(App, 'get', function(){
-        return true;
-      });
-      controller.setProxyUserGroupLabel(misc_configs);
-      expect(misc_configs.findProperty('name', 'proxyuser_group').get('displayName')).to.equal('test');
-      App.get.restore();
-    });
-    it('proxyuser_group config defined and isHadoop21Stack is false', function () {
-      var misc_configs = [Em.Object.create({
-        name: 'proxyuser_group',
-        displayName: 'test'
-      })];
-      sinon.stub(App, 'get', function(){
-        return false;
-      });
-      controller.setProxyUserGroupLabel(misc_configs);
-      expect(misc_configs.findProperty('name', 'proxyuser_group').get('displayName')).to.equal('Proxy group for Hive, WebHCat and Oozie');
-      App.get.restore();
-    });
   })
   })
 });
 });