From 00914e03e8982163b2c6d24c255e535b7a280577 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 29 Oct 2025 21:02:46 +0000 Subject: [PATCH] python-common/.../service_spec: implement ServiceSpec.__getnewargs__ to allow unpickle to work correctly Signed-off-by: Samuel Just (cherry picked from commit d4a1f2b117a7eeb966ba8072f38d291c00e4a5e5) --- src/python-common/ceph/deployment/service_spec.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 04080241215..d81734fbf50 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -866,6 +866,14 @@ class ServiceSpec(object): sub_cls: Any = cls._cls(service_type) return object.__new__(sub_cls) + def __getnewargs__(self): + """ + Pickle will pass the return of this function to __new__ upon + unpickle. We need to ensure it gets service_type in order + to get the right subtype. + """ + return (self.service_type,) + def __init__(self, service_type: str, service_id: Optional[str] = None, -- 2.47.3