161 lines
4.6 KiB
Python
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
|