Merge pull request #1738 from abikouo/fix_resource_field

fix issue when trying to build ResourceField with argument name 'self'
This commit is contained in:
Kubernetes Prow Robot 2022-03-28 09:39:23 -07:00 committed by GitHub
commit c66a39108b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -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__)

View File

@ -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)