countServiceComponents: function()

in ambari-web/app/mappers/service_mapper.js [260:359]


  countServiceComponents: function (hostComponent, servicesMap, service) {
    if (!service) {
      service = {
        everyStarted: true,
        everyStartedOrMaintenance: true,
        masterComponents: [],
        isStarted: false,
        isUnknown: false,
        isStarting: false,
        isStopped: false,
        isHbaseActive: false,
        serviceName: hostComponent.get('service.id'),
        isRunning: true,
        hdfsHealthStatus: '',
        toolTipContent: ''
      };
      servicesMap[hostComponent.get('service.id')] = service;
    }
    if (hostComponent.get('isMaster')) {
      if (service.everyStartedOrMaintenance) {
        service.everyStartedOrMaintenance = (((hostComponent.get('componentName') === 'NAMENODE' && !App.HostComponent.find().someProperty('componentName', 'SECONDARY_NAMENODE')) || hostComponent.get('componentName') === 'JOURNALNODE') && App.HDFSService.find().filterProperty('activeNameNode.hostName').length > 0)
          ? true : service.everyStartedOrMaintenance = ([App.HostComponentStatus.started, App.HostComponentStatus.maintenance].contains(hostComponent.get('workStatus')));
      } else {
        service.everyStartedOrMaintenance = false;
      }
      service.everyStarted = (service.everyStarted)
        ? (hostComponent.get('workStatus') === App.HostComponentStatus.started)
        : false;
      service.isStarted = (!service.isStarted)
        ? (hostComponent.get('workStatus') === App.HostComponentStatus.started)
        : true;
      service.isUnknown = (!service.isUnknown)
        ? (hostComponent.get('workStatus') === App.HostComponentStatus.unknown)
        : true;
      service.isStarting = (!service.isStarting)
        ? (hostComponent.get('workStatus') === App.HostComponentStatus.starting)
        : true;
      service.isStopped = (!service.isStopped)
        ? (hostComponent.get('workStatus') === App.HostComponentStatus.stopped)
        : true;
      service.isHbaseActive = (!service.isHbaseActive)
        ? (hostComponent.get('haStatus') === 'true')
        : true;

      service.masterComponents.push(hostComponent);

      // set advanced nameNode display name for HA, active or standby NameNode
      // this is useful on three places: hdfs health status hover tooltip, hdfs service summary and NN component on host detail page
      if (hostComponent.get('componentName') === 'NAMENODE' && !App.HostComponent.find().someProperty('componentName', 'SECONDARY_NAMENODE')) {
        var hostName = hostComponent.get('host.hostName');
        var services = App.Service.find();
        var hdfs;
        services.forEach(function (item) {
          if (item.get("serviceName") == "HDFS") {
            hdfs = App.HDFSService.find(item.get('id'));
          }
        }, this);
        var activeNNText = Em.I18n.t('services.service.summary.nameNode.active');
        var standbyNNText = Em.I18n.t('services.service.summary.nameNode.standby');
        if (hdfs) {
          if (hdfs.get('activeNameNode') && hdfs.get('activeNameNode').get('hostName')) {
            var activeHostname = hdfs.get('activeNameNode').get('hostName');
          }
          if (hdfs.get('standbyNameNode') && hdfs.get('standbyNameNode').get('hostName')) {
            var standbyHostname1 = hdfs.get('standbyNameNode').get('hostName');
          }
          if (hdfs.get('standbyNameNode2') && hdfs.get('standbyNameNode2').get('hostName')) {
            var standbyHostname2 = hdfs.get('standbyNameNode2').get('hostName');
          }
          if (hostName == activeHostname) {
            hostComponent.set('displayNameAdvanced', activeNNText);
          } else if (hostName == standbyHostname1 || hostName == standbyHostname2) {
            hostComponent.set('displayNameAdvanced', standbyNNText);
          } else {
            hostComponent.set('displayNameAdvanced', null);
          }
        }
      } else if (hostComponent.get('componentName') === 'HBASE_MASTER') {
        if (hostComponent.get('workStatus') === 'STARTED') {
          hostComponent.get('haStatus') == 'true' ? hostComponent.set('displayNameAdvanced', this.t('dashboard.services.hbase.masterServer.active')) : hostComponent.set('displayNameAdvanced', this.t('dashboard.services.hbase.masterServer.standby'));
        } else {
          hostComponent.set('displayNameAdvanced', null);
        }
      }

      if (hostComponent.get("displayNameAdvanced")) {
        service.toolTipContent += hostComponent.get("displayNameAdvanced") + " " + hostComponent.get("componentTextStatus") + "<br/>";
      } else {
        service.toolTipContent += hostComponent.get("displayName") + " " + hostComponent.get("componentTextStatus") + "<br/>";
      }

    }

    if (hostComponent.get('workStatus') !== App.HostComponentStatus.stopped &&
      hostComponent.get('workStatus') !== App.HostComponentStatus.install_failed &&
      hostComponent.get('workStatus') !== App.HostComponentStatus.unknown &&
      hostComponent.get('workStatus') !== App.HostComponentStatus.maintenance) {
      service.isRunning = false;
    }
  },