You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/05/26 21:17:39 UTC

ambari git commit: AMBARI-10533. Admin View About says 2.0.0 (and links to Admin View are hardcoded to 2.0.0) (alexantonenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk d636d70d7 -> 49403a68d


AMBARI-10533. Admin View About says 2.0.0 (and links to Admin View are hardcoded to 2.0.0) (alexantonenko)


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

Branch: refs/heads/trunk
Commit: 49403a68d9afa9f544bfafe6a841f2f82a714e70
Parents: d636d70
Author: Alex Antonenko <hi...@gmail.com>
Authored: Tue May 26 22:16:36 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Tue May 26 22:17:35 2015 +0300

----------------------------------------------------------------------
 ambari-admin/src/main/resources/view.xml        |  4 +-
 ambari-web/app/router.js                        | 36 ++++++++++---
 ambari-web/app/utils/ajax/ajax.js               |  6 +++
 .../main/admin/stack_upgrade/versions_view.js   | 18 ++++++-
 ambari-web/test/router_test.js                  | 56 ++++++++++++++++++++
 .../admin/stack_upgrade/version_view_test.js    | 26 ++++++++-
 6 files changed, 135 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/49403a68/ambari-admin/src/main/resources/view.xml
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/view.xml b/ambari-admin/src/main/resources/view.xml
index fb3dde1..f6ce7ef 100644
--- a/ambari-admin/src/main/resources/view.xml
+++ b/ambari-admin/src/main/resources/view.xml
@@ -17,11 +17,11 @@ limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
 <view>
   <name>ADMIN_VIEW</name>
   <label>Ambari Admin View</label>
-  <version>2.0.0</version>
+  <version>2.1.0</version>
   <system>true</system>
   <instance>
     <name>INSTANCE</name>
     <description>This view provides administration capabilities for Ambari</description>
     <visible>false</visible>
   </instance>
-</view>
\ No newline at end of file
+</view>

http://git-wip-us.apache.org/repos/asf/ambari/blob/49403a68/ambari-web/app/router.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/router.js b/ambari-web/app/router.js
index 46e62aa..e72f971 100644
--- a/ambari-web/app/router.js
+++ b/ambari-web/app/router.js
@@ -275,8 +275,6 @@ App.Router = Em.Router.extend({
   },
 
   loginGetClustersSuccessCallback: function (clustersData, opt, params) {
-    var adminViewUrl = '/views/ADMIN_VIEW/2.0.0/INSTANCE/#/';
-    //TODO: Replace hard coded value with query. Same in templates/application.hbs
     var loginController = this.get('loginController');
     var loginData = params.loginData;
     var privileges = loginData.privileges || [];
@@ -290,8 +288,12 @@ App.Router = Em.Router.extend({
           router.setClusterInstalled(clustersData);
           transitionToApp = true;
         } else {
-          window.location = adminViewUrl;
-          return;
+          App.ajax.send({
+            name: 'ambari.service.load_server_version',
+            sender: this,
+            success: 'adminViewInfoSuccessCallback',
+            error: 'adminViewInfoErrorCallback'
+          });
         }
       } else {
         if (clustersData.items.length) {
@@ -312,7 +314,7 @@ App.Router = Em.Router.extend({
       }
       App.set('isPermissionDataLoaded', true);
       if (transitionToApp) {
-        if (!Em.isNone(router.get('preferedPath')) && 
+        if (!Em.isNone(router.get('preferedPath')) &&
             router.get('preferedPath') != "#/login") {
           window.location = router.get('preferedPath');
           router.set('preferedPath', null);
@@ -327,6 +329,23 @@ App.Router = Em.Router.extend({
         loginController.postLogin(true,true);
       }
   },
+  adminViewInfoSuccessCallback: function(data) {
+    var components = Em.get(data,'components');
+    if (Em.isArray(components)) {
+      var mappedVersions = components.map(function(component) {
+          if (Em.get(component, 'RootServiceComponents.component_version')) {
+            return Em.get(component, 'RootServiceComponents.component_version');
+          }
+        }),
+        sortedMappedVersions = mappedVersions.sort(),
+        latestVersion = sortedMappedVersions[sortedMappedVersions.length-1];
+      window.location.replace('/views/ADMIN_VIEW/' + latestVersion + '/INSTANCE/#/');
+    }
+  },
+
+  adminViewInfoErrorCallback: function (req) {
+    console.log("Get admin view version error: " + req.statusCode);
+  },
 
   loginGetClustersErrorCallback: function (req) {
     console.log("Get clusters error: " + req.statusCode);
@@ -506,7 +525,12 @@ App.Router = Em.Router.extend({
             router.transitionTo('login');
           });
         } else {
-            window.location.replace('/views/ADMIN_VIEW/2.0.0/INSTANCE/#/');
+          App.ajax.send({
+            name: 'ambari.service.load_server_version',
+            sender: router,
+            success: 'adminViewInfoSuccessCallback',
+            error: 'adminViewInfoErrorCallback'
+          });
         }
       }
     }),

http://git-wip-us.apache.org/repos/asf/ambari/blob/49403a68/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index c0a24c1..f942054 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -201,6 +201,12 @@ var urls = {
     'mock': '/data/services/ambari.json'
   },
 
+  'ambari.service.load_server_version': {
+    'real': '/services/AMBARI?fields=components/RootServiceComponents/component_version&components/RootServiceComponents/component_name=AMBARI_SERVER&minimal_response=true',
+    'mock': '/data/services/ambari.json'
+  },
+
+
   'service.flume.agent.command': {
     'real': '/clusters/{clusterName}/hosts/{host}/host_components/FLUME_HANDLER',
     'mock': '',

http://git-wip-us.apache.org/repos/asf/ambari/blob/49403a68/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
index 3b2848d..195320f 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
@@ -168,7 +168,23 @@ App.MainAdminStackVersionsView = Em.View.extend({
    */
   goToVersions: function () {
     return App.showConfirmationPopup(function () {
-      window.location.replace('/views/ADMIN_VIEW/2.0.0/INSTANCE/#/stackVersions');
+      App.ajax.send({
+        name: 'ambari.service.load_server_version',
+        sender: this
+      }).then(function(data) {
+        var components = Em.get(data,'components');
+        if (Em.isArray(components)) {
+          var mappedVersions = components.map(function(component) {
+              if (Em.get(component, 'RootServiceComponents.component_version')) {
+                return Em.get(component, 'RootServiceComponents.component_version');
+              }
+            }),
+            sortedMappedVersions = mappedVersions.sort(),
+            latestVersion = sortedMappedVersions[sortedMappedVersions.length-1];
+            console.log('/views/ADMIN_VIEW/' + latestVersion + '/INSTANCE/#/stackVersions');
+            window.location.replace('/views/ADMIN_VIEW/' + latestVersion + '/INSTANCE/#/stackVersions');
+        }
+      });
     },
     Em.I18n.t('admin.stackVersions.manageVersions.popup.body'),
     null,

http://git-wip-us.apache.org/repos/asf/ambari/blob/49403a68/ambari-web/test/router_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/router_test.js b/ambari-web/test/router_test.js
index eefb35a..f5c66a3 100644
--- a/ambari-web/test/router_test.js
+++ b/ambari-web/test/router_test.js
@@ -108,4 +108,60 @@ describe('App.Router', function () {
 
   });
 
+  describe('#adminViewInfoSuccessCallback', function() {
+    beforeEach(function() {
+      sinon.stub(window.location, 'replace', Em.K);
+    });
+    afterEach(function() {
+      window.location.replace.restore();
+    });
+
+    it('should redirect to the latest version of admin view', function() {
+      var tests = [{
+        mockData: {
+          components: [{
+            'RootServiceComponents': {
+              'component_version': '1.9.0'
+            }
+          }, {
+            'RootServiceComponents': {
+              'component_version': '2.0.0'
+            }
+          }]
+        },
+        expected: '/views/ADMIN_VIEW/2.0.0/INSTANCE/#/'
+      }, {
+        mockData: {
+          components: [{
+            'RootServiceComponents': {
+              'component_version': '1.9.0'
+            }
+          }, {
+            'RootServiceComponents': {
+              'component_version': '2.1.0'
+            }
+          }, {
+            'RootServiceComponents': {
+              'component_version': '2.0.0'
+            }
+          }]
+        },
+        expected: '/views/ADMIN_VIEW/2.1.0/INSTANCE/#/'
+      }, {
+        mockData: {
+          versions: [{
+            'RootServiceComponents': {
+              version: '2.1.0'
+            }
+          }]
+        },
+        expected: '/views/ADMIN_VIEW/2.1.0/INSTANCE/#/'
+      }];
+
+      tests.forEach(function(data) {
+        router.adminViewInfoSuccessCallback(data.mockData);
+        expect(window.location.replace.calledWith(data.expected)).to.be.true;
+      });
+    });
+  });
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/49403a68/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js
index 5a457bf..8090482 100644
--- a/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js
+++ b/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js
@@ -281,16 +281,38 @@ describe('App.mainAdminStackVersionsView', function () {
     before(function () {
       sinon.spy(App, 'showConfirmationPopup', Em.K);
       sinon.stub(window.location, 'replace', Em.K);
+      var data = {
+        components: [{
+          'RootServiceComponents': {
+            'component_version': '1.9.0'
+          }
+        }, {
+          'RootServiceComponents': {
+            'component_version': '2.1.0'
+          }
+        }, {
+          'RootServiceComponents': {
+            'component_version': '2.0.0'
+          }
+        }]
+      };
+      sinon.stub(App.ajax, 'send').returns({
+        then: function(callback) {
+          callback(data);
+        }
+      });
     });
     after(function () {
       App.showConfirmationPopup.restore();
       window.location.replace.restore();
+      App.ajax.send.restore();
     });
-    it("", function() {
+    it("should go to link using the version retrieved by query", function() {
       var popup = view.goToVersions();
       expect(App.showConfirmationPopup.calledOnce).to.be.true;
       popup.onPrimary();
-      expect(window.location.replace.calledWith('/views/ADMIN_VIEW/2.0.0/INSTANCE/#/stackVersions')).to.be.true;
+      expect(App.ajax.send.calledOnce).to.be.true;
+      expect(window.location.replace.calledWith('/views/ADMIN_VIEW/2.1.0/INSTANCE/#/stackVersions')).to.be.true;
     });
   });