Skip to content

Commit 5c13e54

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Extract HOST_IP default process to a function"
2 parents d29ef9e + c892bde commit 5c13e54

2 files changed

Lines changed: 34 additions & 21 deletions

File tree

functions

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,37 @@ function get_field() {
123123
}
124124

125125

126+
# Get the default value for HOST_IP
127+
# get_default_host_ip fixed_range floating_range host_ip_iface host_ip
128+
function get_default_host_ip() {
129+
local fixed_range=$1
130+
local floating_range=$2
131+
local host_ip_iface=$3
132+
local host_ip=$4
133+
134+
# Find the interface used for the default route
135+
host_ip_iface=${host_ip_iface:-$(ip route | sed -n '/^default/{ s/.*dev \(\w\+\)\s\+.*/\1/; p; }' | head -1)}
136+
# Search for an IP unless an explicit is set by ``HOST_IP`` environment variable
137+
if [ -z "$host_ip" -o "$host_ip" == "dhcp" ]; then
138+
host_ip=""
139+
host_ips=`LC_ALL=C ip -f inet addr show ${host_ip_iface} | awk '/inet/ {split($2,parts,"/"); print parts[1]}'`
140+
for IP in $host_ips; do
141+
# Attempt to filter out IP addresses that are part of the fixed and
142+
# floating range. Note that this method only works if the ``netaddr``
143+
# python library is installed. If it is not installed, an error
144+
# will be printed and the first IP from the interface will be used.
145+
# If that is not correct set ``HOST_IP`` in ``localrc`` to the correct
146+
# address.
147+
if ! (address_in_net $IP $fixed_range || address_in_net $IP $floating_range); then
148+
host_ip=$IP
149+
break;
150+
fi
151+
done
152+
fi
153+
echo $host_ip
154+
}
155+
156+
126157
function _get_package_dir() {
127158
local pkg_dir
128159
if is_ubuntu; then

stack.sh

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -223,27 +223,9 @@ FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24}
223223
FIXED_NETWORK_SIZE=${FIXED_NETWORK_SIZE:-256}
224224
NETWORK_GATEWAY=${NETWORK_GATEWAY:-10.0.0.1}
225225

226-
# Find the interface used for the default route
227-
HOST_IP_IFACE=${HOST_IP_IFACE:-$(ip route | sed -n '/^default/{ s/.*dev \(\w\+\)\s\+.*/\1/; p; }' | head -1)}
228-
# Search for an IP unless an explicit is set by ``HOST_IP`` environment variable
229-
if [ -z "$HOST_IP" -o "$HOST_IP" == "dhcp" ]; then
230-
HOST_IP=""
231-
HOST_IPS=`LC_ALL=C ip -f inet addr show ${HOST_IP_IFACE} | awk '/inet/ {split($2,parts,"/"); print parts[1]}'`
232-
for IP in $HOST_IPS; do
233-
# Attempt to filter out IP addresses that are part of the fixed and
234-
# floating range. Note that this method only works if the ``netaddr``
235-
# python library is installed. If it is not installed, an error
236-
# will be printed and the first IP from the interface will be used.
237-
# If that is not correct set ``HOST_IP`` in ``localrc`` to the correct
238-
# address.
239-
if ! (address_in_net $IP $FIXED_RANGE || address_in_net $IP $FLOATING_RANGE); then
240-
HOST_IP=$IP
241-
break;
242-
fi
243-
done
244-
if [ "$HOST_IP" == "" ]; then
245-
die $LINENO "Could not determine host ip address. Either localrc specified dhcp on ${HOST_IP_IFACE} or defaulted"
246-
fi
226+
HOST_IP=$(get_default_host_ip $FIXED_RANGE $FLOATING_RANGE "$HOST_IP_IFACE" "$HOST_IP")
227+
if [ "$HOST_IP" == "" ]; then
228+
die $LINENO "Could not determine host ip address. Either localrc specified dhcp on ${HOST_IP_IFACE} or defaulted"
247229
fi
248230

249231
# Allow the use of an alternate hostname (such as localhost/127.0.0.1) for service endpoints.

0 commit comments

Comments
 (0)