From 3117c533b339a3819039a97a30fb7a55dace1eaf Mon Sep 17 00:00:00 2001 From: abikouo Date: Fri, 4 Mar 2022 17:56:30 +0100 Subject: [PATCH] ResourceField class should allow defining any keyword add unit tests --- kubernetes/base/dynamic/resource.py | 6 +++--- kubernetes/base/dynamic/test_client.py | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/kubernetes/base/dynamic/resource.py b/kubernetes/base/dynamic/resource.py index 6dac1d870..6708f00d4 100644 --- a/kubernetes/base/dynamic/resource.py +++ b/kubernetes/base/dynamic/resource.py @@ -298,7 +298,7 @@ class ResourceInstance(object): def __deserialize(self, field): if isinstance(field, dict): - return ResourceField(**{ + return ResourceField(params={ k: self.__deserialize(v) for k, v in field.items() }) elif isinstance(field, (list, tuple)): @@ -359,8 +359,8 @@ class ResourceField(object): attributes to be accessed with '.' notation """ - def __init__(self, **kwargs): - self.__dict__.update(kwargs) + def __init__(self, params): + self.__dict__.update(**params) def __repr__(self): return pformat(self.__dict__) diff --git a/kubernetes/base/dynamic/test_client.py b/kubernetes/base/dynamic/test_client.py index ce05c5094..f0ca26b54 100644 --- a/kubernetes/base/dynamic/test_client.py +++ b/kubernetes/base/dynamic/test_client.py @@ -558,6 +558,12 @@ class TestDynamicClientSerialization(unittest.TestCase): """`ResourceField` is a special type which overwrites `__getattr__` method to return `None` when a non-existent attribute was accessed. which means it can pass any `hasattr(...)` tests. """ - res = ResourceField(foo='bar') + params = { + "foo": "bar", + "self": True + } + 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)