Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package crmsh for openSUSE:Factory checked in at 2022-01-06 15:50:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crmsh (Old) and /work/SRC/openSUSE:Factory/.crmsh.new.1896 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh" Thu Jan 6 15:50:50 2022 rev:235 rq:943881 version:4.3.1+20220104.b683bf0d Changes: -------- --- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2021-12-24 20:23:33.926031533 +0100 +++ /work/SRC/openSUSE:Factory/.crmsh.new.1896/crmsh.changes 2022-01-06 15:50:54.340958815 +0100 @@ -1,0 +2,14 @@ +Tue Jan 04 09:19:17 UTC 2022 - xli...@suse.com + +- Update to version 4.3.1+20220104.b683bf0d: + * Dev: bootstrap: Avoid duplicated setting for rsc_defaults + +------------------------------------------------------------------- +Wed Dec 29 09:18:10 UTC 2021 - xli...@suse.com + +- Update to version 4.3.1+20211229.ace94b1f: + * Dev: testcase: Adjust original testcase based on previous changes + * Fix: ui_configure: Give a deprecated warning when using "ms" subcommand (bsc#1194125) + * Fix: xmlutil: Parse promotable clone correctly and also consider compatibility (bsc#1194125) + +------------------------------------------------------------------- Old: ---- crmsh-4.3.1+20211224.922207f9.tar.bz2 New: ---- crmsh-4.3.1+20220104.b683bf0d.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crmsh.spec ++++++ --- /var/tmp/diff_new_pack.lTqOxa/_old 2022-01-06 15:50:54.860959101 +0100 +++ /var/tmp/diff_new_pack.lTqOxa/_new 2022-01-06 15:50:54.864959103 +0100 @@ -1,7 +1,7 @@ # # spec file for package crmsh # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -36,7 +36,7 @@ Summary: High Availability cluster command-line interface License: GPL-2.0-or-later Group: %{pkg_group} -Version: 4.3.1+20211224.922207f9 +Version: 4.3.1+20220104.b683bf0d Release: 0 URL: http://crmsh.github.io Source0: %{name}-%{version}.tar.bz2 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.lTqOxa/_old 2022-01-06 15:50:54.904959125 +0100 +++ /var/tmp/diff_new_pack.lTqOxa/_new 2022-01-06 15:50:54.908959127 +0100 @@ -9,7 +9,7 @@ </service> <service name="tar_scm"> <param name="url">https://github.com/ClusterLabs/crmsh.git</param> - <param name="changesrevision">922207f9c694bc5bc61dfaac50ba800b8447384c</param> + <param name="changesrevision">0a4a198844f550840c8d0cecf95537dca4b93046</param> </service> </servicedata> (No newline at EOF) ++++++ crmsh-4.3.1+20211224.922207f9.tar.bz2 -> crmsh-4.3.1+20220104.b683bf0d.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/bootstrap.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/bootstrap.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/bootstrap.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/bootstrap.py 2022-01-04 10:03:01.000000000 +0100 @@ -1213,10 +1213,13 @@ logger.info("Loading initial cluster configuration") + rsc_defaults_str = "rsc_defaults rsc-options: migration-threshold=3" + if not xmlutil.RscState().has_rsc_stickiness(): + rsc_defaults_str += " resource-stickiness=1" crm_configure_load("update", """property cib-bootstrap-options: stonith-enabled=false op_defaults op-options: timeout=600 record-pending=true -rsc_defaults rsc-options: resource-stickiness=1 migration-threshold=3 -""") +{} +""".format(rsc_defaults_str)) _context.sbd_manager.configure_sbd_resource_and_properties() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/cibconfig.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/cibconfig.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/cibconfig.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/cibconfig.py 2022-01-04 10:03:01.000000000 +0100 @@ -32,7 +32,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, silly_constraint, is_container, fix_comments +from .xmlutil import rename_rscref, is_ms_or_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 @@ -3011,7 +3011,7 @@ implied_actions.remove(op) elif can_migrate(r_node) and op in implied_migrate_actions: implied_migrate_actions.remove(op) - elif is_ms(obj.node.getparent()) and op in implied_ms_actions: + elif is_ms_or_promotable_clone(obj.node.getparent()) and op in implied_ms_actions: implied_ms_actions.remove(op) elif op not in other_actions: continue @@ -3022,7 +3022,7 @@ l = implied_actions if can_migrate(r_node): l += implied_migrate_actions - if is_ms(obj.node.getparent()): + if is_ms_or_promotable_clone(obj.node.getparent()): l += implied_ms_actions for op in l: adv_timeout = ra.get_adv_timeout(op) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/cibverify.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/cibverify.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/cibverify.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/cibverify.py 2022-01-04 10:03:01.000000000 +0100 @@ -28,5 +28,5 @@ else: logger.error(_prettify(line, 0)) else: - logger.info(_prettify(line, 7)) + logger.error(_prettify(line, 7)) return rc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/completers.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/completers.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/completers.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/completers.py 2022-01-04 10:03:01.000000000 +0100 @@ -51,7 +51,7 @@ nodes = xmlutil.get_interesting_nodes(cib_el, []) rsc_id_list = [x.get("id") for x in nodes if xmlutil.is_resource(x)] if args and args[0] in ['promote', 'demote']: - return [item for item in rsc_id_list if xmlutil.RscState().is_ms(item)] + return [item for item in rsc_id_list if xmlutil.RscState().is_ms_or_promotable_clone(item)] if args and args[0] == "started": return [item for item in rsc_id_list if xmlutil.RscState().is_running(item)] if args and args[0] == "stopped": diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/rsctest.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/rsctest.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/rsctest.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/rsctest.py 2022-01-04 10:03:01.000000000 +0100 @@ -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, is_cloned +from .xmlutil import get_topmost_rsc, get_op_timeout, get_child_nvset_node, is_ms_or_promotable_clone, is_cloned from . import log @@ -69,8 +69,8 @@ def debug(self, s): logger.debug("%s: %s", self.id_str(), s) - def is_ms(self): - return is_ms(get_topmost_rsc(self.rscdef_node)) + def is_ms_or_promotable_clone(self): + return is_ms_or_promotable_clone(get_topmost_rsc(self.rscdef_node)) def nvset2env(self, set_n): if set_n is None: @@ -195,7 +195,7 @@ """ Make sure resource is stopped on node. """ - if self.is_ms(): + if self.is_ms_or_promotable_clone(): self.runop("demote", (node,)) self.runop("stop", (node,)) ok = self.is_ok(node) @@ -209,7 +209,7 @@ Perform test of resource on node. """ self.runop("start", (node,)) - if self.is_ms() and self.is_ok(node): + if self.is_ms_or_promotable_clone() and self.is_ok(node): self.runop("promote", (node,)) return self.is_ok(node) @@ -227,7 +227,7 @@ if not stopped: if self.is_ok(node): self.warn("resource running at %s" % (node)) - elif self.is_ms() and self.is_master(node): + elif self.is_ms_or_promotable_clone() and self.is_master(node): self.warn("resource is master at %s" % (node)) else: self.warn("resource not clean at %s" % (node)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/ui_configure.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/ui_configure.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/ui_configure.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/ui_configure.py 2022-01-04 10:03:01.000000000 +0100 @@ -1027,6 +1027,9 @@ """usage: ms <name> <rsc> [params <param>=<value> [<param>=<value>...]] [meta <attribute>=<value> [<attribute>=<value>...]]""" + format_str = " " if "meta" in args else " meta " + new_cmd_str = ' '.join(args) + "{}promotable=true".format(format_str) + logger.warning('"ms" is deprecated. Please use "clone {}"'.format(new_cmd_str)) return self.__conf_object(context.get_command_name(), *args) @command.skill_level('administrator') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/ui_resource.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/ui_resource.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/ui_resource.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/ui_resource.py 2022-01-04 10:03:01.000000000 +0100 @@ -335,8 +335,8 @@ "usage: promote <rsc>" if not utils.is_name_sane(rsc): return False - if not xmlutil.RscState().is_ms(rsc): - logger.error("%s is not a master-slave resource", rsc) + if not xmlutil.RscState().is_ms_or_promotable_clone(rsc): + logger.error("%s is not a promotable resource", rsc) return False return utils.ext_cmd(self.rsc_setrole % (rsc, "Master")) == 0 @@ -363,8 +363,8 @@ "usage: demote <rsc>" if not utils.is_name_sane(rsc): return False - if not xmlutil.RscState().is_ms(rsc): - logger.error("%s is not a master-slave resource", rsc) + if not xmlutil.RscState().is_ms_or_promotable_clone(rsc): + logger.error("%s is not a promotable resource", rsc) return False return utils.ext_cmd(self.rsc_setrole % (rsc, "Slave")) == 0 @@ -653,7 +653,7 @@ context.fatal_error("Failed to add trace for %s:%s" % (rsc_id, name)) trace('start') trace('stop') - if xmlutil.is_ms(rsc.node): + if xmlutil.is_ms_or_promotable_clone(rsc.node): trace('promote') trace('demote') for op_node in op_nodes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/crmsh/xmlutil.py new/crmsh-4.3.1+20220104.b683bf0d/crmsh/xmlutil.py --- old/crmsh-4.3.1+20211224.922207f9/crmsh/xmlutil.py 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/crmsh/xmlutil.py 2022-01-04 10:03:01.000000000 +0100 @@ -16,7 +16,7 @@ from . import userdir from .utils import add_sudo, str2file, str2tmp, get_boolean from .utils import get_stdout, get_stdout_or_raise_error, stdout2list, crm_msec, crm_time_cmp -from .utils import olist, get_cib_in_use, get_tempdir, to_ascii +from .utils import olist, get_cib_in_use, get_tempdir, to_ascii, is_boolean_true from . import log @@ -218,14 +218,24 @@ except (IndexError, AttributeError): return None - def is_ms(self, ident): + def has_rsc_stickiness(self): + """ + Check if resource-stickiness already set + """ + self._init_cib() + if self.rsc_dflt_elem is None: + return False + attr = get_attr_in_set(self.rsc_dflt_elem, "resource-stickiness") + return attr is not None + + def is_ms_or_promotable_clone(self, ident): ''' Test if the resource is master-slave. ''' rsc_node = self.rsc2node(ident) if rsc_node is None: return False - return is_ms(rsc_node) + return is_ms_or_promotable_clone(rsc_node) def rsc_clone(self, ident): ''' @@ -540,8 +550,10 @@ return node.tag == "group" -def is_ms(node): - return node.tag in ("master", "ms") +def is_ms_or_promotable_clone(node): + is_promotable = is_boolean_true(get_attr_value(get_child_nvset_node(node), "promotable")) + is_ms = node.tag in ("master", "ms") + return is_ms or is_promotable def is_clone(node): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/test/crm-interface new/crmsh-4.3.1+20220104.b683bf0d/test/crm-interface --- old/crmsh-4.3.1+20211224.922207f9/test/crm-interface 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/test/crm-interface 2022-01-04 10:03:01.000000000 +0100 @@ -32,7 +32,7 @@ primitive p3 ocf:pacemaker:Dummy primitive st stonith:null params hostlist=node1 clone c1 p1 -ms m1 p2 +clone m1 p2 meta promotable=true op_defaults timeout=60s commit up diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/test/testcases/confbasic.exp new/crmsh-4.3.1+20220104.b683bf0d/test/testcases/confbasic.exp --- old/crmsh-4.3.1+20211224.922207f9/test/testcases/confbasic.exp 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/test/testcases/confbasic.exp 2022-01-04 10:03:01.000000000 +0100 @@ -22,15 +22,19 @@ .INP: clone c d3 meta clone-max=1 .INP: primitive d4 ocf:pacemaker:Dummy .INP: ms m d4 +WARNING: 19: "ms" is deprecated. Please use "clone m d4 meta promotable=true" .INP: delete m .INP: master m d4 WARNING: 21: This command 'master' is deprecated, please use 'ms' INFO: 21: "master" is accepted as "ms" +WARNING: 21: "ms" is deprecated. Please use "clone m d4 meta promotable=true" .INP: primitive s5 ocf:pacemaker:Stateful operations $id-ref=d1-ops .EXT crm_resource --show-metadata ocf:pacemaker:Stateful .INP: primitive s6 ocf:pacemaker:Stateful operations $id-ref=d1 .INP: ms m5 s5 +WARNING: 24: "ms" is deprecated. Please use "clone m5 s5 meta promotable=true" .INP: ms m6 s6 +WARNING: 25: "ms" is deprecated. Please use "clone m6 s6 meta promotable=true" .INP: primitive d7 Dummy params rule inf: #uname eq node1 fake=1 params rule inf: #uname eq node2 fake=2 op start interval=0 timeout=60s op_params 2: rule #uname eq node1 op_param=dummy op_params 1: op_param=smart op_meta 2: rule #ra-version version:gt 1.0 start-delay=120m op_meta 1: start-delay=60m .EXT crm_resource --show-metadata ocf:heartbeat:Dummy .INP: primitive d8 ocf:pacemaker:Dummy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/test/testcases/file.exp new/crmsh-4.3.1+20220104.b683bf0d/test/testcases/file.exp --- old/crmsh-4.3.1+20211224.922207f9/test/testcases/file.exp 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/test/testcases/file.exp 2022-01-04 10:03:01.000000000 +0100 @@ -8,8 +8,9 @@ primitive p3 ocf:pacemaker:Dummy primitive st stonith:null \ params hostlist=node1 -ms m1 p2 clone c1 p1 +clone m1 p2 \ + meta promotable=true rsc_defaults build-resource-defaults: \ resource-stickiness=1 op_defaults op-options: \ @@ -44,8 +45,9 @@ primitive st stonith:null \ params hostlist=node1 # comment -ms m1 p2 clone c1 p1 +clone m1 p2 \ + meta promotable=true property cib-bootstrap-options: \ cluster-recheck-interval=10m rsc_defaults build-resource-defaults: \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211224.922207f9/test/testcases/resource.exp new/crmsh-4.3.1+20220104.b683bf0d/test/testcases/resource.exp --- old/crmsh-4.3.1+20211224.922207f9/test/testcases/resource.exp 2021-12-24 10:24:59.000000000 +0100 +++ new/crmsh-4.3.1+20220104.b683bf0d/test/testcases/resource.exp 2022-01-04 10:03:01.000000000 +0100 @@ -96,8 +96,9 @@ <crm_config/> <nodes/> <resources> - <master id="m1"> + <clone id="m1"> <meta_attributes id="m1-meta_attributes"> + <nvpair name="promotable" value="true" id="m1-meta_attributes-promotable"/> <nvpair id="m1-meta_attributes-maintenance" name="maintenance" value="true"/> </meta_attributes> <primitive id="p2" class="ocf" provider="heartbeat" type="Delay"> @@ -107,7 +108,7 @@ <nvpair name="stopdelay" value="2" id="p2-instance_attributes-stopdelay"/> </instance_attributes> </primitive> - </master> + </clone> </resources> <constraints/> </configuration> @@ -123,8 +124,9 @@ <crm_config/> <nodes/> <resources> - <master id="m1"> + <clone id="m1"> <meta_attributes id="m1-meta_attributes"> + <nvpair name="promotable" value="true" id="m1-meta_attributes-promotable"/> <nvpair id="m1-meta_attributes-maintenance" name="maintenance" value="false"/> </meta_attributes> <primitive id="p2" class="ocf" provider="heartbeat" type="Delay"> @@ -134,7 +136,7 @@ <nvpair name="stopdelay" value="2" id="p2-instance_attributes-stopdelay"/> </instance_attributes> </primitive> - </master> + </clone> </resources> <constraints/> </configuration> @@ -927,6 +929,7 @@ WARNING: This command 'rm' is deprecated, please use 'delete' INFO: "rm" is accepted as "delete" .TRY configure ms msg g +WARNING: "ms" is deprecated. Please use "clone msg g meta promotable=true" .TRY resource scores .EXT crm_simulate -sUL 2 of 6 resource instances DISABLED and 0 BLOCKED from further action due to failure