From ab11ccfb0bbc8598792e2307e6d087f26220ea1b Mon Sep 17 00:00:00 2001 From: xin liang Date: Sun, 12 Jan 2025 17:30:14 +0800 Subject: [PATCH] Dev: Remove 'master' and 'ms' terminology --- crmsh/cibconfig.py | 26 +++++++++++--------------- crmsh/cmd_status.py | 6 ++---- crmsh/completers.py | 2 +- crmsh/constants.py | 22 +++++++--------------- crmsh/logparser.py | 2 +- crmsh/rsctest.py | 30 +++++++++++++----------------- crmsh/ui_configure.py | 2 -- crmsh/ui_resource.py | 6 +++--- crmsh/xmlutil.py | 25 +++++++++++-------------- 9 files changed, 49 insertions(+), 72 deletions(-) diff --git a/crmsh/cibconfig.py b/crmsh/cibconfig.py index 455fc51ea3..b86d5d18b4 100644 --- a/crmsh/cibconfig.py +++ b/crmsh/cibconfig.py @@ -31,7 +31,7 @@ from .utils import run_ptest, is_id_valid, edit_file, get_boolean, filter_string from .xmlutil import is_child_rsc, rsc_constraint, sanitize_cib, rename_id, get_interesting_nodes from .xmlutil import is_pref_location, get_topnode, new_cib, get_rscop_defaults_meta_node -from .xmlutil import rename_rscref, is_ms_or_promotable_clone, silly_constraint, is_container, fix_comments +from .xmlutil import rename_rscref, is_promotable_clone, silly_constraint, is_container, fix_comments from .xmlutil import sanity_check_nvpairs, merge_nodes, op2list, mk_rsc_type, is_resource from .xmlutil import stuff_comments, is_comment, is_constraint, read_cib, processing_sort_cli from .xmlutil import find_operation, get_rsc_children_ids, is_primitive, referenced_resources @@ -676,7 +676,6 @@ def fix_node_ids(node, oldnode): 'node': 'node', 'primitive': 'rsc', 'template': 'rsc', - 'master': 'grp', 'group': 'grp', 'clone': 'grp', 'rsc_location': 'location', @@ -940,7 +939,7 @@ def _repr_cli_xml(self, format_mode): return "%s %s" % (h, cli_format(l, break_lines=(format_mode > 0), xml=True)) def _gv_rsc_id(self): - if self.parent and self.parent.obj_type in constants.clonems_tags: + if self.parent and self.parent.obj_type in constants.clone_tags: return "%s:%s" % (self.parent.obj_type, self.obj_id) return self.obj_id @@ -1644,7 +1643,7 @@ def repr_gv(self, gv_obj, from_grp=False): self._set_gv_attrs(gv_obj) self._set_gv_attrs(gv_obj, "class:%s" % ra_class) # if it's clone/ms, then get parent graph attributes - if self.parent and self.parent.obj_type in constants.clonems_tags: + if self.parent and self.parent.obj_type in constants.clone_tags: self._set_gv_attrs(gv_obj, self.parent.obj_type) template_ref = self.node.get("template") @@ -1669,7 +1668,7 @@ def repr_gv(self, gv_obj, from_grp=False): self._set_gv_attrs(gv_obj) self._set_gv_attrs(gv_obj, "class:%s" % ra_class) # if it's clone/ms, then get parent graph attributes - if self.parent and self.parent.obj_type in constants.clonems_tags: + if self.parent and self.parent.obj_type in constants.clone_tags: self._set_gv_attrs(gv_obj, self.parent.obj_type) @@ -1688,7 +1687,7 @@ def _repr_cli_head(self, format_mode): if (self.obj_type == "group" and is_primitive(c)) or \ is_child_rsc(c): children.append(clidisplay.rscref(c.get("id"))) - elif self.obj_type in constants.clonems_tags and is_child_rsc(c): + elif self.obj_type in constants.clone_tags and is_child_rsc(c): children.append(clidisplay.rscref(c.get("id"))) s = clidisplay.keyword(self.obj_type) ident = clidisplay.ident(self.obj_id) @@ -1704,8 +1703,6 @@ def check_sanity(self): l = get_resource_meta_list() if self.obj_type == "clone": l += constants.clone_meta_attributes - elif self.obj_type == "ms": - l += constants.clone_meta_attributes + constants.ms_meta_attributes elif self.obj_type == "group": l += constants.group_meta_attributes rc = sanity_check_meta(self.obj_id, self.node, l) @@ -1722,7 +1719,7 @@ def repr_gv(self, gv_obj, from_grp=False): "cluster_%s" % self.obj_id) sg_obj.new_graph_attr('label', self._gv_rsc_id()) self._set_sg_attrs(sg_obj, self.obj_type) - if self.parent and self.parent.obj_type in constants.clonems_tags: + if self.parent and self.parent.obj_type in constants.clone_tags: self._set_sg_attrs(sg_obj, self.parent.obj_type) for child_rsc in self.children: child_rsc.repr_gv(sg_obj, from_grp=True) @@ -2283,7 +2280,6 @@ def get_default_timeout(): "primitive": ("primitive", CibPrimitive, "resources"), "group": ("group", CibContainer, "resources"), "clone": ("clone", CibContainer, "resources"), - "master": ("ms", CibContainer, "resources"), "template": ("rsc_template", CibPrimitive, "resources"), "bundle": ("bundle", CibBundle, "resources"), "rsc_location": ("location", CibLocation, "constraints"), @@ -2966,7 +2962,7 @@ def fence_id_list_without_pcmk_delay(self): return [_id for _id in self.fence_id_list() if _id not in self.fence_id_list_with_pcmk_delay()] def children_id_list(self): - "List of child ids (for clone/master completion)." + "List of child ids (for clone completion)." return [x.obj_id for x in self.cib_objects if x.obj_type in constants.children_tags] def rsc_id_list(self): @@ -3006,7 +3002,7 @@ def rsc_template_list(self): if x.obj_type == "rsc_template"] def f_children_id_list(self): - "List of possible child ids (for clone/master completion)." + "List of possible child ids (for clone completion)." return [x.obj_id for x in self.cib_objects if x.obj_type in constants.children_tags and not x.parent] @@ -3086,7 +3082,7 @@ def default_timeouts(self, *args): implied_actions.remove(op) elif can_migrate(r_node) and op in implied_migrate_actions: implied_migrate_actions.remove(op) - elif is_ms_or_promotable_clone(obj.node.getparent()) and op in implied_ms_actions: + elif is_promotable_clone(obj.node.getparent()) and op in implied_ms_actions: implied_ms_actions.remove(op) elif op not in other_actions: continue @@ -3100,7 +3096,7 @@ def default_timeouts(self, *args): l = implied_actions if can_migrate(r_node): l += implied_migrate_actions - if is_ms_or_promotable_clone(obj.node.getparent()): + if is_promotable_clone(obj.node.getparent()): l += implied_ms_actions for op in l: adv_timeout = ra.get_op_attr_value(op, "timeout") @@ -3789,7 +3785,7 @@ def _add_element(self, obj, node): def _add_children(self, obj_type, node): """ Called from create_from_node - In case this is a clone/group/master create from XML, + In case this is a clone/group create from XML, and the child node(s) haven't been added as a separate objects. """ if obj_type not in constants.container_tags: diff --git a/crmsh/cmd_status.py b/crmsh/cmd_status.py index 541cadc49c..3f75e2c9c8 100644 --- a/crmsh/cmd_status.py +++ b/crmsh/cmd_status.py @@ -20,8 +20,7 @@ 'Stopped', 'standby', 'WITHOUT quorum'] -_OKS = ['Masters', 'Slaves', 'Started', 'Master', 'Slave', 'Online', 'online', 'ok', 'master', - 'with quorum'] +_OKS = ['Masters', 'Slaves', 'Started', 'Master', 'Slave', 'Online', 'online', 'ok', 'with quorum'] _ERRORS = ['not running', 'unknown error', 'invalid parameter', @@ -30,13 +29,12 @@ 'not installed', 'not configured', 'not running', - r'master \(failed\)', 'OCF_SIGNAL', 'OCF_NOT_SUPPORTED', 'OCF_TIMEOUT', 'OCF_OTHER_ERROR', 'OCF_DEGRADED', - 'OCF_DEGRADED_MASTER', + 'OCF_DEGRADED_PROMOTED', 'unknown', 'Unknown', 'OFFLINE', diff --git a/crmsh/completers.py b/crmsh/completers.py index a7b98833af..4869c6effd 100644 --- a/crmsh/completers.py +++ b/crmsh/completers.py @@ -52,7 +52,7 @@ def resources(args=None): rsc_id_list = [x.get("id") for x in nodes if xmlutil.is_resource(x)] if args: if args[0] in ('promote', 'demote'): - rsc_id_list = [item for item in rsc_id_list if xmlutil.RscState().is_ms_or_promotable_clone(item)] + rsc_id_list = [item for item in rsc_id_list if xmlutil.RscState().is_promotable_clone(item)] elif args[0] == "start": rsc_id_list = [item for item in rsc_id_list if not xmlutil.RscState().is_running(item)] elif args[0] == "stop": diff --git a/crmsh/constants.py b/crmsh/constants.py index 89686aa83d..0d1655eb77 100644 --- a/crmsh/constants.py +++ b/crmsh/constants.py @@ -5,7 +5,6 @@ "primitive": "primitive", "group": "group", "clone": "clone", - "master": "ms", "bundle": "bundle", "rsc_location": "location", "rsc_colocation": "colocation", @@ -23,15 +22,15 @@ "tag": "tag", "alert": "alert", } -container_tags = ("group", "clone", "ms", "master", "bundle") -clonems_tags = ("clone", "ms", "master") -resource_tags = ("primitive", "group", "clone", "ms", "master", "template", "bundle") +container_tags = ("group", "clone", "bundle") +clone_tags = ("clone", ) +resource_tags = ("primitive", "group", "clone", "template", "bundle") constraint_tags = ("rsc_location", "rsc_colocation", "rsc_order", "rsc_ticket") constraint_rsc_refs = ("rsc", "with-rsc", "first", "then") children_tags = ("group", "primitive") nvpairs_tags = ("meta_attributes", "instance_attributes", "utilization") defaults_tags = ("rsc_defaults", "op_defaults") -resource_cli_names = ("primitive", "group", "clone", "ms", "master", "rsc_template", "bundle") +resource_cli_names = ("primitive", "group", "clone", "rsc_template", "bundle") constraint_cli_names = ("location", "colocation", "collocation", "order", "rsc_ticket") nvset_cli_names = ("property", "rsc_defaults", "op_defaults") op_cli_names = ("monitor", @@ -114,8 +113,8 @@ "installed": "5", "configured": "6", "not_running": "7", - "master": "8", - "failed_master": "9", + "promoted": "8", + "failed_promoted": "9", } lrm_status_codes = { "pending": "-1", @@ -144,10 +143,6 @@ "clone-max", "clone-node-max", "clone-state", "description", "clone-min", "promotable", "promoted-max", "promoted-node-max", ) -ms_meta_attributes = common_meta_attributes + ( - "clone-max", "clone-node-max", "notify", "globally-unique", "ordered", - "interleave", "master-max", "master-node-max", "description", -) bundle_meta_attributes = common_meta_attributes alert_meta_attributes = ( "timeout", "timestamp-format" @@ -219,9 +214,6 @@ "clone": { "color": "#ec008c", }, - "ms": { - "color": "#f8981d", - }, "bundle": { "color": "#00aeef", "style": "rounded", @@ -447,7 +439,7 @@ DLM_PORT = 21064 # Commands that are deprecated and hidden from UI -HIDDEN_COMMANDS = {'ms'} +HIDDEN_COMMANDS = {} NO_SSH_ERROR_MSG = "ssh-related operations are disabled. crmsh works in local mode." diff --git a/crmsh/logparser.py b/crmsh/logparser.py index e170f9c3ac..babacc4ca5 100644 --- a/crmsh/logparser.py +++ b/crmsh/logparser.py @@ -238,7 +238,7 @@ def __init__(self, report_path): for grp in cib_elem.xpath("/cib/configuration/resources/group"): self.groups[grp.get("id")] = xmlutil.get_rsc_children_ids(grp) - for cln in cib_elem.xpath("/cib/configuration/resources/*[self::clone or self::master]"): + for cln in cib_elem.xpath("/cib/configuration/resources/*[self::clone]"): self.clones[cln.get("id")] = xmlutil.get_prim_children_ids(cln) self.cloned_resources.union(self.clones[cln.get("id")]) diff --git a/crmsh/rsctest.py b/crmsh/rsctest.py index 8fa6e2f6a8..080c64d85d 100644 --- a/crmsh/rsctest.py +++ b/crmsh/rsctest.py @@ -4,7 +4,7 @@ import os import sys from .utils import rmdir_r, quote, this_node, ext_cmd -from .xmlutil import get_topmost_rsc, get_op_timeout, get_child_nvset_node, is_ms_or_promotable_clone, is_cloned +from .xmlutil import get_topmost_rsc, get_op_timeout, get_child_nvset_node, is_promotable_clone, is_cloned from . import log @@ -45,7 +45,7 @@ def __init__(self, rsc_node, nodes): self.ec_l = {} self.ec_ok = self.unused self.ec_stopped = self.unused - self.ec_master = self.unused + self.ec_promoted = self.unused self.last_op = None self.last_rec = {} self.timeout = 20000 @@ -69,8 +69,8 @@ def info(self, s): def debug(self, s): logger.debug("%s: %s", self.id_str(), s) - def is_ms_or_promotable_clone(self): - return is_ms_or_promotable_clone(get_topmost_rsc(self.rscdef_node)) + def is_promotable_clone(self): + return is_promotable_clone(get_topmost_rsc(self.rscdef_node)) def nvset2env(self, set_n): if set_n is None: @@ -123,10 +123,6 @@ def is_ok(self, host): 'Was last op successful?' return self.op_status(host) == self.ec_ok - def is_master(self, host): - 'Only if last op was probe/monitor.' - return self.op_status(host) == self.ec_master - def is_stopped(self, host): 'Only if last op was probe/monitor.' return self.op_status(host) == self.ec_stopped @@ -198,7 +194,7 @@ def stop(self, node): """ Make sure resource is stopped on node. """ - if self.is_ms_or_promotable_clone(): + if self.is_promotable_clone(): self.runop("demote", (node,)) self.runop("stop", (node,)) ok = self.is_ok(node) @@ -212,7 +208,7 @@ def test_resource(self, node): Perform test of resource on node. """ self.runop("start", (node,)) - if self.is_ms_or_promotable_clone() and self.is_ok(node): + if self.is_promotable_clone() and self.is_ok(node): self.runop("promote", (node,)) return self.is_ok(node) @@ -230,8 +226,8 @@ def verify_stopped(self, node): if not stopped: if self.is_ok(node): self.warn("resource running at %s" % (node)) - elif self.is_ms_or_promotable_clone() and self.is_master(node): - self.warn("resource is master at %s" % (node)) + elif self.is_promotable_clone(): + self.warn("resource is promoted at %s" % (node)) else: self.warn("resource not clean at %s" % (node)) self.show_log(node) @@ -251,14 +247,14 @@ class RAOCF(RADriver): OCF_ERR_INSTALLED = 5 OCF_ERR_CONFIGURED = 6 OCF_NOT_RUNNING = 7 - OCF_RUNNING_MASTER = 8 - OCF_FAILED_MASTER = 9 + OCF_RUNNING_PROMOTED = 8 + OCF_FAILED_PROMOTED = 9 def __init__(self, *args): RADriver.__init__(self, *args) self.ec_ok = self.OCF_SUCCESS self.ec_stopped = self.OCF_NOT_RUNNING - self.ec_master = self.OCF_RUNNING_MASTER + self.ec_promoted = self.OCF_RUNNING_PROMOTED def set_rscenv(self, op): RADriver.set_rscenv(self, op) @@ -295,7 +291,7 @@ def __init__(self, *args): RADriver.__init__(self, *args) self.ec_ok = self.LSB_OK self.ec_stopped = self.LSB_STATUS_NOT_RUNNING - self.ec_master = self.unused + self.ec_promoted = self.unused def set_rscenv(self, op): RADriver.set_rscenv(self, op) @@ -323,7 +319,7 @@ def __init__(self, *args): RADriver.__init__(self, *args) self.ec_ok = self.SYSD_OK self.ec_stopped = self.SYSD_NOT_RUNNING - self.ec_master = self.unused + self.ec_promoted = self.unused def set_rscenv(self, op): RADriver.set_rscenv(self, op) diff --git a/crmsh/ui_configure.py b/crmsh/ui_configure.py index e09a61d724..1ed7c7db87 100644 --- a/crmsh/ui_configure.py +++ b/crmsh/ui_configure.py @@ -101,8 +101,6 @@ def _advanced_completer(args): return_list = utils.filter_keys(constants.group_meta_attributes, args) if resource_type == "clone": return_list = utils.filter_keys(constants.clone_meta_attributes, args) - if resource_type in ["ms", "master"]: - return_list = utils.filter_keys(constants.ms_meta_attributes, args) return return_list + key_words diff --git a/crmsh/ui_resource.py b/crmsh/ui_resource.py index f1f8b2364f..965dea0cc1 100644 --- a/crmsh/ui_resource.py +++ b/crmsh/ui_resource.py @@ -338,7 +338,7 @@ def do_promote(self, context, rsc): "usage: promote " if not utils.is_name_sane(rsc): return False - if not xmlutil.RscState().is_ms_or_promotable_clone(rsc): + if not xmlutil.RscState().is_promotable_clone(rsc): logger.error("%s is not a promotable resource", rsc) return False role = utils.handle_role_for_ocf_1_1(constants.RSC_ROLE_PROMOTED) @@ -367,7 +367,7 @@ def do_demote(self, context, rsc): "usage: demote " if not utils.is_name_sane(rsc): return False - if not xmlutil.RscState().is_ms_or_promotable_clone(rsc): + if not xmlutil.RscState().is_promotable_clone(rsc): logger.error("%s is not a promotable resource", rsc) return False role = utils.handle_role_for_ocf_1_1(constants.RSC_ROLE_UNPROMOTED) @@ -667,7 +667,7 @@ def trace(name): context.fatal_error("Failed to add trace for %s:%s" % (rsc_id, name)) trace('start') trace('stop') - if xmlutil.is_ms_or_promotable_clone(rsc.node): + if xmlutil.is_promotable_clone(rsc.node): trace('promote') trace('demote') for op_node in op_nodes: diff --git a/crmsh/xmlutil.py b/crmsh/xmlutil.py index 7179cedc33..b63ed0c449 100644 --- a/crmsh/xmlutil.py +++ b/crmsh/xmlutil.py @@ -239,14 +239,14 @@ def rsc2node(self, ident): except (IndexError, AttributeError): return None - def is_ms_or_promotable_clone(self, ident): + def is_promotable_clone(self, ident): ''' - Test if the resource is master-slave. + Test if the resource is promotable. ''' rsc_node = self.rsc2node(ident) if rsc_node is None: return False - return is_ms_or_promotable_clone(rsc_node) + return is_promotable_clone(rsc_node) def rsc_clone(self, ident): ''' @@ -560,10 +560,8 @@ def is_attr_set(node, attr): return get_attr_value(get_child_nvset_node(node), attr) is not None -def is_ms_or_promotable_clone(node): - is_promotable_type = is_boolean_true(is_attr_set(node, "promotable")) - is_ms_type = node.tag in ("master", "ms") - return is_ms_type or is_promotable_type +def is_promotable_clone(node): + return is_boolean_true(is_attr_set(node, "promotable")) def is_clone(node): @@ -571,13 +569,13 @@ def is_clone(node): def is_clonems(node): - return node.tag in constants.clonems_tags + return node.tag in constants.clone_tags def is_cloned(node): - return (node.getparent().tag in constants.clonems_tags or + return (node.getparent().tag in constants.clone_tags or (node.getparent().tag == "group" and - node.getparent().getparent().tag in constants.clonems_tags)) + node.getparent().getparent().tag in constants.clone_tags)) def is_container(node): @@ -632,7 +630,7 @@ def is_related(rsc_id, node): return True return False if is_container(node): - for tag in ('primitive', 'group', 'clone', 'master'): + for tag in ('primitive', 'group', 'clone'): if len(node.xpath('.//%s[@id="%s"]' % (tag, rsc_id))) > 0: return True return False @@ -869,8 +867,7 @@ def make_sort_map(*order): _sort_xml_order = make_sort_map('node', - 'template', 'primitive', 'bundle', 'group', 'master', 'clone', 'op', - 'tag', + 'template', 'primitive', 'bundle', 'group', 'clone', 'op', 'tag', ['rsc_location', 'rsc_colocation', 'rsc_order'], ['rsc_ticket', 'fencing-topology'], 'cluster_property_set', 'rsc_defaults', 'op_defaults', @@ -879,7 +876,7 @@ def make_sort_map(*order): _sort_cli_order = make_sort_map('node', 'rsc_template', 'primitive', 'bundle', 'group', - ['ms', 'master'], 'clone', 'op', + 'clone', 'op', 'tag', ['location', 'colocation', 'collocation', 'order'], ['rsc_ticket', 'fencing_topology'],