fdd964494a
This commit makes two bashate rules E005 and E042 treat as error and
ignores E006. It is difficult to keep E006 rule because bash scripts
tend to be long naturally. Both E005 and E042 are good to be errors
since it should be safer.
These additions can be seen in devstack[0] too.
E005: file does not begin with #! or have a .sh prefix
E006: check for lines longer than 79 columns
E042: local declaration hides errors
[0] 0fc6b2c5a8/tox.ini (L35)
Change-Id: I56c017569aa8660648764502cce5adfe2e946a58
93 lines
4.5 KiB
Bash
Executable File
93 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
#
|
|
# NOTE(gmann): This script is used in 'devstack-tempest-ipv6' zuul job to verify that
|
|
# services are deployed on IPv6 properly or not. This will capture if any devstck or devstack
|
|
# plugins are missing the required setting to listen on IPv6 address. This is run as part of
|
|
# run phase of zuul job and before test run. Child job of 'devstack-tempest-ipv6'
|
|
# can expand the IPv6 verification specific to project by defining the new post-run script which
|
|
# will run along with this base script.
|
|
# If there are more common verification for IPv6 then we can always extent this script.
|
|
|
|
# Keep track of the DevStack directory
|
|
TOP_DIR=$(cd $(dirname "$0")/../../devstack && pwd)
|
|
source $TOP_DIR/stackrc
|
|
source $TOP_DIR/openrc admin admin
|
|
|
|
function verify_devstack_ipv6_setting {
|
|
local _service_host=''
|
|
_service_host=$(echo $SERVICE_HOST | tr -d [])
|
|
local _host_ipv6=''
|
|
_host_ipv6=$(echo $HOST_IPV6 | tr -d [])
|
|
local _service_listen_address=''
|
|
_service_listen_address=$(echo $SERVICE_LISTEN_ADDRESS | tr -d [])
|
|
local _service_local_host=''
|
|
_service_local_host=$(echo $SERVICE_LOCAL_HOST | tr -d [])
|
|
if [[ "$SERVICE_IP_VERSION" != 6 ]]; then
|
|
echo $SERVICE_IP_VERSION "SERVICE_IP_VERSION is not set to 6 which is must for devstack to deploy services with IPv6 address."
|
|
exit 1
|
|
fi
|
|
is_service_host_ipv6=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_service_host'"))')
|
|
if [[ "$is_service_host_ipv6" != "True" ]]; then
|
|
echo $SERVICE_HOST "SERVICE_HOST is not ipv6 which means devstack cannot deploy services on IPv6 address."
|
|
exit 1
|
|
fi
|
|
is_host_ipv6=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_host_ipv6'"))')
|
|
if [[ "$is_host_ipv6" != "True" ]]; then
|
|
echo $HOST_IPV6 "HOST_IPV6 is not ipv6 which means devstack cannot deploy services on IPv6 address."
|
|
exit 1
|
|
fi
|
|
is_service_listen_address=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_service_listen_address'"))')
|
|
if [[ "$is_service_listen_address" != "True" ]]; then
|
|
echo $SERVICE_LISTEN_ADDRESS "SERVICE_LISTEN_ADDRESS is not ipv6 which means devstack cannot deploy services on IPv6 address."
|
|
exit 1
|
|
fi
|
|
is_service_local_host=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_service_local_host'"))')
|
|
if [[ "$is_service_local_host" != "True" ]]; then
|
|
echo $SERVICE_LOCAL_HOST "SERVICE_LOCAL_HOST is not ipv6 which means devstack cannot deploy services on IPv6 address."
|
|
exit 1
|
|
fi
|
|
echo "Devstack is properly configured with IPv6"
|
|
echo "SERVICE_IP_VERSION: " $SERVICE_IP_VERSION "HOST_IPV6: " $HOST_IPV6 "SERVICE_HOST: " $SERVICE_HOST "SERVICE_LISTEN_ADDRESS: " $SERVICE_LISTEN_ADDRESS "SERVICE_LOCAL_HOST: " $SERVICE_LOCAL_HOST
|
|
}
|
|
|
|
function sanity_check_system_ipv6_enabled {
|
|
system_ipv6_enabled=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_ipv6_enabled())')
|
|
if [[ $system_ipv6_enabled != "True" ]]; then
|
|
echo "IPv6 is disabled in system"
|
|
exit 1
|
|
fi
|
|
echo "IPv6 is enabled in system"
|
|
}
|
|
|
|
function verify_service_listen_address_is_ipv6 {
|
|
local endpoints_verified=False
|
|
local all_ipv6=True
|
|
endpoints=$(openstack endpoint list -f value -c URL)
|
|
for endpoint in ${endpoints}; do
|
|
local endpoint_address=''
|
|
endpoint_address=$(echo "$endpoint" | awk -F/ '{print $3}' | awk -F] '{print $1}')
|
|
endpoint_address=$(echo $endpoint_address | tr -d [])
|
|
local is_endpoint_ipv6=''
|
|
is_endpoint_ipv6=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$endpoint_address'"))')
|
|
if [[ "$is_endpoint_ipv6" != "True" ]]; then
|
|
all_ipv6=False
|
|
echo $endpoint ": This is not ipv6 endpoint which means corresponding service is not listening on IPv6 address."
|
|
continue
|
|
fi
|
|
endpoints_verified=True
|
|
done
|
|
if [[ "$all_ipv6" == "False" ]] || [[ "$endpoints_verified" == "False" ]]; then
|
|
exit 1
|
|
fi
|
|
echo "All services deployed by devstack is on IPv6 endpoints"
|
|
echo $endpoints
|
|
}
|
|
|
|
#First thing to verify if system has IPv6 enabled or not
|
|
sanity_check_system_ipv6_enabled
|
|
#Verify whether devstack is configured properly with IPv6 setting
|
|
verify_devstack_ipv6_setting
|
|
#Get all registrfed endpoints by devstack in keystone and verify that each endpoints address is IPv6.
|
|
verify_service_listen_address_is_ipv6
|