getMap: function()

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