Repository: ambari
Updated Branches:
  refs/heads/branch-1.7.0 306903330 -> 25b5adc0e


AMBARI-7229. Stack version must start with 2. to be considered Hadoop-2.x 
compatible. (jaimin)


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

Branch: refs/heads/branch-1.7.0
Commit: 25b5adc0e9233bffbbda877d807936c156de358d
Parents: 3069033
Author: Jaimin Jetly <jai...@hortonworks.com>
Authored: Thu Oct 9 15:23:16 2014 -0700
Committer: Jaimin Jetly <jai...@hortonworks.com>
Committed: Thu Oct 9 18:15:18 2014 -0700

----------------------------------------------------------------------
 ambari-web/app/app.js                          | 13 +++++-
 ambari-web/app/mappers/stack_service_mapper.js |  2 +
 ambari-web/test/app_test.js                    | 51 +++++++++++++++------
 3 files changed, 50 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/25b5adc0/ambari-web/app/app.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js
index e057814..c92e0ac 100644
--- a/ambari-web/app/app.js
+++ b/ambari-web/app/app.js
@@ -37,6 +37,8 @@ module.exports = Em.Application.create({
   isManager: function() {
     return this.get('isAdmin') || this.get('isOperator');
   }.property('isAdmin','isOperator'),
+
+  isStackServicesLoaded: false,
   /**
    * return url prefix with number value of version of HDP stack
    */
@@ -80,8 +82,15 @@ module.exports = Em.Application.create({
   }.property('currentStackVersion', 'currentStackName'),
 
   isHadoop2Stack: function () {
-    return (stringUtils.compareVersions(this.get('currentStackVersionNumber'), 
"2.0") > -1);
-  }.property('currentStackVersionNumber'),
+    var result = true;
+    var hdfsService = 
App.StackService.find().findProperty('serviceName','HDFS');
+    if (hdfsService) {
+      result = stringUtils.compareVersions(hdfsService.get('serviceVersion'), 
"2.0") > -1;
+    } else {
+      result = 
stringUtils.compareVersions(this.get('currentStackVersionNumber'), "2.0") > -1;
+    }
+    return result;
+  }.property('router.clusterController.isLoaded', 
'isStackServicesLoaded','currentStackVersionNumber'),
 
   isHadoop22Stack: function () {
     return (stringUtils.compareVersions(this.get('currentStackVersionNumber'), 
"2.2") > -1);

http://git-wip-us.apache.org/repos/asf/ambari/blob/25b5adc0/ambari-web/app/mappers/stack_service_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/stack_service_mapper.js 
b/ambari-web/app/mappers/stack_service_mapper.js
index 1732549..6a13bd3 100644
--- a/ambari-web/app/mappers/stack_service_mapper.js
+++ b/ambari-web/app/mappers/stack_service_mapper.js
@@ -63,10 +63,12 @@ App.stackServiceMapper = App.QuickDataMapper.create({
   },
 
   mapStackServices: function(json) {
+    App.set('isStackServicesLoaded',false);
     this.clearStackModels();
     App.resetDsStoreTypeMap(App.StackServiceComponent);
     App.resetDsStoreTypeMap(App.StackService);
     this.map(json);
+    App.set('isStackServicesLoaded',true);
   },
 
   map: function (json) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/25b5adc0/ambari-web/test/app_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/app_test.js b/ambari-web/test/app_test.js
index a8f5151..fb35c86 100644
--- a/ambari-web/test/app_test.js
+++ b/ambari-web/test/app_test.js
@@ -145,10 +145,10 @@ describe('App', function () {
         result: '1.3.1'
       }
     ];
-    before(function() {
+    before(function () {
       App.set('defaultStackVersion', '');
     });
-    after(function() {
+    after(function () {
       App.set('defaultStackVersion', 'HDP-2.0.5');
     });
     testCases.forEach(function (test) {
@@ -161,13 +161,13 @@ describe('App', function () {
   });
 
   describe('#isHadoop2Stack', function () {
-    before(function() {
+    before(function () {
       App.set('defaultStackVersion', '');
     });
-    after(function() {
+    after(function () {
       App.set('defaultStackVersion', 'HDP-2.0.5');
     });
-    var testCases = [
+    var testCasesWithoutHDFSDefined = [
       {
         title: 'if currentStackVersion is empty then isHadoop2Stack should be 
false',
         currentStackVersion: '',
@@ -190,23 +190,44 @@ describe('App', function () {
       }
     ];
 
-    testCases.forEach(function (test) {
+    testCasesWithoutHDFSDefined.forEach(function (test) {
       it(test.title, function () {
         App.set('currentStackVersion', test.currentStackVersion);
         expect(App.get('isHadoop2Stack')).to.equal(test.result);
         App.set('currentStackVersion', "HDP-1.2.2");
       });
     });
+
+
+    it('HDFS service version should get priority when defined', function () {
+      var stackServices = [
+        Em.Object.create({
+          serviceName: 'HDFS',
+          serviceVersion: '2.1'
+        })
+      ];
+      sinon.stub(App.StackService, 'find', function () {
+        return stackServices;
+      });
+      App.set('currentStackVersion', '0.8');
+      App.set('isStackServicesLoaded', true);
+      expect(App.get('isHadoop2Stack')).to.equal(true);
+      App.set('isStackServicesLoaded', false);
+      App.set('currentStackVersion', "HDP-1.2.2");
+      App.StackService.find.restore();
+    });
   });
 
   describe('#isHaEnabled when HDFS is installed:', function () {
 
     beforeEach(function () {
       sinon.stub(App.Service, 'find', function () {
-        return [{
-          id : 'HDFS',
-          serviceName: 'HDFS'
-        }];
+        return [
+          {
+            id: 'HDFS',
+            serviceName: 'HDFS'
+          }
+        ];
       });
     });
 
@@ -239,10 +260,12 @@ describe('App', function () {
 
     beforeEach(function () {
       sinon.stub(App.Service, 'find', function () {
-        return [{
-          id : 'ZOOKEEPER',
-          serviceName: 'ZOOKEEPER'
-        }];
+        return [
+          {
+            id: 'ZOOKEEPER',
+            serviceName: 'ZOOKEEPER'
+          }
+        ];
       });
     });
 

Reply via email to