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 <[email protected]>
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
[email protected].