Skip to content

Commit 0024aa3

Browse files
Merge pull request #65 from jupierce/list_model
Fix ListModel conversion to primitive
2 parents 8e05ea1 + 92325aa commit 0024aa3

4 files changed

Lines changed: 38 additions & 2 deletions

File tree

ansible/rebuild_module.digest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5eb4a318eecb23a689b2ce1239f9f2d9 -
1+
a06864db406247ccbde152f8585ef916 -

ansible/roles/openshift_client_python/library/openshift_client_python.py

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/openshift/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ def _primitive(self):
211211
"""
212212
l = []
213213
for e in self:
214+
if isinstance(e, Model) or isinstance(e, ListModel):
215+
e = e._primitive()
214216
l.append(e)
215217
return l
216218

packages/openshift/test_model.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,40 @@ def test_falsey(self):
2323
if len(miss) != 0:
2424
self.fail("Expected zero length")
2525

26+
def test_primitive(self):
27+
d = {
28+
"a": 1,
29+
"b": 2,
30+
"map1": {
31+
"c": 3,
32+
"d": 4
33+
},
34+
"list1": [
35+
5,
36+
6,
37+
7,
38+
],
39+
"list2": [
40+
{
41+
"e": 5,
42+
"f": 6
43+
},
44+
{
45+
"g": 5,
46+
"h": 6
47+
},
48+
],
49+
}
50+
m = Model(dict_to_model=d)
51+
d2 = m._primitive()
52+
if d2 != d:
53+
self.fail('Primitive did not restore to expected state')
54+
55+
self.assertTrue(isinstance(m, Model))
56+
self.assertFalse(isinstance(d2['map1'], Model))
57+
self.assertFalse(isinstance(d2['list2'], ListModel))
58+
self.assertFalse(isinstance(d2['list2'][0], Model))
59+
2660
def test_access(self):
2761
m = Model()
2862
m.metadata = {

0 commit comments

Comments
 (0)