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; }); });