Kuryr detecting Octavia version incorrectly

Bug #1857023 reported by Michal Dulko
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
kuryr-kubernetes
Fix Released
High
Luis Tomas Bolivar

Bug Description

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.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kuryr-kubernetes (master)

Fix proposed to branch: master
Review: https://review.opendev.org/700019

Changed in kuryr-kubernetes:
assignee: Michal Dulko (michal-dulko-f) → Luis Tomas Bolivar (ltomasbo)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kuryr-kubernetes (master)

Reviewed: https://review.opendev.org/700019
Committed: https://git.openstack.org/cgit/openstack/kuryr-kubernetes/commit/?id=c581a73be3a8d3d0cb6e7bc54162531de83372bf
Submitter: Zuul
Branch: master

commit c581a73be3a8d3d0cb6e7bc54162531de83372bf
Author: Michał Dulko <email address hidden>
Date: Thu Dec 19 17:26:08 2019 +0100

    Fix Octavia version detection

    For some reason openstacksdk/keystoneauth1 get_api_major_version()
    started to return the minimum version for the endpoint. Also trying to
    specify min_version makes the call to fail with string parsing
    exception. To fix it this commit uses get_all_version_data() instead and
    parses the results internally in Kuryr.

    Change-Id: I19823fa2164e6565ee6560706585abec1a88f16d
    Closes-Bug: 1857023

Changed in kuryr-kubernetes:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kuryr-kubernetes (stable/train)

Fix proposed to branch: stable/train
Review: https://review.opendev.org/701402

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kuryr-kubernetes (stable/train)

Reviewed: https://review.opendev.org/701402
Committed: https://git.openstack.org/cgit/openstack/kuryr-kubernetes/commit/?id=91fc0afa8f0c6630775b985128c3ba72e52992c0
Submitter: Zuul
Branch: stable/train

commit 91fc0afa8f0c6630775b985128c3ba72e52992c0
Author: Michał Dulko <email address hidden>
Date: Thu Dec 19 17:26:08 2019 +0100

    Fix Octavia version detection

    For some reason openstacksdk/keystoneauth1 get_api_major_version()
    started to return the minimum version for the endpoint. Also trying to
    specify min_version makes the call to fail with string parsing
    exception. To fix it this commit uses get_all_version_data() instead and
    parses the results internally in Kuryr.

    Change-Id: I19823fa2164e6565ee6560706585abec1a88f16d
    Closes-Bug: 1857023
    (cherry picked from commit c581a73be3a8d3d0cb6e7bc54162531de83372bf)

tags: added: in-stable-train
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.