Repository: ambari
Updated Branches:
  refs/heads/trunk 028f996a5 -> c0ff6adb4


AMBARI-5973. Usability: Add checks for THP to the Ambari pre-req check for 
Linux (aonishuk)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c0ff6adb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c0ff6adb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c0ff6adb

Branch: refs/heads/trunk
Commit: c0ff6adb4e7d295e15aa662c01991b0945ca1461
Parents: 028f996
Author: Andrew Onishuk <aonis...@hortonworks.com>
Authored: Mon Jul 7 19:55:39 2014 +0300
Committer: Andrew Onishuk <aonis...@hortonworks.com>
Committed: Mon Jul 7 19:55:39 2014 +0300

----------------------------------------------------------------------
 .../src/main/python/ambari_agent/HostInfo.py    | 13 +++++++++++
 .../test/python/ambari_agent/TestHostInfo.py    | 24 +++++++++++++++++++-
 .../apache/ambari/server/agent/AgentEnv.java    | 10 ++++++++
 .../ambari/server/agent/AgentResourceTest.java  |  3 ++-
 4 files changed, 48 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/c0ff6adb/ambari-agent/src/main/python/ambari_agent/HostInfo.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/HostInfo.py 
b/ambari-agent/src/main/python/ambari_agent/HostInfo.py
index 940305a..69e3cae 100644
--- a/ambari-agent/src/main/python/ambari_agent/HostInfo.py
+++ b/ambari-agent/src/main/python/ambari_agent/HostInfo.py
@@ -119,6 +119,8 @@ class HostInfo:
   DEFAULT_SERVICE_NAME = "ntpd"
   SERVICE_STATUS_CMD = "%s %s status" % (SERVICE_CMD, DEFAULT_SERVICE_NAME)
 
+  THP_FILE = "/sys/kernel/mm/redhat_transparent_hugepage/enabled"
+
   event = threading.Event()
 
   current_umask = -1
@@ -279,6 +281,16 @@ class HostInfo:
     else:
      return self.current_umask
 
+  def getTransparentHugePage(self):
+    # This file exist only on redhat 6
+    thp_regex = "\[(.+)\]"
+    if os.path.isfile(self.THP_FILE):
+      with open(self.THP_FILE) as f:
+        file_content = f.read()
+        return re.search(thp_regex, file_content).groups()[0]
+    else:
+      return ""
+
   def getFirewallObject(self):
     if OS_TYPE == OSConst.OS_UBUNTU:
       return UbuntuFirewallChecks()
@@ -316,6 +328,7 @@ class HostInfo:
 
     dict['umask'] = str(self.getUMask())
 
+    dict['transparentHugePage'] = self.getTransparentHugePage()
     dict['iptablesIsRunning'] = self.checkIptables()
     dict['reverseLookup'] = self.checkReverseLookup()
     # If commands are in progress or components are already mapped to this host

http://git-wip-us.apache.org/repos/asf/ambari/blob/c0ff6adb/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py 
b/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
index 75704ef..ba827ae 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py
@@ -297,7 +297,8 @@ class TestHostInfo(TestCase):
   @patch.object(HostInfo, 'hadoopVarRunCount')
   @patch.object(HostInfo, 'hadoopVarLogCount')
   @patch.object(HostInfo, 'checkIptables')
-  def test_hostinfo_register(self, cit_mock, hvlc_mock, hvrc_mock, eac_mock, 
cf_mock, jp_mock,
+  @patch.object(HostInfo, 'getTransparentHugePage')
+  def test_hostinfo_register(self, get_transparentHuge_page_mock, cit_mock, 
hvlc_mock, hvrc_mock, eac_mock, cf_mock, jp_mock,
                              cls_mock, cu_mock, gir_mock, gipbr_mock, 
gipbn_mock,
                              gpd_mock, aip_mock, aap_mock, whcf_mock, 
os_umask_mock, get_os_type_mock):
     cit_mock.return_value = True
@@ -577,5 +578,26 @@ class TestHostInfo(TestCase):
       run_os_command_mock.return_value = firewall.get_stopped_result()
       self.assertFalse(firewall.check_iptables())
 
+  @patch("os.path.isfile")
+  @patch('__builtin__.open')
+  def test_transparent_huge_page(self, open_mock, os_path_isfile_mock):
+    context_manager_mock = MagicMock()
+    open_mock.return_value = context_manager_mock
+    file_mock = MagicMock()
+    file_mock.read.return_value = "[never] always"
+    enter_mock = MagicMock()
+    enter_mock.return_value = file_mock
+    exit_mock  = MagicMock()
+    setattr( context_manager_mock, '__enter__', enter_mock )
+    setattr( context_manager_mock, '__exit__', exit_mock )
+
+    hostInfo = HostInfo()
+
+    os_path_isfile_mock.return_value = True
+    self.assertEqual("never", hostInfo.getTransparentHugePage())
+
+    os_path_isfile_mock.return_value = False
+    self.assertEqual("", hostInfo.getTransparentHugePage())
+
 if __name__ == "__main__":
   unittest.main()

http://git-wip-us.apache.org/repos/asf/ambari/blob/c0ff6adb/ambari-server/src/main/java/org/apache/ambari/server/agent/AgentEnv.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/agent/AgentEnv.java 
b/ambari-server/src/main/java/org/apache/ambari/server/agent/AgentEnv.java
index eed901c..c3e9c53 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/AgentEnv.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/AgentEnv.java
@@ -58,6 +58,8 @@ public class AgentEnv {
   
   private Integer umask;
 
+  private String transparentHugePage;
+
   private Boolean iptablesIsRunning;
 
   private Boolean reverseLookup;
@@ -78,6 +80,14 @@ public class AgentEnv {
     this.umask = umask;
   }
 
+  public String getTransparentHugePage() {
+    return transparentHugePage;
+  }
+
+  public void setTransparentHugePage(String transparentHugePage) {
+    this.transparentHugePage = transparentHugePage;
+  }
+
   public Directory[] getStackFoldersAndFiles() {
       return stackFoldersAndFiles;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/c0ff6adb/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
index aba2f62..7a23293 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
@@ -182,7 +182,7 @@ public class AgentResourceTest extends JerseyTest {
             ", \"existingUsers\": "+ ExistingUserJSON +
             ", \"umask\": \"18\", \"installedPackages\": "+
             PackageDetailJSON +", \"stackFoldersAndFiles\": "+ DirectoryJSON +
-            ", \"iptablesIsRunning\": \"true\" }";
+            ", \"iptablesIsRunning\": \"true\", \"transparentHugePage\": 
\"never\"}";
     AgentEnv.Directory[] dirs = getJsonFormString(
             DirectoryJSON, AgentEnv.Directory[].class);
     Assert.assertEquals("/var/lib", dirs[0].getName());
@@ -217,6 +217,7 @@ public class AgentResourceTest extends JerseyTest {
     AgentEnv agentEnv = getJsonFormString(
             AgentEnvJSON, AgentEnv.class);
     Assert.assertTrue(18 == agentEnv.getUmask());
+    Assert.assertEquals("never", agentEnv.getTransparentHugePage());
     Assert.assertTrue(Boolean.TRUE == agentEnv.getIptablesIsRunning());
     Assert.assertEquals("/etc/alternatives/hdfs-conf", 
agentEnv.getAlternatives()[0].getName());
     Assert.assertEquals("/etc/hadoop/conf.dist", 
agentEnv.getAlternatives()[0].getTarget());

Reply via email to