From 2630bfaba7260af3baea60db898a7b7c59c223a6 Mon Sep 17 00:00:00 2001 From: Felix Matouschek Date: Mon, 12 Sep 2022 16:36:39 +0200 Subject: [PATCH] Add to_dict method to ResourceField This allows to recursively convert ResourceFields to dicts. Signed-off-by: Felix Matouschek --- kubernetes/base/dynamic/resource.py | 12 ++++++++++++ kubernetes/base/dynamic/test_client.py | 3 +-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/kubernetes/base/dynamic/resource.py b/kubernetes/base/dynamic/resource.py index ca923a3e7..9a4052c2d 100644 --- a/kubernetes/base/dynamic/resource.py +++ b/kubernetes/base/dynamic/resource.py @@ -389,3 +389,15 @@ class ResourceField(object): def __iter__(self): for k, v in self.__dict__.items(): yield (k, v) + + def to_dict(self): + return self.__serialize(self) + + def __serialize(self, field): + if isinstance(field, ResourceField): + return { + k: self.__serialize(v) for k, v in field.__dict__.items() + } + if isinstance(field, (list, tuple)): + return [self.__serialize(item) for item in field] + return field diff --git a/kubernetes/base/dynamic/test_client.py b/kubernetes/base/dynamic/test_client.py index 1c9fa6d94..2c3155941 100644 --- a/kubernetes/base/dynamic/test_client.py +++ b/kubernetes/base/dynamic/test_client.py @@ -563,5 +563,4 @@ class TestDynamicClientSerialization(unittest.TestCase): res = ResourceField(params=params) self.assertEqual(res["foo"], params["foo"]) self.assertEqual(res["self"], params["self"]) - # method will return original object when it doesn't know how to proceed - self.assertEqual(self.client.serialize_body(res), res) + self.assertEqual(self.client.serialize_body(res), params)