You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by fb...@apache.org on 2015/01/05 17:51:11 UTC

ambari git commit: AMBARI-8980 [WinGA] Ambari Metrics Monitor service fails to import the psutil module

Repository: ambari
Updated Branches:
  refs/heads/trunk 8a7a4f2e3 -> 3247aa461


AMBARI-8980 [WinGA] Ambari Metrics Monitor service fails to import the psutil module

Replaced the psutil egg generation and registration with a plain build which yields a readily-usable pyd module + scripts.


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

Branch: refs/heads/trunk
Commit: 3247aa4617154579bd426054f3a1b809225fa860
Parents: 8a7a4f2
Author: Florian Barca <fb...@hortonworks.com>
Authored: Mon Jan 5 08:50:58 2015 -0800
Committer: Florian Barca <fb...@hortonworks.com>
Committed: Mon Jan 5 08:50:58 2015 -0800

----------------------------------------------------------------------
 ambari-metrics/ambari-metrics-assembly/pom.xml  |  1 +
 .../src/main/assembly/monitor-windows.xml       |  7 +---
 .../ambari-metrics-host-monitoring/pom.xml      |  8 ++--
 .../src/main/python/amhm_service.py             | 42 +-------------------
 .../src/main/python/core/__init__.py            | 11 +++--
 5 files changed, 15 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/3247aa46/ambari-metrics/ambari-metrics-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/pom.xml b/ambari-metrics/ambari-metrics-assembly/pom.xml
index 10fbab9..69ed536 100644
--- a/ambari-metrics/ambari-metrics-assembly/pom.xml
+++ b/ambari-metrics/ambari-metrics-assembly/pom.xml
@@ -779,6 +779,7 @@
         <assemblydescriptor.monitor>src/main/assembly/monitor-windows.xml</assemblydescriptor.monitor>
         <assemblydescriptor.sink>src/main/assembly/sink-windows.xml</assemblydescriptor.sink>
         <packagingFormat>jar</packagingFormat>
+        <python.build.version>2.7</python.build.version>
       </properties>
     </profile>
     <profile>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3247aa46/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
index 3b877a7..7372e13 100644
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
+++ b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
@@ -51,11 +51,8 @@
       </includes>
     </fileSet>
     <fileSet>
-      <directory>${monitor.dir}/target/psutil_build</directory>
-      <outputDirectory>/sbin/psutil/build</outputDirectory>
-      <includes>
-        <include>*.egg</include>
-      </includes>
+      <directory>${monitor.dir}/target/psutil_build/lib.win-amd64-${python.build.version}</directory>
+      <outputDirectory>/sbin</outputDirectory>
     </fileSet>
     <fileSet>
       <directory>${monitor.dir}/conf/windows</directory>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3247aa46/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/pom.xml b/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
index 3a130ff..efe7112 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
+++ b/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
@@ -164,10 +164,10 @@
                   <target name="psutils-compile">
                     <exec dir="${basedir}/src/main/python/psutil" executable="${executable.python}" failonerror="true">
                       <arg value="setup.py" />
-                      <arg value="bdist_egg" />
-                      <arg value="--bdist-dir" />
-                      <arg value="${basedir}/target/psutil_build_temp" />
-                      <arg value="--dist-dir" />
+                      <arg value="build" />
+                      <arg value="--build-temp" />
+                      <arg value="${basedir}\target\psutil_build_temp" />
+                      <arg value="--build-base" />
                       <arg value="${basedir}/target/psutil_build" />
                     </exec>
                   </target>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3247aa46/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
index 0f8daab..9d74f27 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.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.
 '''
-import glob
 
 import optparse
 import os
@@ -25,8 +24,7 @@ import sys
 
 from ambari_commons.ambari_service import AmbariService
 from ambari_commons.exceptions import FatalException, NonFatalException
-from ambari_commons.logging_utils import print_warning_msg, print_error_msg, print_info_msg
-from ambari_commons.os_utils import search_file, run_os_command
+from ambari_commons.logging_utils import print_warning_msg, print_error_msg
 from ambari_commons.os_windows import SvcStatusCallback
 from core.config_reader import SERVER_OUT_FILE, SERVICE_USERNAME_KEY, SERVICE_PASSWORD_KEY, \
   SETUP_ACTION, START_ACTION, STOP_ACTION, RESTART_ACTION, STATUS_ACTION
@@ -134,43 +132,6 @@ def init_options_parser():
   # --help reserved for help
   return parser
 
-def find_python_exe_path():
-  paths = "." + os.pathsep + os.environ["PATH"]
-
-  # Find python.exe by attempting to load it as a resource dll
-  python_path = search_file("python.exe", paths)
-  return os.path.dirname(python_path)
-
-
-def find_psutil_egg():
-  abs_subdir = os.path.join(os.getcwd(), "sbin", "psutil", "build")
-  egg_files = glob.glob(os.path.join(abs_subdir, "psutil*-win-amd64.egg"))
-  if egg_files is None or len(egg_files) == 0:
-    err = "Unable to find the expected psutil egg file in {0}. " \
-          "Verify that the installation carried out correctly.".format(abs_subdir)
-    raise FatalException(1, err)
-  if len(egg_files) > 1:
-    err = "Multiple psutil egg files found in {0}".format(abs_subdir)
-    print_warning_msg(err)
-  #Return the latest
-  return egg_files[len(egg_files) - 1]
-
-
-def setup_psutil():
-  python_exe_path = find_python_exe_path()
-  egg_file = find_psutil_egg()
-  cmd = [os.path.join(python_exe_path, "Scripts", "easy_install"), "--upgrade", egg_file]
-
-  retval, std_out, std_err = run_os_command(cmd)
-  if std_err is not None and std_err != '':
-    print_warning_msg(std_err)
-    print_info_msg(std_out)
-  if 0 != retval:
-    err = "Psutil egg installation failed. Exit code={0}, err output={1}".format(retval, std_err)
-    raise FatalException(1, err)
-
-  # Now the egg should be installed in the site_packages dir
-
 def win_main():
   parser = init_options_parser()
   (options, args) = parser.parse_args()
@@ -189,7 +150,6 @@ def win_main():
 
   try:
     if action == SETUP_ACTION:
-      setup_psutil()
       svcsetup()
     elif action == START_ACTION:
       start(options)

http://git-wip-us.apache.org/repos/asf/ambari/blob/3247aa46/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
index eb87cb5..84bb8a8 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
@@ -18,14 +18,17 @@ limitations under the License.
 
 """
 
-import os, sys
+import platform, os, sys
 
 path = os.path.abspath(__file__)
 path = os.path.join(os.path.dirname(os.path.dirname(path)), "psutil", "build")
 
-for dir in os.walk(path).next()[1]:
-  if 'lib' in dir:
-    sys.path.append(os.path.join(path, dir))
+IS_WINDOWS = platform.system() == "Windows"
+
+if not IS_WINDOWS:
+  for dir in os.walk(path).next()[1]:
+    if 'lib' in dir:
+      sys.path.append(os.path.join(path, dir))
 
 try:
   import psutil