Files
openGauss-OM/script/domain_utils/cluster_file/cluster_log.py
coolany eae422baf3 适配CM组件
Signed-off-by: coolany <kyosang@163.com>

support cgroup

追加合入
2022-03-05 18:51:52 +08:00

81 lines
3.2 KiB
Python

import os
from gspylib.common.ErrorCode import ErrorCode
from gspylib.common.GaussLog import GaussLog
from base_utils.os.user_util import UserUtil
from base_utils.security.security_checker import SecurityChecker
from domain_utils.cluster_file.cluster_config_file import ClusterConfigFile
from domain_utils.cluster_file.cluster_dir import ClusterDir
from domain_utils.domain_common.cluster_constants import ClusterConstants
class ClusterLog(object):
@staticmethod
def getOMLogPath(logName, user="", appPath="", xml="", action=""):
"""
function : Get the OM log path from xml file
input : String
output : String
"""
log_path = ""
try:
if user != "" and xml != "":
log_path = "%s" % ClusterConfigFile.readClusterLogPath(xml)
path = "%s/%s/om/%s" % (log_path, user, logName)
elif action == "virtualip":
path = "%s/%s" % (ClusterConstants.GS_VIRTULIP_LOG_PATH, logName)
elif user != "":
log_path = ClusterDir.getUserLogDirWithUser(user)
path = "%s/om/%s" % (log_path, logName)
elif appPath != "":
user = UserUtil.getPathOwner(appPath)[0]
if user == "":
user = "."
if user == ".":
log_path = ClusterConstants.GAUSSDB_DIR
else:
log_path = ClusterDir.getUserLogDirWithUser(user)
path = "%s/om/%s" % (log_path, logName)
elif xml != "":
try:
appPath = ClusterConfigFile.readClusterAppPath(xml)
user = UserUtil.getPathOwner(appPath)[0]
except Exception:
user = "."
if user == "":
user = "."
if user == ".":
log_path = ClusterConstants.GAUSSDB_DIR
else:
log_path = ClusterDir.getUserLogDirWithUser(user)
path = "%s/om/%s" % (log_path, logName)
else:
log_path = ClusterConstants.GAUSSDB_DIR
path = "%s/om/%s" % (log_path, logName)
except Exception:
log_path = ClusterConstants.GAUSSDB_DIR
path = "%s/om/%s" % (log_path, ClusterConstants.LOCAL_LOG_FILE)
return os.path.realpath(path)
@staticmethod
def get_log_file_path(log_name):
gauss_log = os.environ.get("GAUSSLOG")
if not gauss_log:
_, gauss_log = ClusterDir.get_env("GAUSSLOG")
return gauss_log
SecurityChecker.check_injection_char(gauss_log)
return "%s/om/%s" % (gauss_log, log_name)
@staticmethod
def checkLogFile(log_file, user, xml_file, default_log_name):
"""
Check log file path
"""
if log_file == "":
log_file = ClusterLog.getOMLogPath(default_log_name,
user=user, xml=xml_file)
if not os.path.isabs(log_file):
GaussLog.exitWithError(ErrorCode.GAUSS_502["GAUSS_50213"] % log_file)
UserUtil.check_path_owner(log_file)
return log_file