Skip to content

Commit

Permalink
ovirt: Resolve also list of hrefs
Browse files Browse the repository at this point in the history
  • Loading branch information
machacekondra committed Jun 3, 2019
1 parent 0c66a5d commit 20e7859
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
3 changes: 3 additions & 0 deletions changelogs/fragments/ovirt_fetch_also_list_of_hrefs.yaml
@@ -0,0 +1,3 @@
---
minor_changes:
- When using `fetch_nested` fetch also list of href, instead only single object hrefs.
31 changes: 18 additions & 13 deletions lib/ansible/module_utils/ovirt.py
Expand Up @@ -61,6 +61,20 @@ def get_dict_of_struct(struct, connection=None, fetch_nested=False, attributes=N
"""
res = {}

def resolve_href(value):
# Fetch nested values of struct:
try:
value = connection.follow_link(value)
except sdk.Error:
value = None
nested_obj = dict(
(attr, convert_value(getattr(value, attr)))
for attr in attributes if getattr(value, attr, None)
)
nested_obj['id'] = getattr(value, 'id', None)
nested_obj['href'] = getattr(value, 'href', None)
return nested_obj

def remove_underscore(val):
if val.startswith('_'):
val = val[1:]
Expand All @@ -73,19 +87,8 @@ def convert_value(value):
if isinstance(value, sdk.Struct):
if not fetch_nested or not value.href:
return get_dict_of_struct(value)
return resolve_href(value)

# Fetch nested values of struct:
try:
value = connection.follow_link(value)
except sdk.Error:
value = None
nested_obj = dict(
(attr, convert_value(getattr(value, attr)))
for attr in attributes if getattr(value, attr, None)
)
nested_obj['id'] = getattr(value, 'id', None)
nested_obj['href'] = getattr(value, 'href', None)
return nested_obj
elif isinstance(value, Enum) or isinstance(value, datetime):
return str(value)
elif isinstance(value, list) or isinstance(value, sdk.List):
Expand All @@ -99,7 +102,9 @@ def convert_value(value):
ret = []
for i in value:
if isinstance(i, sdk.Struct):
if not nested:
if fetch_nested and i.href:
ret.append(resolve_href(i))
elif not nested:
ret.append(get_dict_of_struct(i))
else:
nested_obj = dict(
Expand Down

0 comments on commit 20e7859

Please sign in to comment.