Bladeren bron

AMBARI-9459. Remove oozie-server item from +Add button on host page if oozie db is derby (alexantonenko)

Alex Antonenko 10 jaren geleden
bovenliggende
commit
373ff1137e

+ 52 - 1
ambari-web/app/controllers/main/host/details.js

@@ -43,6 +43,17 @@ App.MainHostDetailsController = Em.Controller.extend({
    */
   referer: '',
 
+  /**
+   * Deferred object will be resolved when Oozie configs are downloaded
+   * @type {object}
+   */
+  isOozieConfigLoaded: $.Deferred(),
+
+  /**
+   * @type {bool}
+   */
+  isOozieServerAddable: true,
+
   /**
    * Open dashboard page
    * @method routeHome
@@ -566,6 +577,37 @@ App.MainHostDetailsController = Em.Controller.extend({
     }
   },
 
+  /**
+   * Success callback for load configs request
+   * @param {object} data
+   * @method loadOozieConfigs
+   */
+  loadOozieConfigs: function (data) {
+    return App.ajax.send({
+      name: 'admin.get.all_configurations',
+      sender: this,
+      data: {
+        urlParams: '(type=oozie-env&tag=' + data.Clusters.desired_configs['oozie-env'].tag + ')'
+      },
+      success: 'onLoadOozieConfigs',
+      error: 'onLoadConfigsErrorCallback'
+    });
+  },
+
+  /**
+   * get Oozie database config and set databaseType
+   * @param {object} data
+   * @method onLoadHiveConfigs
+   */
+  onLoadOozieConfigs: function (data) {
+    var configs = {};
+    data.items.forEach(function(item) {
+      $.extend(configs, item.properties);
+    });
+    this.set('isOozieServerAddable', !(Em.isEmpty(configs["oozie_database"]) || configs["oozie_database"] === 'New Derby Database'));
+    this.get('isOozieConfigLoaded').resolve();
+  },
+
   /**
    * Success callback for load configs request
    * @param {object} data
@@ -741,10 +783,19 @@ App.MainHostDetailsController = Em.Controller.extend({
     App.ajax.send({
       name: 'config.tags',
       sender: this,
-      success: callback ? callback : 'loadConfigsSuccessCallback'
+      success: callback ? callback : 'loadConfigsSuccessCallback',
+      error: 'onLoadConfigsErrorCallback'
     });
   },
 
+  /**
+   * onLoadConfigsErrorCallback
+   * @method onLoadConfigsErrorCallback
+   */
+  onLoadConfigsErrorCallback: function () {
+    this.get('isOozieConfigLoaded').reject();
+  },
+
   /**
    * Success callback for load configs request
    * @param {object} data

+ 11 - 1
ambari-web/app/routes/main.js

@@ -180,7 +180,17 @@ module.exports = Em.Route.extend({
       summary: Em.Route.extend({
         route: '/summary',
         connectOutlets: function (router, context) {
-          router.get('mainHostDetailsController').connectOutlet('mainHostSummary');
+          router.get('mainController').dataLoading().done(function() {
+            var controller = router.get('mainHostDetailsController');
+            if ( App.Service.find().mapProperty('serviceName').contains('OOZIE')) {
+              controller.loadConfigs('loadOozieConfigs');
+              controller.isOozieConfigLoaded.always(function () {
+                controller.connectOutlet('mainHostSummary');
+              });
+            }else {
+              controller.connectOutlet('mainHostSummary');
+            }
+          });
         }
       }),
 

+ 4 - 1
ambari-web/app/views/main/host/summary.js

@@ -44,7 +44,7 @@ App.MainHostSummaryView = Em.View.extend({
   /**
    * @type {bool}
    */
-  isStopCommand:true,
+  isStopCommand: true,
 
   /**
    * @type {App.Host}
@@ -277,6 +277,9 @@ App.MainHostSummaryView = Em.View.extend({
 
     addableToHostComponents.forEach(function(addableComponent) {
       if(installedServices.contains(addableComponent.get('serviceName')) && !installedComponents.contains(addableComponent.get('componentName'))) {
+        if ((addableComponent.get('componentName') === 'OOZIE_SERVER') && !App.router.get('mainHostDetailsController.isOozieServerAddable')) {
+          return;
+        }
         components.pushObject(self.addableComponentObject.create({'componentName': addableComponent.get('componentName'), 'serviceName': addableComponent.get('serviceName')}));
       }
     });