in ambari-web/app/models/host_component.js [318:601]
getMap: function (ctx) {
const NN = ctx.get('controller.content.hostComponents').findProperty('componentName', 'NAMENODE'),
RM = ctx.get('controller.content.hostComponents').findProperty('componentName', 'RESOURCEMANAGER'),
RA = ctx.get('controller.content.hostComponents').findProperty('componentName', 'RANGER_ADMIN'),
HM = ctx.get('controller.content.hostComponents').findProperty('componentName', 'HAWQMASTER'),
HS = ctx.get('controller.content.hostComponents').findProperty('componentName', 'HAWQSTANDBY'),
HMComponent = App.MasterComponent.find('HAWQMASTER'),
HSComponent = App.MasterComponent.find('HAWQSTANDBY'),
hasMultipleMasterComponentGroups = ctx.get('service.hasMultipleMasterComponentGroups'),
isClientsOnlyService = ctx.get('controller.isClientsOnlyService'),
isStartDisabled = ctx.get('controller.isStartDisabled'),
isStopDisabled = ctx.get('controller.isStopDisabled');
return {
START_ALL: {
action: hasMultipleMasterComponentGroups ? '' : 'startService',
label: Em.I18n.t('services.service.start'),
cssClass: `glyphicon glyphicon-play ${isStartDisabled ? 'disabled' : 'enabled'}`,
isHidden: isClientsOnlyService,
disabled: isStartDisabled,
hasSubmenu: !isStartDisabled && hasMultipleMasterComponentGroups,
submenuOptions: !isStartDisabled && hasMultipleMasterComponentGroups ? this.getMastersSubmenu(ctx, 'startCertainHostComponents') : []
},
STOP_ALL: {
action: hasMultipleMasterComponentGroups ? '' : 'stopService',
label: Em.I18n.t('services.service.stop'),
cssClass: `glyphicon glyphicon-stop ${isStopDisabled ? 'disabled' : 'enabled'}`,
isHidden: isClientsOnlyService,
disabled: isStopDisabled,
hasSubmenu: !isStopDisabled && hasMultipleMasterComponentGroups,
submenuOptions: !isStopDisabled && hasMultipleMasterComponentGroups ? this.getMastersSubmenu(ctx, 'stopCertainHostComponents') : []
},
RESTART_ALL: {
action: hasMultipleMasterComponentGroups ? '' : 'restartAllHostComponents',
context: ctx.get('serviceName'),
label: hasMultipleMasterComponentGroups ? Em.I18n.t('common.restart') : Em.I18n.t('restart.service.all'),
cssClass: 'glyphicon glyphicon-time',
disabled: false,
hasSubmenu: hasMultipleMasterComponentGroups,
submenuOptions: hasMultipleMasterComponentGroups ? this.getMastersSubmenu(ctx, 'restartCertainHostComponents') : []
},
//Ongoing feature. Will later replace RESTART_ALL
RESTART_SERVICE: {
action: 'restartServiceAllComponents',
context: ctx.get('serviceName'),
label: Em.I18n.t('restart.service.rest.context').format(ctx.get('displayName')),
cssClass: 'glyphicon glyphicon-time',
disabled: false,
hasSubmenu: true,
submenuOptions: ctx.get('controller.restartOptions')
},
RESTART_NAMENODES: {
action: '',
label: Em.I18n.t('rollingrestart.dialog.title').format(pluralize(App.format.role('NAMENODE', false))),
cssClass: 'glyphicon glyphicon-time',
isHidden: !hasMultipleMasterComponentGroups,
disabled: false,
hasSubmenu: true,
submenuOptions: this.getMastersSubmenu(ctx, 'restartCertainHostComponents', ['NAMENODE'])
},
RUN_SMOKE_TEST: {
action: 'runSmokeTest',
label: Em.I18n.t('services.service.actions.run.smoke'),
cssClass: 'glyphicon glyphicon-thumbs-up',
disabled: ctx.get('controller.isSmokeTestDisabled')
},
REFRESH_CONFIGS: {
action: 'refreshConfigs',
label: Em.I18n.t('hosts.host.details.refreshConfigs'),
cssClass: 'glyphicon glyphicon-refresh',
disabled: false
},
REGENERATE_KEYTAB_FILE_OPERATIONS: {
action: 'regenerateKeytabFileOperations',
label: Em.I18n.t('admin.kerberos.button.regenerateKeytabs'),
cssClass: 'glyphicon glyphicon-repeat',
isHidden: !App.get('isKerberosEnabled') || App.get('router.mainAdminKerberosController.isManualKerberos')
},
REFRESHQUEUES: {
action: 'refreshYarnQueues',
customCommand: 'REFRESHQUEUES',
context : Em.I18n.t('services.service.actions.run.yarnRefreshQueues.context'),
label: Em.I18n.t('services.service.actions.run.yarnRefreshQueues.menu'),
cssClass: 'glyphicon glyphicon-refresh',
disabled: false
},
ROLLING_RESTART: {
action: 'rollingRestart',
context: ctx.get('rollingRestartComponent'),
label: Em.I18n.t('rollingrestart.dialog.title'),
cssClass: 'glyphicon glyphicon-time',
disabled: false
},
TOGGLE_PASSIVE: {
action: 'turnOnOffPassive',
context: ctx.get('isPassive') ? Em.I18n.t('passiveState.turnOffFor').format(ctx.get('displayName')) : Em.I18n.t('passiveState.turnOnFor').format(ctx.get('displayName')),
label: ctx.get('isPassive') ? Em.I18n.t('passiveState.turnOff') : Em.I18n.t('passiveState.turnOn'),
cssClass: 'icon-medkit',
disabled: false
},
MANAGE_JN: {
action: 'manageJournalNode',
label: Em.I18n.t('admin.manageJournalNode.label'),
cssClass: 'icon-cog',
isHidden: !App.get('supports.manageJournalNode') || !App.get('isHaEnabled')
|| (App.router.get('mainHostController.totalCount') == 3 && App.HostComponent.find().filterProperty('componentName', 'JOURNALNODE').get('length') == 3)
},
TOGGLE_NN_HA: {
action: App.get('isHaEnabled') ? 'disableHighAvailability' : 'enableHighAvailability',
label: App.get('isHaEnabled') ? Em.I18n.t('admin.highAvailability.button.disable') : Em.I18n.t('admin.highAvailability.button.enable'),
cssClass: App.get('isHaEnabled') ? 'glyphicon glyphicon-arrow-down' : 'glyphicon glyphicon-arrow-up',
isHidden: App.get('isHaEnabled'),
disabled: App.get('isSingleNode') || !NN || NN.get('isNotInstalled')
},
TOGGLE_RM_HA: {
action: 'enableRMHighAvailability',
label: App.get('isRMHaEnabled') ? Em.I18n.t('admin.rm_highAvailability.button.disable') : Em.I18n.t('admin.rm_highAvailability.button.enable'),
cssClass: App.get('isRMHaEnabled') ? 'glyphicon glyphicon-arrow-down' : 'glyphicon glyphicon-arrow-up',
isHidden: App.get('isRMHaEnabled'),
disabled: App.get('isSingleNode') || !RM || RM.get('isNotInstalled')
},
TOGGLE_RA_HA: {
action: 'enableRAHighAvailability',
label: Em.I18n.t('admin.ra_highAvailability.button.enable'),
cssClass: 'glyphicon glyphicon-arrow-up',
isHidden: App.get('isRAHaEnabled'),
disabled: App.get('isSingleNode') || !RA || RA.get('isNotInstalled')
},
MOVE_COMPONENT: {
action: 'reassignMaster',
context: '',
isHidden: !App.isAuthorized('SERVICE.MOVE'),
label: Em.I18n.t('services.service.actions.reassign.master'),
cssClass: 'glyphicon glyphicon-share-alt'
},
STARTDEMOLDAP: {
action: 'startLdapKnox',
customCommand: 'STARTDEMOLDAP',
context: Em.I18n.t('services.service.actions.run.startLdapKnox.context'),
label: Em.I18n.t('services.service.actions.run.startLdapKnox.context'),
cssClass: 'icon icon-play-sign',
disabled: false
},
STOPDEMOLDAP: {
action: 'stopLdapKnox',
customCommand: 'STOPDEMOLDAP',
context: Em.I18n.t('services.service.actions.run.stopLdapKnox.context'),
label: Em.I18n.t('services.service.actions.run.stopLdapKnox.context'),
cssClass: 'glyphicon glyphicon-stop',
disabled: false
},
RESTART_LLAP: {
action: 'restartLLAP',
customCommand: 'RESTART_LLAP',
context: Em.I18n.t('services.service.actions.run.restartLLAP'),
label: Em.I18n.t('services.service.actions.run.restartLLAP') + ' ∞',
cssClass: 'glyphicon glyphicon-refresh'
},
REBALANCEHDFS: {
action: 'rebalanceHdfsNodes',
customCommand: 'REBALANCEHDFS',
context: Em.I18n.t('services.service.actions.run.rebalanceHdfsNodes.context'),
label: Em.I18n.t('services.service.actions.run.rebalanceHdfsNodes'),
cssClass: 'glyphicon glyphicon-refresh',
disabled: false
},
DOWNLOAD_CLIENT_CONFIGS: {
action: ctx.get('controller.isSeveralClients') ? '' : 'downloadClientConfigs',
label: Em.I18n.t('services.service.actions.downloadClientConfigs'),
cssClass: 'glyphicon glyphicon-download-alt',
isHidden: !!ctx.get('controller.content.clientComponents') ? ctx.get('controller.content.clientComponents').rejectProperty('totalCount', 0).length == 0 : false,
disabled: false,
hasSubmenu: ctx.get('controller.isSeveralClients'),
submenuOptions: ctx.get('controller.clientComponents')
},
DELETE_SERVICE: {
action: 'deleteService',
context: ctx.get('serviceName'),
label: Em.I18n.t('services.service.actions.deleteService'),
cssClass: 'glyphicon glyphicon-remove',
isHidden: !App.get('services.supportsDeleteViaUI').contains(ctx.get('serviceName')) //hide the menu item when the service has a custom behavior setting in its metainfo.xml to disallow Delete Services via UI
},
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: 'glyphicon glyphicon-stop',
disabled: !HM || HM.get('workStatus') != App.HostComponentStatus.started
},
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: 'glyphicon glyphicon-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: 'glyphicon glyphicon-refresh',
isHidden : App.get('isSingleNode') || !HS ,
disabled: !((!!HMComponent && HMComponent.get('startedCount') === 1) && (!!HSComponent && HSComponent.get('startedCount') === 1))
},
TOGGLE_ADD_HAWQ_STANDBY: {
action: 'addHawqStandby',
label: Em.I18n.t('admin.addHawqStandby.button.enable'),
cssClass: 'glyphicon glyphicon-plus',
isHidden: App.get('isSingleNode') || HS,
disabled: false
},
REMOVE_HAWQ_STANDBY: {
action: 'removeHawqStandby',
context: Em.I18n.t('admin.removeHawqStandby.button.enable'),
label: Em.I18n.t('admin.removeHawqStandby.button.enable'),
cssClass: 'glyphicon glyphicon-minus',
isHidden: App.get('isSingleNode') || !HS,
disabled: !HM || HM.get('workStatus') != App.HostComponentStatus.started,
hideFromComponentView: true
},
ACTIVATE_HAWQ_STANDBY: {
action: 'activateHawqStandby',
label: Em.I18n.t('admin.activateHawqStandby.button.enable'),
context: Em.I18n.t('admin.activateHawqStandby.button.enable'),
cssClass: 'glyphicon glyphicon-arrow-up',
isHidden: App.get('isSingleNode') || !HS,
disabled: false,
hideFromComponentView: true
},
HAWQ_CLEAR_CACHE: {
action: 'executeHawqCustomCommand',
customCommand: 'HAWQ_CLEAR_CACHE',
context: Em.I18n.t('services.service.actions.run.clearHawqCache.label'),
label: Em.I18n.t('services.service.actions.run.clearHawqCache.label'),
cssClass: 'glyphicon glyphicon-refresh',
isHidden : false,
disabled: !HM || HM.get('workStatus') != App.HostComponentStatus.started
},
RUN_HAWQ_CHECK: {
action: 'executeHawqCustomCommand',
customCommand: 'RUN_HAWQ_CHECK',
context: Em.I18n.t('services.service.actions.run.runHawqCheck.label'),
label: Em.I18n.t('services.service.actions.run.runHawqCheck.label'),
cssClass: 'glyphicon glyphicon-thumbs-up',
isHidden : false,
disabled: false
},
MASTER_CUSTOM_COMMAND: {
action: 'executeCustomCommand',
cssClass: 'glyphicon glyphicon-play-circle',
isHidden: false,
disabled: false
},
TOGGLE_NN_FEDERATION: {
action: 'openNameNodeFederationWizard',
label: Em.I18n.t('admin.nameNodeFederation.button.enable'),
cssClass: 'icon icon-sitemap',
disabled: !App.get('isHaEnabled') || App.get('allHostNames.length') < 4
},
TOGGLE_RBF_FEDERATION: {
action: 'openRouterFederationWizard',
label: Em.I18n.t('admin.routerFederation.button.enable'),
cssClass: 'icon icon-sitemap',
disabled: !App.get('hasNameNodeFederation')
},
UPDATE_REPLICATION: {
action: 'updateHBaseReplication',
customCommand: 'UPDATE_REPLICATION',
context: Em.I18n.t('services.service.actions.run.updateHBaseReplication.context'),
label: Em.I18n.t('services.service.actions.run.updateHBaseReplication.label'),
cssClass: 'glyphicon glyphicon-refresh',
disabled: false
},
STOP_REPLICATION: {
action: 'stopHBaseReplication',
customCommand: 'STOP_REPLICATION',
context: Em.I18n.t('services.service.actions.run.stopHBaseReplication.context'),
label: Em.I18n.t('services.service.actions.run.stopHBaseReplication.label'),
cssClass: 'glyphicon glyphicon-refresh',
disabled: false
}
};
},