Fix iosxr netconf plugin get device info (#65489)

* Fix iosxr netconf plugin get device info

Fixes https://github.com/ansible/ansible/issues/64634

*  Catch execption if the xml payload to get
   device info is not valid for iosxr version
   running on remote host.

* Fix CI issue
pull/65593/head
Ganesh Nalawade 5 years ago committed by GitHub
parent 9a81f5c3b7
commit 3919a891c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -55,22 +55,24 @@ class Netconf(NetconfBase):
]) ])
install_filter = build_xml('install', install_meta, opcode='filter') install_filter = build_xml('install', install_meta, opcode='filter')
try:
reply = self.get(install_filter) reply = self.get(install_filter)
ele_boot_variable = etree_find(reply, 'boot-variable/boot-variable') resp = remove_namespaces(re.sub(r'<\?xml version="1.0" encoding="UTF-8"\?>', '', reply))
if ele_boot_variable is not None: ele_boot_variable = etree_find(resp, 'boot-variable/boot-variable')
device_info['network_os_image'] = re.split('[:|,]', ele_boot_variable.text)[1] if ele_boot_variable is not None:
ele_package_name = etree_find(reply, 'package-name') device_info['network_os_image'] = re.split('[:|,]', ele_boot_variable.text)[1]
if ele_package_name is not None: ele_package_name = etree_find(reply, 'package-name')
device_info['network_os_package'] = ele_package_name.text if ele_package_name is not None:
device_info['network_os_version'] = re.split('-', ele_package_name.text)[-1] device_info['network_os_package'] = ele_package_name.text
device_info['network_os_version'] = re.split('-', ele_package_name.text)[-1]
hostname_filter = build_xml('host-names', opcode='filter')
hostname_filter = build_xml('host-names', opcode='filter')
reply = self.get(hostname_filter) reply = self.get(hostname_filter)
hostname_ele = etree_find(reply, 'host-name') resp = remove_namespaces(re.sub(r'<\?xml version="1.0" encoding="UTF-8"\?>', '', reply))
device_info['network_os_hostname'] = hostname_ele.text if hostname_ele is not None else None hostname_ele = etree_find(resp.strip(), 'host-name')
device_info['network_os_hostname'] = hostname_ele.text if hostname_ele is not None else None
except Exception as exc:
self._connection.queue_message('vvvv', 'Fail to retrieve device info %s' % exc)
return device_info return device_info
def get_capabilities(self): def get_capabilities(self):

Loading…
Cancel
Save