Code coverage report for app/controllers/main/admin/highAvailability/journalNode/step3_controller.js

Statements: 100% (25 / 25)      Branches: 81.25% (13 / 16)      Functions: 100% (7 / 7)      Lines: 100% (25 / 25)      Ignored: none     

All files » app/controllers/main/admin/highAvailability/journalNode/ » step3_controller.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88    1                                     1   1                   4 3 3     3 2 2 1 2   2     2 1 1   1       2                 1     1         2   2   2       2 2 1          
'use strict';
 
;require.register("controllers/main/admin/highAvailability/journalNode/step3_controller", function (exports, require, module) {
  /**
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
 
  var App = require('app');
 
  App.ManageJournalNodeWizardStep3Controller = App.HighAvailabilityWizardStep4Controller.extend({
    name: 'manageJournalNodeWizardStep3Controller',
 
    isActiveNameNodesStarted: true,
 
    isHDFSNameSpacesLoaded: Em.computed.alias('App.router.clusterController.isHDFSNameSpacesLoaded'),
 
    isDataLoadedAndNextEnabled: Em.computed.and('isNextEnabled', 'isHDFSNameSpacesLoaded'),
 
    pullCheckPointsStatuses: function pullCheckPointsStatuses() {
      if (this.get('isHDFSNameSpacesLoaded')) {
        this.removeObserver('isHDFSNameSpacesLoaded', this, 'pullCheckPointsStatuses');
        var hdfsModel = App.HDFSService.find('HDFS'),
            nameSpaces = hdfsModel.get('masterComponentGroups'),
            nameSpacesCount = nameSpaces.length;
        if (nameSpacesCount > 1) {
          var hostNames = hdfsModel.get('activeNameNodes').mapProperty('hostName');
          if (hostNames.length < nameSpacesCount) {
            nameSpaces.forEach(function (nameSpace) {
              var hosts = nameSpace.hosts,
                  hasActiveNameNode = hosts.some(function (hostName) {
                return hostNames.contains(hostName);
              });
 
              if (!hasActiveNameNode) {
                var hostForNameSpace = hosts.find(function (hostName) {
                  return App.HostComponent.find('NAMENODE_' + hostName).get('workStatus') === 'STARTED';
                }) || hosts[0];
                hostNames.push(hostForNameSpace);
              }
            });
          }
          App.ajax.send({
            name: 'admin.high_availability.getNnCheckPointsStatuses',
            sender: this,
            data: {
              hostNames: hostNames
            },
            success: 'checkNnCheckPointsStatuses'
          });
        } else {
          this.pullCheckPointStatus();
        }
      } else {
        this.addObserver('isHDFSNameSpacesLoaded', this, 'pullCheckPointsStatuses');
      }
    },
 
    checkNnCheckPointsStatuses: function checkNnCheckPointsStatuses(data) {
      var _this = this;
 
      var items = Em.getWithDefault(data, 'items', []),
          isNextEnabled = items.length && items.every(this.getNnCheckPointStatus);
      this.setProperties({
        isActiveNameNodesStarted: items.length && items.everyProperty('HostRoles.desired_state', 'STARTED'),
        isNextEnabled: isNextEnabled
      });
      Eif (!isNextEnabled) {
        window.setTimeout(function () {
          _this.pullCheckPointsStatuses();
        }, this.POLL_INTERVAL);
      }
    }
  });
});