Skip to content

Commit 3117c53

Browse files
committed
ResourceField class should allow defining any keyword
add unit tests
1 parent 6c90fe3 commit 3117c53

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

kubernetes/base/dynamic/resource.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ def __init__(self, client, instance):
298298

299299
def __deserialize(self, field):
300300
if isinstance(field, dict):
301-
return ResourceField(**{
301+
return ResourceField(params={
302302
k: self.__deserialize(v) for k, v in field.items()
303303
})
304304
elif isinstance(field, (list, tuple)):
@@ -359,8 +359,8 @@ class ResourceField(object):
359359
attributes to be accessed with '.' notation
360360
"""
361361

362-
def __init__(self, **kwargs):
363-
self.__dict__.update(kwargs)
362+
def __init__(self, params):
363+
self.__dict__.update(**params)
364364

365365
def __repr__(self):
366366
return pformat(self.__dict__)

kubernetes/base/dynamic/test_client.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,12 @@ def test_resource_field(self):
558558
"""`ResourceField` is a special type which overwrites `__getattr__` method to return `None`
559559
when a non-existent attribute was accessed. which means it can pass any `hasattr(...)` tests.
560560
"""
561-
res = ResourceField(foo='bar')
561+
params = {
562+
"foo": "bar",
563+
"self": True
564+
}
565+
res = ResourceField(params=params)
566+
self.assertEqual(res["foo"], params["foo"])
567+
self.assertEqual(res["self"], params["self"])
562568
# method will return original object when it doesn't know how to proceed
563569
self.assertEqual(self.client.serialize_body(res), res)

0 commit comments

Comments
 (0)