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-09-20 13:29:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/crmsh (Old)
 and      /work/SRC/openSUSE:Factory/.crmsh.new.16627 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "crmsh"

Wed Sep 20 13:29:56 2023 rev:305 rq:1112416 version:4.5.0+20230920.7a060972

Changes:
--------
--- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes      2023-08-09 
17:26:09.657719339 +0200
+++ /work/SRC/openSUSE:Factory/.crmsh.new.16627/crmsh.changes   2023-09-20 
13:33:09.091161684 +0200
@@ -1,0 +2,36 @@
+Tue Sep 19 23:02:25 UTC 2023 - xli...@suse.com
+
+- Update to version 4.5.0+20230920.7a060972:
+  * Dev: workflows: Enable delivery and submit CD stages for branch crmsh-4.6
+
+-------------------------------------------------------------------
+Mon Aug 21 08:35:13 UTC 2023 - xli...@suse.com
+
+- Update to version 4.5.0+20230821.76d42b85:
+  * Dev: codecov: allow minor drop (< 0.1%) in coverage checks
+  * [crmsh-4.5] Fix: github-actions: add condition to prevent crm-cd.yml 
running in a forked repo
+
+-------------------------------------------------------------------
+Wed Aug 16 14:26:30 UTC 2023 - xli...@suse.com
+
+- Update to version 4.5.0+20230816.24bf5f1f:
+  * Dev: utils: strip new line when get_stdout_or_raise_error returns
+
+-------------------------------------------------------------------
+Thu Aug 10 09:15:15 UTC 2023 - xli...@suse.com
+
+- Update to version 4.5.0+20230810.74b9b4d5:
+  * Fix: codecov: delay notifications until all reports are uploaded
+  * Dev: behave: adjust functional tests for previous changes
+  * Dev: unittest: adjust unittest for previous changes
+  * Fix: prun: setsid to prevent ssh from asking a password from terminal
+  * Fix: upgradeutil: reduce the timeout for getting sequence from remote node 
(bsc#1213797)
+
+-------------------------------------------------------------------
+Thu Aug 10 02:12:36 UTC 2023 - nicholas.y...@suse.com
+
+- Update to version 4.5.0+20230810.01db025c:
+  * Dev: behave: Adjust functional test based on previous change
+  * Dev: corosync: Enable logging.to_logfile
+
+-------------------------------------------------------------------

Old:
----
  crmsh-4.5.0+20230809.ddb17a0b.tar.bz2

New:
----
  crmsh-4.5.0+20230920.7a060972.tar.bz2

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

Other differences:
------------------
++++++ crmsh.spec ++++++
--- /var/tmp/diff_new_pack.Xw9McO/_old  2023-09-20 13:33:10.895226315 +0200
+++ /var/tmp/diff_new_pack.Xw9McO/_new  2023-09-20 13:33:10.899226459 +0200
@@ -36,7 +36,7 @@
 Summary:        High Availability cluster command-line interface
 License:        GPL-2.0-or-later
 Group:          %{pkg_group}
-Version:        4.5.0+20230809.ddb17a0b
+Version:        4.5.0+20230920.7a060972
 Release:        0
 URL:            http://crmsh.github.io
 Source0:        %{name}-%{version}.tar.bz2

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.Xw9McO/_old  2023-09-20 13:33:10.931227605 +0200
+++ /var/tmp/diff_new_pack.Xw9McO/_new  2023-09-20 13:33:10.935227749 +0200
@@ -9,7 +9,7 @@
 </service>
 <service name="tar_scm">
   <param name="url">https://github.com/ClusterLabs/crmsh.git</param>
-  <param 
name="changesrevision">1b6bae9b438c538c644f68386b5a5ebcf92e4b91</param>
+  <param 
name="changesrevision">87f2182d748f0dd0d9b5c2e1a0d4c98bd1dfd148</param>
 </service>
 </servicedata>
 (No newline at EOF)

++++++ crmsh-4.5.0+20230809.ddb17a0b.tar.bz2 -> 
crmsh-4.5.0+20230920.7a060972.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.5.0+20230809.ddb17a0b/.github/workflows/crmsh-cd.yml 
new/crmsh-4.5.0+20230920.7a060972/.github/workflows/crmsh-cd.yml
--- old/crmsh-4.5.0+20230809.ddb17a0b/.github/workflows/crmsh-cd.yml    
2023-08-08 23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/.github/workflows/crmsh-cd.yml    
2023-09-20 00:36:40.000000000 +0200
@@ -16,16 +16,17 @@
 
 jobs:
   integration:
+    if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 
'crmsh-4.6'
     uses: ./.github/workflows/crmsh-ci.yml
 
   delivery:
+    if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 
'crmsh-4.6'
     needs: integration
     runs-on: ubuntu-20.04
     timeout-minutes: 10
     steps:
     - uses: actions/checkout@v3
     - name: delivery process
-      if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 
'crmsh-4.5' && github.event_name == 'push'
       run: |
         docker pull shap/continuous_deliver:latest
         docker run -t -v "$(pwd):/package" \
@@ -38,13 +39,13 @@
           /bin/bash -c "cd /package;/scripts/upload.sh"
 
   submit:
+    if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 
'crmsh-4.6'
     needs: delivery
     runs-on: ubuntu-20.04
     timeout-minutes: 10
     steps:
     - uses: actions/checkout@v3
     - name: submit process
-      if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 
'crmsh-4.5' && github.event_name == 'push'
       run: |
         docker pull shap/continuous_deliver:latest
         docker run -t -v "$(pwd):/package" \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.5.0+20230809.ddb17a0b/codecov.yml 
new/crmsh-4.5.0+20230920.7a060972/codecov.yml
--- old/crmsh-4.5.0+20230809.ddb17a0b/codecov.yml       2023-08-08 
23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/codecov.yml       2023-09-20 
00:36:40.000000000 +0200
@@ -1,4 +1,14 @@
+coverage:
+  status:
+    project:
+      default:
+        threshold: 0.1%
+    patch:
+      default:
+        threshold: 0.1%
 codecov: 
-   token: 16b01c29-3b23-4923-b33a-4d26a49d80c4
+  token: 16b01c29-3b23-4923-b33a-4d26a49d80c4
+  notify:
+    after_n_builds: 22
 comment:
   after_n_builds: 22
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/corosync.py 
new/crmsh-4.5.0+20230920.7a060972/crmsh/corosync.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/corosync.py 2023-08-08 
23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/crmsh/corosync.py 2023-09-20 
00:36:40.000000000 +0200
@@ -618,7 +618,7 @@
 logging {
     fileline:   off
     to_stderr:  no
-    to_logfile:     no
+    to_logfile: yes
     logfile:    /var/log/cluster/corosync.log
     to_syslog:  yes
     debug:      off
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/prun/prun.py 
new/crmsh-4.5.0+20230920.7a060972/crmsh/prun/prun.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/prun/prun.py        2023-08-08 
23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/crmsh/prun/prun.py        2023-09-20 
00:36:40.000000000 +0200
@@ -96,7 +96,7 @@
 
 
 def _build_run_task(remote: str, cmdline: str) -> Task:
-    local_sudoer, remote_sudoer = crmsh.utils.user_pair_for_ssh(remote)
+    local_sudoer, remote_sudoer = 
crmsh.utils.UserOfHost.instance().user_pair_for_ssh(remote)
     if _is_local_host(remote):
         if 0 == os.geteuid():
             args = ['/bin/sh']
@@ -147,7 +147,7 @@
         else:
             return {x: None for x in hosts}
     flags = '-pr' if recursive else '-p'
-    local_sudoer, _ = crmsh.utils.user_pair_for_ssh(hosts[0])
+    local_sudoer, _ = 
crmsh.utils.UserOfHost.instance().user_pair_for_ssh(hosts[0])
     script = "put {} '{}' '{}'\n".format(flags, src, dst)
     ssh = None
     try:
@@ -171,7 +171,7 @@
 
 
 def _build_copy_task(ssh: str, script: str, host: str):
-    _, remote_sudoer = crmsh.utils.user_pair_for_ssh(host)
+    _, remote_sudoer = 
crmsh.utils.UserOfHost.instance().user_pair_for_ssh(host)
     cmd = "sftp {} {} -o BatchMode=yes -s 'sudo 
PATH=/usr/lib/ssh:/usr/libexec/ssh /bin/sh -c \"exec sftp-server\"' -b - 
{}@{}".format(
         ssh,
         crmsh.constants.SSH_OPTION,
@@ -206,7 +206,7 @@
 
     Files are copied to directory <dst>/<host>/ corresponding to each source 
host."""
     flags = '-pR' if recursive else '-p'
-    local_sudoer, _ = crmsh.utils.user_pair_for_ssh(hosts[0])
+    local_sudoer, _ = 
crmsh.utils.UserOfHost.instance().user_pair_for_ssh(hosts[0])
     ssh = None
     try:
         ssh = tempfile.NamedTemporaryFile('w', encoding='utf-8', delete=False)
@@ -232,7 +232,7 @@
 
 
 def _build_fetch_task( ssh: str, host: str, src: str, dst: str, flags: str) -> 
Task:
-    _, remote_sudoer = crmsh.utils.user_pair_for_ssh(host)
+    _, remote_sudoer = 
crmsh.utils.UserOfHost.instance().user_pair_for_ssh(host)
     cmd = "sftp {} {} -o BatchMode=yes -s 'sudo 
PATH=/usr/lib/ssh:/usr/libexec/ssh /bin/sh -c \"exec sftp-server\"' -b - 
{}@{}".format(
         ssh,
         crmsh.constants.SSH_OPTION,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/prun/runner.py 
new/crmsh-4.5.0+20230920.7a060972/crmsh/prun/runner.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/prun/runner.py      2023-08-08 
23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/crmsh/prun/runner.py      2023-09-20 
00:36:40.000000000 +0200
@@ -103,6 +103,7 @@
                     stdin=asyncio.subprocess.PIPE if task.input else 
asyncio.subprocess.DEVNULL,
                     stdout=stdout,
                     stderr=stderr,
+                    start_new_session=True,
                 )
             finally:
                 # Closing the pipe inlet make the writer thread to exit.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/upgradeutil.py 
new/crmsh-4.5.0+20230920.7a060972/crmsh/upgradeutil.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/upgradeutil.py      2023-08-08 
23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/crmsh/upgradeutil.py      2023-09-20 
00:36:40.000000000 +0200
@@ -17,6 +17,8 @@
 # touch this file to force a upgrade process
 FORCE_UPGRADE_FILE_PATH = DATA_DIR + '/upgrade_forced'
 
+TIMEOUT_SSH_GET_SEQUENCE = 3
+
 
 VERSION_FEATURES = {
     (1, 0): [crmsh.healthcheck.PasswordlessHaclusterAuthenticationFeature]
@@ -92,11 +94,19 @@
 def _is_cluster_target_seq_consistent(nodes):
     cmd = '/usr/bin/env python3 -m crmsh.upgradeutil get-seq'
     try:
-        results = list(_parallax_run(nodes, cmd).values())
-    except crmsh.parallax.Error as e:
+        results = prun.prun({node: cmd for node in nodes}, 
timeout_seconds=TIMEOUT_SSH_GET_SEQUENCE)
+        for node, result in results.items():
+            if isinstance(result, prun.PRunError):
+                logger.debug("upgradeutil: get-seq failed: %s", result)
+                raise _SkipUpgrade() from None
+    except (prun.PRunError, crmsh.utils.UserOfHost.UserNotFoundError) as e:
+        logger.debug("upgradeutil: get-seq failed: %s", e)
         raise _SkipUpgrade() from None
     try:
-        return all(CURRENT_UPGRADE_SEQ == _parse_upgrade_seq(stdout.strip()) 
if rc == 0 else False for rc, stdout, stderr in results)
+        return all(
+            CURRENT_UPGRADE_SEQ == _parse_upgrade_seq(result.stdout.strip()) 
if result.returncode == 0 else False
+            for result in results.values()
+        )
     except ValueError as e:
         logger.warning("Remote command '%s' returns unexpected output: %s", 
cmd, results, exc_info=e)
         return False
@@ -137,8 +147,7 @@
         return
     nodes = crmsh.utils.list_cluster_nodes(no_reg=True)
     if nodes is not None and len(nodes) > 1 \
-            and _is_upgrade_needed(nodes) \
-            and not crmsh.utils.check_passwordless_between_nodes(nodes):
+            and _is_upgrade_needed(nodes):
         logger.debug("upgradeutil: configuration fix needed")
         try:
             if not _is_cluster_target_seq_consistent(nodes):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/utils.py 
new/crmsh-4.5.0+20230920.7a060972/crmsh/utils.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/crmsh/utils.py    2023-08-08 
23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/crmsh/utils.py    2023-09-20 
00:36:40.000000000 +0200
@@ -2372,39 +2372,6 @@
     return rc != 0
 
 
-def check_passwordless_between_nodes(node_list, user='root'):
-    """
-    Check passwordless between cluster nodes
-    Suppose each node has the same user
-    Return a list of hosts that require passwords between
-    """
-    need_pw_pair_list = []
-    me = this_node()
-    # check local node between remote node
-    for node in node_list:
-        if node == me:
-            continue
-        if check_ssh_passwd_need(user, user, node):
-            need_pw_pair_list.append((me, node))
-
-    if not need_pw_pair_list:
-        for node in node_list:
-            for n in node_list:
-                if node == n or node == me:
-                    continue
-                if user == 'root':
-                    cmd = f"ssh {node} \"ssh {SSH_OPTION} -T -o Batchmode=yes 
{user}@{n} true\""
-                else:
-                    cmd = f"ssh {node} \"su - {user} -c 'ssh {SSH_OPTION} -T 
-o Batchmode=yes {user}@{n} true'\""
-                rc, _, _ = get_stdout_stderr(cmd)
-                if rc != 0:
-                    need_pw_pair_list.append((node, n))
-
-    for m, n in need_pw_pair_list:
-        logger.debug("There is no passwordless configured from %s to %s under 
'%s'", m, n, user)
-    return need_pw_pair_list
-
-
 def check_port_open(ip, port):
     import socket
 
@@ -2950,7 +2917,7 @@
             stderr=subprocess.DEVNULL if no_raise else subprocess.PIPE,
         )
     if no_raise or result.returncode in success_val_list:
-        return result.stdout.decode('utf-8')
+        return result.stdout.decode('utf-8').strip('\n')
     else:
         if remote is None:
             raise ValueError("Failed to run '{}': {}".format(cmd, 
result.stderr.decode('utf-8')))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.5.0+20230809.ddb17a0b/test/features/bootstrap_bugs.feature 
new/crmsh-4.5.0+20230920.7a060972/test/features/bootstrap_bugs.feature
--- old/crmsh-4.5.0+20230809.ddb17a0b/test/features/bootstrap_bugs.feature      
2023-08-08 23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/test/features/bootstrap_bugs.feature      
2023-09-20 00:36:40.000000000 +0200
@@ -186,7 +186,7 @@
 
   @skip_non_root
   @clean
-  Scenario: Do upgrade job without root passwordless
+  Scenario: Skip upgrade when preconditions are not satisfied
     Given   Cluster service is "stopped" on "hanode1"
     And     Cluster service is "stopped" on "hanode2"
     When    Run "crm cluster init -y" on "hanode1"
@@ -194,6 +194,9 @@
     When    Run "crm cluster join -c hanode1 -y" on "hanode2"
     Then    Cluster service is "started" on "hanode2"
     When    Run "rm -f /var/lib/crmsh/upgrade_seq" on "hanode1"
-    And     Run "rm -f /root/.config/crm/crm.conf" on "hanode1"
-    And     Run "rm -rf /root/.ssh" on "hanode1"
-    And     Run "crm status" on "hanode1"
+    And     Run "mv /root/.config/crm/crm.conf{,.bak}" on "hanode1"
+    Then    Run "crm status" OK on "hanode1"
+    When    Run "rm -f /var/lib/crmsh/upgrade_seq" on "hanode1"
+    And     Run "mv /root/.config/crm/crm.conf{.bak,}" on "hanode1"
+    And     Run "mv /root/.ssh{,.bak}" on "hanode1"
+    Then    Run "crm status" OK on "hanode1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.5.0+20230809.ddb17a0b/test/features/crm_report_bugs.feature 
new/crmsh-4.5.0+20230920.7a060972/test/features/crm_report_bugs.feature
--- old/crmsh-4.5.0+20230809.ddb17a0b/test/features/crm_report_bugs.feature     
2023-08-08 23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/test/features/crm_report_bugs.feature     
2023-09-20 00:36:40.000000000 +0200
@@ -45,15 +45,26 @@
 
   @clean
   Scenario: Collect corosync.log(bsc#1148874)
-    When    Run "sed -i 
's/\(\s+logfile:\s+\).*/\1\/var\/log\/cluster\/corosync.log/' 
/etc/corosync/corosync.conf" on "hanode1"
+    When    Run "sed -i 's/\(\s*to_logfile:\s*\).*/\1no/' 
/etc/corosync/corosync.conf" on "hanode1"
+    When    Run "sed -i 's/\(\s*to_logfile:\s*\).*/\1no/' 
/etc/corosync/corosync.conf" on "hanode2"
+    And     Run "corosync-cfgtool -R" on "hanode1"
+    And     Run "rm -f /var/log/cluster/corosync.log" on "hanode1"
+    And     Run "rm -f /var/log/cluster/corosync.log" on "hanode2"
+    And     Run "crm cluster stop --all" on "hanode1"
+    And     Run "crm cluster start --all" on "hanode1"
+    And     Run "sleep 15" on "hanode1"
+
     And     Run "crm report report" on "hanode1"
     And     Run "tar jxf report.tar.bz2" on "hanode1"
     Then    File "corosync.log" not in "report.tar.bz2"
     When    Run "rm -rf report.tar.gz report" on "hanode1"
 
     When    Run "sed -i 's/\(\s*to_logfile:\s*\).*/\1yes/' 
/etc/corosync/corosync.conf" on "hanode1"
-    And     Run "crm cluster stop" on "hanode1"
-    And     Run "crm cluster start" on "hanode1"
+    When    Run "sed -i 's/\(\s*to_logfile:\s*\).*/\1yes/' 
/etc/corosync/corosync.conf" on "hanode2"
+    And     Run "crm cluster stop --all" on "hanode1"
+    And     Run "crm cluster start --all" on "hanode1"
+    And     Run "sleep 15" on "hanode1"
+
     And     Run "crm report report" on "hanode1"
     And     Run "tar jxf report.tar.bz2" on "hanode1"
     Then    File "corosync.log" in "report.tar.bz2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.5.0+20230809.ddb17a0b/test/features/steps/step_implementation.py 
new/crmsh-4.5.0+20230920.7a060972/test/features/steps/step_implementation.py
--- 
old/crmsh-4.5.0+20230809.ddb17a0b/test/features/steps/step_implementation.py    
    2023-08-08 23:52:16.000000000 +0200
+++ 
new/crmsh-4.5.0+20230920.7a060972/test/features/steps/step_implementation.py    
    2023-09-20 00:36:40.000000000 +0200
@@ -102,6 +102,11 @@
     _, out, _ = run_command_local_or_remote(context, cmd, addr)
 
 
+@then('Run "{cmd}" OK on "{addr}"')
+def step_impl(context, cmd, addr):
+    _, out, _ = run_command_local_or_remote(context, cmd, addr)
+
+
 @then('Print stdout')
 def step_impl(context):
     context.logger.info("\n{}".format(context.stdout))
@@ -493,10 +498,19 @@
 def step_impl(context, nodelist):
     if userdir.getuser() != 'root' or userdir.get_sudoer():
         return True
-    need_pw_list = crmutils.check_passwordless_between_nodes(nodelist.split(), 
'hacluster')
-    for m, n in need_pw_list:
-        context.logger.error(f"There is no passwordless configured from {m} to 
{n} under 'hacluster'")
-    assert need_pw_list == []
+    failed = False
+    nodes = nodelist.split()
+    for i in range(0, len(nodes)):
+        for j in range(i + 1, len(nodes)):
+            rc, _, _ = behave_agent.call(
+                nodes[i], 1122,
+                f'ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 
{nodes[j]} true',
+                user='hacluster',
+            )
+            if rc != 0:
+                failed = True
+                context.logger.error(f"There is no passwordless configured 
from {nodes[i]} to {nodes[j]} under 'hacluster'")
+    assert not failed
 
 
 @then('Check user shell for hacluster between "{nodelist}"')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.5.0+20230809.ddb17a0b/test/unittests/test_prun.py 
new/crmsh-4.5.0+20230920.7a060972/test/unittests/test_prun.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/test/unittests/test_prun.py       
2023-08-08 23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/test/unittests/test_prun.py       
2023-09-20 00:36:40.000000000 +0200
@@ -12,7 +12,7 @@
     @mock.patch("os.geteuid")
     @mock.patch("crmsh.userdir.getuser")
     @mock.patch("crmsh.prun.prun._is_local_host")
-    @mock.patch("crmsh.utils.user_pair_for_ssh")
+    @mock.patch("crmsh.utils.UserOfHost.user_pair_for_ssh")
     @mock.patch("crmsh.prun.runner.Runner.run")
     @mock.patch("crmsh.prun.runner.Runner.add_task")
     def test_prun(
@@ -61,7 +61,7 @@
     @mock.patch("os.geteuid")
     @mock.patch("crmsh.userdir.getuser")
     @mock.patch("crmsh.prun.prun._is_local_host")
-    @mock.patch("crmsh.utils.user_pair_for_ssh")
+    @mock.patch("crmsh.utils.UserOfHost.user_pair_for_ssh")
     @mock.patch("crmsh.prun.runner.Runner.run")
     @mock.patch("crmsh.prun.runner.Runner.add_task")
     def test_prun_root(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-4.5.0+20230809.ddb17a0b/test/unittests/test_utils.py 
new/crmsh-4.5.0+20230920.7a060972/test/unittests/test_utils.py
--- old/crmsh-4.5.0+20230809.ddb17a0b/test/unittests/test_utils.py      
2023-08-08 23:52:16.000000000 +0200
+++ new/crmsh-4.5.0+20230920.7a060972/test/unittests/test_utils.py      
2023-09-20 00:36:40.000000000 +0200
@@ -1899,20 +1899,3 @@
     with pytest.raises(utils.TerminateSubCommand) as err:
         utils.check_user_access('cluster')
     mock_error.assert_called_once_with('Please run this command starting with 
"sudo".\nCurrently, this command needs to use sudo to escalate itself as 
root.\nPlease consider to add "user" as sudoer. For example:\n  sudo bash -c 
\'echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/user\'')
-
-
-@mock.patch('logging.Logger.debug')
-@mock.patch('crmsh.utils.get_stdout_stderr')
-@mock.patch('crmsh.utils.check_ssh_passwd_need')
-@mock.patch('crmsh.utils.this_node')
-def test_check_passwordless_between_nodes(mock_this_node, mock_check_ssh, 
mock_run, mock_debug):
-    mock_this_node.return_value = "node1"
-    mock_check_ssh.return_value = False
-    mock_run.return_value = (1, None, None)
-
-    res_list = utils.check_passwordless_between_nodes(["node1", "node2"])
-    assert res_list == [("node2", "node1")]
-
-    mock_run.assert_called_once_with('ssh node2 "ssh -o 
StrictHostKeyChecking=no -T -o Batchmode=yes root@node1 true"')
-    mock_debug.assert_called_once_with("There is no passwordless configured 
from %s to %s under '%s'", 'node2', 'node1', 'root')
-

Reply via email to