Selaa lähdekoodia

AMBARI-18627. Add service wizard hung at Choose services page as no ClusterStackVersion is available with state=CURRENT . Additional fix
(alexantonenko)

Alex Antonenko 9 vuotta sitten
vanhempi
commit
17069e8a1c

+ 5 - 8
ambari-web/app/controllers/global/cluster_controller.js

@@ -468,14 +468,11 @@ App.ClusterController = Em.Controller.extend(App.ReloadPopupMixin, {
   },
 
   checkDetailedRepoVersionSuccessCallback: function (data) {
-    var items = data.items;
-    var version;
-    if (items && items.length) {
-      var repoVersions = items[0].repository_versions;
-      if (repoVersions && repoVersions.length) {
-        version = Em.get(repoVersions[0], 'RepositoryVersions.repository_version');
-      }
-    }
+    var rv = (Em.getWithDefault(data, 'items', []) || []).filter(function(i) {
+      return Em.getWithDefault(i || {}, 'ClusterStackVersions.stack', null) === App.get('currentStackName') &&
+        Em.getWithDefault(i || {}, 'ClusterStackVersions.version', null) === App.get('currentStackVersionNumber');
+    })[0];
+    var version = Em.getWithDefault(rv || {}, 'repository_versions.0.RepositoryVersions.repository_version', false);
     App.set('isStormMetricsSupported', stringUtils.compareVersions(version, '2.2.2') > -1 || !version);
   },
   checkDetailedRepoVersionErrorCallback: function () {

+ 3 - 5
ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js

@@ -1903,11 +1903,9 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    * @param {object|null} jsonData
    */
   loadServiceVersionFromVersionDefinitionsSuccessCallback: function (jsonData) {
-    var versions = Em.getWithDefault(jsonData, 'items', []);
-    var currentVersion = versions.filterProperty('ClusterStackVersions.state', 'CURRENT')[0];
-    var rv = currentVersion || versions.filter(function(i) {
-      return i.ClusterStackVersions.stack === App.get('currentStackName') &&
-       i.ClusterStackVersions.version === App.get('currentStackVersionNumber');
+    var rv = Em.getWithDefault(jsonData, 'items', []).filter(function(i) {
+      return Em.getWithDefault(i, 'ClusterStackVersions.stack', null) === App.get('currentStackName') &&
+       Em.getWithDefault(i, 'ClusterStackVersions.version', null) === App.get('currentStackVersionNumber');
     })[0];
     var map = this.get('serviceVersionsMap');
     var stackServices = Em.getWithDefault(rv || {}, 'repository_versions.0.RepositoryVersions.stack_services', false);

+ 3 - 5
ambari-web/app/controllers/wizard.js

@@ -696,11 +696,9 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
 
   serviceVersionsMap: {},
   loadServiceVersionFromVersionDefinitionsSuccessCallback: function (jsonData) {
-    var versions = Em.getWithDefault(jsonData, 'items', []);
-    var currentVersion = versions.filterProperty('ClusterStackVersions.state', 'CURRENT')[0];
-    var rv = currentVersion || versions.filter(function(i) {
-      return i.ClusterStackVersions.stack === App.get('currentStackName') &&
-       i.ClusterStackVersions.version === App.get('currentStackVersionNumber');
+    var rv = Em.getWithDefault(jsonData, 'items', []).filter(function(i) {
+      return Em.getWithDefault(i, 'ClusterStackVersions.stack', null) === App.get('currentStackName') &&
+        Em.getWithDefault(i, 'ClusterStackVersions.version', null) === App.get('currentStackVersionNumber');
     })[0];
     var map = this.get('serviceVersionsMap');
     var stackServices = Em.getWithDefault(rv || {}, 'repository_versions.0.RepositoryVersions.stack_services', false);

+ 2 - 2
ambari-web/app/utils/ajax/ajax.js

@@ -1373,11 +1373,11 @@ var urls = {
     'mock': ''
   },
   'cluster.load_detailed_repo_version': {
-    'real': '/clusters/{clusterName}/stack_versions?ClusterStackVersions/state=CURRENT&fields=repository_versions/RepositoryVersions/repository_version&minimal_response=true',
+    'real': '/clusters/{clusterName}/stack_versions?fields=repository_versions/RepositoryVersions/repository_version,ClusterStackVersions/stack,ClusterStackVersions/version&minimal_response=true',
     'mock': '/data/stack_versions/stack_version_all.json'
   },
   'cluster.load_current_repo_stack_services': {
-    'real': '/clusters/{clusterName}/stack_versions?fields=repository_versions/RepositoryVersions/stack_services,ClusterStackVersions/state',
+    'real': '/clusters/{clusterName}/stack_versions?fields=repository_versions/RepositoryVersions/stack_services,ClusterStackVersions/stack,ClusterStackVersions/version',
     'mock': '/data/stack_versions/stack_version_all.json'
   },
   'cluster.save_provisioning_state': {

+ 22 - 0
ambari-web/test/controllers/global/cluster_controller_test.js

@@ -295,11 +295,29 @@ describe('App.clusterController', function () {
   });
 
   describe('#checkDetailedRepoVersionSuccessCallback()', function () {
+    beforeEach(function () {
+      sinon.stub(App, 'get', function(key) {
+        if (key === 'currentStackName') {
+          return 'HDP';
+        }
+        if (key === 'currentStackVersionNumber') {
+          return '2.2';
+        }
+        return Em.get(App, key);
+      });
+    });
+    afterEach(function() {
+      App.get.restore();
+    });
 
     var cases = [
       {
         items: [
           {
+            ClusterStackVersions: {
+              stack: 'HDP',
+              version: '2.2'
+            },
             repository_versions: [
               {
                 RepositoryVersions: {
@@ -315,6 +333,10 @@ describe('App.clusterController', function () {
       {
         items: [
           {
+            ClusterStackVersions: {
+              stack: 'HDP',
+              version: '2.2'
+            },
             repository_versions: [
               {
                 RepositoryVersions: {

+ 1 - 73
ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js

@@ -3131,32 +3131,6 @@ describe('App.MainAdminStackAndUpgradeController', function() {
       controller.set('serviceVersionsMap', {});
     });
     cases = [
-      {
-        jsonData: {
-          items: [
-            {
-              ClusterStackVersions: {
-                state: 'CURRENT'
-              },
-              repository_versions: [
-                {
-                  RepositoryVersions: {
-                    stack_services: [
-                      { name: 'S1', versions: ['v1']}
-                    ]
-                  }
-                }
-              ]
-            }
-          ]
-        },
-        currentStackData: {
-          currentStackVersionNumber: '2.2',
-          currentStackName: 'HDP'
-        },
-        m: 'should add stack services from stack version with state CURRENT',
-        e: { "S1": "v1"}
-      },
       {
         jsonData: {
           items: [
@@ -3198,54 +3172,8 @@ describe('App.MainAdminStackAndUpgradeController', function() {
           currentStackVersionNumber: '2.2',
           currentStackName: 'HDP'
         },
-        m: 'should add stack services from stack version by current stack name and version number' +
-           'when CURRENT version not available',
+        m: 'should add stack services from stack version by current stack name and version number',
         e: { "S2": "v2"}
-      },
-      {
-        jsonData: {
-          items: [
-            {
-              ClusterStackVersions: {
-                version: '2.3',
-                stack: 'HDP',
-                state: 'CURRENT'
-              },
-              repository_versions: [
-                {
-                  RepositoryVersions: {
-                    stack_services: [
-                      { name: 'S3', versions: ['v3']}
-                    ]
-                  }
-                }
-              ]
-            },
-            {
-              ClusterStackVersions: {
-                version: '2.2',
-                stack: 'HDP',
-                state: 'INIT'
-              },
-              repository_versions: [
-                {
-                  RepositoryVersions: {
-                    stack_services: [
-                      { name: 'S2', versions: ['v2']}
-                    ]
-                  }
-                }
-              ]
-            }
-          ]
-        },
-        currentStackData: {
-          currentStackVersionNumber: '2.2',
-          currentStackName: 'HDP'
-        },
-        m: 'should add stack services by state CURRENT even when there is stack version with ' +
-           'current stack name and version number',
-        e: { "S3": "v3"}
       }
     ];