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-12-10 21:52:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/crmsh (Old)
 and      /work/SRC/openSUSE:Factory/.crmsh.new.2520 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "crmsh"

Fri Dec 10 21:52:32 2021 rev:230 rq:938974 version:4.3.1+20211210.a149de51

Changes:
--------
--- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes      2021-12-07 
23:59:55.655703447 +0100
+++ /work/SRC/openSUSE:Factory/.crmsh.new.2520/crmsh.changes    2021-12-10 
21:52:55.050906693 +0100
@@ -1,0 +2,11 @@
+Fri Dec 10 02:48:29 UTC 2021 - xli...@suse.com
+
+- Update to version 4.3.1+20211210.a149de51:
+  * Dev: unittest: adjust unit test based on previous changes
+  * Dev: behave: adjust functional test based on previous changes
+  * Dev: ui_cluster: Exit stop process when there is no DC
+  * Dev: ui_cluster: check dlm controld ra is running when stop cluster
+  * Dev: log: In status_long function, add a blank line when exception
+  * Revert "Dev: ui_cluster: Make sure node is online when stop service"
+
+-------------------------------------------------------------------

Old:
----
  crmsh-4.3.1+20211206.e34e2fff.tar.bz2

New:
----
  crmsh-4.3.1+20211210.a149de51.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ crmsh.spec ++++++
--- /var/tmp/diff_new_pack.ANrzra/_old  2021-12-10 21:52:55.650906959 +0100
+++ /var/tmp/diff_new_pack.ANrzra/_new  2021-12-10 21:52:55.654906960 +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+20211206.e34e2fff
+Version:        4.3.1+20211210.a149de51
 Release:        0
 URL:            http://crmsh.github.io
 Source0:        %{name}-%{version}.tar.bz2

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ANrzra/_old  2021-12-10 21:52:55.694906978 +0100
+++ /var/tmp/diff_new_pack.ANrzra/_new  2021-12-10 21:52:55.694906978 +0100
@@ -9,6 +9,6 @@
 </service>
 <service name="tar_scm">
   <param name="url">https://github.com/ClusterLabs/crmsh.git</param>
-  <param 
name="changesrevision">e34e2fff81bd37313b199fb113044ebfdbdbf373</param>
+  <param 
name="changesrevision">9cdc6cb5447970fa20263d9edcc1234567a55303</param>
 </service>
 </servicedata>
\ No newline at end of file

++++++ crmsh-4.3.1+20211206.e34e2fff.tar.bz2 -> 
crmsh-4.3.1+20211210.a149de51.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.3.1+20211206.e34e2fff/crmsh/bootstrap.py 
new/crmsh-4.3.1+20211210.a149de51/crmsh/bootstrap.py
--- old/crmsh-4.3.1+20211206.e34e2fff/crmsh/bootstrap.py        2021-12-06 
15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/crmsh/bootstrap.py        2021-12-10 
03:35:17.000000000 +0100
@@ -33,7 +33,7 @@
 from . import tmpfiles
 from . import lock
 from . import userdir
-from .constants import SSH_OPTION, QDEVICE_HELP_INFO, CRM_MON_ONE_SHOT, 
STONITH_TIMEOUT_DEFAULT
+from .constants import SSH_OPTION, QDEVICE_HELP_INFO, STONITH_TIMEOUT_DEFAULT
 from . import ocfs2
 from . import qdevice
 from . import log
@@ -364,25 +364,14 @@
             sleep(1)
 
 
-def wait_for_cluster(message="Waiting for cluster", node_list=[]):
-    """
-    Wait for local node or specific node(s) online
-    """
-    # Sleep here since just after pacemaker.service started, crm_mon might not 
ready
-    sleep(2)
-    # Check if already online
-    if is_online(node_list):
-        return
-
-    with logger_utils.status_long(message):
+def wait_for_cluster():
+    with logger_utils.status_long("Waiting for cluster"):
         while True:
-            if is_online(node_list):
+            _rc, out, _err = utils.get_stdout_stderr("crm_mon -1")
+            if is_online(out):
                 break
             status_progress()
             sleep(2)
-    # Sleep here since when do_stop function calling wait_for_cluster,
-    # just after nodes online, if no sleep to wait, some nodes might hang with 
pending
-    sleep(2)
 
 
 def get_cluster_node_hostname():
@@ -390,7 +379,7 @@
     Get the hostname of the cluster node
     """
     peer_node = None
-    if _context and _context.cluster_node:
+    if _context.cluster_node:
         rc, out, err = utils.get_stdout_stderr("ssh {} {} crm_node 
--name".format(SSH_OPTION, _context.cluster_node))
         if rc != 0:
             utils.fatal(err)
@@ -398,18 +387,13 @@
     return peer_node
 
 
-def is_online(node_list=[]):
+def is_online(crm_mon_txt):
     """
-    Check whether local node is online, or specific node(s) online
+    Check whether local node is online
     Besides that, in join process, check whether init node is online
     """
-    _list = node_list if node_list else [utils.this_node()]
-    crm_mon_txt = utils.get_stdout_or_raise_error(CRM_MON_ONE_SHOT, 
remote=_list[0])
-    # Make sure all nodes online
-    # TODO how about the shutdown node?
-    for node in _list:
-        if not re.search(r'Online:\s+\[.*{}\s+.*'.format(node), crm_mon_txt):
-            return False
+    if not re.search("Online: .* {} ".format(utils.this_node()), crm_mon_txt):
+        return False
 
     # if peer_node is None, this is in the init process
     peer_node = get_cluster_node_hostname()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.3.1+20211206.e34e2fff/crmsh/constants.py 
new/crmsh-4.3.1+20211210.a149de51/crmsh/constants.py
--- old/crmsh-4.3.1+20211206.e34e2fff/crmsh/constants.py        2021-12-06 
15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/crmsh/constants.py        2021-12-10 
03:35:17.000000000 +0100
@@ -513,4 +513,5 @@
 CRM_MON_ONE_SHOT = "crm_mon -1"
 STONITH_TIMEOUT_DEFAULT = 60
 PCMK_DELAY_MAX = 30
+DLM_CONTROLD_RA = "ocf::pacemaker:controld"
 # vim:ts=4:sw=4:et:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.3.1+20211206.e34e2fff/crmsh/log.py 
new/crmsh-4.3.1+20211210.a149de51/crmsh/log.py
--- old/crmsh-4.3.1+20211206.e34e2fff/crmsh/log.py      2021-12-06 
15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/crmsh/log.py      2021-12-10 
03:35:17.000000000 +0100
@@ -297,6 +297,7 @@
         try:
             yield
         except:
+            print("")
             raise
         else:
             self.status_done()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.3.1+20211206.e34e2fff/crmsh/ui_cluster.py 
new/crmsh-4.3.1+20211210.a149de51/crmsh/ui_cluster.py
--- old/crmsh-4.3.1+20211206.e34e2fff/crmsh/ui_cluster.py       2021-12-06 
15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/crmsh/ui_cluster.py       2021-12-10 
03:35:17.000000000 +0100
@@ -186,18 +186,20 @@
         if not node_list:
             return
 
-        bootstrap.wait_for_cluster("Waiting for {} online".format(' 
'.join(node_list)), node_list)
+        if not utils.get_dc(timeout=5):
+            logger.error("No DC found currently, please wait if the cluster is 
still starting")
+            return False
 
-        # When dlm configured and quorum is lost, before stop cluster service, 
should set
+        # When dlm running and quorum is lost, before stop cluster service, 
should set
         # enable_quorum_fencing=0, enable_quorum_lockspace=0 for dlm config 
option
-        if utils.is_dlm_configured(node_list[0]) and not 
utils.is_quorate(node_list[0]):
+        if utils.is_dlm_running() and not utils.is_quorate():
             logger.debug("Quorum is lost; Set enable_quorum_fencing=0 and 
enable_quorum_lockspace=0 for dlm")
-            utils.set_dlm_option(peer=node_list[0], enable_quorum_fencing=0, 
enable_quorum_lockspace=0)
+            utils.set_dlm_option(enable_quorum_fencing=0, 
enable_quorum_lockspace=0)
 
         # Stop pacemaker since it can make sure cluster has quorum until stop 
corosync
         utils.stop_service("pacemaker", node_list=node_list)
         # Then, stop qdevice if is active
-        if utils.service_is_active("corosync-qdevice.service", node_list[0]):
+        if utils.service_is_active("corosync-qdevice.service"):
             utils.stop_service("corosync-qdevice.service", node_list=node_list)
         # Last, stop corosync
         utils.stop_service("corosync", node_list=node_list)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.3.1+20211206.e34e2fff/crmsh/utils.py 
new/crmsh-4.3.1+20211210.a149de51/crmsh/utils.py
--- old/crmsh-4.3.1+20211206.e34e2fff/crmsh/utils.py    2021-12-06 
15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/crmsh/utils.py    2021-12-10 
03:35:17.000000000 +0100
@@ -836,9 +836,11 @@
         return False
 
 
-def get_dc():
+def get_dc(timeout=None):
     cmd = "crmadmin -D"
-    rc, s = get_stdout(add_sudo(cmd))
+    if timeout:
+        cmd += " -t {}".format(timeout)
+    rc, s, _ = get_stdout_stderr(add_sudo(cmd))
     if rc != 0:
         return None
     if not s.startswith("Designated"):
@@ -2698,7 +2700,10 @@
     """
     Check if any RA is running
     """
-    out = get_stdout_or_raise_error("crm_mon -1")
+    cmd = "crm_mon -1"
+    if ra_type:
+        cmd = "crm_mon -1rR"
+    out = get_stdout_or_raise_error(cmd)
     if ra_type:
         return re.search("{}.*Started".format(ra_type), out) is not None
     else:
@@ -2936,38 +2941,45 @@
     return re.search(r'Node\s+{}:\s+standby'.format(node), out) is not None
 
 
-def get_dlm_option_dict(peer=None):
+def get_dlm_option_dict():
     """
     Get dlm config option dictionary
     """
-    out = get_stdout_or_raise_error("dlm_tool dump_config", remote=peer)
+    out = get_stdout_or_raise_error("dlm_tool dump_config")
     return dict(re.findall("(\w+)=(\w+)", out))
 
 
-def set_dlm_option(peer=None, **kargs):
+def set_dlm_option(**kargs):
     """
     Set dlm option
     """
-    dlm_option_dict = get_dlm_option_dict(peer=peer)
+    dlm_option_dict = get_dlm_option_dict()
     for option, value in kargs.items():
         if option not in dlm_option_dict:
             raise ValueError('"{}" is not dlm config option'.format(option))
         if dlm_option_dict[option] != value:
-            get_stdout_or_raise_error('dlm_tool set_config 
"{}={}"'.format(option, value), remote=peer)
+            get_stdout_or_raise_error('dlm_tool set_config 
"{}={}"'.format(option, value))
+
+
+def is_dlm_running():
+    """
+    Check if dlm ra controld is running
+    """
+    return has_resource_running(constants.DLM_CONTROLD_RA)
 
 
-def is_dlm_configured(peer=None):
+def is_dlm_configured():
     """
     Check if dlm configured
     """
-    return has_resource_configured("ocf::pacemaker:controld", peer=peer)
+    return has_resource_configured(constants.DLM_CONTROLD_RA)
 
 
-def is_quorate(peer=None):
+def is_quorate():
     """
     Check if cluster is quorated
     """
-    out = get_stdout_or_raise_error("corosync-quorumtool -s", remote=peer, 
success_val_list=[0, 2])
+    out = get_stdout_or_raise_error("corosync-quorumtool -s", 
success_val_list=[0, 2])
     res = re.search(r'Quorate:\s+(.*)', out)
     if res:
         return res.group(1) == "Yes"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.3.1+20211206.e34e2fff/test/features/bootstrap_init_join_remove.feature
 
new/crmsh-4.3.1+20211210.a149de51/test/features/bootstrap_init_join_remove.feature
--- 
old/crmsh-4.3.1+20211206.e34e2fff/test/features/bootstrap_init_join_remove.feature
  2021-12-06 15:28:27.000000000 +0100
+++ 
new/crmsh-4.3.1+20211210.a149de51/test/features/bootstrap_init_join_remove.feature
  2021-12-10 03:35:17.000000000 +0100
@@ -26,12 +26,14 @@
     When    Run "crm node online --all" on "hanode1"
     Then    Node "hanode1" is online
     And     Node "hanode2" is online
+    When    Wait for DC
     When    Run "crm cluster stop --all" on "hanode1"
     Then    Cluster service is "stopped" on "hanode1"
     And     Cluster service is "stopped" on "hanode2"
     When    Run "crm cluster start --all" on "hanode1"
     Then    Cluster service is "started" on "hanode1"
     And     Cluster service is "started" on "hanode2"
+    When    Wait for DC
     When    Run "crm cluster stop hanode2" on "hanode1"
     Then    Cluster service is "stopped" on "hanode2"
     When    Run "crm cluster start hanode2" on "hanode1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.3.1+20211206.e34e2fff/test/features/environment.py 
new/crmsh-4.3.1+20211210.a149de51/test/features/environment.py
--- old/crmsh-4.3.1+20211206.e34e2fff/test/features/environment.py      
2021-12-06 15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/test/features/environment.py      
2021-12-10 03:35:17.000000000 +0100
@@ -1,6 +1,7 @@
 import logging
 import re
 from crmsh import utils, parallax
+import time
 
 
 def get_online_nodes():
@@ -25,8 +26,8 @@
         online_nodes = get_online_nodes()
         if online_nodes:
             resource_cleanup()
-            try:
-                parallax.parallax_call(online_nodes, 'crm cluster stop')
-            except ValueError as err:
-                context.logger.error("{}\n".format(err))
-                context.failed = True
+            while True:
+                time.sleep(1)
+                if utils.get_dc():
+                    break
+            utils.get_stdout_or_raise_error("crm cluster stop --all")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.3.1+20211206.e34e2fff/test/features/steps/step_implementation.py 
new/crmsh-4.3.1+20211210.a149de51/test/features/steps/step_implementation.py
--- 
old/crmsh-4.3.1+20211206.e34e2fff/test/features/steps/step_implementation.py    
    2021-12-06 15:28:27.000000000 +0100
+++ 
new/crmsh-4.3.1+20211210.a149de51/test/features/steps/step_implementation.py    
    2021-12-10 03:35:17.000000000 +0100
@@ -378,3 +378,11 @@
         data = yaml.load(f, Loader=yaml.SafeLoader)
     sec_name, key = path.split(':')
     assert str(data[sec_name][key]) == str(value)
+
+
+@when('Wait for DC')
+def step_impl(context):
+    while True:
+        time.sleep(1)
+        if crmutils.get_dc():
+            break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.3.1+20211206.e34e2fff/test/unittests/test_bootstrap.py 
new/crmsh-4.3.1+20211210.a149de51/test/unittests/test_bootstrap.py
--- old/crmsh-4.3.1+20211206.e34e2fff/test/unittests/test_bootstrap.py  
2021-12-06 15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/test/unittests/test_bootstrap.py  
2021-12-10 03:35:17.000000000 +0100
@@ -608,37 +608,31 @@
         mock_error.assert_called_once_with("error")
 
     @mock.patch('crmsh.utils.this_node')
+    @mock.patch('re.search')
     @mock.patch('crmsh.bootstrap.get_cluster_node_hostname')
-    @mock.patch('crmsh.utils.get_stdout_or_raise_error')
-    def test_is_online_local_offline(self, mock_run, mock_get_peer, 
mock_this_node):
-        mock_run.return_value = """
-Node List:
-  * Online: [ node1 node2 ]
-        """
-        mock_this_node.return_value = "node3"
+    def test_is_online_local_offline(self, mock_get_peer, mock_search, 
mock_this_node):
+        mock_this_node.return_value = "node1"
+        mock_search.return_value = None
 
-        assert bootstrap.is_online() is False
+        assert bootstrap.is_online("text") is False
 
         mock_this_node.assert_called_once_with()
         mock_get_peer.assert_not_called()
-        mock_run.assert_called_once_with(constants.CRM_MON_ONE_SHOT, 
remote="node3")
+        mock_search.assert_called_once_with("Online: .* node1 ", "text")
 
     @mock.patch('crmsh.utils.this_node')
+    @mock.patch('re.search')
     @mock.patch('crmsh.bootstrap.get_cluster_node_hostname')
-    @mock.patch('crmsh.utils.get_stdout_or_raise_error')
-    def test_is_online_on_init_node(self, mock_run, mock_get_peer, 
mock_this_node):
-        mock_run.return_value = """
-Node List:
-  * Online: [ node1 node2 ]
-        """
+    def test_is_online_on_init_node(self, mock_get_peer, mock_search, 
mock_this_node):
+        mock_search.return_value = mock.Mock()
         mock_this_node.return_value = "node1"
         mock_get_peer.return_value = None
 
-        assert bootstrap.is_online() is True
+        assert bootstrap.is_online("text") is True
 
         mock_this_node.assert_called_once_with()
         mock_get_peer.assert_called_once_with()
-        mock_run.assert_called_once_with(constants.CRM_MON_ONE_SHOT, 
remote="node1")
+        mock_search.assert_called_once_with("Online: .* node1 ", "text")
 
     @mock.patch('crmsh.utils.fatal')
     @mock.patch('crmsh.utils.stop_service')
@@ -646,27 +640,25 @@
     @mock.patch('crmsh.corosync.conf')
     @mock.patch('shutil.copy')
     @mock.patch('crmsh.utils.this_node')
+    @mock.patch('re.search')
     @mock.patch('crmsh.bootstrap.get_cluster_node_hostname')
-    @mock.patch('crmsh.utils.get_stdout_or_raise_error')
-    def test_is_online_peer_offline(self, mock_run, mock_get_peer, 
mock_this_node,
+    def test_is_online_peer_offline(self, mock_get_peer, mock_search, 
mock_this_node,
             mock_copy, mock_corosync_conf, mock_csync2, mock_stop_service, 
mock_error):
-        mock_run.return_value = """
-Node List:
-  * Online: [ node1 node2 ]
-        """
         bootstrap.COROSYNC_CONF_ORIG = "/tmp/crmsh_tmpfile"
+        mock_search.side_effect = [ mock.Mock(), None ]
         mock_this_node.return_value = "node2"
-        mock_get_peer.return_value = "node3"
-        mock_corosync_conf.side_effect = [ "/etc/corosync/corosync.conf", 
+        mock_get_peer.return_value = "node1"
+        mock_corosync_conf.side_effect = [ "/etc/corosync/corosync.conf",
                 "/etc/corosync/corosync.conf"]
-        mock_error.side_effect = ValueError
 
-        with self.assertRaises(ValueError):
-            bootstrap.is_online()
+        bootstrap.is_online("text")
 
-        mock_run.assert_called_once_with(constants.CRM_MON_ONE_SHOT, 
remote="node2")
         mock_this_node.assert_called_once_with()
         mock_get_peer.assert_called_once_with()
+        mock_search.assert_has_calls([
+            mock.call("Online: .* node2 ", "text"),
+            mock.call("Online: .* node1 ", "text")
+            ])
         mock_corosync_conf.assert_has_calls([
             mock.call(),
             mock.call()
@@ -674,7 +666,7 @@
         mock_copy.assert_called_once_with(bootstrap.COROSYNC_CONF_ORIG, 
"/etc/corosync/corosync.conf")
         mock_csync2.assert_called_once_with("/etc/corosync/corosync.conf")
         mock_stop_service.assert_called_once_with("corosync")
-        mock_error.assert_called_once_with("Cannot see peer node \"node3\", 
please check the communication IP")
+        mock_error.assert_called_once_with("Cannot see peer node \"node1\", 
please check the communication IP")
 
     @mock.patch('crmsh.utils.fatal')
     @mock.patch('crmsh.utils.stop_service')
@@ -682,21 +674,22 @@
     @mock.patch('crmsh.corosync.conf')
     @mock.patch('shutil.copy')
     @mock.patch('crmsh.utils.this_node')
+    @mock.patch('re.search')
     @mock.patch('crmsh.bootstrap.get_cluster_node_hostname')
-    @mock.patch('crmsh.utils.get_stdout_or_raise_error')
-    def test_is_online_both_online(self, mock_run, mock_get_peer, 
mock_this_node,
+    def test_is_online_both_online(self, mock_get_peer, mock_search, 
mock_this_node,
             mock_copy, mock_corosync_conf, mock_csync2, mock_stop_service, 
mock_error):
-        mock_run.return_value = """
-Node List:
-  * Online: [ node1 node2 ]
-        """
+        mock_search.side_effect = [ mock.Mock(), mock.Mock() ]
         mock_this_node.return_value = "node2"
         mock_get_peer.return_value = "node1"
 
-        assert bootstrap.is_online() is True
+        assert bootstrap.is_online("text") is True
 
         mock_this_node.assert_called_once_with()
         mock_get_peer.assert_called_once_with()
+        mock_search.assert_has_calls([
+            mock.call("Online: .* node2 ", "text"),
+            mock.call("Online: .* node1 ", "text")
+            ])
         mock_corosync_conf.assert_not_called()
         mock_copy.assert_not_called()
         mock_csync2.assert_not_called()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.3.1+20211206.e34e2fff/test/unittests/test_ui_cluster.py 
new/crmsh-4.3.1+20211210.a149de51/test/unittests/test_ui_cluster.py
--- old/crmsh-4.3.1+20211206.e34e2fff/test/unittests/test_ui_cluster.py 
2021-12-06 15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/test/unittests/test_ui_cluster.py 
2021-12-10 03:35:17.000000000 +0100
@@ -97,22 +97,23 @@
     @mock.patch('crmsh.utils.stop_service')
     @mock.patch('crmsh.utils.set_dlm_option')
     @mock.patch('crmsh.utils.is_quorate')
-    @mock.patch('crmsh.utils.is_dlm_configured')
-    @mock.patch('crmsh.bootstrap.wait_for_cluster')
+    @mock.patch('crmsh.utils.is_dlm_running')
+    @mock.patch('crmsh.utils.get_dc')
     @mock.patch('crmsh.utils.service_is_active')
     @mock.patch('crmsh.ui_cluster.parse_option_for_nodes')
-    def test_do_stop(self, mock_parse_nodes, mock_active, mock_wait, 
mock_dlm_configured, mock_is_quorate, mock_set_dlm, mock_stop, mock_info, 
mock_debug):
+    def test_do_stop(self, mock_parse_nodes, mock_active, mock_get_dc, 
mock_dlm_running, mock_is_quorate, mock_set_dlm, mock_stop, mock_info, 
mock_debug):
         context_inst = mock.Mock()
         mock_parse_nodes.return_value = ["node1"]
         mock_active.side_effect = [True, True]
-        mock_dlm_configured.return_value = True
+        mock_dlm_running.return_value = True
         mock_is_quorate.return_value = False
+        mock_get_dc.return_value = "node1"
 
         self.ui_cluster_inst.do_stop(context_inst, "node1")
 
         mock_active.assert_has_calls([
             mock.call("corosync.service", remote_addr="node1"),
-            mock.call("corosync-qdevice.service", "node1")
+            mock.call("corosync-qdevice.service")
             ])
         mock_stop.assert_has_calls([
             mock.call("pacemaker", node_list=["node1"]),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.3.1+20211206.e34e2fff/test/unittests/test_utils.py 
new/crmsh-4.3.1+20211210.a149de51/test/unittests/test_utils.py
--- old/crmsh-4.3.1+20211206.e34e2fff/test/unittests/test_utils.py      
2021-12-06 15:28:27.000000000 +0100
+++ new/crmsh-4.3.1+20211210.a149de51/test/unittests/test_utils.py      
2021-12-10 03:35:17.000000000 +0100
@@ -1500,7 +1500,7 @@
             "key1": "value1",
             "key2": "value2"
             }
-    mock_run.assert_called_once_with("dlm_tool dump_config", remote=None)
+    mock_run.assert_called_once_with("dlm_tool dump_config")
 
 
 @mock.patch('crmsh.utils.get_dlm_option_dict')
@@ -1522,14 +1522,14 @@
             "key2": "value2"
             }
     utils.set_dlm_option(key2="test")
-    mock_run.assert_called_once_with('dlm_tool set_config "key2=test"', 
remote=None)
+    mock_run.assert_called_once_with('dlm_tool set_config "key2=test"')
 
 
 @mock.patch('crmsh.utils.has_resource_configured')
 def test_is_dlm_configured(mock_configured):
     mock_configured.return_value = True
     assert utils.is_dlm_configured() is True
-    mock_configured.assert_called_once_with("ocf::pacemaker:controld", 
peer=None)
+    mock_configured.assert_called_once_with("ocf::pacemaker:controld")
 
 
 @mock.patch('crmsh.utils.get_stdout_or_raise_error')
@@ -1538,7 +1538,7 @@
     with pytest.raises(ValueError) as err:
         utils.is_quorate()
     assert str(err.value) == "Failed to get quorate status from 
corosync-quorumtool"
-    mock_run.assert_called_once_with("corosync-quorumtool -s", remote=None, 
success_val_list=[0, 2])
+    mock_run.assert_called_once_with("corosync-quorumtool -s", 
success_val_list=[0, 2])
 
 
 @mock.patch('crmsh.utils.get_stdout_or_raise_error')
@@ -1548,7 +1548,7 @@
 Quorate:          Yes
     """
     assert utils.is_quorate() is True
-    mock_run.assert_called_once_with("corosync-quorumtool -s", remote=None, 
success_val_list=[0, 2])
+    mock_run.assert_called_once_with("corosync-quorumtool -s", 
success_val_list=[0, 2])
 
 
 @mock.patch('crmsh.utils.etree.fromstring')

Reply via email to