Code coverage report for app/utils/configs/move_namenode_config_initializer.js

Statements: 100% (25 / 25)      Branches: 77.78% (14 / 18)      Functions: 100% (5 / 5)      Lines: 100% (25 / 25)      Ignored: none     

All files » app/utils/configs/ » move_namenode_config_initializer.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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128    1                                     1 1               1                                                         1 1 1 1   1                             1 1 1 1 1   1                           1 1 1 1   1                           1 1 1 1   1        
'use strict';
 
;require.register("utils/configs/move_namenode_config_initializer", 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');
  require('utils/configs/move_component_config_initializer_class');
 
  /**
   * Initializer for configs which should be affected when NameNode is moved from one host to another
   * If NameNode HA-mode is already activated, several configs are also updated
   *
   * @instance MoveComponentConfigInitializerClass
   */
  App.MoveNameNodeConfigInitializer = App.MoveComponentConfigInitializerClass.create({
 
    initializers: {
      'dfs.namenode.http-address.{{namespaceId}}.{{suffix}}': App.MoveComponentConfigInitializerClass.getTargetHostConfig(50070),
      'dfs.namenode.https-address.{{namespaceId}}.{{suffix}}': App.MoveComponentConfigInitializerClass.getTargetHostConfig(50470),
      'dfs.namenode.rpc-address.{{namespaceId}}.{{suffix}}': App.MoveComponentConfigInitializerClass.getTargetHostConfig(8020),
      'dfs.namenode.servicerpc-address.{{namespaceId}}.{{suffix}}': App.MoveComponentConfigInitializerClass.getTargetHostConfig(8021),
      'dfs.namenode.lifeline.rpc-address.{{namespaceId}}.{{suffix}}': App.MoveComponentConfigInitializerClass.getTargetHostConfig(8050)
    },
 
    uniqueInitializers: {
      'instance.volumes': '_initInstanceVolumes',
      'instance.volumes.replacements': '_initInstanceVolumesReplacements',
      'hbase.rootdir': '_initHbaseRootDir',
      'hawq_dfs_url': '_initHawqDfsUrl'
    },
 
    /**
     * Unique initializer for <code>instance.volumes</code>-config
     * Value example: 'hdfs://host1:8020/apps/accumulo/data'
     *
     * @param {configProperty} configProperty
     * @param {extendedTopologyLocalDB} localDB
     * @param {reassignComponentDependencies} dependencies
     * @returns {object}
     * @private
     * @method _initInstanceVolumes
     */
    _initInstanceVolumes: function _initInstanceVolumes(configProperty, localDB, dependencies) {
      Eif (!App.get('isHaEnabled') && localDB.installedServices.contains('ACCUMULO')) {
        var value = Em.get(configProperty, 'value');
        value = value.replace(/\/\/[^\/]*/, '//' + dependencies.targetHostName + ':8020');
        Em.set(configProperty, 'value', value);
      }
      return configProperty;
    },
 
    /**
     * Unique initializer for <code>instance.volumes.replacements</code>-config
     * Value example: 'hdfs://host1:8020/apps/accumulo/data hdfs://host2:8020/apps/accumulo/data'
     *
     * @param {configProperty} configProperty
     * @param {extendedTopologyLocalDB} localDB
     * @param {reassignComponentDependencies} dependencies
     * @returns {object}
     * @private
     * @method _initInstanceVolumesReplacements
     */
    _initInstanceVolumesReplacements: function _initInstanceVolumesReplacements(configProperty, localDB, dependencies) {
      Eif (!App.get('isHaEnabled') && localDB.installedServices.contains('ACCUMULO')) {
        var target = 'hdfs://' + dependencies.targetHostName + ':8020' + '/apps/accumulo/data';
        var source = 'hdfs://' + dependencies.sourceHostName + ':8020' + '/apps/accumulo/data';
        var value = source + ' ' + target;
        Em.set(configProperty, 'value', value);
      }
      return configProperty;
    },
 
    /**
     * Unique initializer for <code>hbase.rootdir</code>-config (for HIVE service)
     *
     * @param {configProperty} configProperty
     * @param {extendedTopologyLocalDB} localDB
     * @param {reassignComponentDependencies} dependencies
     * @returns {object}
     * @private
     * @method _initHbaseRootDir
     */
    _initHbaseRootDir: function _initHbaseRootDir(configProperty, localDB, dependencies) {
      Eif (!App.get('isHaEnabled') && localDB.installedServices.contains('HBASE') && 'hbase-site' === configProperty.filename) {
        var value = Em.get(configProperty, 'value');
        value = value.replace(/\/\/[^\/]*/, '//' + dependencies.targetHostName + ':8020');
        Em.set(configProperty, 'value', value);
      }
      return configProperty;
    },
 
    /**
     * Unique initializer for <code>hawq_dfs_url</code>-config (for HAWQ service)
     *
     * @param {configProperty} configProperty
     * @param {extendedTopologyLocalDB} localDB
     * @param {reassignComponentDependencies} dependencies
     * @returns {object}
     * @private
     * @method _initHawqDfsUrl
     */
    _initHawqDfsUrl: function _initHawqDfsUrl(configProperty, localDB, dependencies) {
      Eif (!App.get('isHaEnabled') && localDB.installedServices.contains('HAWQ') && 'hawq-site' === configProperty.filename) {
        var value = Em.get(configProperty, 'value');
        value = value.replace(/(.*):/, dependencies.targetHostName + ':');
        Em.set(configProperty, 'value', value);
      }
      return configProperty;
    }
 
  });
});