You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by wu...@apache.org on 2022/11/17 09:23:17 UTC
[ambari] branch trunk updated: AMBARI-25465: Postgresql service naming convention changed on SUSE 12 SP2 (#3528)
This is an automated email from the ASF dual-hosted git repository.
wuzhiguo 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 0bc9adeeec AMBARI-25465: Postgresql service naming convention changed on SUSE 12 SP2 (#3528)
0bc9adeeec is described below
commit 0bc9adeeecb8a5301b13abd56b797c2a2f3b7631
Author: Yu Hou <52...@qq.com>
AuthorDate: Thu Nov 17 17:23:11 2022 +0800
AMBARI-25465: Postgresql service naming convention changed on SUSE 12 SP2 (#3528)
---
.../src/main/python/ambari_commons/os_linux.py | 7 +++++++
.../src/main/python/ambari_commons/os_utils.py | 7 +++++--
.../src/main/python/ambari_commons/os_windows.py | 10 ++++++++++
.../python/ambari_server/dbConfiguration_linux.py | 23 ++++++++++++++++++----
4 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/ambari-common/src/main/python/ambari_commons/os_linux.py b/ambari-common/src/main/python/ambari_commons/os_linux.py
index 053051bd69..448018383d 100644
--- a/ambari-common/src/main/python/ambari_commons/os_linux.py
+++ b/ambari-common/src/main/python/ambari_commons/os_linux.py
@@ -84,3 +84,10 @@ def os_set_open_files_limit(maxOpenFiles):
def os_getpass(prompt):
return getpass.unix_getpass(prompt)
+
+def os_is_service_exist(serviceName):
+ if os.path.exists('/run/systemd/system/'):
+ return os.popen('systemctl list-units --full -all | grep "%s.service"' % serviceName).read().strip() != ''
+
+ status = os.system("service %s status >/dev/null 2>&1" % serviceName)
+ return status != 256
\ No newline at end of file
diff --git a/ambari-common/src/main/python/ambari_commons/os_utils.py b/ambari-common/src/main/python/ambari_commons/os_utils.py
index 4224f003de..ac86154ec7 100644
--- a/ambari-common/src/main/python/ambari_commons/os_utils.py
+++ b/ambari-common/src/main/python/ambari_commons/os_utils.py
@@ -33,11 +33,11 @@ else:
if OSCheck.is_windows_family():
from ambari_commons.os_windows import os_change_owner, os_getpass, os_is_root, os_run_os_command, \
- os_set_open_files_limit, os_set_file_permissions
+ os_set_open_files_limit, os_set_file_permissions, os_is_service_exist
else:
# MacOS not supported
from ambari_commons.os_linux import os_change_owner, os_getpass, os_is_root, os_run_os_command, \
- os_set_open_files_limit, os_set_file_permissions
+ os_set_open_files_limit, os_set_file_permissions, os_is_service_exist
pass
from ambari_commons.exceptions import FatalException
@@ -137,6 +137,9 @@ def set_open_files_limit(maxOpenFiles):
def get_password(prompt):
return os_getpass(prompt)
+def is_service_exist(serviceName):
+ return os_is_service_exist(serviceName)
+
def find_in_path(file):
full_path = _search_file(file, os.environ["PATH"], os.pathsep)
if full_path is None:
diff --git a/ambari-common/src/main/python/ambari_commons/os_windows.py b/ambari-common/src/main/python/ambari_commons/os_windows.py
index 4c22384cdf..f674894c87 100644
--- a/ambari-common/src/main/python/ambari_commons/os_windows.py
+++ b/ambari-common/src/main/python/ambari_commons/os_windows.py
@@ -471,6 +471,16 @@ def wait_for_pid_wmi(processName, parentPid, pattern, timeout):
return 0
+def os_is_service_exist(serviceName):
+ try:
+ win32serviceutil.QueryServiceStatus(serviceName)
+ except:
+ # "Windows service NOT installed"
+ return False
+ else:
+ # "Windows service installed"
+ return True
+
#need this for redirecting output form python process to file
class SyncStreamWriter(object):
def __init__(self, stream, hMutexWrite):
diff --git a/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py b/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py
index e95bbbddf5..4790f5d9d8 100644
--- a/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py
+++ b/ambari-server/src/main/python/ambari_server/dbConfiguration_linux.py
@@ -31,7 +31,7 @@ import pwd
from ambari_commons import OSCheck, OSConst
from ambari_commons.logging_utils import get_silent, get_verbose, print_error_msg, print_info_msg, print_warning_msg
from ambari_commons.exceptions import NonFatalException, FatalException
-from ambari_commons.os_utils import copy_files, find_in_path, is_root, remove_file, run_os_command
+from ambari_commons.os_utils import copy_files, find_in_path, is_root, remove_file, run_os_command, is_service_exist
from ambari_server.dbConfiguration import DBMSConfig, USERNAME_PATTERN, SETUP_DB_CONNECT_ATTEMPTS, \
SETUP_DB_CONNECT_TIMEOUT, STORAGE_TYPE_LOCAL, DEFAULT_USERNAME, DEFAULT_PASSWORD
from ambari_server.serverConfiguration import encrypt_password, store_password_file, \
@@ -385,11 +385,25 @@ class PGConfig(LinuxDBMSConfig):
PG_HBA_RELOAD_CMD = AMBARI_SUDO_BINARY + " %s reload %s" % (SERVICE_CMD, PG_SERVICE_NAME)
else:
SERVICE_CMD = "/usr/bin/env service"
- PG_ST_CMD = "%s %s status" % (SERVICE_CMD, PG_SERVICE_NAME)
if os.path.isfile("/usr/bin/postgresql-setup"):
PG_INITDB_CMD = "/usr/bin/postgresql-setup initdb"
else:
- PG_INITDB_CMD = "%s %s initdb" % (SERVICE_CMD, PG_SERVICE_NAME)
+ PG_INITDB_CMD = "%s %s initdb" % (SERVICE_CMD, PG_SERVICE_NAME)
+
+ if OSCheck.is_suse_family() and not is_service_exist(PG_SERVICE_NAME):
+ versioned_script_paths = glob.glob("/usr/pgsql-*/bin/postgresql*-setup")
+ if versioned_script_paths:
+ versioned_script_path_tps = map(lambda path: (re.search(r'pgsql-([0-9]+\.?[0-9]*)', path).group(1), path), versioned_script_paths)
+ versioned_script_path_tps.sort(key = lambda t: float(t[0]), reverse = True)
+ for versioned_script_path_tp in versioned_script_path_tps:
+ pgsql_service_file_name = "postgresql-%s" % versioned_script_path_tp[0]
+ if is_service_exist(pgsql_service_file_name):
+ PG_SERVICE_NAME = pgsql_service_file_name
+ PG_INITDB_CMD = "%s initdb" % versioned_script_path_tp[1]
+ PG_HBA_DIR = "/var/lib/pgsql/%s/data" % versioned_script_path_tp[0]
+ break
+
+ PG_ST_CMD = "%s %s status" % (SERVICE_CMD, PG_SERVICE_NAME)
PG_START_CMD = AMBARI_SUDO_BINARY + " %s %s start" % (SERVICE_CMD, PG_SERVICE_NAME)
PG_RESTART_CMD = AMBARI_SUDO_BINARY + " %s %s restart" % (SERVICE_CMD, PG_SERVICE_NAME)
@@ -433,7 +447,8 @@ class PGConfig(LinuxDBMSConfig):
if self.persistence_type == STORAGE_TYPE_LOCAL:
PGConfig.PG_STATUS_RUNNING = get_postgre_running_status()
- PGConfig.PG_HBA_DIR = get_postgre_hba_dir(OS_FAMILY)
+ if not PGConfig.PG_HBA_DIR:
+ PGConfig.PG_HBA_DIR = get_postgre_hba_dir(OS_FAMILY)
PGConfig.PG_HBA_CONF_FILE = os.path.join(PGConfig.PG_HBA_DIR, "pg_hba.conf")
PGConfig.PG_HBA_CONF_FILE_BACKUP = os.path.join(PGConfig.PG_HBA_DIR, "pg_hba_bak.conf.old")
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ambari.apache.org
For additional commands, e-mail: commits-help@ambari.apache.org