AMBARI-14100. RU and EU upgrade failed on first step (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a41f7b25 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a41f7b25 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a41f7b25 Branch: refs/heads/branch-2.1 Commit: a41f7b250c0802ab7861a2f5f99e12cfb98443f9 Parents: 4aadb9f Author: Lisnichenko Dmitro <[email protected]> Authored: Mon Nov 30 20:11:51 2015 +0200 Committer: Lisnichenko Dmitro <[email protected]> Committed: Mon Nov 30 20:14:55 2015 +0200 ---------------------------------------------------------------------- .../libraries/functions/conf_select.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/a41f7b25/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py b/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py index d868d07..aa72556 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py @@ -28,7 +28,7 @@ import subprocess from resource_management.core import shell from resource_management.libraries.script.script import Script from resource_management.core.logger import Logger -from resource_management.core.resources.system import Directory +from resource_management.core.resources.system import Directory, Link PACKAGE_DIRS = { "accumulo": [ @@ -177,9 +177,11 @@ PACKAGE_DIRS = { ] } + def get_cmd(command, package, version): return ('conf-select', command, '--package', package, '--stack-version', version, '--conf-version', '0') + def _valid(stack_name, package, ver): if stack_name != "HDP": return False @@ -259,19 +261,23 @@ def select(stack_name, package, version, try_create=True): normalized_current_dir = (os.path.normpath(real_path_of_current_dir)).strip() Logger.info("Normalized Conf Dir : {0}, Normalized Current Dir : {1}".format(normalized_conf_dir, normalized_current_dir)) if os.path.isdir(normalized_current_dir) and normalized_current_dir != normalized_conf_dir: - if not os.path.isdir(normalized_conf_dir) : - os.symlink(normalized_current_dir, normalized_conf_dir) + if not os.path.isdir(normalized_conf_dir) and not os.path.islink(normalized_conf_dir): + Link(normalized_conf_dir, + to=normalized_current_dir) Logger.info("{0} directory doesn't exist. Created Symlink : {1} -> {2}".format(normalized_conf_dir, normalized_conf_dir, normalized_current_dir)) return # In case, 'normalized_conf_dir' does have a symlink and it's not the one mentioned in 'PACKAGE_DIRS', # we remove the symlink and make it point to correct symlink. - if (os.path.islink(normalized_conf_dir) and os.readlink(normalized_conf_dir) != normalized_current_dir): + if os.path.islink(normalized_conf_dir) and os.readlink(normalized_conf_dir) != normalized_current_dir: Logger.info("{0} exists and points to incorrect path {1}".format(normalized_conf_dir, os.readlink(normalized_conf_dir))) - os.remove(normalized_conf_dir) + Link(normalized_conf_dir, + action="delete") Logger.info("Removed existing symlink for {0}".format(normalized_conf_dir)) - os.symlink(normalized_current_dir, normalized_conf_dir) + Link(normalized_conf_dir, + to=normalized_current_dir) Logger.info("Created Symlink : {0} -> {1}".format(normalized_conf_dir, normalized_current_dir)) + def get_hadoop_conf_dir(force_latest_on_upgrade=False): """ Gets the shared hadoop conf directory using:
