Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package crmsh for openSUSE:Factory checked in at 2021-11-20 02:39:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crmsh (Old) and /work/SRC/openSUSE:Factory/.crmsh.new.1895 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh" Sat Nov 20 02:39:23 2021 rev:226 rq:932543 version:4.3.1+20211119.caa0b2aa Changes: -------- --- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2021-11-17 01:15:29.998191379 +0100 +++ /work/SRC/openSUSE:Factory/.crmsh.new.1895/crmsh.changes 2021-11-20 02:40:36.356489956 +0100 @@ -1,0 +2,7 @@ +Fri Nov 19 13:51:48 UTC 2021 - [email protected] + +- Update to version 4.3.1+20211119.caa0b2aa: + * Dev: behave: Add functional test for previous changes + * Fix: ui_resource: Parse node and lifetime correctly (bsc#1192618) + +------------------------------------------------------------------- Old: ---- crmsh-4.3.1+20211116.ef2bce26.tar.bz2 New: ---- crmsh-4.3.1+20211119.caa0b2aa.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crmsh.spec ++++++ --- /var/tmp/diff_new_pack.Jrx0Rv/_old 2021-11-20 02:40:37.064487620 +0100 +++ /var/tmp/diff_new_pack.Jrx0Rv/_new 2021-11-20 02:40:37.064487620 +0100 @@ -36,7 +36,7 @@ Summary: High Availability cluster command-line interface License: GPL-2.0-or-later Group: %{pkg_group} -Version: 4.3.1+20211116.ef2bce26 +Version: 4.3.1+20211119.caa0b2aa Release: 0 URL: http://crmsh.github.io Source0: %{name}-%{version}.tar.bz2 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.Jrx0Rv/_old 2021-11-20 02:40:37.116487449 +0100 +++ /var/tmp/diff_new_pack.Jrx0Rv/_new 2021-11-20 02:40:37.120487435 +0100 @@ -9,6 +9,6 @@ </service> <service name="tar_scm"> <param name="url">https://github.com/ClusterLabs/crmsh.git</param> - <param name="changesrevision">ef2bce265b113aef78f0146762b9bb3286780b6d</param> + <param name="changesrevision">bcbb5398f90f86e8d9ca26afd6417ff35c389748</param> </service> </servicedata> \ No newline at end of file ++++++ crmsh-4.3.1+20211116.ef2bce26.tar.bz2 -> crmsh-4.3.1+20211119.caa0b2aa.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211116.ef2bce26/crmsh/ui_resource.py new/crmsh-4.3.1+20211119.caa0b2aa/crmsh/ui_resource.py --- old/crmsh-4.3.1+20211116.ef2bce26/crmsh/ui_resource.py 2021-11-16 15:44:08.000000000 +0100 +++ new/crmsh-4.3.1+20211119.caa0b2aa/crmsh/ui_resource.py 2021-11-19 14:37:17.000000000 +0100 @@ -389,16 +389,24 @@ action = context.get_command_name() action_cap = action.capitalize() action_cmd = cmd_map_dict[action] + usage = "usage: {} <rsc> [<node>] [<lifetime>] [force]".format(action) node = None lifetime = None + argl = list(args) force = "force" in utils.fetch_opts(argl, ["force"]) or config.core.force - if len(argl) > 0: + if len(argl) >= 3: + context.fatal_error(usage) + if len(argl) == 2: # must be <node> <lifetime> node = argl[0] if not xmlutil.is_our_node(node): context.fatal_error("Not our node: " + node) - if len(argl) == 2: - lifetime = utils.fetch_lifetime_opt(argl[1]) + lifetime = utils.fetch_lifetime_opt(argl) + elif len(argl) == 1: # could be <node> or <lifetime> + if xmlutil.is_our_node(argl[0]): + node = argl[0] + else: + lifetime = utils.fetch_lifetime_opt(argl) if action == "move" and not node and not force: context.fatal_error("No target node: {} requires either a target node or 'force'".format(action_cap)) @@ -422,8 +430,7 @@ @command.alias('migrate') @command.skill_level('administrator') @command.wait - @command.completers_repeating(compl.resources, compl.nodes, - compl.choice(['reboot', 'forever', 'force'])) + @command.completers_repeating(compl.resources, compl.nodes) def do_move(self, context, rsc, *args): """usage: move <rsc> [<node>] [<lifetime>] [force]""" return self.move_or_ban(context, rsc, *args) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211116.ef2bce26/test/features/resource_set.feature new/crmsh-4.3.1+20211119.caa0b2aa/test/features/resource_set.feature --- old/crmsh-4.3.1+20211116.ef2bce26/test/features/resource_set.feature 2021-11-16 15:44:08.000000000 +0100 +++ new/crmsh-4.3.1+20211119.caa0b2aa/test/features/resource_set.feature 2021-11-19 14:37:17.000000000 +0100 @@ -3,10 +3,12 @@ Tag @clean means need to stop cluster service if the service is available - Background: Setup one node cluster and configure some resources + Background: Setup cluster and configure some resources Given Cluster service is "stopped" on "hanode1" When Run "crm cluster init -y" on "hanode1" Then Cluster service is "started" on "hanode1" + When Run "crm cluster join -c hanode1 -y" on "hanode2" + Then Cluster service is "started" on "hanode2" When Run "crm configure primitive d Dummy op monitor interval=3s" on "hanode1" Then Resource "d" type "Dummy" is "Started" When Run "crm configure primitive vip IPaddr2 params ip=10.10.10.123 op monitor interval=3s" on "hanode1" @@ -45,3 +47,51 @@ When Run "crm configure set op-options.timeout 101" on "hanode1" And Run "crm configure show op-options" on "hanode1" Then Expected "timeout=101" in stdout + + @clean + Scenario: Parse node and lifetime correctly (bsc#1192618) + Given Resource "d" is started on "hanode1" + # move <res> <node> + When Run "crm resource move d hanode2" on "hanode1" + When Run "sleep 2" on "hanode1" + Then Resource "d" is started on "hanode2" + When Run "crm resource clear d" on "hanode1" + + # move <res> <node> force + When Run "crm resource move d hanode1" on "hanode1" + When Run "sleep 2" on "hanode1" + Then Resource "d" is started on "hanode1" + When Run "crm resource clear d" on "hanode1" + + # move <res> force + When Run "crm resource move d force" on "hanode1" + When Run "sleep 2" on "hanode1" + Then Resource "d" is started on "hanode2" + When Run "crm resource clear d" on "hanode1" + + # move <res> <lifetime> force + When Run "crm resource move d PT5M force" on "hanode1" + When Run "sleep 2" on "hanode1" + Then Resource "d" is started on "hanode1" + When Run "crm resource clear d" on "hanode1" + + # move <res> <node> <lifetime> + When Run "crm resource move d hanode2 PT5M" on "hanode1" + When Run "sleep 2" on "hanode1" + Then Resource "d" is started on "hanode2" + When Run "crm resource clear d" on "hanode1" + + # move <res> <node> <lifetime> force + When Run "crm resource move d hanode1 PT5M force" on "hanode1" + When Run "sleep 2" on "hanode1" + Then Resource "d" is started on "hanode1" + When Run "crm resource clear d" on "hanode1" + + When Try "crm resource move d hanode2 PT5M force xxx" + Then Except "ERROR: resource.move: usage: move <rsc> [<node>] [<lifetime>] [force]" + When Try "crm resource move d hanode2 PT5M forcd" + Then Except "ERROR: resource.move: usage: move <rsc> [<node>] [<lifetime>] [force]" + When Try "crm resource move d xxxx PT5M force" + Then Except "ERROR: resource.move: Not our node: xxxx" + When Try "crm resource move d" + Then Except "ERROR: resource.move: No target node: Move requires either a target node or 'force'" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.3.1+20211116.ef2bce26/test/features/steps/step_implementation.py new/crmsh-4.3.1+20211119.caa0b2aa/test/features/steps/step_implementation.py --- old/crmsh-4.3.1+20211116.ef2bce26/test/features/steps/step_implementation.py 2021-11-16 15:44:08.000000000 +0100 +++ new/crmsh-4.3.1+20211119.caa0b2aa/test/features/steps/step_implementation.py 2021-11-19 14:37:17.000000000 +0100 @@ -306,3 +306,15 @@ cmd = "crm cluster diff {}".format(f) rc, out = run_command(context, cmd) assert out == "" + + +@given('Resource "{res_id}" is started on "{node}"') +def step_impl(context, res_id, node): + rc, out, err = crmutils.get_stdout_stderr("crm_mon -1") + assert re.search(r'\*\s+{}\s+.*Started\s+{}'.format(res_id, node), out) is not None + + +@then('Resource "{res_id}" is started on "{node}"') +def step_impl(context, res_id, node): + rc, out, err = crmutils.get_stdout_stderr("crm_mon -1") + assert re.search(r'\*\s+{}\s+.*Started\s+{}'.format(res_id, node), out) is not None
