openGaussDev 8cada91e73 集中式支持vip本地化安装
Match-id-c7906104d5bcad5351beb7863fb3c72c990f7c25
2023-02-28 15:53:23 +08:00

161 lines
4.6 KiB
Python

# -*- 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.
#############################################################################
try:
import sys
sys.path.append(sys.path[0] + "/../../../")
from gspylib.component.BaseComponent import BaseComponent
except ImportError as e:
sys.exit("[GAUSS-52200] : Unable to import module: %s." % str(e))
class CM(BaseComponent):
'''
The class is used to define cluster manager component.
'''
def __init__(self):
'''
Constructor
'''
super(CM, self).__init__()
self.timeout = 300
self.level = 2
class CmResAttr():
def __init__(self, script, res_type='DN'):
self.resources_type = res_type
self.script = script
self.check_interval = 1
self.time_out = 120
self.restart_times = 5
self.restart_delay = 1
self.restart_period = 1
def __str__(self):
return str(vars(self)).replace(":", '=').replace('\'', '').replace(
' ', '').replace('{', '"').replace('}', '"')
class DssInstAttr():
def __init__(self, node_id, dss_id, dss_home):
self.node_id = node_id
self.res_instance_id = dss_id
self.res_args = dss_home
def __str__(self):
return str(vars(self)).replace(":", '=').replace('\'', '').replace(
' ', '').replace('{', '"').replace('}', '"').replace(';', ' ')
class VipResAttr():
"""
VIP resource attribute
"""
def __init__(self, float_ip):
self.resources_type = "VIP"
self.float_ip = float_ip
def __str__(self):
return str(vars(self)).replace(':', '=').replace('\'', '').replace(
' ', '').replace('{', '"').replace('}', '"').replace(';', ' ')
class VipInstAttr():
"""
VIP instance attribute
"""
def __init__(self, base_ip):
self.base_ip = base_ip
def __str__(self):
return str(vars(self)).replace(':', '=').replace('\'', '').replace(
' ', '').replace('{', '"').replace('}', '"').replace(';', ' ')
class VipAddInst():
"""
VIP add instance attribute
"""
def __init__(self, res_instance_id, node_id):
self.node_id = node_id
self.res_instance_id = res_instance_id
def __str__(self):
return str(vars(self)).replace(':', '=').replace('\'', '').replace(
' ', '').replace('{', '"').replace('}', '"').replace(';', ' ')
class VipDelInst():
"""
VIP del instance attribute
"""
def __init__(self, res_instance_id):
self.res_instance_id = res_instance_id
def __str__(self):
return str(vars(self)).replace(':', '=').replace('\'', '').replace(
' ', '').replace('{', '"').replace('}', '"').replace(';', ' ')
class CmResCtrlCmd():
def __init__(self, action='add', name='', attr=''):
self.action = action
self.attr_name = name
self.attr = attr
def __str__(self):
cmd = ''
if self.action == 'add':
cmd = 'cm_ctl res --add --res_name {} --res_attr={}'.format(
self.attr_name, self.attr)
elif self.action == 'edit':
cmd = 'cm_ctl res --edit --res_name {} --add_inst={}'.format(
self.attr_name, self.attr)
return cmd
class VipCmResCtrlCmd():
"""
VipCmResCtrlCmd
"""
def __init__(self, action, name, inst="", attr=""):
self.action = action
self.name = name
self.inst = inst
self.attr = attr
def __str__(self):
cmd = ""
if self.action == "add_res":
cmd = "cm_ctl res --add --res_name=\"%s\" --res_attr=%s" % \
(self.name, self.attr)
elif self.action == "del_res":
cmd = "cm_ctl res --del --res_name=\"%s\"" % self.name
elif self.action == "add_inst":
cmd = "cm_ctl res --edit --res_name=\"%s\" --add_inst=%s --inst_attr=%s" % \
(self.name, self.inst, self.attr)
elif self.action == "del_inst":
cmd = "cm_ctl res --edit --res_name=\"%s\" --del_inst=%s" % \
(self.name, self.inst)
return cmd