Return-Path: X-Original-To: apmail-ambari-commits-archive@www.apache.org Delivered-To: apmail-ambari-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 575DC18BE6 for ; Tue, 16 Feb 2016 19:32:36 +0000 (UTC) Received: (qmail 45733 invoked by uid 500); 16 Feb 2016 19:32:36 -0000 Delivered-To: apmail-ambari-commits-archive@ambari.apache.org Received: (qmail 45708 invoked by uid 500); 16 Feb 2016 19:32:36 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 45699 invoked by uid 99); 16 Feb 2016 19:32:36 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Feb 2016 19:32:36 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id E433AE0577; Tue, 16 Feb 2016 19:32:35 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jaoki@apache.org To: commits@ambari.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: ambari git commit: AMBARI-15022: Add Custom action to sync Standby with Master (goutamtadi via jaoki) Date: Tue, 16 Feb 2016 19:32:35 +0000 (UTC) Repository: ambari Updated Branches: refs/heads/branch-2.2 b6c8e5dce -> 8a8f16a41 AMBARI-15022: Add Custom action to sync Standby with Master (goutamtadi via jaoki) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8a8f16a4 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8a8f16a4 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8a8f16a4 Branch: refs/heads/branch-2.2 Commit: 8a8f16a41343dedca7441255591552b2ba115259 Parents: b6c8e5d Author: Jun Aoki Authored: Tue Feb 16 11:32:27 2016 -0800 Committer: Jun Aoki Committed: Tue Feb 16 11:32:27 2016 -0800 ---------------------------------------------------------------------- .../common-services/HAWQ/2.0.0/metainfo.xml | 14 ++++-- .../HAWQ/2.0.0/package/scripts/hawqmaster.py | 2 +- .../HAWQ/2.0.0/package/scripts/hawqsegment.py | 2 +- .../HAWQ/2.0.0/package/scripts/hawqstandby.py | 10 ++++- .../hawq/activateStandby/step3_controller.js | 2 +- ambari-web/app/controllers/main/service/item.js | 46 ++++++++++---------- ambari-web/app/messages.js | 5 ++- ambari-web/app/models/host_component.js | 28 ++++++++---- ambari-web/app/utils/helper.js | 15 +++++++ ambari-web/app/views/main/service/item.js | 45 ++++++++++--------- 10 files changed, 109 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/metainfo.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/metainfo.xml b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/metainfo.xml index 7a71604..780a327 100644 --- a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/metainfo.xml +++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/metainfo.xml @@ -39,7 +39,7 @@ - IMMEDIATE_STOP_CLUSTER + IMMEDIATE_STOP_HAWQ_SERVICE PYTHON @@ -77,8 +77,16 @@ 600 + + ACTIVATE_HAWQ_STANDBY + + + PYTHON + 1200 + + - ACTIVATE_STANDBY + RESYNC_HAWQ_STANDBY PYTHON @@ -110,7 +118,7 @@ - IMMEDIATE_STOP + IMMEDIATE_STOP_HAWQ_SEGMENT PYTHON http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqmaster.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqmaster.py b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqmaster.py index 8c7b0b5..d2f9ad0 100644 --- a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqmaster.py +++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqmaster.py @@ -51,7 +51,7 @@ class HawqMaster(Script): from hawqstatus import get_pid_file check_process_status(get_pid_file()) - def immediate_stop_cluster(self, env): + def immediate_stop_hawq_service(self, env): master_helper.stop(hawq_constants.IMMEDIATE, hawq_constants.CLUSTER) if __name__ == "__main__": http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqsegment.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqsegment.py b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqsegment.py index 6bc9802..0a597b6 100644 --- a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqsegment.py +++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqsegment.py @@ -73,7 +73,7 @@ class HawqSegment(Script): from hawqstatus import get_pid_file check_process_status(get_pid_file()) - def immediate_stop(self, env): + def immediate_stop_hawq_segment(self, env): self.stop(env, mode=hawq_constants.IMMEDIATE) http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqstandby.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqstandby.py b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqstandby.py index 67152c1..77c06f0 100644 --- a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqstandby.py +++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/hawqstandby.py @@ -18,6 +18,7 @@ limitations under the License. """ from resource_management import Script from resource_management.libraries.functions.check_process_status import check_process_status +from resource_management.core.logger import Logger import master_helper import common @@ -51,9 +52,16 @@ class HawqStandby(Script): from hawqstatus import get_pid_file check_process_status(get_pid_file()) - def activate_standby(self, env): + def activate_hawq_standby(self, env): import utils utils.exec_hawq_operation(hawq_constants.ACTIVATE, "{0} -a -M {1} -v".format(hawq_constants.STANDBY, hawq_constants.FAST)) + + def resync_hawq_standby(self,env): + import params + import utils + Logger.info("HAWQ Standby Master Re-Sync started in fast mode ...") + utils.exec_hawq_operation(hawq_constants.INIT, "{0} -n -a -v -M {1}".format(hawq_constants.STANDBY, hawq_constants.FAST)) + Logger.info("HAWQ Standby host {0} Re-Sync successful".format(params.hostname)) if __name__ == "__main__": HawqStandby().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-web/app/controllers/main/admin/highAvailability/hawq/activateStandby/step3_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/highAvailability/hawq/activateStandby/step3_controller.js b/ambari-web/app/controllers/main/admin/highAvailability/hawq/activateStandby/step3_controller.js index 55da44e..7dbf992 100644 --- a/ambari-web/app/controllers/main/admin/highAvailability/hawq/activateStandby/step3_controller.js +++ b/ambari-web/app/controllers/main/admin/highAvailability/hawq/activateStandby/step3_controller.js @@ -25,7 +25,7 @@ App.ActivateHawqStandbyWizardStep3Controller = App.HighAvailabilityProgressPageC clusterDeployState: 'ACTIVATE_HAWQ_STANDBY', - hawqActivateStandbyCustomCommand: "ACTIVATE_STANDBY", + hawqActivateStandbyCustomCommand: "ACTIVATE_HAWQ_STANDBY", hawqServiceName: "HAWQ", http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-web/app/controllers/main/service/item.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js index 6ed7b73..49d017b 100644 --- a/ambari-web/app/controllers/main/service/item.js +++ b/ambari-web/app/controllers/main/service/item.js @@ -501,29 +501,6 @@ App.MainServiceItemController = Em.Controller.extend(App.SupportClientConfigsDow }, /** - * On click handler for hawq stop cluster command from items menu - */ - - immediateStopHawqCluster: function(context) { - var controller = this; - return App.showConfirmationPopup(function() { - App.ajax.send({ - name: 'service.item.executeCustomCommand', - sender: controller, - data: { - command: context.command, - context: Em.I18n.t('services.service.actions.run.immediateStopHawqCluster.context'), - hosts: App.Service.find(context.service).get('hostComponents').findProperty('componentName', 'HAWQMASTER').get('hostName'), - serviceName: context.service, - componentName: context.component - }, - success : 'executeCustomCommandSuccessCallback', - error : 'executeCustomCommandErrorCallback' - }); - }); - }, - - /** * On click handler for rebalance Hdfs command from items menu */ rebalanceHdfsNodes: function () { @@ -926,6 +903,29 @@ App.MainServiceItemController = Em.Controller.extend(App.SupportClientConfigsDow displayName: (event && event.label) || component.get('displayName') }); }, + + /** + * On click handler for custom hawq command from items menu + * @param context + */ + executeHawqCustomCommand: function(context) { + var controller = this; + return App.showConfirmationPopup(function() { + App.ajax.send({ + name : 'service.item.executeCustomCommand', + sender: controller, + data : { + command : context.command, + context : context.label, + hosts : App.Service.find(context.service).get('hostComponents').findProperty('componentName', context.component).get('hostName'), + serviceName : context.service, + componentName : context.component + }, + success : 'executeCustomCommandSuccessCallback', + error : 'executeCustomCommandErrorCallback' + }); + }); + }, /** * On click handler for custom command from items menu http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 6b1802a..a7e4ff3 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -1675,9 +1675,12 @@ Em.I18n.translations = { 'services.service.actions.run.stopLdapKnox.title':'Stop Demo LDAP Knox Gateway', 'services.service.actions.run.stopLdapKnox.context':'Stop Demo LDAP', 'services.service.actions.run.startStopLdapKnox.error': 'Error during remote command: ', - 'services.service.actions.run.immediateStopHawqCluster.context':'Stop HAWQ Cluster (Immediate Mode)', + 'services.service.actions.run.immediateStopHawqService.context':'Stop HAWQ Service (Immediate Mode)', + 'services.service.actions.run.immediateStopHawqService.label':'Stop HAWQ Service (Immediate Mode)', 'services.service.actions.run.immediateStopHawqSegment.label':'Stop (Immediate Mode)', 'services.service.actions.run.immediateStopHawqSegment.context':'Stop HAWQ Segment (Immediate Mode)', + 'services.service.actions.run.resyncHawqStandby.context':'Re-Sync HAWQ Standby', + 'services.service.actions.run.resyncHawqStandby.label':'Re-Synchronize HAWQ Standby', 'services.service.actions.manage_configuration_groups.short':'Manage Config Groups', 'services.service.actions.serviceActions':'Service Actions', 'services.service.summary.unknown':'unknown', http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-web/app/models/host_component.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/host_component.js b/ambari-web/app/models/host_component.js index 36369c5..5d919b9 100644 --- a/ambari-web/app/models/host_component.js +++ b/ambari-web/app/models/host_component.js @@ -265,6 +265,7 @@ App.HostComponentActionMap = { getMap: function(ctx) { var HM = ctx.get('controller.content.hostComponents').findProperty('componentName', 'HAWQMASTER'); var HS = ctx.get('controller.content.hostComponents').findProperty('componentName', 'HAWQSTANDBY'); + var HMComponent = App.MasterComponent.find('HAWQMASTER'); return { RESTART_ALL: { action: 'restartAllHostComponents', @@ -367,20 +368,30 @@ App.HostComponentActionMap = { hasSubmenu: ctx.get('controller.isSeveralClients'), submenuOptions: ctx.get('controller.clientComponents') }, - IMMEDIATE_STOP_CLUSTER: { - action: 'immediateStopHawqCluster', - customCommand: 'IMMEDIATE_STOP_CLUSTER', - context: Em.I18n.t('services.service.actions.run.immediateStopHawqCluster.context'), - label: Em.I18n.t('services.service.actions.run.immediateStopHawqCluster.context'), + IMMEDIATE_STOP_HAWQ_SERVICE: { + action: 'executeHawqCustomCommand', + customCommand: 'IMMEDIATE_STOP_HAWQ_SERVICE', + context: Em.I18n.t('services.service.actions.run.immediateStopHawqService.context'), + label: Em.I18n.t('services.service.actions.run.immediateStopHawqService.label'), cssClass: 'icon-stop', disabled: !HM || HM.get('workStatus') != App.HostComponentStatus.started + }, - IMMEDIATE_STOP: { - customCommand: 'IMMEDIATE_STOP', + IMMEDIATE_STOP_HAWQ_SEGMENT: { + customCommand: 'IMMEDIATE_STOP_HAWQ_SEGMENT', context: Em.I18n.t('services.service.actions.run.immediateStopHawqSegment.context'), label: Em.I18n.t('services.service.actions.run.immediateStopHawqSegment.label'), cssClass: 'icon-stop' }, + RESYNC_HAWQ_STANDBY: { + action: 'executeHawqCustomCommand', + customCommand: 'RESYNC_HAWQ_STANDBY', + context: Em.I18n.t('services.service.actions.run.resyncHawqStandby.context'), + label: Em.I18n.t('services.service.actions.run.resyncHawqStandby.label'), + cssClass: 'icon-refresh', + isHidden : App.get('isSingleNode') || !HS , + disabled: !((!!HMComponent && HMComponent.get('startedCount') === 1) && (!!HS && HS.get('workStatus') === App.HostComponentStatus.started)) + }, MASTER_CUSTOM_COMMAND: { action: 'executeCustomCommand', cssClass: 'icon-play-circle', @@ -394,8 +405,9 @@ App.HostComponentActionMap = { isHidden: App.get('isSingleNode') || HS, disabled: false }, - TOGGLE_ACTIVATE_HAWQ_STANDBY: { + ACTIVATE_HAWQ_STANDBY: { action: 'activateHawqStandby', + context: Em.I18n.t('admin.activateHawqStandby.button.enable'), label: Em.I18n.t('admin.activateHawqStandby.button.enable'), cssClass: 'icon-arrow-up', isHidden: App.get('isSingleNode') || !HS, http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-web/app/utils/helper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/helper.js b/ambari-web/app/utils/helper.js index ba80ab2..8ac754a 100644 --- a/ambari-web/app/utils/helper.js +++ b/ambari-web/app/utils/helper.js @@ -524,6 +524,21 @@ App.format = { if (result === ' Refreshqueues ResourceManager') { result = Em.I18n.t('services.service.actions.run.yarnRefreshQueues.title'); } + // HAWQ custom commands on back Ops page. + if (result === ' Resync Hawq Standby HAWQ Standby Master') { + result = Em.I18n.t('services.service.actions.run.resyncHawqStandby.label'); + } + if (result === ' Immediate Stop Hawq Service HAWQ Master') { + result = Em.I18n.t('services.service.actions.run.immediateStopHawqService.label'); + } + if (result === ' Immediate Stop Hawq Segment HAWQ Segment') { + result = Em.I18n.t('services.service.actions.run.immediateStopHawqSegment.label'); + } + if(result === ' Activate Hawq Standby HAWQ Standby Master') { + result = Em.I18n.t('admin.activateHawqStandby.button.enable'); + } + //<---End HAWQ custom commands---> + return result; }, http://git-wip-us.apache.org/repos/asf/ambari/blob/8a8f16a4/ambari-web/app/views/main/service/item.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/service/item.js b/ambari-web/app/views/main/service/item.js index 5a09427..145b64b 100644 --- a/ambari-web/app/views/main/service/item.js +++ b/ambari-web/app/views/main/service/item.js @@ -42,9 +42,10 @@ App.MainServiceItemView = Em.View.extend({ 'RESOURCEMANAGER': ['DECOMMISSION', 'REFRESHQUEUES'], 'HBASE_MASTER': ['DECOMMISSION'], 'KNOX_GATEWAY': ['STARTDEMOLDAP','STOPDEMOLDAP'], - 'HAWQMASTER': ['IMMEDIATE_STOP_CLUSTER'], - 'HAWQSTANDBY': ['ACTIVATE_STANDBY'], - 'HAWQSEGMENT': ['IMMEDIATE_STOP'] + 'HAWQMASTER': ['IMMEDIATE_STOP_HAWQ_SERVICE'], + 'HAWQSEGMENT': ['IMMEDIATE_STOP_HAWQ_SEGMENT'], + 'HAWQSTANDBY' : ['RESYNC_HAWQ_STANDBY','ACTIVATE_HAWQ_STANDBY'] + }, addActionMap: function() { @@ -172,8 +173,7 @@ App.MainServiceItemView = Em.View.extend({ options.push(actionMap.TOGGLE_RA_HA); break; case 'HAWQ': - options.push(actionMap.TOGGLE_ADD_HAWQ_STANDBY); - options.push(actionMap.TOGGLE_ACTIVATE_HAWQ_STANDBY); + options.push(actionMap.TOGGLE_ADD_HAWQ_STANDBY); break; } } @@ -198,22 +198,25 @@ App.MainServiceItemView = Em.View.extend({ } }); } - - var hawqMasterComponent = App.StackServiceComponent.find().findProperty('componentName','HAWQMASTER'); - if (serviceName === 'HAWQ' && hawqMasterComponent) { - var hawqMasterCustomCommands = hawqMasterComponent.get('customCommands'); - customCommandToStopCluster = 'IMMEDIATE_STOP_CLUSTER'; - if (hawqMasterCustomCommands && hawqMasterCustomCommands.contains(customCommandToStopCluster)) { - options.push(self.createOption(actionMap.IMMEDIATE_STOP_CLUSTER, { - label: Em.I18n.t('services.service.actions.run.immediateStopHawqCluster.context'), - context: { - label: Em.I18n.t('services.service.actions.run.immediateStopHawqCluster.context'), - service: hawqMasterComponent.get('serviceName'), - component: hawqMasterComponent.get('componentName'), - command: customCommandToStopCluster - } - })); - } + /** + * Display all custom commands of Master and StandBy on Service page. + **/ + if(serviceName === 'HAWQ') { + var hawqMasterComponent = App.StackServiceComponent.find().findProperty('componentName','HAWQMASTER'); + var hawqStandByComponent = App.StackServiceComponent.find().findProperty('componentName','HAWQSTANDBY'); + components = [hawqMasterComponent,hawqStandByComponent] + components.forEach(function(component){ + component.get('customCommands').forEach(function(command){ + options.push(self.createOption(actionMap[command], { + context: { + label: actionMap[command].context, + service: component.get('serviceName'), + component: component.get('componentName'), + command: command + } + })); + }); + }); } self.addActionMap().filterProperty('service', serviceName).forEach(function(item) {