Skip to content

Commit eb1375a

Browse files
committed
update
1 parent d6bbb91 commit eb1375a

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

plugins/module_utils/validation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ def validate_dict(item, param_spec, param_name, invalid_params, module=None):
268268
"bool": validate_bool,
269269
"list": validate_list,
270270
"dict": validate_dict,
271+
"raw": lambda item, *_: item,
271272
}
272273

273274
validator = switch.get(data_type)
@@ -345,6 +346,7 @@ def validate_list_of_dicts(param_list, spec, module=None):
345346
"bool": validate_bool,
346347
"list": validate_list,
347348
"dict": validate_dict,
349+
"raw": lambda item, *_: item,
348350
}
349351

350352
validator = switch.get(data_type)

plugins/modules/reports_workflow_manager.py

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,18 +1729,7 @@ def validate_input(self):
17291729
"choices": ["MULTI_SELECT", "MULTI_SELECT_TREE", "SINGLE_SELECT_ARRAY", "TIME_RANGE"],
17301730
},
17311731
"value": {
1732-
"type": "list",
1733-
"elements": "dict",
1734-
"value": {"type": "str", "required": False},
1735-
"display_value": {"type": "str", "required": False},
1736-
"start_date_time": {"type": "str", "required": False},
1737-
"end_date_time": {"type": "str", "required": False},
1738-
"time_zone": {"type": "str", "required": False},
1739-
"time_range_option": {
1740-
"type": "str",
1741-
"required": False,
1742-
"choices": ["CUSTOM", "LAST_7_DAYS", "LAST_24_HOURS", "LAST_3_HOURS"]
1743-
},
1732+
"type": "raw",
17441733
"required": False
17451734
},
17461735
},
@@ -3603,6 +3592,40 @@ def _prepare_report_payload(self, report_entry):
36033592
if "viewName" in view_data:
36043593
view_data["name"] = view_data.pop("viewName")
36053594

3595+
if "view" in report_payload and "filters" in report_payload["view"]:
3596+
fixed_filters = []
3597+
for flt in report_payload["view"]["filters"]:
3598+
3599+
# ensure camelCase fields exist
3600+
flt["displayName"] = flt.get("displayName", flt.get("name"))
3601+
flt["type"] = flt.get("type", flt.get("filterType"))
3602+
3603+
# Normalize value entries
3604+
new_values = []
3605+
raw_values = flt.get("value", [])
3606+
3607+
# TIME_RANGE uses dict, not list → keep as is
3608+
if isinstance(raw_values, dict):
3609+
new_values = raw_values
3610+
else:
3611+
for v in raw_values:
3612+
if isinstance(v, dict):
3613+
new_values.append({
3614+
"value": v.get("value"),
3615+
"displayValue": v.get("displayValue", v.get("value"))
3616+
})
3617+
else:
3618+
# simple value like "Global"
3619+
new_values.append({
3620+
"value": v,
3621+
"displayValue": v
3622+
})
3623+
3624+
flt["value"] = new_values
3625+
3626+
fixed_filters.append(flt)
3627+
report_payload["view"]["filters"] = fixed_filters
3628+
36063629
self.log(
36073630
"Prepared API payload for report '{0}'".format(report_entry.get("name")),
36083631
"DEBUG"

0 commit comments

Comments
 (0)