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-25 17:36:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crmsh (Old) and /work/SRC/openSUSE:Factory/.crmsh.new.1938 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh" Tue Jan 25 17:36:01 2022 rev:238 rq:948943 version:4.4.0+20220125.d0150a88 Changes: -------- --- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2022-01-17 22:34:22.714256949 +0100 +++ /work/SRC/openSUSE:Factory/.crmsh.new.1938/crmsh.changes 2022-01-25 17:37:23.101790966 +0100 @@ -1,0 +2,12 @@ +Tue Jan 25 07:51:13 UTC 2022 - xli...@suse.com + +- Update to version 4.4.0+20220125.d0150a88: + * Dev: ui_node: Use diff and patch instead of replace cib + +------------------------------------------------------------------- +Tue Jan 18 00:56:51 UTC 2022 - xli...@suse.com + +- Update to version 4.4.0+20220118.5d56321b: + * Dev: crm report: Add dpkg support + +------------------------------------------------------------------- Old: ---- crmsh-4.4.0+20220117.3debc274.tar.bz2 New: ---- crmsh-4.4.0+20220125.d0150a88.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crmsh.spec ++++++ --- /var/tmp/diff_new_pack.BarFuu/_old 2022-01-25 17:37:23.777786310 +0100 +++ /var/tmp/diff_new_pack.BarFuu/_new 2022-01-25 17:37:23.785786254 +0100 @@ -36,7 +36,7 @@ Summary: High Availability cluster command-line interface License: GPL-2.0-or-later Group: %{pkg_group} -Version: 4.4.0+20220117.3debc274 +Version: 4.4.0+20220125.d0150a88 Release: 0 URL: http://crmsh.github.io Source0: %{name}-%{version}.tar.bz2 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.BarFuu/_old 2022-01-25 17:37:23.873785648 +0100 +++ /var/tmp/diff_new_pack.BarFuu/_new 2022-01-25 17:37:23.881785593 +0100 @@ -9,7 +9,7 @@ </service> <service name="tar_scm"> <param name="url">https://github.com/ClusterLabs/crmsh.git</param> - <param name="changesrevision">ac97ee74e6358b03e0a50bd28a92390add801cec</param> + <param name="changesrevision">dd6f18660a24fd6ab9a25d284d8abbc95b8c831f</param> </service> </servicedata> (No newline at EOF) ++++++ crmsh-4.4.0+20220117.3debc274.tar.bz2 -> crmsh-4.4.0+20220125.d0150a88.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.4.0+20220117.3debc274/crmsh/constants.py new/crmsh-4.4.0+20220125.d0150a88/crmsh/constants.py --- old/crmsh-4.4.0+20220117.3debc274/crmsh/constants.py 2022-01-17 02:50:15.000000000 +0100 +++ new/crmsh-4.4.0+20220125.d0150a88/crmsh/constants.py 2022-01-25 08:34:18.000000000 +0100 @@ -504,7 +504,6 @@ CIB_QUERY = "cibadmin -Q" -CIB_REPLACE = "cibadmin -R -X '{xmlstr}'" CIB_UPGRADE = "crm configure upgrade force" CIB_RAW_FILE = "/var/lib/pacemaker/cib/cib.xml" XML_NODE_PATH = "/cib/configuration/nodes/node" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.4.0+20220117.3debc274/crmsh/report/utillib.py new/crmsh-4.4.0+20220125.d0150a88/crmsh/report/utillib.py --- old/crmsh-4.4.0+20220117.3debc274/crmsh/report/utillib.py 2022-01-17 02:50:15.000000000 +0100 +++ new/crmsh-4.4.0+20220125.d0150a88/crmsh/report/utillib.py 2022-01-25 08:34:18.000000000 +0100 @@ -1154,7 +1154,21 @@ def pkg_ver_deb(packages): - pass + res = "" + for pack in packages.split(): + code, out = get_command_info("dpkg-query -s %s" % pack) + if code != 0: + continue + distro = "Unknown" + for line in out.split('\n'): + if re.match("^Package\s*:", line): + name = line.split(':')[1].lstrip() + elif re.match("^Version\s*:", line): + version = line.split(':')[1].lstrip() + elif re.match("^Architecture\s*:", line): + arch = line.split(':')[1].lstrip() + res += "%s %s - %s\n" % (name, version, arch) + return res def pkg_ver_pkg_info(packages): @@ -1454,7 +1468,14 @@ def verify_deb(packages): - pass + res = "" + for pack in packages.split(): + cmd = r"dpkg --verify %s | grep -v 'not installed'" % pack + code, out = crmutils.get_stdout(cmd) + if code != 0 and out: + res = "For package %s:\n" % pack + res += out + "\n" + return res def verify_packages(packages): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.4.0+20220117.3debc274/crmsh/ui_node.py new/crmsh-4.4.0+20220125.d0150a88/crmsh/ui_node.py --- old/crmsh-4.4.0+20220117.3debc274/crmsh/ui_node.py 2022-01-17 02:50:15.000000000 +0100 +++ new/crmsh-4.4.0+20220125.d0150a88/crmsh/ui_node.py 2022-01-25 08:34:18.000000000 +0100 @@ -337,8 +337,10 @@ res_item = xmlutil.get_set_nodes(interface_item, "instance_attributes", create=True) xmlutil.set_attr(res_item[0], "standby", "on") - cmd = constants.CIB_REPLACE.format(xmlstr=xmlutil.xml_tostring(cib)) - utils.get_stdout_or_raise_error(cmd) + orig_cib = xmlutil.cibdump2elem() + rc = utils.diff_and_patch(xmlutil.xml_tostring(orig_cib), xmlutil.xml_tostring(cib)) + if not rc: + return False for node in node_list: logger.info("standby node %s", node) @@ -362,8 +364,10 @@ if item and item[0].get("value") != "off": item[0].set("value", "off") - cmd = constants.CIB_REPLACE.format(xmlstr=xmlutil.xml_tostring(cib)) - utils.get_stdout_or_raise_error(cmd) + orig_cib = xmlutil.cibdump2elem() + rc = utils.diff_and_patch(xmlutil.xml_tostring(orig_cib), xmlutil.xml_tostring(cib)) + if not rc: + return False for node in node_list: logger.info("online node %s", node) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.4.0+20220117.3debc274/crmsh/utils.py new/crmsh-4.4.0+20220125.d0150a88/crmsh/utils.py --- old/crmsh-4.4.0+20220117.3debc274/crmsh/utils.py 2022-01-17 02:50:15.000000000 +0100 +++ new/crmsh-4.4.0+20220125.d0150a88/crmsh/utils.py 2022-01-25 08:34:18.000000000 +0100 @@ -3067,4 +3067,25 @@ return upgrade_dict[value] return value + + +def diff_and_patch(orig_cib_str, current_cib_str): + """ + Use crm_diff to generate patch, then apply + """ + # In cibconfig.py, _patch_cib method doesn't include status section + # So here should make a function to handle common cases + cmd = "crm_diff -u -O '{}' -N '{}'".format(orig_cib_str, current_cib_str) + rc, cib_diff, err = get_stdout_stderr(cmd) + if rc == 0: # no difference + return True + if err: + logger.error("Failed to run crm_diff: %s", err) + return False + logger.debug("Diff: %s", cib_diff) + rc = pipe_string("cibadmin -p -P --force", cib_diff) + if rc != 0: + logger.error("Failed to patch") + return False + return True # vim:ts=4:sw=4:et: