We're relying on keystoneauth's get_api_major_version() method to fetch Octavia API version. Seems like it's broken, at least with recent openstacksdk's:
Python 2.7.5 (default, Jun 11 2019, 14:33:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import openstack
>>> c = openstack.connect(cloud='envvars')
>>> c.load_balancer.get_api_major_version()
(2, 0)
>>> c.load_balancer.get_all_version_data()
{u'regionOne': {u'public': {u'load-balancer': [{'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.0', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.1', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.2', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.3', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.4', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.5', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.6', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.7', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.8', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.9', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.10', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.11', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'SUPPORTED', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.12', 'raw_status': u'SUPPORTED', 'not_before': None}, {'status': u'CURRENT', 'min_microversion': None, 'url': u'http://10.0.0.101:9876/v2', 'max_microversion': None, 'collection': None, 'next_min_version': None, 'version': '2.13', 'raw_status': u'CURRENT', 'not_before': None}]}}}
We should use get_all_version_data() instead and parse it on our own.
Fix proposed to branch: master /review. opendev. org/700019
Review: https:/