Repository: ambari
Updated Branches:
  refs/heads/trunk 15a7ea3d5 -> 7d0d33a49


AMBARI-16174: Move RM wizard should update HAWQ related parameters


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

Branch: refs/heads/trunk
Commit: 7d0d33a49cfd4b8fb832ad6f0aa5f7e4b48ea048
Parents: 15a7ea3
Author: Jun Aoki <ja...@apache.org>
Authored: Tue May 3 10:59:32 2016 -0700
Committer: Jun Aoki <ja...@apache.org>
Committed: Tue May 3 10:59:32 2016 -0700

----------------------------------------------------------------------
 .../main/service/reassign/step4_controller.js   | 42 ++++++++++++-
 .../utils/configs/move_rm_config_initializer.js | 64 +++++++++++++++++++-
 .../service/reassign/step4_controller_test.js   |  9 ++-
 3 files changed, 107 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/7d0d33a4/ambari-web/app/controllers/main/service/reassign/step4_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/service/reassign/step4_controller.js 
b/ambari-web/app/controllers/main/service/reassign/step4_controller.js
index 736f467..d8f0394 100644
--- a/ambari-web/app/controllers/main/service/reassign/step4_controller.js
+++ b/ambari-web/app/controllers/main/service/reassign/step4_controller.js
@@ -574,6 +574,13 @@ App.ReassignMasterWizardStep4Controller = 
App.HighAvailabilityProgressPageContro
         }
     }
 
+    if (componentName === 'RESOURCEMANAGER') {
+        if (App.Service.find().someProperty('serviceName', 'HAWQ')) {
+          urlParams.push('(type=hawq-site&tag=' + 
data.Clusters.desired_configs['hawq-site'].tag + ')');
+          urlParams.push('(type=yarn-client&tag=' + 
data.Clusters.desired_configs['yarn-client'].tag + ')');
+        }
+    }
+
     return urlParams;
   },
 
@@ -629,9 +636,13 @@ App.ReassignMasterWizardStep4Controller = 
App.HighAvailabilityProgressPageContro
    */
   _getRmAdditionalDependencies: function (configs) {
     var ret = {};
-    var cfg = configs['yarn-site']['yarn.resourcemanager.hostname.rm1'];
-    if (cfg) {
-      ret.rm1 = cfg;
+    var rm1 = configs['yarn-site']['yarn.resourcemanager.hostname.rm1'];
+    if (rm1) {
+      ret.rm1 = rm1;
+    }
+    var rm2 = configs['yarn-site']['yarn.resourcemanager.hostname.rm2'];
+    if (rm2) {
+      ret.rm2 = rm2;
     }
     return ret;
   },
@@ -700,6 +711,31 @@ App.ReassignMasterWizardStep4Controller = 
App.HighAvailabilityProgressPageContro
   },
 
   onLoadConfigs: function (data) {
+    // Find hawq-site.xml location
+    var hawqSiteIndex = -1;
+    for(var i = 0; i < data.items.length; i++){
+      if(data.items[i].type == 'hawq-site'){
+        hawqSiteIndex = i;
+        break;
+      }
+    }
+
+    // if certain services are deployed, include related site files to 
additionalConfigsMap and relatedServicesMap.
+    if(hawqSiteIndex >= 0){ // if HAWQ is deployed
+      var hawqSiteProperties = {
+        'hawq_rm_yarn_address': '<replace-value>:8050',
+        'hawq_rm_yarn_scheduler_address': '<replace-value>:8030'
+      }
+
+      var rmComponent = 
this.get('additionalConfigsMap').findProperty('componentName', 
"RESOURCEMANAGER");
+      rmComponent.configs["hawq-site"] = hawqSiteProperties;
+
+      
if(data.items[hawqSiteIndex].properties["hawq_global_rm_type"].toLowerCase() 
=== "yarn"){
+        this.get('relatedServicesMap')['RESOURCEMANAGER'].append('HAWQ');
+      }
+
+    }
+
     var componentName = this.get('content.reassign.component_name');
     var targetHostName = this.get('content.reassignHosts.target');
     var configs = {};

http://git-wip-us.apache.org/repos/asf/ambari/blob/7d0d33a4/ambari-web/app/utils/configs/move_rm_config_initializer.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/configs/move_rm_config_initializer.js 
b/ambari-web/app/utils/configs/move_rm_config_initializer.js
index f8800de..5388224 100644
--- a/ambari-web/app/utils/configs/move_rm_config_initializer.js
+++ b/ambari-web/app/utils/configs/move_rm_config_initializer.js
@@ -33,6 +33,13 @@ function getRmHaDependedConfig(rmHaShouldBeEnabled) {
   };
 }
 
+function getRmHaHawqConfig(rmHaShouldBeEnabled) {
+  return {
+    type: 'rm_ha_hawq',
+    rmHaShouldBeEnabled: Boolean(rmHaShouldBeEnabled)
+  };
+}
+
 /**
  * Initializer for configs which should be affected when Resource Manager is 
moved from one host to another
  * If Resource Manager HA-mode is already activated, several configs are also 
updated
@@ -42,13 +49,16 @@ function getRmHaDependedConfig(rmHaShouldBeEnabled) {
 App.MoveRmConfigInitializer = App.MoveComponentConfigInitializerClass.create({
 
   initializerTypes: [
-    {name: 'rm_ha_depended', method: '_initAsRmHaDepended'}
+    {name: 'rm_ha_depended', method: '_initAsRmHaDepended'},
+    {name: 'rm_ha_hawq', method: '_initAsRmHaHawq'}
   ],
 
   initializers: {
     'yarn.resourcemanager.hostname.{{suffix}}': getRmHaDependedConfig(true),
     'yarn.resourcemanager.webapp.address.{{suffix}}': 
getRmHaDependedConfig(true),
-    'yarn.resourcemanager.webapp.https.address.{{suffix}}': 
getRmHaDependedConfig(true)
+    'yarn.resourcemanager.webapp.https.address.{{suffix}}': 
getRmHaDependedConfig(true),
+    'yarn.resourcemanager.ha': getRmHaHawqConfig(true),
+    'yarn.resourcemanager.scheduler.ha': getRmHaHawqConfig(true)
   },
 
   /**
@@ -72,6 +82,54 @@ App.MoveRmConfigInitializer = 
App.MoveComponentConfigInitializerClass.create({
       Em.set(configProperty, 'value', parts.join(':'));
     }
     return configProperty;
+  },
+
+  /**
+   * This function to generate "rm1_host:port,rm2_host:port" for HAWQ 
configuration (RM HA specific)
+   * configProperty = {
+   *   filename: "yarn-client",
+   *   name: "yarn.resourcemanager.ha",
+   *   value: "ip-10-32-36-162.ore1.vpc.pivotal.io:8050"
+   * }
+   *
+   * dependencies = {
+   *   rm1: "ip-10-32-38-225.ore1.vpc.pivotal.io",
+   *   rm2: "ip-10-32-38-162.ore1.vpc.pivotal.io",
+   *   sourceHostName: "ip-10-32-36-162.ore1.vpc.pivotal.io",
+   *   targetHostName: "ip-10-32-38-34.ore1.vpc.pivotal.io"
+   * }
+   *
+   * dependencies is defined by 
ReassignMasterWizardStep4Controller._getRmAdditionalDependencies()
+   * Move RM Wizard has 2 combobox in HA case, but it seems to gurantee users 
can change only one of them.
+   * (Thus, there is only one pair of sourceHostName and targetHostName)
+   *
+   */
+  _initAsRmHaHawq: function (configProperty, localDB, dependencies, 
initializer) {
+    if (App.get('isRMHaEnabled') === initializer.rmHaShouldBeEnabled) {
+
+      // which of rm1 and rm2 is changed?
+      var rm1, rm2;
+      if(dependencies.rm1 === dependencies.sourceHostName){
+        rm1 = dependencies.targetHostName;
+        rm2 = dependencies.rm2;
+      }else{
+        rm1 = dependencies.rm1;
+        rm2 = dependencies.targetHostName;
+      }
+
+      // 
https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java#L133-L163
+      var DEFAULT_RM_PORT = 8032;
+      var DEFAULT_RM_SCHEDULER_PORT = 8030;
+
+      if(configProperty.name === "yarn.resourcemanager.ha"){
+        var newValue = rm1 + ":" + DEFAULT_RM_PORT + "," + rm2 + ":" + 
DEFAULT_RM_PORT;
+      }else{
+        var newValue = rm1 + ":" + DEFAULT_RM_SCHEDULER_PORT + "," + rm2 + ":" 
+ DEFAULT_RM_SCHEDULER_PORT;
+      }
+
+      Em.set(configProperty, 'value', newValue);
+    }
+    return configProperty;
   }
 
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/7d0d33a4/ambari-web/test/controllers/main/service/reassign/step4_controller_test.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/test/controllers/main/service/reassign/step4_controller_test.js 
b/ambari-web/test/controllers/main/service/reassign/step4_controller_test.js
index 329249c..f5a8a1b 100644
--- a/ambari-web/test/controllers/main/service/reassign/step4_controller_test.js
+++ b/ambari-web/test/controllers/main/service/reassign/step4_controller_test.js
@@ -676,13 +676,18 @@ describe('App.ReassignMasterWizardStep4Controller', 
function () {
   });
 
   describe('#onLoadConfigsTags()', function () {
+    var dummyData = {
+      Clusters: {
+        desired_configs : {}
+      }
+    };
 
     beforeEach(function () {
       sinon.stub(controller, 'getConfigUrlParams', function () {
         return [];
       });
       controller.set('content.reassign.component_name', 'COMP1');
-      controller.onLoadConfigsTags({});
+      controller.onLoadConfigsTags(dummyData);
       this.args = testHelpers.findAjaxRequest('name', 'reassign.load_configs');
     });
 
@@ -695,7 +700,7 @@ describe('App.ReassignMasterWizardStep4Controller', 
function () {
     });
 
     it('getConfigUrlParams is called with correct data', function () {
-      expect(controller.getConfigUrlParams.calledWith('COMP1', {})).to.be.true;
+      expect(controller.getConfigUrlParams.calledWith('COMP1', 
dummyData)).to.be.true;
     });
   });
 

Reply via email to