You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ad...@apache.org on 2018/04/05 21:41:54 UTC
[ambari] branch trunk updated: AMBARI-23477. Utility to parse
initial active namenode for blueprint deployment (#900)
This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new b6b293a AMBARI-23477. Utility to parse initial active namenode for blueprint deployment (#900)
b6b293a is described below
commit b6b293ab0c1ac078da0017be4a957ef4da4c2cff
Author: Doroszlai, Attila <64...@users.noreply.github.com>
AuthorDate: Thu Apr 5 23:41:51 2018 +0200
AMBARI-23477. Utility to parse initial active namenode for blueprint deployment (#900)
---
.../libraries/functions/namenode_ha_utils.py | 24 ++++++++++++++++++++--
.../test/python/stacks/2.0.6/HDFS/test_namenode.py | 21 ++++++++++++++++++-
2 files changed, 42 insertions(+), 3 deletions(-)
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/namenode_ha_utils.py b/ambari-common/src/main/python/resource_management/libraries/functions/namenode_ha_utils.py
index 05fff1f..ae1a681 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/namenode_ha_utils.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/namenode_ha_utils.py
@@ -17,7 +17,6 @@ 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.
'''
-from resource_management.libraries.functions.is_empty import is_empty
from resource_management.libraries.functions.format import format
from resource_management.libraries.functions.jmx import get_value_from_jmx
from resource_management.core.base import Fail
@@ -164,7 +163,7 @@ def get_active_namenode(hdfs_site, security_enabled, run_user):
return active_namenodes[0]
raise NoActiveNamenodeException('No active NameNode was found.')
-
+
def get_property_for_active_namenodes(hdfs_site, property_name, security_enabled, run_user):
"""
Return format: {'ns1': 'value1', 'ns2', 'value2'}
@@ -312,3 +311,24 @@ def get_nameservices(hdfs_site):
return [ns]
return [name_services_string.split(",")[0]] # default to return the first nameservice
return []
+
+
+def get_initial_active_namenodes(hadoop_env):
+ """
+ :return: The set of initially active namenode hosts as specified by one of the
+ 'hadoop-env/dfs_ha_initial_namenode_active_set' or
+ 'hadoop-env/dfs_ha_initial_namenode_active' properties.
+ An empty set if the properties are unspecified or empty.
+ """
+ setting = ''
+
+ if 'dfs_ha_initial_namenode_active_set' in hadoop_env:
+ setting = hadoop_env['dfs_ha_initial_namenode_active_set']
+
+ if 'dfs_ha_initial_namenode_active' in hadoop_env and not setting:
+ setting = hadoop_env['dfs_ha_initial_namenode_active']
+
+ if setting:
+ return frozenset(setting.split(','))
+
+ return frozenset()
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
index 303ad3a..fb2aa2b 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
@@ -24,6 +24,7 @@ import tempfile
import time
from stacks.utils.RMFTestCase import *
from mock.mock import MagicMock, patch, call
+from resource_management.libraries.functions import namenode_ha_utils
from resource_management.libraries.script.script import Script
from resource_management.core import shell
from resource_management.core.exceptions import Fail
@@ -835,7 +836,7 @@ class TestNamenode(RMFTestCase):
active_namenodes = [('nn1', 'c6401.ambari.apache.org:50070')]
standby_namenodes = [('nn2', 'c6402.ambari.apache.org:50070')]
unknown_namenodes = []
-
+
get_namenode_states_mock.return_value = active_namenodes, standby_namenodes, unknown_namenodes
call_mocks = MagicMock(return_value=(0,""))
@@ -1772,6 +1773,24 @@ class TestNamenode(RMFTestCase):
# logoutput=True
# )
+ def test_initial_active_namenode_unspecified(self):
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({}), frozenset())
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': '' }), frozenset())
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active_set': '' }), frozenset())
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': '', 'dfs_ha_initial_namenode_active_set': '' }), frozenset())
+
+ def test_initial_active_namenode_single(self):
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': 'c6401.ambari.apache.org' }), frozenset(['c6401.ambari.apache.org']))
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': 'c6401,c7401' }), frozenset(['c6401', 'c7401']))
+
+ def test_initial_active_namenode_set(self):
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active_set': 'c6401.ambari.apache.org' }), frozenset(['c6401.ambari.apache.org']))
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active_set': 'c6401,c7401' }), frozenset(['c6401', 'c7401']))
+
+ def test_initial_active_namenode_both(self):
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': '', 'dfs_ha_initial_namenode_active_set': 'mult1,mult2' }), frozenset(['mult1', 'mult2']))
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': 'single', 'dfs_ha_initial_namenode_active_set': 'mult1,mult2' }), frozenset(['mult1', 'mult2']))
+ self.assertEqual(namenode_ha_utils.get_initial_active_namenodes({ 'dfs_ha_initial_namenode_active': 'single', 'dfs_ha_initial_namenode_active_set': '' }), frozenset(['single']))
class Popen_Mock:
--
To stop receiving notification emails like this one, please contact
adoroszlai@apache.org.