Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-apache-libcloud for 
openSUSE:Factory checked in at 2026-03-30 18:30:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-apache-libcloud (Old)
 and      /work/SRC/openSUSE:Factory/.python-apache-libcloud.new.1999 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-apache-libcloud"

Mon Mar 30 18:30:15 2026 rev:49 rq:1343570 version:3.9.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-apache-libcloud/python-apache-libcloud.changes
    2026-02-18 17:04:37.243703208 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-apache-libcloud.new.1999/python-apache-libcloud.changes
  2026-03-30 18:31:09.538720305 +0200
@@ -1,0 +2,6 @@
+Mon Mar 30 05:29:23 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Add patch support-paramiko-4.patch:
+  * Support paramiko 4 changes.
+
+-------------------------------------------------------------------

New:
----
  support-paramiko-4.patch

----------(New B)----------
  New:
- Add patch support-paramiko-4.patch:
  * Support paramiko 4 changes.
----------(New E)----------

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

Other differences:
------------------
++++++ python-apache-libcloud.spec ++++++
--- /var/tmp/diff_new_pack.rZxEDA/_old  2026-03-30 18:31:10.462758709 +0200
+++ /var/tmp/diff_new_pack.rZxEDA/_new  2026-03-30 18:31:10.462758709 +0200
@@ -31,6 +31,8 @@
 Patch2:         ec2_create_node.patch
 # PATCH-FIX-UPSTREAM gh#apache/libcloud#2121
 Patch3:         fix-tests-python313.patch
+# PATCH-FIX-UPSTREAM gh#apache/libcloud#2135
+Patch4:         support-paramiko-4.patch
 BuildRequires:  %{python_module base >= 3.7}
 BuildRequires:  %{python_module fasteners}
 BuildRequires:  %{python_module libvirt-python}


++++++ support-paramiko-4.patch ++++++
>From 6d309dc90ae89157736ad54ce6de354c1987be1e Mon Sep 17 00:00:00 2001
From: Steve Kowalik <[email protected]>
Date: Mon, 30 Mar 2026 16:20:36 +1100
Subject: [PATCH] Support paramiko 4 changes

RSA key support has been removed as of paramiko 4, so only import it and
check if the version number is less than 4.
---
 libcloud/compute/ssh.py                  |  4 ++-
 libcloud/test/compute/test_ssh_client.py | 42 +++++++++++++-----------
 2 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/libcloud/compute/ssh.py b/libcloud/compute/ssh.py
index cd64b6e9e0..83b2c1eea0 100644
--- a/libcloud/compute/ssh.py
+++ b/libcloud/compute/ssh.py
@@ -660,13 +660,15 @@ def _get_pkey_object(self, key, password=None):
         """
         key_types = [
             (paramiko.RSAKey, "RSA"),
-            (paramiko.DSSKey, "DSA"),
             (paramiko.ECDSAKey, "EC"),
         ]
 
         paramiko_version = getattr(paramiko, "__version__", "0.0.0")
         paramiko_version = tuple(int(c) for c in paramiko_version.split("."))
 
+        if paramiko_version < (4, 0, 0):
+            # DSSKey removed in paramiko 4.0.0
+            key_types.append((paramiko.DSSKey, "DSA"))
         if paramiko_version >= (2, 2, 0):
             # Ed25519 is only supported in paramiko >= 2.2.0
             key_types.append((paramiko.ed25519key.Ed25519Key, "Ed25519"))
diff --git a/libcloud/test/compute/test_ssh_client.py 
b/libcloud/test/compute/test_ssh_client.py
index 2f7c0cde4c..0d1d6e9366 100644
--- a/libcloud/test/compute/test_ssh_client.py
+++ b/libcloud/test/compute/test_ssh_client.py
@@ -317,19 +317,21 @@ def 
test_key_material_valid_pem_keys_invalid_header_auto_conversion(self):
         self.assertTrue(isinstance(pkey, paramiko.RSAKey))
 
         # 2. DSA key type with header which is not supported by paramiko
-        path = os.path.join(
-            os.path.dirname(__file__),
-            "fixtures",
-            "misc",
-            "test_dsa_non_paramiko_recognized_header.key",
-        )
-
-        with open(path) as fp:
-            private_key = fp.read()
-
-        pkey = client._get_pkey_object(key=private_key)
-        self.assertTrue(pkey)
-        self.assertTrue(isinstance(pkey, paramiko.DSSKey))
+        # ... and only for paramiko < 4
+        if paramiko_version < (4, 0, 0):
+            path = os.path.join(
+                os.path.dirname(__file__),
+                "fixtures",
+                "misc",
+                "test_dsa_non_paramiko_recognized_header.key",
+            )
+
+            with open(path) as fp:
+                private_key = fp.read()
+
+            pkey = client._get_pkey_object(key=private_key)
+            self.assertTrue(pkey)
+            self.assertTrue(isinstance(pkey, paramiko.DSSKey))
 
         # 3. ECDSA key type with header which is not supported by paramiko
         path = os.path.join(
@@ -361,14 +363,16 @@ def test_key_material_valid_pem_keys(self):
         self.assertTrue(isinstance(pkey, paramiko.RSAKey))
 
         # 2. DSA key type with header which is not supported by paramiko
-        path = os.path.join(os.path.dirname(__file__), "fixtures", "misc", 
"test_dsa.key")
+        # ... and only for paramiko < 4
+        if paramiko_version < (4, 0, 0):
+            path = os.path.join(os.path.dirname(__file__), "fixtures", "misc", 
"test_dsa.key")
 
-        with open(path) as fp:
-            private_key = fp.read()
+            with open(path) as fp:
+                private_key = fp.read()
 
-        pkey = client._get_pkey_object(key=private_key)
-        self.assertTrue(pkey)
-        self.assertTrue(isinstance(pkey, paramiko.DSSKey))
+            pkey = client._get_pkey_object(key=private_key)
+            self.assertTrue(pkey)
+            self.assertTrue(isinstance(pkey, paramiko.DSSKey))
 
         # 3. ECDSA key type with header which is not supported by paramiko
         path = os.path.join(os.path.dirname(__file__), "fixtures", "misc", 
"test_ecdsa.key")

Reply via email to