You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2017/01/25 18:57:14 UTC
[25/50] [abbrv] ambari git commit: AMBARI-19684. Agent registration
fails as local OS is not compatible with primary OS family.(vbrodetskyi)
AMBARI-19684. Agent registration fails as local OS is not compatible with primary OS family.(vbrodetskyi)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c6c35555
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c6c35555
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c6c35555
Branch: refs/heads/branch-dev-patch-upgrade
Commit: c6c35555eb157f3cd80397db428d21441d3ec5e6
Parents: 796f52a
Author: Vitaly Brodetskyi <vb...@hortonworks.com>
Authored: Tue Jan 24 13:19:28 2017 +0200
Committer: Vitaly Brodetskyi <vb...@hortonworks.com>
Committed: Tue Jan 24 13:19:28 2017 +0200
----------------------------------------------------------------------
ambari-server/conf/unix/create-python-wrap.sh | 40 +++++++++++++++++++++
ambari-server/src/main/assemblies/server.xml | 5 +++
ambari-server/src/main/python/bootstrap.py | 31 ++++++++++++++++
ambari-server/src/main/python/os_check_type.py | 2 +-
ambari-server/src/test/python/TestBootstrap.py | 4 +--
5 files changed, 79 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c6c35555/ambari-server/conf/unix/create-python-wrap.sh
----------------------------------------------------------------------
diff --git a/ambari-server/conf/unix/create-python-wrap.sh b/ambari-server/conf/unix/create-python-wrap.sh
new file mode 100644
index 0000000..3190073
--- /dev/null
+++ b/ambari-server/conf/unix/create-python-wrap.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# 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.
+
+PYTHON_WRAPER_DIR="${ROOT}/usr/bin/"
+PYTHON_WRAPER_TARGET="${PYTHON_WRAPER_DIR}/ambari-python-wrap"
+
+# remove old python wrapper
+rm -f "$PYTHON_WRAPER_TARGET"
+
+AMBARI_PYTHON=""
+python_binaries=( "/usr/bin/python" "/usr/bin/python2" "/usr/bin/python2.7" "/usr/bin/python2.6" )
+for python_binary in "${python_binaries[@]}"
+do
+ $python_binary -c "import sys ; ver = sys.version_info ; sys.exit(not (ver >= (2,6) and ver<(3,0)))" 1>/dev/null 2>/dev/null
+
+ if [ $? -eq 0 ] ; then
+ AMBARI_PYTHON="$python_binary"
+ break;
+ fi
+done
+
+if [ -z "$AMBARI_PYTHON" ] ; then
+ >&2 echo "Cannot detect python for ambari to use. Please manually set $PYTHON_WRAPER link to point to correct python binary"
+else
+ mkdir -p "$PYTHON_WRAPER_DIR"
+ ln -s "$AMBARI_PYTHON" "$PYTHON_WRAPER_TARGET"
+fi
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/c6c35555/ambari-server/src/main/assemblies/server.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/assemblies/server.xml b/ambari-server/src/main/assemblies/server.xml
index 5055d46..d65232c 100644
--- a/ambari-server/src/main/assemblies/server.xml
+++ b/ambari-server/src/main/assemblies/server.xml
@@ -237,6 +237,11 @@
<outputDirectory>/var/lib/ambari-server/</outputDirectory>
</file>
<file>
+ <fileMode>755</fileMode>
+ <source>conf/unix/create-python-wrap.sh</source>
+ <outputDirectory>/var/lib/ambari-server/</outputDirectory>
+ </file>
+ <file>
<fileMode>700</fileMode>
<source>conf/unix/install-helper.sh</source>
<outputDirectory>/var/lib/ambari-server/</outputDirectory>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c6c35555/ambari-server/src/main/python/bootstrap.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/bootstrap.py b/ambari-server/src/main/python/bootstrap.py
index e576fc8..d836040 100755
--- a/ambari-server/src/main/python/bootstrap.py
+++ b/ambari-server/src/main/python/bootstrap.py
@@ -54,6 +54,8 @@ DEFAULT_AGENT_DATA_FOLDER = "/var/lib/ambari-agent/data"
DEFAULT_AGENT_LIB_FOLDER = "/var/lib/ambari-agent"
PYTHON_ENV="env PYTHONPATH=$PYTHONPATH:" + DEFAULT_AGENT_TEMP_FOLDER
SERVER_AMBARI_SUDO = os.getenv('ROOT','/').rstrip('/') + "/var/lib/ambari-server/ambari-sudo.sh"
+CREATE_PYTHON_WRAP_SCRIPT = os.getenv('ROOT','/').rstrip('/') + "/var/lib/ambari-server/create-python-wrap.sh"
+REMOTE_CREATE_PYTHON_WRAP_SCRIPT = os.path.join(DEFAULT_AGENT_TEMP_FOLDER, 'create-python-wrap.sh')
AMBARI_SUDO = os.path.join(DEFAULT_AGENT_TEMP_FOLDER, 'ambari-sudo.sh')
class HostLog:
@@ -466,6 +468,19 @@ class BootstrapDefault(Bootstrap):
self.host_log.write("\n")
return result
+ def copyCreatePythonWrapScript(self):
+ # Copying the script which will create python wrap
+ fileToCopy = CREATE_PYTHON_WRAP_SCRIPT
+ target = self.TEMP_FOLDER
+ params = self.shared_state
+ self.host_log.write("==========================\n")
+ self.host_log.write("Copying create-python-wrap script...")
+ scp = SCP(params.user, params.sshPort, params.sshkey_file, self.host, fileToCopy,
+ target, params.bootdir, self.host_log)
+ result = scp.run()
+ self.host_log.write("\n")
+ return result
+
def copyOsCheckScript(self):
# Copying the os check script file
fileToCopy = self.getOsCheckScript()
@@ -610,6 +625,20 @@ class BootstrapDefault(Bootstrap):
" " + str(passphrase) + " " + str(server)+ " " + quote_bash_args(str(user_run_as)) + " " + str(version) + \
" " + str(port)
+ def runCreatePythonWrapScript(self):
+ params = self.shared_state
+ self.host_log.write("==========================\n")
+ self.host_log.write("Running create-python-wrap script...")
+
+ command = "chmod a+x %s && %s" % \
+ (REMOTE_CREATE_PYTHON_WRAP_SCRIPT, REMOTE_CREATE_PYTHON_WRAP_SCRIPT)
+
+ ssh = SSH(params.user, params.sshPort, params.sshkey_file, self.host, command,
+ params.bootdir, self.host_log)
+ retcode = ssh.run()
+ self.host_log.write("\n")
+ return retcode
+
def runOsCheckScript(self):
params = self.shared_state
self.host_log.write("==========================\n")
@@ -725,7 +754,9 @@ class BootstrapDefault(Bootstrap):
action_queue = [self.createTargetDir,
self.copyAmbariSudo,
self.copyCommonFunctions,
+ self.copyCreatePythonWrapScript,
self.copyOsCheckScript,
+ self.runCreatePythonWrapScript,
self.runOsCheckScript,
self.checkSudoPackage
]
http://git-wip-us.apache.org/repos/asf/ambari/blob/c6c35555/ambari-server/src/main/python/os_check_type.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/os_check_type.py b/ambari-server/src/main/python/os_check_type.py
index f890504..34de34b 100644
--- a/ambari-server/src/main/python/os_check_type.py
+++ b/ambari-server/src/main/python/os_check_type.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/ambari-python-wrap
'''
Licensed to the Apache Software Foundation (ASF) under one
http://git-wip-us.apache.org/repos/asf/ambari/blob/c6c35555/ambari-server/src/test/python/TestBootstrap.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestBootstrap.py b/ambari-server/src/test/python/TestBootstrap.py
index 8356f91..bea47f4 100644
--- a/ambari-server/src/test/python/TestBootstrap.py
+++ b/ambari-server/src/test/python/TestBootstrap.py
@@ -747,7 +747,7 @@ class TestBootstrap(TestCase):
hasPassword_mock.return_value = False
try_to_execute_mock.return_value = {"exitstatus": 0, "log":"log0", "errormsg":"errormsg0"}
bootstrap_obj.run()
- self.assertEqual(try_to_execute_mock.call_count, 8) # <- Adjust if changed
+ self.assertEqual(try_to_execute_mock.call_count, 10) # <- Adjust if changed
self.assertTrue(createDoneFile_mock.called)
self.assertEqual(bootstrap_obj.getStatus()["return_code"], 0)
@@ -758,7 +758,7 @@ class TestBootstrap(TestCase):
hasPassword_mock.return_value = True
try_to_execute_mock.return_value = {"exitstatus": 0, "log":"log0", "errormsg":"errormsg0"}
bootstrap_obj.run()
- self.assertEqual(try_to_execute_mock.call_count, 11) # <- Adjust if changed
+ self.assertEqual(try_to_execute_mock.call_count, 13) # <- Adjust if changed
self.assertTrue(createDoneFile_mock.called)
self.assertEqual(bootstrap_obj.getStatus()["return_code"], 0)