Add support for HAProxy L7 checks
This change adds the haproxy options if defined by the charm class to enable HTTP checks to the HAProxy configuration, instead of the default TCP connection checks. options.ssl check if the environment is using http or https mode. We disable certificate verification because we are only interested in the health of the service. Fix for tox4 compability Closes-Bug: #1880610 Change-Id: Ie091fdfe560b6a060f0c29c6b92a99f5e564eddf
This commit is contained in:
parent
8b31ef19e4
commit
1c9e662d78
18
pip.sh
18
pip.sh
@ -1,18 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# This file is managed centrally by release-tools and should not be modified
|
|
||||||
# within individual charm repos. See the 'global' dir contents for available
|
|
||||||
# choices of tox.ini for OpenStack Charms:
|
|
||||||
# https://github.com/openstack-charmers/release-tools
|
|
||||||
#
|
|
||||||
# setuptools 58.0 dropped the support for use_2to3=true which is needed to
|
|
||||||
# install blessings (an indirect dependency of charm-tools).
|
|
||||||
#
|
|
||||||
# More details on the beahvior of tox and virtualenv creation can be found at
|
|
||||||
# https://github.com/tox-dev/tox/issues/448
|
|
||||||
#
|
|
||||||
# This script is wrapper to force the use of the pinned versions early in the
|
|
||||||
# process when the virtualenv was created and upgraded before installing the
|
|
||||||
# depedencies declared in the target.
|
|
||||||
pip install 'pip<20.3' 'setuptools<50.0.0'
|
|
||||||
pip "$@"
|
|
@ -72,8 +72,17 @@ frontend tcp-in_{{ service }}
|
|||||||
{% for frontend in cluster.cluster_hosts -%}
|
{% for frontend in cluster.cluster_hosts -%}
|
||||||
backend {{ service }}_{{ frontend }}
|
backend {{ service }}_{{ frontend }}
|
||||||
balance leastconn
|
balance leastconn
|
||||||
|
{% if options.haproxy_healthcheck -%}
|
||||||
|
{% for key, val in options.haproxy_healthcheck.items() -%}
|
||||||
|
{{ key }} {{ val }}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endif -%}
|
||||||
{% for unit, address in cluster.cluster_hosts[frontend]['backends'].items() -%}
|
{% for unit, address in cluster.cluster_hosts[frontend]['backends'].items() -%}
|
||||||
|
{% if options.ssl -%}
|
||||||
|
server {{ unit }} {{ address }}:{{ ports[1] }} check check-ssl verify none
|
||||||
|
{% else -%}
|
||||||
server {{ unit }} {{ address }}:{{ ports[1] }} check
|
server {{ unit }} {{ address }}:{{ ports[1] }} check
|
||||||
|
{% endif -%}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
|
45
tox.ini
45
tox.ini
@ -1,5 +1,4 @@
|
|||||||
[tox]
|
[tox]
|
||||||
skipsdist = True
|
|
||||||
envlist = pep8
|
envlist = pep8
|
||||||
toxworkdir = /tmp/tox
|
toxworkdir = /tmp/tox
|
||||||
# NOTE(beisner): Avoid build/test env pollution by not enabling sitepackages.
|
# NOTE(beisner): Avoid build/test env pollution by not enabling sitepackages.
|
||||||
@ -7,31 +6,19 @@ sitepackages = False
|
|||||||
# NOTE(beisner): Avoid false positives by not skipping missing interpreters.
|
# NOTE(beisner): Avoid false positives by not skipping missing interpreters.
|
||||||
skip_missing_interpreters = False
|
skip_missing_interpreters = False
|
||||||
|
|
||||||
# NOTES:
|
|
||||||
# * We avoid the new dependency resolver by pinning pip < 20.3, see
|
|
||||||
# https://github.com/pypa/pip/issues/9187
|
|
||||||
# * Pinning dependencies requires tox >= 3.2.0, see
|
|
||||||
# https://tox.readthedocs.io/en/latest/config.html#conf-requires
|
|
||||||
# * It is also necessary to pin virtualenv as a newer virtualenv would still
|
|
||||||
# lead to fetching the latest pip in the func* tox targets, see
|
|
||||||
# https://stackoverflow.com/a/38133283
|
|
||||||
requires =
|
|
||||||
pip < 20.3
|
|
||||||
virtualenv < 20.0
|
|
||||||
setuptools<50.0.0
|
|
||||||
|
|
||||||
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
|
|
||||||
minversion = 3.18.0
|
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
|
# We use tox mainly for virtual environment management for test requirements
|
||||||
|
# and do not install the charm code as a Python package into that environment.
|
||||||
|
# Ref: https://tox.wiki/en/latest/config.html#skip_install
|
||||||
|
skip_install = True
|
||||||
basepython = python3
|
basepython = python3
|
||||||
setenv = VIRTUAL_ENV={envdir}
|
setenv = VIRTUAL_ENV={envdir}
|
||||||
PYTHONHASHSEED=0
|
PYTHONHASHSEED=0
|
||||||
TERM=linux
|
TERM=linux
|
||||||
JUJU_REPOSITORY={envdir}/tmp/build
|
JUJU_REPOSITORY={envdir}/tmp/build
|
||||||
passenv = http_proxy https_proxy
|
passenv =
|
||||||
install_command =
|
http_proxy
|
||||||
{toxinidir}/pip.sh install {opts} {packages}
|
https_proxy
|
||||||
deps =
|
deps =
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
whitelist_externals = /bin/true /bin/echo /bin/mkdir /bin/ln
|
whitelist_externals = /bin/true /bin/echo /bin/mkdir /bin/ln
|
||||||
@ -48,24 +35,14 @@ commands =
|
|||||||
charm-build --log-level DEBUG -o {envdir}/tmp/build/builds .
|
charm-build --log-level DEBUG -o {envdir}/tmp/build/builds .
|
||||||
/bin/ln -s {envdir}/tmp/build/builds/ {envdir}/tmp/build/trusty
|
/bin/ln -s {envdir}/tmp/build/builds/ {envdir}/tmp/build/trusty
|
||||||
/bin/ln -s {envdir}/tmp/build {toxinidir}/build
|
/bin/ln -s {envdir}/tmp/build {toxinidir}/build
|
||||||
|
allowlist_externals =
|
||||||
|
/bin/*
|
||||||
|
|
||||||
[testenv:venv]
|
[testenv:venv]
|
||||||
commands = {posargs}
|
commands = {posargs}
|
||||||
|
|
||||||
[testenv:py34]
|
[testenv:py3]
|
||||||
basepython = python3.4
|
basepython = python3
|
||||||
deps = -r{toxinidir}/test-requirements.txt
|
|
||||||
# TODO: Need to write unit tests then remove the following command.
|
|
||||||
commands = /bin/true
|
|
||||||
|
|
||||||
[testenv:py35]
|
|
||||||
basepython = python3.5
|
|
||||||
deps = -r{toxinidir}/test-requirements.txt
|
|
||||||
# TODO: Need to write unit tests then remove the following command.
|
|
||||||
commands = /bin/true
|
|
||||||
|
|
||||||
[testenv:py36]
|
|
||||||
basepython = python3.6
|
|
||||||
deps = -r{toxinidir}/test-requirements.txt
|
deps = -r{toxinidir}/test-requirements.txt
|
||||||
# TODO: Need to write unit tests then remove the following command.
|
# TODO: Need to write unit tests then remove the following command.
|
||||||
commands = /bin/true
|
commands = /bin/true
|
||||||
|
Loading…
Reference in New Issue
Block a user