162 lines
5.6 KiB
Python
162 lines
5.6 KiB
Python
# -*- coding:utf-8 -*-
|
|
#############################################################################
|
|
# Portions Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
# Portions Copyright (c) 2007 Agendaless Consulting and Contributors.
|
|
#
|
|
# 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 : suse os platform interface.
|
|
#############################################################################
|
|
|
|
import os
|
|
import subprocess
|
|
|
|
import platform
|
|
from gspylib.common.ErrorCode import ErrorCode
|
|
from os_platform.common import SUPPORT_SUSE12X_VERSION_LIST, \
|
|
SUPPORT_SUSE11X_VERSION_LIST, SUSE12, SUSE11, BIT_VERSION, \
|
|
SUPPORT_SUSE_VERSION_LIST, SUSE, BLANK_SPACE
|
|
from os_platform.linux_distro import LinuxDistro
|
|
from os_platform.linux_platform import LinuxPlatform
|
|
|
|
|
|
class SLESPlatform(LinuxPlatform):
|
|
"""
|
|
manage SUSE Linux Enterprise Server command,
|
|
config or service for muti-platform
|
|
"""
|
|
|
|
def __init__(self):
|
|
self.SuSEReleaseFile = "/etc/SuSE-release"
|
|
self.OSReleaseFile = "/etc/SuSE-release"
|
|
|
|
def getNetWorkConfPath(self):
|
|
"""get network config file path"""
|
|
return "/etc/sysconfig/network/"
|
|
|
|
def isPlatFormEulerOSOrRHEL7X(self):
|
|
"""
|
|
function: the patform is euleros or rhel7x
|
|
input : NA
|
|
output : bool
|
|
"""
|
|
return False
|
|
|
|
def getManageFirewallCmd(self, action):
|
|
"""
|
|
function: get manage firewall cmd
|
|
input : action
|
|
output : str
|
|
"""
|
|
return self.findCmdInPath('SuSEfirewall2') + BLANK_SPACE + action
|
|
|
|
def getManageCrondCmd(self, action):
|
|
"""
|
|
function: get manage crond cmd
|
|
input : action
|
|
output : str
|
|
"""
|
|
return self.getServiceCmd("cron", action)
|
|
|
|
def getManageSshdCmd(self, action):
|
|
"""
|
|
function: get manage sshd cmd
|
|
input : action
|
|
output : str
|
|
"""
|
|
return self.getServiceCmd("sshd", action)
|
|
|
|
def getManageSyslogCmd(self, action):
|
|
"""
|
|
function: get manage syslog cmd
|
|
input : action
|
|
output : str
|
|
"""
|
|
return self.getServiceCmd("syslog", action)
|
|
|
|
def getManageRsyslogCmd(self, action):
|
|
"""
|
|
function: get manage rsyslog cmd
|
|
input : action
|
|
output : str
|
|
"""
|
|
return self.getServiceCmd("rsyslog", action)
|
|
|
|
def getManageSystemdJournaldCmd(self, action):
|
|
"""
|
|
function: get systemd-jorunald cmd
|
|
input : action
|
|
output : str
|
|
"""
|
|
return self.getServiceCmd("systemd-journald", action)
|
|
|
|
def getManageGsOsServerCmd(self, action):
|
|
"""
|
|
function: get rhel/centos cmd
|
|
input : action
|
|
output : NA
|
|
"""
|
|
try:
|
|
raise Exception(ErrorCode.GAUSS_530["GAUSS_53021"]
|
|
% ("gs-OS-set service", "RHEL/CentOS"))
|
|
except Exception as e:
|
|
raise Exception(str(e))
|
|
|
|
def getCurrentPlatForm(self):
|
|
"""
|
|
function: get current platform
|
|
input: NA
|
|
output: str, str
|
|
"""
|
|
try:
|
|
dist_name, version, _ = LinuxDistro.linux_distribution()
|
|
bits = platform.architecture()[0]
|
|
if (dist_name.lower() != SUSE or
|
|
version not in SUPPORT_SUSE_VERSION_LIST):
|
|
raise Exception(ErrorCode.GAUSS_530["GAUSS_53022"]
|
|
% (dist_name.lower(), version))
|
|
|
|
# os-release is added since SLE 12; SuSE-release will
|
|
# be removed in a future service pack or release
|
|
if os.path.exists(self.SuSEReleaseFile):
|
|
cmd = "%s -i 'PATCHLEVEL' %s | " \
|
|
"%s -F '=' '{print $2}'" % (self.getGrepCmd(),
|
|
self.SuSEReleaseFile,
|
|
self.getAwkCmd())
|
|
else:
|
|
cmd = "%s -i 'VERSION_ID' %s | " \
|
|
"%s -F '.' '{print $2}' | %s 's/\"//'" % (
|
|
self.getGrepCmd(), self.OSReleaseFile,
|
|
self.getAwkCmd(), self.getSedCmd())
|
|
(status, output) = subprocess.getstatusoutput(cmd)
|
|
if status == 0 and output != "":
|
|
patchlevel = output.strip()
|
|
else:
|
|
raise Exception(ErrorCode.GAUSS_514["GAUSS_51400"] % cmd +
|
|
" Error: \n%s " % output)
|
|
|
|
if (bits == BIT_VERSION and
|
|
((version == SUSE11 and
|
|
patchlevel in SUPPORT_SUSE11X_VERSION_LIST) or
|
|
(version == SUSE12 and
|
|
patchlevel in SUPPORT_SUSE12X_VERSION_LIST))):
|
|
platform_version = "%s.%s" % (version, patchlevel)
|
|
return dist_name.lower(), platform_version
|
|
else:
|
|
raise Exception(ErrorCode.GAUSS_519["GAUSS_51900"] +
|
|
" The current system is: %s%s.%s" % (
|
|
dist_name.lower(), version, patchlevel))
|
|
except Exception as e:
|
|
raise Exception(str(e))
|