Repository: ambari
Updated Branches:
  refs/heads/trunk c7b0688a4 -> 8e496ce61


AMBARI-11185. Edit Repositories on an added repo version fails with 500 status 
code. (Di Li via Jaimin)


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

Branch: refs/heads/trunk
Commit: 8e496ce6114fd6ee0a8450ab9cbde6df68bbca1a
Parents: c7b0688
Author: Jaimin Jetly <jai...@hortonworks.com>
Authored: Fri Jun 5 13:48:52 2015 -0700
Committer: Jaimin Jetly <jai...@hortonworks.com>
Committed: Fri Jun 5 13:48:52 2015 -0700

----------------------------------------------------------------------
 .../main/admin/stack_and_upgrade_controller.js  | 24 ++++++++++++----
 .../stack_upgrade/upgrade_version_box_view.js   | 20 +++++++++++++
 .../admin/stack_and_upgrade_controller_test.js  | 24 ++++++++++++++++
 .../upgrade_version_box_view_test.js            | 30 +++++++++++++++++++-
 4 files changed, 92 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/8e496ce6/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js 
b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 890e5d8..ac8f8cf 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -557,6 +557,17 @@ App.MainAdminStackAndUpgradeController = 
Em.Controller.extend(App.LocalStorage,
   },
 
   /**
+   * Return stack version for the repo object
+   * @param {Em.Object} repo
+   * */
+  getStackVersionNumber: function(repo){
+    var stackVersionNumber = repo.get('stackVersion');
+    if(null == stackVersionNumber)
+      stackVersionNumber = App.get('currentStackVersion');
+    return stackVersionNumber;
+  },
+  
+  /**
    * perform validation if <code>skip<code> is  false and run save if
    * validation successfull or run save without validation is <code>skip<code> 
is true
    * @param {Em.Object} repo
@@ -571,13 +582,15 @@ App.MainAdminStackAndUpgradeController = 
Em.Controller.extend(App.LocalStorage,
         deferred.resolve(data);
       } else {
         var repoVersion = self.prepareRepoForSaving(repo);
-
+        var stackVersionNumber = self.getStackVersionNumber(repo);
+        console.log("Repository stack version:"+stackVersionNumber);
+        
         App.ajax.send({
           name: 'admin.stack_versions.edit.repo',
           sender: this,
           data: {
             stackName: App.get('currentStackName'),
-            stackVersion: App.get('currentStackVersionNumber'),
+            stackVersion: stackVersionNumber,
             repoVersionId: repo.get('repoVersionId'),
             repoVersion: repoVersion
           }
@@ -588,7 +601,7 @@ App.MainAdminStackAndUpgradeController = 
Em.Controller.extend(App.LocalStorage,
     });
     return deferred.promise();
   },
-
+  
   /**
    * send request for validation for each repository
    * @param {Em.Object} repo
@@ -599,10 +612,11 @@ App.MainAdminStackAndUpgradeController = 
Em.Controller.extend(App.LocalStorage,
     var deferred = $.Deferred(),
       totalCalls = 0,
       invalidUrls = [];
-
+    
     if (skip) {
       deferred.resolve(invalidUrls);
     } else {
+      var stackVersionNumber = this.getStackVersionNumber(repo);
       repo.get('operatingSystems').forEach(function (os) {
         if (os.get('isSelected')) {
           os.get('repositories').forEach(function (repo) {
@@ -616,7 +630,7 @@ App.MainAdminStackAndUpgradeController = 
Em.Controller.extend(App.LocalStorage,
                 baseUrl: repo.get('baseUrl'),
                 osType: os.get('osType'),
                 stackName: App.get('currentStackName'),
-                stackVersion: App.get('currentStackVersionNumber')
+                stackVersion: stackVersionNumber
               }
             })
               .success(function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/8e496ce6/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js 
b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
index f9c4ef2..28d1428 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
@@ -186,6 +186,25 @@ App.UpgradeVersionBoxView = Em.View.extend({
   },
 
   /**
+   * @param App.RepositoryVersion
+   * */
+  getStackVersionNumber: function(repository){
+    var stackVersion = null; 
+    var systems = repository.get('operatingSystems');
+    
+    systems.forEach(function(os){
+      repos = os.get('repositories');
+      repos.forEach(function(repo){
+        stackVersion = repo.get('stackVersion');
+        if(null != stackVersion)
+          return stackVersion;
+      });
+    });
+
+    return stackVersion; 
+  },
+  
+  /**
    * show popup with repositories to edit
    * @return {App.ModalPopup}
    */
@@ -197,6 +216,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
       repoVersionId: repoRecord.get('id'),
       displayName: repoRecord.get('displayName'),
       repositoryVersion: repoRecord.get('displayName'),
+      stackVersion: self.getStackVersionNumber(repoRecord),
       operatingSystems: repoRecord.get('operatingSystems').map(function (os) {
         return Em.Object.create({
           osType: os.get('osType'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/8e496ce6/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js 
b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index b8b4fe3..4177619 100644
--- 
a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ 
b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -763,6 +763,30 @@ describe('App.MainAdminStackAndUpgradeController', 
function() {
     });
   });
 
+  describe("#getStackVersionNumber()", function(){
+    it("get stack version number", function(){
+      var repo = Em.Object.create({
+        "stackVersionType": 'HDP',
+        "stackVersion": '2.3',
+        "repositoryVersion": '2.2.1'
+      });
+      
+      var stackVersion = controller.getStackVersionNumber(repo);
+      expect(stackVersion).to.equal('2.3');
+    });
+    
+    it("get default stack version number", function(){
+      App.set('currentStackVersion', '1.2.3');
+      var repo = Em.Object.create({
+        "stackVersionType": 'HDP',
+        "repositoryVersion": '2.2.1'
+      });
+      
+      var stackVersion = controller.getStackVersionNumber(repo);
+      expect(stackVersion).to.equal('1.2.3');
+    });
+  });
+  
   describe("#saveRepoOS()", function() {
     before(function(){
       this.mock = sinon.stub(controller, 'validateRepoVersions');

http://git-wip-us.apache.org/repos/asf/ambari/blob/8e496ce6/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
 
b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
index 0ff7688..e45bfd3 100644
--- 
a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
+++ 
b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
@@ -182,7 +182,35 @@ describe('App.UpgradeVersionBoxView', function () {
       expect(view.get('controller').upgrade.called).to.be.false;
     });
   });
-
+  
+  describe("#getStackVersionNumber()", function(){
+    it("get stack version number", function(){
+      var repoRecord = Em.Object.create({
+        operatingSystems: [
+          Em.Object.create({
+            osType: "redhat6",
+            repositories: [Em.Object.create({
+                "baseUrl": "111121",
+                "repoId": "HDP-2.3",
+                "repoName": "HDP",
+                "stackVersion": "2.3",
+                hasError: false
+            }), Em.Object.create({
+                "baseUrl": "1",
+                "repoId": "HDP-UTILS-1.1.0.20",
+                "repoName": "HDP-UTILS",
+                "stackVersion": "2.3",
+                hasError: false
+              })]
+           })
+        ]
+      });
+      
+      var stackVersionNumber = view.getStackVersionNumber(repoRecord);
+      expect(stackVersionNumber).to.equal('2.3');
+    });
+  });
+  
   describe("#editRepositories()", function () {
     beforeEach(function () {
       sinon.stub(App.RepositoryVersion, 'find').returns(Em.Object.create({

Reply via email to