Add ontap version to gather facts (#51181)

* changes to clusteR

* Revert "changes to clusteR"

This reverts commit 33ee1b71e4bc8435fb315762a871f8c4cb6c5f80.

* Add FlexGroup to Gather facts:

* fix call error
This commit is contained in:
Chris Archibald
2019-02-13 07:33:38 -08:00
committed by John R Barker
parent 93237edcda
commit 7d55dc1a38
2 changed files with 155 additions and 6 deletions

View File

@@ -61,7 +61,8 @@ ontap_facts:
"storage_failover_info": {...},
"vserver_login_banner_info": {...},
"vserver_motd_info": {...},
"vserver_info": {...}
"vserver_info": {...},
"ontap_version": {...}
}'
'''
@@ -85,7 +86,7 @@ except ImportError:
HAS_NETAPP_LIB = netapp_utils.has_netapp_lib()
class NetAppGatherFacts(object):
class NetAppONTAPGatherFacts(object):
def __init__(self, module):
self.module = module
@@ -96,6 +97,16 @@ class NetAppGatherFacts(object):
else:
self.server = netapp_utils.setup_na_ontap_zapi(module=self.module)
def ontapi(self):
api_call = netapp_utils.zapi.NaElement('system-get-ontapi-version')
try:
results = self.server.invoke_successfully(api_call, enable_tunneling=False)
ontapi_version = results.get_child_content('minor-version')
return ontapi_version
except netapp_utils.zapi.NaApiError as e:
self.module.fail_json(msg="Error calling API %s: %s" %
(api_call.to_string(), to_native(e)), exception=traceback.format_exc())
def call_api(self, call, query=None):
api_call = netapp_utils.zapi.NaElement(call)
result = None
@@ -168,6 +179,9 @@ class NetAppGatherFacts(object):
return out
def get_all(self):
results = netapp_utils.get_cserver(self.server)
cserver = netapp_utils.setup_na_ontap_zapi(module=self.module, vserver=results)
netapp_utils.ems_log_event("na_ontap_gather_facts", cserver)
self.netapp_info['net_interface_info'] = self.get_generic_get_iter(
'net-interface-get-iter',
attribute='net-interface-info',
@@ -201,7 +215,7 @@ class NetAppGatherFacts(object):
self.netapp_info['volume_info'] = self.get_generic_get_iter(
'volume-get-iter',
attribute='volume-attributes',
field=('name', 'owning-vserver-name', 'aggr-name'),
field=('name', 'owning-vserver-name'),
query={'max-records': '1024'}
)
self.netapp_info['lun_info'] = self.get_generic_get_iter(
@@ -247,22 +261,32 @@ class NetAppGatherFacts(object):
query={'max-records': '1024'}
)
self.netapp_info['ontap_version'] = self.ontapi()
return self.netapp_info
# https://stackoverflow.com/questions/14962485/finding-a-key-recursively-in-a-dictionary
def _finditem(obj, key):
def __finditem(obj, key):
if key in obj:
return obj[key]
for dummy, v in obj.items():
if isinstance(v, dict):
item = _finditem(v, key)
item = __finditem(v, key)
if item is not None:
return item
return None
def _finditem(obj, key):
value = __finditem(obj, key)
if value is not None:
return value
raise KeyError(key)
def convert_keys(d):
out = {}
if isinstance(d, dict):
@@ -292,7 +316,7 @@ def main():
module.fail_json(msg="json missing")
state = module.params['state']
v = NetAppGatherFacts(module)
v = NetAppONTAPGatherFacts(module)
g = v.get_all()
result = {'state': state, 'changed': False}
module.exit_json(ansible_facts={'ontap_facts': g}, **result)