From 26f8b67fbd64f1eafcbb63e9824d87827d4bb14d Mon Sep 17 00:00:00 2001 From: Trishna Guha Date: Tue, 17 Jul 2018 06:09:27 +0530 Subject: [PATCH] nxos bugfix cherry-pick 2.6 (#42724) * Add get_capabilities in nxapi module_utils (#42688) Signed-off-by: Trishna Guha (cherry picked from commit d5e9653c9645f615a613a59093243c35271917aa) * add changelog Signed-off-by: Trishna Guha --- ...s_module_utils_nxapi_get_capabilities.yaml | 2 ++ lib/ansible/module_utils/network/nxos/nxos.py | 28 ++++++++++++++++++- .../modules/network/nxos/nxos_config.py | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/nxos_module_utils_nxapi_get_capabilities.yaml diff --git a/changelogs/fragments/nxos_module_utils_nxapi_get_capabilities.yaml b/changelogs/fragments/nxos_module_utils_nxapi_get_capabilities.yaml new file mode 100644 index 00000000000..29673c8b94e --- /dev/null +++ b/changelogs/fragments/nxos_module_utils_nxapi_get_capabilities.yaml @@ -0,0 +1,2 @@ +bugfixes: +- get_capabilities in nxapi module_utils should not return empty dictionary (https://github.com/ansible/ansible/pull/42688). diff --git a/lib/ansible/module_utils/network/nxos/nxos.py b/lib/ansible/module_utils/network/nxos/nxos.py index 25dd3d6c093..ce5370c501b 100644 --- a/lib/ansible/module_utils/network/nxos/nxos.py +++ b/lib/ansible/module_utils/network/nxos/nxos.py @@ -378,8 +378,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 e52ada0f944..4eba979015e 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: