Juniper / py-junos-eznc

Python library for Junos automation
https://www.juniper.net/documentation/en_US/junos-pyez/information-products/pathway-pages/junos-pyez-developer-guide.html
Apache License 2.0
670 stars 344 forks source link

Gather facts returns misquoted data for version_info on QFX #472

Closed codyrat closed 8 years ago

codyrat commented 8 years ago

Device.open(gather_facts=True) returns misquoted 'version_info' data for QFX with VCF.

version_info value is not correctly quoted and causes errors on python/flask data-handling.

issue: 'version_info': junos.version_info(major=(14, 1), type=X, minor=(53, 'D', 30), build=3),

corrected: 'version_info': 'junos.version_info(major=(14, 1), type=X, minor=(53, D, 30), build=3)',

Original data: {'version_RE7': '14.1X53-D30.3', 'version_RE6': '14.1X53-D30.3', 'version_RE5': '14.1X53-D30.3', 'version_RE4': '14.1X53-D30.3', 'version_RE3': '14.1X53-D30.3', 'version_RE2': '14.1X53-D30.3', 'version_RE1': '14.1X53-D30.3', 'version_RE0': '14.1X53-D30.3', '2RE': True, 'serialnumber': 'VGXXXXXXXXXX', 'domain': 'xx.xx.xx', 'version_RE9': '14.1X53-D30.3', 'version_RE8': '14.1X53-D30.3', 'HOME': '/var/home/XXXXXX', 'hostname': 'xxxxxxxxxx', 'version': '14.1X53-D30.3', 'master': 'RE0', 'personality': 'SWITCH', 'version_info': junos.version_info(major=(14, 1), type=X, minor=(53, 'D', 30), build=3), 'vc_mode': 'Enabled', 'vc_capable': True, 'ifd_style': 'SWITCH', 'RE2': {'status': 'OK', 'last_reboot_reason': '0x4000:VJUNOS reboot ', 'model': 'QFX Routing Engine', 'up_time': 'xx days, 23 hours, 28 minutes, 31 seconds', 'mastership_state': 'backup'}, 'RE0': {'status': 'OK', 'last_reboot_reason': '0x4000:VJUNOS reboot ', 'model': 'QFX Routing Engine', 'up_time': 'xx days, 23 hours, 28 minutes, 28 seconds', 'mastership_state': 'master'}, 'fqdn': 'xx.xx.xx.xx', 'switch_style': 'VLAN', 'model': 'Virtual Chassis'}

ganeshrn commented 8 years ago

@codyrat This is expected behavior. Value of 'version_info' key is object of class 'version_info'. You need to handle this accordingly in your environment.

>>> type(dev.facts['version_info'])
<class 'jnpr.junos.facts.swver.version_info'>
>>> ver_info = dev.facts['version_info']
>>> ver_info.major
(14, 1)