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")