c0455e9b62
When Octavia stopped needing neutron-lbaasv2 devstack plugin we tried it
out with success but we still kept usage the plugin so that our devstack
plugin could target older than pike.
Unfortunately during this time the proxy became unnecessary and not well
maintained and due to our gates still using it, when we tried queens
with the supported proxy less Octavia we realized that it fails.
This patch addresses it by making the existing neutronclient usage point
to the load-balancer endpoint when the proxy is not in place.
Change-Id: Iafd74f23bdf336a4d78ba4759f702cf989c8bc30
Closes-Bug: #1763045
Signed-off-by: Antoni Segura Puimedon <antonisp@celebdor.com>
(cherry picked from commit 285456a672
)
71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
# Copyright (c) 2016 Mirantis, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from kuryr.lib import utils
|
|
|
|
from kuryr_kubernetes import config
|
|
from kuryr_kubernetes import k8s_client
|
|
from neutronclient import client as n_client
|
|
|
|
_clients = {}
|
|
_NEUTRON_CLIENT = 'neutron-client'
|
|
_LB_CLIENT = 'load-balancer-client'
|
|
_KUBERNETES_CLIENT = 'kubernetes-client'
|
|
|
|
|
|
def get_neutron_client():
|
|
return _clients[_NEUTRON_CLIENT]
|
|
|
|
|
|
def get_loadbalancer_client():
|
|
return _clients[_LB_CLIENT]
|
|
|
|
|
|
def get_kubernetes_client():
|
|
return _clients[_KUBERNETES_CLIENT]
|
|
|
|
|
|
def setup_clients():
|
|
setup_neutron_client()
|
|
setup_loadbalancer_client()
|
|
setup_kubernetes_client()
|
|
|
|
|
|
def setup_neutron_client():
|
|
_clients[_NEUTRON_CLIENT] = utils.get_neutron_client()
|
|
|
|
|
|
def setup_loadbalancer_client():
|
|
neutron_client = get_neutron_client()
|
|
if any(ext['alias'] == 'lbaasv2' for
|
|
ext in neutron_client.list_extensions()['extensions']):
|
|
_clients[_LB_CLIENT] = neutron_client
|
|
else:
|
|
# Since Octavia is lbaasv2 API compatible (A superset of it) we'll just
|
|
# wire an extra neutron client instance to point to it
|
|
lbaas_client = utils.get_neutron_client()
|
|
conf_group = utils.kuryr_config.neutron_group.name
|
|
auth_plugin = utils.get_auth_plugin(conf_group)
|
|
octo_httpclient = n_client.construct_http_client(
|
|
session=utils.get_keystone_session(conf_group, auth_plugin),
|
|
service_type='load-balancer')
|
|
lbaas_client.httpclient = octo_httpclient
|
|
_clients[_LB_CLIENT] = lbaas_client
|
|
|
|
|
|
def setup_kubernetes_client():
|
|
_clients[_KUBERNETES_CLIENT] = k8s_client.K8sClient(
|
|
config.CONF.kubernetes.api_root)
|