Fix bug in data returns for some queries used by facts module (#52832)

* Fix bug in data returns for some queries used by facts module

* Add additional query to return all servers (up to 5000)

* Fix key checking in rest_api
pull/54401/head
David Soper 6 years ago committed by John R Barker
parent be293fbe50
commit e8cddfd452

@ -190,8 +190,9 @@ class IntersightModule():
except Exception as e: except Exception as e:
self.module.fail_json(msg="API error: %s " % str(e)) self.module.fail_json(msg="API error: %s " % str(e))
if response.length > 0: response_data = response.read()
return json.loads(response.read()) if len(response_data) > 0:
return json.loads(response_data)
return {} return {}
def intersight_call(self, http_method="", resource_path="", query_params=None, body=None, moid=None, name=None): def intersight_call(self, http_method="", resource_path="", query_params=None, body=None, moid=None, name=None):

@ -85,6 +85,7 @@ def get_servers(module, intersight):
'resource_path': '/compute/PhysicalSummaries', 'resource_path': '/compute/PhysicalSummaries',
'query_params': { 'query_params': {
'$filter': query_str, '$filter': query_str,
'$top': 5000
} }
} }
response_dict = intersight.call_api(**options) response_dict = intersight.call_api(**options)

@ -150,7 +150,7 @@ def get_resource(intersight):
def compare_values(expected, actual): def compare_values(expected, actual):
try: try:
for (key, value) in iteritems(expected): for (key, value) in iteritems(expected):
if re.search(r'P(ass)?w(or)?d', key) or not actual.get(key): if re.search(r'P(ass)?w(or)?d', key) or key not in actual:
# do not compare any password related attributes or attributes that are not in the actual resource # do not compare any password related attributes or attributes that are not in the actual resource
continue continue
if not compare_values(value, actual[key]): if not compare_values(value, actual[key]):
@ -184,8 +184,10 @@ def configure_resource(intersight, moid):
'resource_path': intersight.module.params['resource_path'], 'resource_path': intersight.module.params['resource_path'],
'body': intersight.module.params['api_body'], 'body': intersight.module.params['api_body'],
} }
intersight.call_api(**options) resp = intersight.call_api(**options)
intersight.result['api_response'] = get_resource(intersight) if 'Moid' not in resp:
resp = get_resource(intersight)
intersight.result['api_response'] = resp
intersight.result['changed'] = True intersight.result['changed'] = True

Loading…
Cancel
Save