From d5e9653c9645f615a613a59093243c35271917aa Mon Sep 17 00:00:00 2001 From: Trishna Guha Date: Fri, 13 Jul 2018 11:11:35 +0530 Subject: [PATCH] Add get_capabilities in nxapi module_utils (#42688) Signed-off-by: Trishna Guha --- lib/ansible/module_utils/network/nxos/nxos.py | 28 ++++++++++++++++++- .../modules/network/nxos/nxos_config.py | 2 +- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/ansible/module_utils/network/nxos/nxos.py b/lib/ansible/module_utils/network/nxos/nxos.py index cebde4853a..c088716398 100644 --- a/lib/ansible/module_utils/network/nxos/nxos.py +++ b/lib/ansible/module_utils/network/nxos/nxos.py @@ -382,8 +382,34 @@ class Nxapi: else: return [] + def get_device_info(self): + device_info = {} + + device_info['network_os'] = 'nxos' + reply = self.run_commands({'command': 'show version', 'output': 'json'}) + data = reply[0] + + platform_reply = self.run_commands({'command': 'show inventory', 'output': 'json'}) + platform_info = platform_reply[0] + + device_info['network_os_version'] = data.get('sys_ver_str') or data.get('kickstart_ver_str') + device_info['network_os_model'] = data['chassis_id'] + device_info['network_os_hostname'] = data['host_name'] + device_info['network_os_image'] = data.get('isan_file_name') or data.get('kick_file_name') + + if platform_info: + inventory_table = platform_info['TABLE_inv']['ROW_inv'] + for info in inventory_table: + if 'Chassis' in info['name']: + device_info['network_os_platform'] = info['productid'] + + return device_info + def get_capabilities(self): - return {} + result = {} + result['device_info'] = self.get_device_info() + result['network_api'] = 'nxapi' + return result def is_json(cmd): diff --git a/lib/ansible/modules/network/nxos/nxos_config.py b/lib/ansible/modules/network/nxos/nxos_config.py index 7638c1e950..448f7cbc1e 100644 --- a/lib/ansible/modules/network/nxos/nxos_config.py +++ b/lib/ansible/modules/network/nxos/nxos_config.py @@ -393,7 +393,7 @@ def main(): try: info = get_capabilities(module) - api = info.get('network_api', 'nxapi') + api = info.get('network_api') device_info = info.get('device_info', {}) os_platform = device_info.get('network_os_platform', '') except ConnectionError: