mirror of
https://git.proxmox.com/git/ceph.git
synced 2025-04-29 11:13:20 +00:00
drop patches applied upstream
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
f78120f944
commit
8372c761a8
@ -1,91 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Guillaume Abrioux <gabrioux@ibm.com>
|
|
||||||
Date: Fri, 7 Jun 2024 10:46:16 +0200
|
|
||||||
Subject: [PATCH] ceph-volume: fix set_dmcrypt_no_workqueue()
|
|
||||||
|
|
||||||
`set_dmcrypt_no_workqueue()` from `ceph_volume.util.encryption`
|
|
||||||
|
|
||||||
The function `set_dmcrypt_no_workqueue` in `encryption.py` now
|
|
||||||
dynamically retrieves the installed cryptsetup version using `cryptsetup
|
|
||||||
--version` command. It then parses the version string using a regular
|
|
||||||
expression to accommodate varying digit counts. If the retrieved version
|
|
||||||
is greater than or equal to the specified target version,
|
|
||||||
`conf.dmcrypt_no_workqueue` is set to True, allowing for flexible version
|
|
||||||
handling.
|
|
||||||
|
|
||||||
Fixes: https://tracker.ceph.com/issues/66393
|
|
||||||
|
|
||||||
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
|
|
||||||
(cherry picked from commit dc28b77a6ea50b3390663ac02eeb80367650b7ed)
|
|
||||||
(cherry picked from commit 05ea72c70e06cc70f74b459c399c43f0a8863986)
|
|
||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
||||||
---
|
|
||||||
.../ceph_volume/util/encryption.py | 44 +++++++++++++++++--
|
|
||||||
1 file changed, 40 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/ceph-volume/ceph_volume/util/encryption.py b/src/ceph-volume/ceph_volume/util/encryption.py
|
|
||||||
index 844a81620d2..09f1cccf384 100644
|
|
||||||
--- a/src/ceph-volume/ceph_volume/util/encryption.py
|
|
||||||
+++ b/src/ceph-volume/ceph_volume/util/encryption.py
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
import base64
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
+import re
|
|
||||||
from ceph_volume import process, conf, terminal
|
|
||||||
from ceph_volume.util import constants, system
|
|
||||||
from ceph_volume.util.device import Device
|
|
||||||
@@ -12,14 +13,49 @@ logger = logging.getLogger(__name__)
|
|
||||||
mlogger = terminal.MultiLogger(__name__)
|
|
||||||
|
|
||||||
def set_dmcrypt_no_workqueue(target_version: str = '2.3.4') -> None:
|
|
||||||
- """
|
|
||||||
- set `conf.dmcrypt_no_workqueue` to `True` if the available
|
|
||||||
- version of `cryptsetup` is greater or equal to `version`
|
|
||||||
+ """Set `conf.dmcrypt_no_workqueue` to `True` if the installed version
|
|
||||||
+ of `cryptsetup` is greater than or equal to the specified `target_version`.
|
|
||||||
+
|
|
||||||
+ Depending on the crypsetup version, `cryptsetup --version` output can be different.
|
|
||||||
+ Eg:
|
|
||||||
+
|
|
||||||
+ CentOS Stream9:
|
|
||||||
+ $ cryptsetup --version
|
|
||||||
+ cryptsetup 2.6.0 flags: UDEV BLKID KEYRING FIPS KERNEL_CAPI PWQUALITY
|
|
||||||
+
|
|
||||||
+ CentOS Stream8:
|
|
||||||
+ $ cryptsetup --version
|
|
||||||
+ cryptsetup 2.3.7
|
|
||||||
+
|
|
||||||
+ Args:
|
|
||||||
+ target_version (str, optional): The minimum version required for setting
|
|
||||||
+ `conf.dmcrypt_no_workqueue` to `True`. Defaults to '2.3.4'.
|
|
||||||
+
|
|
||||||
+ Raises:
|
|
||||||
+ RuntimeError: If failed to retrieve the cryptsetup version.
|
|
||||||
+ RuntimeError: If failed to parse the cryptsetup version.
|
|
||||||
+ RuntimeError: If failed to compare the cryptsetup version with the target version.
|
|
||||||
"""
|
|
||||||
command = ["cryptsetup", "--version"]
|
|
||||||
out, err, rc = process.call(command)
|
|
||||||
+
|
|
||||||
+ # This regex extracts the version number from
|
|
||||||
+ # the `cryptsetup --version` output
|
|
||||||
+ pattern: str = r'\b\d+(\.\d+)*\b'
|
|
||||||
+
|
|
||||||
+ if rc:
|
|
||||||
+ raise RuntimeError(f"Can't retrieve cryptsetup version: {err}")
|
|
||||||
+
|
|
||||||
try:
|
|
||||||
- if version.parse(out[0]) >= version.parse(f'cryptsetup {target_version}'):
|
|
||||||
+ cryptsetup_version = re.match(pattern, out[0])
|
|
||||||
+
|
|
||||||
+ if cryptsetup_version is None:
|
|
||||||
+ _output: str = "\n".join(out)
|
|
||||||
+ raise RuntimeError('Error while checking cryptsetup version.\n',
|
|
||||||
+ '`cryptsetup --version` output:\n',
|
|
||||||
+ f'{_output}')
|
|
||||||
+
|
|
||||||
+ if version.parse(cryptsetup_version.group(0)) >= version.parse(target_version):
|
|
||||||
conf.dmcrypt_no_workqueue = True
|
|
||||||
except IndexError:
|
|
||||||
mlogger.debug(f'cryptsetup version check: rc={rc} out={out} err={err}')
|
|
@ -1,98 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Guillaume Abrioux <gabrioux@ibm.com>
|
|
||||||
Date: Wed, 19 Jun 2024 15:06:52 +0200
|
|
||||||
Subject: [PATCH] ceph-volume: fix regex usage in `set_dmcrypt_no_workqueue`
|
|
||||||
|
|
||||||
- Updated the regex pattern to `r'(\d+\.?)+'` to more accurately
|
|
||||||
capture version numbers.
|
|
||||||
|
|
||||||
- Replaced `re.match` with `re.search` to properly match the cryptsetup
|
|
||||||
version in the output.
|
|
||||||
|
|
||||||
- `re.match` only checks for a match at the beginning of the string,
|
|
||||||
while `re.search` looks for a match anywhere in the string.
|
|
||||||
|
|
||||||
This fix ensures that the function correctly retrieves the
|
|
||||||
cryptsetup version from the output.
|
|
||||||
|
|
||||||
Fixes: https://tracker.ceph.com/issues/66393
|
|
||||||
|
|
||||||
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
|
|
||||||
(cherry picked from commit 607eb34b2c278566c386efcbf3018629cf08ccfd)
|
|
||||||
(cherry picked from commit d49b2888486623415a038630da54f5e1c99f1c63)
|
|
||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
||||||
---
|
|
||||||
.../ceph_volume/tests/util/test_encryption.py | 40 ++++++++++++++++++-
|
|
||||||
.../ceph_volume/util/encryption.py | 4 +-
|
|
||||||
2 files changed, 41 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/ceph-volume/ceph_volume/tests/util/test_encryption.py b/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
|
|
||||||
index cd2ea8f187f..200f1da84d8 100644
|
|
||||||
--- a/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
|
|
||||||
+++ b/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
|
|
||||||
@@ -1,6 +1,44 @@
|
|
||||||
from ceph_volume.util import encryption
|
|
||||||
-from mock.mock import patch
|
|
||||||
+from mock.mock import patch, Mock
|
|
||||||
import base64
|
|
||||||
+import pytest
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+class TestNoWorkqueue:
|
|
||||||
+ def setup_method(self):
|
|
||||||
+ encryption.conf.dmcrypt_no_workqueue = None
|
|
||||||
+
|
|
||||||
+ @patch('ceph_volume.util.encryption.process.call',
|
|
||||||
+ Mock(return_value=(['cryptsetup 2.7.2 flags: UDEV BLKID KEYRING' \
|
|
||||||
+ 'FIPS KERNEL_CAPI PWQUALITY '], [''], 0)))
|
|
||||||
+ def test_set_dmcrypt_no_workqueue_true(self):
|
|
||||||
+ encryption.set_dmcrypt_no_workqueue()
|
|
||||||
+ assert encryption.conf.dmcrypt_no_workqueue
|
|
||||||
+
|
|
||||||
+ @patch('ceph_volume.util.encryption.process.call',
|
|
||||||
+ Mock(return_value=(['cryptsetup 2.0.0'], [''], 0)))
|
|
||||||
+ def test_set_dmcrypt_no_workqueue_false(self):
|
|
||||||
+ encryption.set_dmcrypt_no_workqueue()
|
|
||||||
+ assert encryption.conf.dmcrypt_no_workqueue is None
|
|
||||||
+
|
|
||||||
+ @patch('ceph_volume.util.encryption.process.call',
|
|
||||||
+ Mock(return_value=([''], ['fake error'], 1)))
|
|
||||||
+ def test_set_dmcrypt_no_workqueue_cryptsetup_version_fails(self):
|
|
||||||
+ with pytest.raises(RuntimeError):
|
|
||||||
+ encryption.set_dmcrypt_no_workqueue()
|
|
||||||
+
|
|
||||||
+ @patch('ceph_volume.util.encryption.process.call',
|
|
||||||
+ Mock(return_value=(['unexpected output'], [''], 0)))
|
|
||||||
+ def test_set_dmcrypt_no_workqueue_pattern_not_found(self):
|
|
||||||
+ with pytest.raises(RuntimeError):
|
|
||||||
+ encryption.set_dmcrypt_no_workqueue()
|
|
||||||
+
|
|
||||||
+ @patch('ceph_volume.util.encryption.process.call',
|
|
||||||
+ Mock(return_value=([], [''], 0)))
|
|
||||||
+ def test_set_dmcrypt_no_workqueue_index_error(self):
|
|
||||||
+ with pytest.raises(RuntimeError):
|
|
||||||
+ encryption.set_dmcrypt_no_workqueue()
|
|
||||||
+
|
|
||||||
|
|
||||||
class TestGetKeySize(object):
|
|
||||||
def test_get_size_from_conf_default(self, conf_ceph_stub):
|
|
||||||
diff --git a/src/ceph-volume/ceph_volume/util/encryption.py b/src/ceph-volume/ceph_volume/util/encryption.py
|
|
||||||
index 09f1cccf384..15a31315645 100644
|
|
||||||
--- a/src/ceph-volume/ceph_volume/util/encryption.py
|
|
||||||
+++ b/src/ceph-volume/ceph_volume/util/encryption.py
|
|
||||||
@@ -41,13 +41,13 @@ def set_dmcrypt_no_workqueue(target_version: str = '2.3.4') -> None:
|
|
||||||
|
|
||||||
# This regex extracts the version number from
|
|
||||||
# the `cryptsetup --version` output
|
|
||||||
- pattern: str = r'\b\d+(\.\d+)*\b'
|
|
||||||
+ pattern: str = r'(\d+\.?)+'
|
|
||||||
|
|
||||||
if rc:
|
|
||||||
raise RuntimeError(f"Can't retrieve cryptsetup version: {err}")
|
|
||||||
|
|
||||||
try:
|
|
||||||
- cryptsetup_version = re.match(pattern, out[0])
|
|
||||||
+ cryptsetup_version = re.search(pattern, out[0])
|
|
||||||
|
|
||||||
if cryptsetup_version is None:
|
|
||||||
_output: str = "\n".join(out)
|
|
@ -12,6 +12,4 @@
|
|||||||
0012-ceph-osd-postinst-do-not-always-reload-all-sysctl-se.patch
|
0012-ceph-osd-postinst-do-not-always-reload-all-sysctl-se.patch
|
||||||
0013-debian-recursively-adjust-permissions-of-var-lib-cep.patch
|
0013-debian-recursively-adjust-permissions-of-var-lib-cep.patch
|
||||||
0014-ceph-crash-change-order-of-client-names.patch
|
0014-ceph-crash-change-order-of-client-names.patch
|
||||||
0015-ceph-volume-fix-set_dmcrypt_no_workqueue.patch
|
|
||||||
0016-ceph-volume-fix-regex-usage-in-set_dmcrypt_no_workqu.patch
|
|
||||||
0017-debian-pkg-record-python3-packaging-dependency-for-c.patch
|
0017-debian-pkg-record-python3-packaging-dependency-for-c.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user