Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package crmsh for openSUSE:Factory checked in at 2023-06-16 16:55:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crmsh (Old) and /work/SRC/openSUSE:Factory/.crmsh.new.15902 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh" Fri Jun 16 16:55:45 2023 rev:298 rq:1093455 version:4.5.0+20230616.cf763cd1 Changes: -------- --- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2023-05-25 23:52:37.847644121 +0200 +++ /work/SRC/openSUSE:Factory/.crmsh.new.15902/crmsh.changes 2023-06-16 16:56:52.598426841 +0200 @@ -1,0 +2,17 @@ +Fri Jun 16 08:49:12 UTC 2023 - xli...@suse.com + +- Update to version 4.5.0+20230616.cf763cd1: + * Dev: unittest: Adjust unit test for previous changes + * Dev: behave: Add functional test for previous change + * Dev: remove unused codes + * Dev: ui_cluster: Use 'CustomAppendAction' instead of 'append' argparse action + +------------------------------------------------------------------- +Thu Jun 01 02:12:23 UTC 2023 - xli...@suse.com + +- Update to version 4.5.0+20230531.b167a2d7: + * Dev: bootstrap: Configure ssh key when fetch geo config + * Dev: cmd_status: Use --output-as option instead of deprecated --as-html and --as-xml options + * Dev: cmd_status: Append 'with quorum' and 'WITHOUT quorum' to display keyword list + +------------------------------------------------------------------- Old: ---- crmsh-4.5.0+20230517.b2cb988b.tar.bz2 New: ---- crmsh-4.5.0+20230616.cf763cd1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crmsh.spec ++++++ --- /var/tmp/diff_new_pack.unp4gR/_old 2023-06-16 16:56:53.286430899 +0200 +++ /var/tmp/diff_new_pack.unp4gR/_new 2023-06-16 16:56:53.294430947 +0200 @@ -1,7 +1,7 @@ # # spec file for package crmsh # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -36,9 +36,9 @@ Summary: High Availability cluster command-line interface License: GPL-2.0-or-later Group: %{pkg_group} -Version: 4.5.0+20230517.b2cb988b +Version: 4.5.0+20230616.cf763cd1 Release: 0 -URL: http://crmsh.github.io +Url: http://crmsh.github.io Source0: %{name}-%{version}.tar.bz2 Source1: %{name}.tmpfiles.d.conf @@ -54,8 +54,7 @@ Requires: python3-lxml Requires: python3-python-dateutil BuildRequires: python3-lxml -BuildRequires: python3-pip -BuildRequires: python3-wheel +BuildRequires: python3-setuptools %if 0%{?suse_version} # only require csync2 on SUSE since bootstrap @@ -82,14 +81,14 @@ BuildRequires: pkgconfig BuildRequires: python3 -%if 0%{?suse_version} +%if 0%{?suse_version} > 1210 # xsltproc is necessary for manpage generation; this is split out into # libxslt-tools as of openSUSE 12.2. Possibly strictly should be # required by asciidoc BuildRequires: libxslt-tools %endif -%if 0%{?suse_version} || 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?rhel} || 0%{?fedora} +%if 0%{?suse_version} > 1110 || 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?rhel} || 0%{?fedora} BuildArch: noarch %endif @@ -109,7 +108,9 @@ Requires(post): python3-python-dateutil Requires(post): python3-tox Requires(post): pacemaker +%if 0%{?suse_version} > 1110 BuildArch: noarch +%endif %if 0%{?suse_version} Requires(post): libglue-devel %else @@ -143,14 +144,8 @@ # replace the shebang in all the scripts # with ${_bindir}/python3 -find . -type f -exec sed -i \ - -e "s|#!/usr/bin/python3?|#!%{__python3}|" \ - -e "s|#!/usr/bin/env python3?|#!%{__python3}|" \ - {} \; -sed -i -e '1{\@^#!%{_bindir}/python3@d}' crmsh/report/core.py - -# this is wrong FIXME -sed -i -e '/data_files/d' setup.py +find . -type f -exec perl -pi -e 'BEGIN{undef $/};s[^#\!/usr/bin/python[3]?][#\!%{_bindir}/python3]' {} \; +find . -type f -exec perl -pi -e 'BEGIN{undef $/};s[^#\!/usr/bin/env python[3]?][#\!%{_bindir}/python3]' {} \; %build ./autogen.sh @@ -161,16 +156,7 @@ --with-version=%{version} \ --docdir=%{crmsh_docdir} -%python3_pyproject_wheel - -# Generate manpages -for manpg in doc/crm{,sh_crm_report}.8.adoc ; do - a2x -f manpage $manpg -done - -for docad in doc/crm{,sh_crm_report}.8.adoc ; do - asciidoc --unsafe --backend=xhtml11 $docad -done +make %{_smp_mflags} VERSION="%{version}" sysconfdir=%{_sysconfdir} localstatedir=%{_var} %if %{with regression_tests} tox @@ -181,39 +167,14 @@ %endif %install -# make DESTDIR=%%{buildroot} docdir=%%{crmsh_docdir} install -%python3_pyproject_install - -# additional directories -install -d -m0770 %{buildroot}%{_localstatedir}/cache/crm -install -d -m0770 %{buildroot}%{_localstatedir}/log/crmsh -install -d -m0755 %{buildroot}%{_tmpfilesdir} - -# install configuration -install -Dm0644 -t %{buildroot}%{_sysconfdir}/crm etc/{crm.conf,profiles.yml} -install -m0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf - -# install manpages -install -Dpm0644 -t %{buildroot}%{_mandir}/man8 doc/*.8 -install -Dpm0644 -t %{buildroot}%{_datadir}/crmsh/ doc/crm.8.adoc - -# install data -for d in $(cat data-manifest); do - if [ -x $d ] ; then mode="0755" ; else mode="0644" ; fi - install -D -m $mode $d %{buildroot}%{_datadir}/crmsh/$d -done -mv %{buildroot}%{_datadir}/crmsh/test{,s} -install -p test/testcases/xmlonly.sh \ - %{buildroot}%{_datadir}/crmsh/tests/testcases/configbasic-xml.filter - -install -Dm0644 contrib/bash_completion.sh \ - %{buildroot}%{_datadir}/bash-completion/completions/crm - +make DESTDIR=%{buildroot} docdir=%{crmsh_docdir} install +install -Dm0644 contrib/bash_completion.sh %{buildroot}%{_datadir}/bash-completion/completions/crm if [ -f %{buildroot}%{_bindir}/crm ]; then install -Dm0755 %{buildroot}%{_bindir}/crm %{buildroot}%{_sbindir}/crm rm %{buildroot}%{_bindir}/crm fi - +install -d -m 0755 %{buildroot}%{_tmpfilesdir} +install -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf %if 0%{?suse_version} %fdupes %{buildroot} %endif @@ -257,13 +218,20 @@ %{_tmpfilesdir}/%{name}.conf -%doc doc/*.html -%doc COPYING AUTHORS ChangeLog README.md -%doc contrib/* -%{_mandir}/man8/* +%doc %{_mandir}/man8/* +%{crmsh_docdir}/COPYING +%{crmsh_docdir}/AUTHORS +%{crmsh_docdir}/crm.8.html +%{crmsh_docdir}/crmsh_crm_report.8.html +%{crmsh_docdir}/profiles.html +%{crmsh_docdir}/ChangeLog +%{crmsh_docdir}/README.md +%{crmsh_docdir}/contrib/* %config %{_sysconfdir}/crm +%dir %{crmsh_docdir} +%dir %{crmsh_docdir}/contrib %dir %attr (770, %{uname}, %{gname}) %{_var}/cache/crm %dir %attr (770, %{uname}, %{gname}) %{_var}/log/crmsh %{_datadir}/bash-completion/completions/crm ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.unp4gR/_old 2023-06-16 16:56:53.338431206 +0200 +++ /var/tmp/diff_new_pack.unp4gR/_new 2023-06-16 16:56:53.338431206 +0200 @@ -9,7 +9,7 @@ </service> <service name="tar_scm"> <param name="url">https://github.com/ClusterLabs/crmsh.git</param> - <param name="changesrevision">03c1da25a4e2c9a80032e824dad72a2ffbad614a</param> + <param name="changesrevision">e69c76eeac27ae8ba34a75e2baed215e26ceb224</param> </service> </servicedata> (No newline at EOF) ++++++ crmsh-4.5.0+20230517.b2cb988b.tar.bz2 -> crmsh-4.5.0+20230616.cf763cd1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/crmsh/bootstrap.py new/crmsh-4.5.0+20230616.cf763cd1/crmsh/bootstrap.py --- old/crmsh-4.5.0+20230517.b2cb988b/crmsh/bootstrap.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/crmsh/bootstrap.py 2023-06-16 10:11:36.000000000 +0200 @@ -226,7 +226,6 @@ self.node_list = [self.cluster_node] return - self.node_list = utils.parse_append_action_argument(self.node_list) if any('@' in user_node for user_node in self.node_list): self.initialize_user(users_of_specified_hosts='specified') elif len(self.node_list) == 0: @@ -256,8 +255,6 @@ if self.node_list and self.stage: utils.fatal("Can't use -N/--nodes option and stage({}) together".format(self.stage)) - if utils.has_dup_value(self.node_list): - utils.fatal("Duplicated input for -N/--nodes option") for node in self.node_list: utils.ping_node(node) @@ -285,8 +282,6 @@ if self.nic_list: if len(self.nic_list) > 2: utils.fatal("Maximum number of interface is 2") - if utils.has_dup_value(self.nic_list): - utils.fatal("Duplicated input for -i/--interface option") if self.no_overwrite_sshkey: logger.warning("--no-overwrite-sshkey option is deprecated since crmsh does not overwrite ssh keys by default anymore and will be removed in future versions") if self.type == "join" and self.watchdog: @@ -2747,6 +2742,7 @@ except utils.UserOfHost.UserNotFoundError: local_user = userdir.getuser() remote_user = local_user + configure_ssh_key(local_user) logger.info("Retrieving configuration - This may prompt for %s@%s:", remote_user, node) utils.ssh_copy_id(local_user, remote_user, node) cmd = "tar -c -C '{}' .".format(BOOTH_DIR) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/crmsh/cmd_status.py new/crmsh-4.5.0+20230616.cf763cd1/crmsh/cmd_status.py --- old/crmsh-4.5.0+20230517.b2cb988b/crmsh/cmd_status.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/crmsh/cmd_status.py 2023-06-16 10:11:36.000000000 +0200 @@ -16,8 +16,10 @@ 'Not installed', r'UNKNOWN\!', 'Stopped', - 'standby'] -_OKS = ['Masters', 'Slaves', 'Started', 'Master', 'Slave', 'Online', 'online', 'ok', 'master'] + 'standby', + 'WITHOUT quorum'] +_OKS = ['Masters', 'Slaves', 'Started', 'Master', 'Slave', 'Online', 'online', 'ok', 'master', + 'with quorum'] _ERRORS = ['not running', 'unknown error', 'invalid parameter', @@ -101,8 +103,8 @@ "failcounts": "-f", "verbose": "-V", "quiet": "-Q", - "html": "--as-html", - "xml": "--as-xml", + "html": "--output-as html", + "xml": "--output-as xml", "simple": "-s", "tickets": "-c", "noheaders": "-D", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/crmsh/ocfs2.py new/crmsh-4.5.0+20230616.cf763cd1/crmsh/ocfs2.py --- old/crmsh-4.5.0+20230517.b2cb988b/crmsh/ocfs2.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/crmsh/ocfs2.py 2023-06-16 10:11:36.000000000 +0200 @@ -40,7 +40,7 @@ """ Init function """ - self.ocfs2_devices = utils.parse_append_action_argument(context.ocfs2_devices) + self.ocfs2_devices = context.ocfs2_devices self.use_cluster_lvm2 = context.use_cluster_lvm2 self.mount_point = context.mount_point self.use_stage = context.stage == "ocfs2" @@ -72,8 +72,6 @@ raise ValueError("Without Cluster LVM2 (-C option), -o option only support one device") if self.use_cluster_lvm2 and not self.ocfs2_devices: raise ValueError("-C option only valid together with -o option") - if len(self.ocfs2_devices) != len(set(self.ocfs2_devices)): - raise ValueError("Duplicated inputs for -o option") if self.mount_point and utils.has_mount_point_used(self.mount_point): raise ValueError("Mount point {} already mounted".format(self.mount_point)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/crmsh/sbd.py new/crmsh-4.5.0+20230616.cf763cd1/crmsh/sbd.py --- old/crmsh-4.5.0+20230517.b2cb988b/crmsh/sbd.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/crmsh/sbd.py 2023-06-16 10:11:36.000000000 +0200 @@ -385,7 +385,7 @@ """ dev_list = [] if self.sbd_devices_input: - dev_list = utils.parse_append_action_argument(self.sbd_devices_input) + dev_list = self.sbd_devices_input self._verify_sbd_device(dev_list) for dev in dev_list: self.no_overwrite_map[dev] = self._no_overwrite_check(dev) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/crmsh/ui_cluster.py new/crmsh-4.5.0+20230616.cf763cd1/crmsh/ui_cluster.py --- old/crmsh-4.5.0+20230517.b2cb988b/crmsh/ui_cluster.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/crmsh/ui_cluster.py 2023-06-16 10:11:36.000000000 +0200 @@ -4,7 +4,7 @@ import sys import re -from argparse import ArgumentParser, RawDescriptionHelpFormatter +from argparse import ArgumentParser, RawDescriptionHelpFormatter, Action import crmsh.parallax from . import command @@ -68,6 +68,20 @@ return cluster_name +class CustomAppendAction(Action): + """ + Custom class for argparse append action: + - Flatten the value like '-s "/dev/sda1;/dev/sda2"' + - Detect duplicated input + """ + def __call__(self, parser, namespace, value, option_string=None): + items = getattr(namespace, self.dest, []) + items.extend([x for x in re.split("[; ]", value) if x]) + if utils.has_dup_value(items): + parser.error(f"Duplicated input for '{'/'.join(self.option_strings)}' option") + setattr(namespace, self.dest, items) + + class Cluster(command.UI): ''' Whole cluster management. @@ -292,7 +306,7 @@ help='Answer "yes" to all prompts (use with caution, this is destructive, especially those storage related configurations and stages.)') parser.add_argument("-n", "--name", metavar="NAME", dest="cluster_name", default="hacluster", help='Set the name of the configured cluster.') - parser.add_argument("-N", "--node", metavar="NODENAME", dest="node_list", action="append", default=[], + parser.add_argument("-N", "--node", metavar="NODENAME", dest="node_list", action=CustomAppendAction, default=[], help='The member node of the cluster. Note: the current node is always get initialized during bootstrap in the beginning.') parser.add_argument("-S", "--enable-sbd", dest="diskless_sbd", action="store_true", help="Enable SBD even if no SBD device is configured (diskless mode)") @@ -304,7 +318,7 @@ help='Avoid "/root/.ssh/id_rsa" overwrite if "-y" option is used (False by default; Deprecated)') network_group = parser.add_argument_group("Network configuration", "Options for configuring the network and messaging layer.") - network_group.add_argument("-i", "--interface", dest="nic_list", metavar="IF", action="append", choices=utils.interface_choice(), default=[], + network_group.add_argument("-i", "--interface", dest="nic_list", metavar="IF", action=CustomAppendAction, choices=utils.interface_choice(), default=[], help="Bind to IP address on interface IF. Use -i second time for second interface") network_group.add_argument("-u", "--unicast", action="store_true", dest="unicast", help="Configure corosync to communicate over unicast(udpu). This is the default transport type") @@ -334,9 +348,9 @@ help="MODE of operation of heuristics (on/sync/off, default:sync)") storage_group = parser.add_argument_group("Storage configuration", "Options for configuring shared storage.") - storage_group.add_argument("-s", "--sbd-device", dest="sbd_devices", metavar="DEVICE", action="append", default=[], + storage_group.add_argument("-s", "--sbd-device", dest="sbd_devices", metavar="DEVICE", action=CustomAppendAction, default=[], help="Block device to use for SBD fencing, use \";\" as separator or -s multiple times for multi path (up to 3 devices)") - storage_group.add_argument("-o", "--ocfs2-device", dest="ocfs2_devices", metavar="DEVICE", action="append", default=[], + storage_group.add_argument("-o", "--ocfs2-device", dest="ocfs2_devices", metavar="DEVICE", action=CustomAppendAction, default=[], help="Block device to use for OCFS2; When using Cluster LVM2 to manage the shared storage, user can specify one or multiple raw disks, use \";\" as separator or -o multiple times for multi path (must specify -C option) NOTE: this is a Technical Preview") storage_group.add_argument("-C", "--cluster-lvm2", action="store_true", dest="use_cluster_lvm2", help="Use Cluster LVM2 (only valid together with -o option) NOTE: this is a Technical Preview") @@ -418,7 +432,7 @@ "-c", "--cluster-node", dest="cluster_node", metavar="[USER@]HOST", help="User and host to login to an existing cluster node. The host can be specified with either a hostname or an IP.", ) - network_group.add_argument("-i", "--interface", dest="nic_list", metavar="IF", action="append", choices=utils.interface_choice(), default=[], + network_group.add_argument("-i", "--interface", dest="nic_list", metavar="IF", action=CustomAppendAction, choices=utils.interface_choice(), default=[], help="Bind to IP address on interface IF. Use -i second time for second interface") options, args = parse_options(parser, args) if options is None or args is None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/crmsh/utils.py new/crmsh-4.5.0+20230616.cf763cd1/crmsh/utils.py --- old/crmsh-4.5.0+20230517.b2cb988b/crmsh/utils.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/crmsh/utils.py 2023-06-16 10:11:36.000000000 +0200 @@ -3071,20 +3071,6 @@ return has_stonith_device or using_diskless_sbd -def parse_append_action_argument(input_list, parse_re="[; ]"): - """ - Parse append action argument into a list, like: - -s "/dev/sdb1;/dev/sdb2" - -s /dev/sdb1 -s /dev/sbd2 - - Both return ["/dev/sdb1", "/dev/sdb2"] - """ - result_list = [] - for item in input_list: - result_list += re_split_string(parse_re, item) - return result_list - - def has_disk_mounted(dev): """ Check if device already mounted diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/test/features/bootstrap_options.feature new/crmsh-4.5.0+20230616.cf763cd1/test/features/bootstrap_options.feature --- old/crmsh-4.5.0+20230517.b2cb988b/test/features/bootstrap_options.feature 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/test/features/bootstrap_options.feature 2023-06-16 10:11:36.000000000 +0200 @@ -28,6 +28,12 @@ Then Output is the same with expected "crm cluster geo-join" help output When Run "crm cluster geo_init_arbitrator -h" on "hanode1" Then Output is the same with expected "crm cluster geo-init-arbitrator" help output + When Try "crm cluster init -i eth1 -i eth1 -y" + Then Except multiple lines + """ + usage: init [options] [STAGE] + crm: error: Duplicated input for '-i/--interface' option + """ @clean Scenario: Init whole cluster service on node "hanode1" using "--node" option diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/test/features/bootstrap_sbd_normal.feature new/crmsh-4.5.0+20230616.cf763cd1/test/features/bootstrap_sbd_normal.feature --- old/crmsh-4.5.0+20230517.b2cb988b/test/features/bootstrap_sbd_normal.feature 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/test/features/bootstrap_sbd_normal.feature 2023-06-16 10:11:36.000000000 +0200 @@ -9,6 +9,12 @@ Then Except "ERROR: cluster.init: Maximum number of SBD device is 3" When Try "crm cluster init -s "/dev/sda1;/dev/sdaxxxx" -y" Then Except "ERROR: cluster.init: /dev/sdaxxxx doesn't look like a block device" + When Try "crm cluster init -s "/dev/sda1;/dev/sda1" -y" + Then Except multiple lines + """ + usage: init [options] [STAGE] + crm: error: Duplicated input for '-s/--sbd-device' option + """ @clean Scenario: Setup sbd with init and join process(bsc#1170999) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_bootstrap.py new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_bootstrap.py --- old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_bootstrap.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_bootstrap.py 2023-06-16 10:11:36.000000000 +0200 @@ -132,17 +132,6 @@ ctx.validate_option() mock_error.assert_called_once_with("Maximum number of interface is 2") - @mock.patch('crmsh.utils.has_dup_value') - @mock.patch('crmsh.utils.fatal') - def test_validate_option_error_nic_dup(self, mock_error, mock_dup): - mock_dup.return_value = True - mock_error.side_effect = SystemExit - options = mock.Mock(nic_list=["eth2", "eth2"]) - ctx = self.ctx_inst.set_context(options) - with self.assertRaises(SystemExit): - ctx.validate_option() - mock_error.assert_called_once_with("Duplicated input for -i/--interface option") - @mock.patch('crmsh.utils.fatal') @mock.patch('socket.gethostbyname') @mock.patch('crmsh.utils.InterfacesInfo.ip_in_local') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_ocfs2.py new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_ocfs2.py --- old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_ocfs2.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_ocfs2.py 2023-06-16 10:11:36.000000000 +0200 @@ -87,11 +87,6 @@ self.ocfs2_inst4._verify_options() self.assertEqual("-C option only valid together with -o option", str(err.exception)) - def test_verify_options_dup(self): - with self.assertRaises(ValueError) as err: - self.ocfs2_inst5._verify_options() - self.assertEqual("Duplicated inputs for -o option", str(err.exception)) - @mock.patch('crmsh.utils.has_mount_point_used') def test_verify_options_mount(self, mock_mount): mock_mount.return_value = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_sbd.py new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_sbd.py --- old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_sbd.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_sbd.py 2023-06-16 10:11:36.000000000 +0200 @@ -457,12 +457,9 @@ mock_compare.assert_called_once_with("/dev/sdb1", []) @mock.patch('crmsh.sbd.SBDManager._verify_sbd_device') - @mock.patch('crmsh.utils.parse_append_action_argument') - def test_get_sbd_device_from_option(self, mock_parse, mock_verify): - mock_parse.return_value = ["/dev/sdb1", "/dev/sdc1"] + def test_get_sbd_device_from_option(self, mock_verify): self.sbd_inst._get_sbd_device() - mock_parse.assert_called_once_with(mock_parse.return_value) - mock_verify.assert_called_once_with(mock_parse.return_value) + mock_verify.assert_called_once_with(['/dev/sdb1', '/dev/sdc1']) @mock.patch('crmsh.sbd.SBDManager._get_sbd_device_interactive') def test_get_sbd_device_from_interactive(self, mock_interactive): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_utils.py new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_utils.py --- old/crmsh-4.5.0+20230517.b2cb988b/test/unittests/test_utils.py 2023-05-17 08:24:19.000000000 +0200 +++ new/crmsh-4.5.0+20230616.cf763cd1/test/unittests/test_utils.py 2023-06-16 10:11:36.000000000 +0200 @@ -1495,13 +1495,6 @@ mock_run.assert_called_once_with("mount") -def test_parse_append_action_argument(): - res = utils.parse_append_action_argument(["/dev/sda1", "/dev/sda2 "]) - assert res == ["/dev/sda1", "/dev/sda2"] - res = utils.parse_append_action_argument(["/dev/sda1 ; /dev/sda2"]) - assert res == ["/dev/sda1", "/dev/sda2"] - - @mock.patch('crmsh.sbd.SBDManager.is_using_diskless_sbd') @mock.patch('crmsh.utils.get_stdout_or_raise_error') def test_has_stonith_running(mock_run, mock_diskless):