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

support cgroup

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

114 lines
3.5 KiB
Python

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#############################################################################
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms
# and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# ----------------------------------------------------------------------------
# Description : CheckPreInstall.py is a utility to check whether the
# PreInstall has been done or not.
#############################################################################
import subprocess
import getopt
import sys
import os
import pwd
sys.path.append(sys.path[0] + "/../")
from gspylib.common.GaussLog import GaussLog
from gspylib.common.ParameterParsecheck import Parameter
from gspylib.common.ErrorCode import ErrorCode
from domain_utils.cluster_os.cluster_user import ClusterUser
PREINSTALL_FLAG = "1"
INSTALL_FLAG = "2"
def usage():
"""
Usage:
python3 CheckPreInstall.py -h|--help
python3 CheckPreInstall.py -U user
"""
print(usage.__doc__)
def main():
"""
function: main function:
1.parse parameter
2.check $GAUSS_ENV
input : NA
output: NA
"""
try:
(opts, args) = getopt.getopt(sys.argv[1:], "U:h:t:", ["help"])
except Exception as e:
usage()
GaussLog.exitWithError(ErrorCode.GAUSS_500["GAUSS_50000"] % str(e))
if (len(args) > 0):
GaussLog.exitWithError(
ErrorCode.GAUSS_500["GAUSS_50000"] % str(args[0]))
DBUser = ""
checkInstall = "preinstall"
for (key, value) in opts:
if (key == "-h" or key == "--help"):
usage()
sys.exit(0)
elif (key == "-U"):
DBUser = value
elif (key == "-t"):
checkInstall = value
else:
GaussLog.exitWithError(ErrorCode.GAUSS_500["GAUSS_50000"] % key)
# check para vaild
Parameter.checkParaVaild(key, value)
# check user
if DBUser == "":
GaussLog.exitWithError(ErrorCode.GAUSS_500["GAUSS_50001"] % 'U' + ".")
try:
execUser = pwd.getpwuid(os.getuid()).pw_name
if execUser != DBUser:
GaussLog.exitWithError(ErrorCode.GAUSS_500["GAUSS_50004"] % "U")
# Check if user exists and if is the right user
ClusterUser.checkUser(DBUser, False)
except Exception as e:
GaussLog.exitWithError(str(e))
# check if have done preinstall for this user
cmd = "echo $GAUSS_ENV 2>/dev/null"
(status, output) = subprocess.getstatusoutput(cmd)
if status != 0:
GaussLog.exitWithError(
ErrorCode.GAUSS_518["GAUSS_51802"] % "GAUSS_ENV")
if checkInstall == "preinstall":
if output.strip() == PREINSTALL_FLAG or output.strip() == INSTALL_FLAG:
GaussLog.printMessage("Successfully checked GAUSS_ENV.")
sys.exit(0)
else:
GaussLog.exitWithError(
ErrorCode.GAUSS_518["GAUSS_51805"] % "GAUSS_ENV")
elif checkInstall == "install" and output.strip() == INSTALL_FLAG:
GaussLog.exitWithError(ErrorCode.GAUSS_518["GAUSS_51806"])
if __name__ == '__main__':
try:
main()
except Exception as e:
GaussLog.exitWithError(str(e))