Skip to content

Commit dc7b429

Browse files
committed
Fix running with SERVICE_IP_VERSION=6
- There are some locations where we need the raw IPv6 address instead of the url-quoted version enclosed in brackets. - Make nova-api-metadata service listen on IPv6 when we need that. - Use SERVICE_HOST instead of HOST_IP for TLS_IP. Change-Id: Id074be38ee95754e88b7219de7d9beb06f796fad Partial-Bug: 1656329
1 parent a6a36d1 commit dc7b429

9 files changed

Lines changed: 21 additions & 20 deletions

File tree

functions-common

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,11 @@ function is_ipv4_address {
20492049
fi
20502050
}
20512051

2052+
# Remove "[]" around urlquoted IPv6 addresses
2053+
function ipv6_unquote {
2054+
echo $1 | tr -d []
2055+
}
2056+
20522057
# Gracefully cp only if source file/dir exists
20532058
# cp_it source destination
20542059
function cp_it {

lib/cinder

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ CINDER_SERVICE_HOST=${CINDER_SERVICE_HOST:-$SERVICE_HOST}
6767
CINDER_SERVICE_PORT=${CINDER_SERVICE_PORT:-8776}
6868
CINDER_SERVICE_PORT_INT=${CINDER_SERVICE_PORT_INT:-18776}
6969
CINDER_SERVICE_PROTOCOL=${CINDER_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
70-
CINDER_SERVICE_LISTEN_ADDRESS=${CINDER_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
70+
CINDER_SERVICE_LISTEN_ADDRESS=${CINDER_SERVICE_LISTEN_ADDRESS:-$(ipv6_unquote $SERVICE_LISTEN_ADDRESS)}
7171

7272
# What type of LVM device should Cinder use for LVM backend
7373
# Defaults to auto, which will do thin provisioning if it's a fresh

lib/databases/mysql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ function configure_database_mysql {
9393

9494
# Change bind-address from localhost (127.0.0.1) to any (::) and
9595
# set default db type to InnoDB
96-
iniset -sudo $my_conf mysqld bind-address "$SERVICE_LISTEN_ADDRESS"
96+
iniset -sudo $my_conf mysqld bind-address "$(ipv6_unquote $SERVICE_LISTEN_ADDRESS)"
9797
iniset -sudo $my_conf mysqld sql_mode TRADITIONAL
9898
iniset -sudo $my_conf mysqld default-storage-engine InnoDB
9999
iniset -sudo $my_conf mysqld max_connections 1024

lib/glance

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ fi
6565

6666
# Glance connection info. Note the port must be specified.
6767
GLANCE_SERVICE_HOST=${GLANCE_SERVICE_HOST:-$SERVICE_HOST}
68-
GLANCE_SERVICE_LISTEN_ADDRESS=${GLANCE_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
68+
GLANCE_SERVICE_LISTEN_ADDRESS=${GLANCE_SERVICE_LISTEN_ADDRESS:-$(ipv6_unquote $SERVICE_LISTEN_ADDRESS)}
6969
GLANCE_SERVICE_PORT=${GLANCE_SERVICE_PORT:-9292}
7070
GLANCE_SERVICE_PORT_INT=${GLANCE_SERVICE_PORT_INT:-19292}
7171
GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$GLANCE_SERVICE_HOST:$GLANCE_SERVICE_PORT}
@@ -152,7 +152,7 @@ function configure_glance {
152152

153153
# Store specific configs
154154
iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
155-
iniset $GLANCE_API_CONF DEFAULT registry_host $GLANCE_SERVICE_HOST
155+
iniset $GLANCE_API_CONF DEFAULT registry_host $(ipv6_unquote $GLANCE_SERVICE_HOST)
156156

157157
# CORS feature support - to allow calls from Horizon by default
158158
if [ -n "$GLANCE_CORS_ALLOWED_ORIGIN" ]; then
@@ -228,7 +228,7 @@ function configure_glance {
228228
iniset $GLANCE_CACHE_CONF DEFAULT admin_user glance
229229
iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_password
230230
iniset $GLANCE_CACHE_CONF DEFAULT admin_password $SERVICE_PASSWORD
231-
iniset $GLANCE_CACHE_CONF DEFAULT registry_host $GLANCE_SERVICE_HOST
231+
iniset $GLANCE_CACHE_CONF DEFAULT registry_host $(ipv6_unquote $GLANCE_SERVICE_HOST)
232232

233233
# Store specific confs
234234
iniset $GLANCE_CACHE_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/

lib/neutron-legacy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Q_HOST=${Q_HOST:-$SERVICE_HOST}
111111
# Default protocol
112112
Q_PROTOCOL=${Q_PROTOCOL:-$SERVICE_PROTOCOL}
113113
# Default listen address
114-
Q_LISTEN_ADDRESS=${Q_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
114+
Q_LISTEN_ADDRESS=${Q_LISTEN_ADDRESS:-$(ipv6_unquote $SERVICE_LISTEN_ADDRESS)}
115115
# Default admin username
116116
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-neutron}
117117
# Default auth strategy
@@ -121,7 +121,7 @@ Q_OVS_USE_VETH=${Q_OVS_USE_VETH:-False}
121121
Q_USE_ROOTWRAP=${Q_USE_ROOTWRAP:-True}
122122
Q_USE_ROOTWRAP_DAEMON=$(trueorfalse True Q_USE_ROOTWRAP_DAEMON)
123123
# Meta data IP
124-
Q_META_DATA_IP=${Q_META_DATA_IP:-$SERVICE_HOST}
124+
Q_META_DATA_IP=${Q_META_DATA_IP:-$(ipv6_unquote $SERVICE_HOST)}
125125
# Allow Overlapping IP among subnets
126126
Q_ALLOW_OVERLAPPING_IP=${Q_ALLOW_OVERLAPPING_IP:-True}
127127
Q_NOTIFY_NOVA_PORT_STATUS_CHANGES=${Q_NOTIFY_NOVA_PORT_STATUS_CHANGES:-True}

lib/nova

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ NOVA_SERVICE_PORT=${NOVA_SERVICE_PORT:-8774}
9292
NOVA_SERVICE_PORT_INT=${NOVA_SERVICE_PORT_INT:-18774}
9393
NOVA_SERVICE_PROTOCOL=${NOVA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
9494
NOVA_SERVICE_LOCAL_HOST=${NOVA_SERVICE_LOCAL_HOST:-$SERVICE_LOCAL_HOST}
95-
NOVA_SERVICE_LISTEN_ADDRESS=${NOVA_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
95+
NOVA_SERVICE_LISTEN_ADDRESS=${NOVA_SERVICE_LISTEN_ADDRESS:-$(ipv6_unquote $SERVICE_LISTEN_ADDRESS)}
9696
METADATA_SERVICE_PORT=${METADATA_SERVICE_PORT:-8775}
9797

9898
# Option to enable/disable config drive
@@ -507,7 +507,7 @@ function create_nova_conf {
507507
setup_logging $NOVA_CONF
508508

509509
write_uwsgi_config "$NOVA_UWSGI_CONF" "$NOVA_UWSGI" "/compute"
510-
write_uwsgi_config "$NOVA_METADATA_UWSGI_CONF" "$NOVA_METADATA_UWSGI" "" ":${METADATA_SERVICE_PORT}"
510+
write_uwsgi_config "$NOVA_METADATA_UWSGI_CONF" "$NOVA_METADATA_UWSGI" "" "$SERVICE_LISTEN_ADDRESS:${METADATA_SERVICE_PORT}"
511511

512512
if is_service_enabled ceilometer; then
513513
iniset $NOVA_CONF DEFAULT instance_usage_audit "True"

lib/swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ SWIFT_SERVICE_PROTOCOL=${SWIFT_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
5656
SWIFT_DEFAULT_BIND_PORT=${SWIFT_DEFAULT_BIND_PORT:-8080}
5757
SWIFT_DEFAULT_BIND_PORT_INT=${SWIFT_DEFAULT_BIND_PORT_INT:-8081}
5858
SWIFT_SERVICE_LOCAL_HOST=${SWIFT_SERVICE_LOCAL_HOST:-$SERVICE_LOCAL_HOST}
59-
SWIFT_SERVICE_LISTEN_ADDRESS=${SWIFT_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
59+
SWIFT_SERVICE_LISTEN_ADDRESS=${SWIFT_SERVICE_LISTEN_ADDRESS:-$(ipv6_unquote $SERVICE_LISTEN_ADDRESS)}
6060

6161
# TODO: add logging to different location.
6262

lib/tls

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
if is_service_enabled tls-proxy; then
3939
# TODO(dtroyer): revisit this below after the search for HOST_IP has been done
40-
TLS_IP=${TLS_IP:-$SERVICE_IP}
40+
TLS_IP=${TLS_IP:-$(ipv6_unquote $SERVICE_HOST)}
4141
fi
4242

4343
DEVSTACK_HOSTNAME=$(hostname -f)
@@ -67,9 +67,9 @@ function configure_CA {
6767
# build common config file
6868

6969
# Verify ``TLS_IP`` is good
70-
if [[ -n "$HOST_IP" && "$HOST_IP" != "$TLS_IP" ]]; then
70+
if [[ -n "$SERVICE_HOST" && "$(ipv6_unquote $SERVICE_HOST)" != "$TLS_IP" ]]; then
7171
# auto-discover has changed the IP
72-
TLS_IP=$HOST_IP
72+
TLS_IP=$(ipv6_unquote $SERVICE_HOST)
7373
fi
7474
}
7575

@@ -228,6 +228,7 @@ function init_cert {
228228
if [[ ! -r $DEVSTACK_CERT ]]; then
229229
if [[ -n "$TLS_IP" ]]; then
230230
# Lie to let incomplete match routines work
231+
# see https://bugs.python.org/issue23239
231232
TLS_IP="DNS:$TLS_IP,IP:$TLS_IP"
232233
fi
233234
make_cert $INT_CA_DIR $DEVSTACK_CERT_NAME $DEVSTACK_HOSTNAME "$TLS_IP"
@@ -246,11 +247,6 @@ function make_cert {
246247
local alt_names=$4
247248

248249
if [ "$common_name" != "$SERVICE_HOST" ]; then
249-
if [[ -z "$alt_names" ]]; then
250-
alt_names="DNS:$SERVICE_HOST"
251-
else
252-
alt_names="$alt_names,DNS:$SERVICE_HOST"
253-
fi
254250
if is_ipv4_address "$SERVICE_HOST" ; then
255251
alt_names="$alt_names,IP:$SERVICE_HOST"
256252
fi

stackrc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -894,10 +894,10 @@ if [[ "$SERVICE_IP_VERSION" == 6 ]]; then
894894

895895
DEF_SERVICE_HOST=[$HOST_IPV6]
896896
DEF_SERVICE_LOCAL_HOST=::1
897-
DEF_SERVICE_LISTEN_ADDRESS=::
897+
DEF_SERVICE_LISTEN_ADDRESS="[::]"
898898
fi
899899

900-
# This is either 0.0.0.0 for IPv4 or :: for IPv6
900+
# This is either 0.0.0.0 for IPv4 or [::] for IPv6
901901
SERVICE_LISTEN_ADDRESS=${SERVICE_LISTEN_ADDRESS:-${DEF_SERVICE_LISTEN_ADDRESS}}
902902

903903
# Allow the use of an alternate hostname (such as localhost/127.0.0.1) for

0 commit comments

Comments
 (0)