Summary: Wait for VPC router nics to hotplug before assigning IPs

Detail: CLOUDSTACK-1452, CLOUDSTACK-1523 - When rebooting VPC routers, ip addr
assignment was inconsistent, sometimes the assignment would be attempted while
router was still setting up nic device. This adds a watch for the nic to show
up before attempting to add an ip to a nic.

Signed-off-by: Marcus Sorensen <marcus@betterservers.com> 1362521453 -0700
This commit is contained in:
Marcus Sorensen 2013-03-05 15:10:53 -07:00
parent 9f180e485a
commit 7dbea68b87
2 changed files with 24 additions and 0 deletions

View File

@ -129,6 +129,18 @@ desetup_passwdsvcs() {
}
create_guest_network() {
# need to wait for eth device to appear before configuring it
timer=0
while ! `grep -q $dev /proc/net/dev` ; do
logger -t cloud "$(basename $0):Waiting for interface $dev to appear, $timer seconds"
sleep 1;
if [ $timer -gt 15 ]; then
logger -t cloud "$(basename $0):interface $dev never appeared"
break
fi
timer=$[timer + 1]
done
logger -t cloud " $(basename $0): Create network on interface $dev, gateway $gw, network $ip/$mask "
# setup ip configuration
sudo ip addr add dev $dev $ip/$mask brd +

View File

@ -56,6 +56,18 @@ remove_routing() {
}
add_an_ip () {
# need to wait for eth device to appear before configuring it
timer=0
while ! `grep -q $ethDev /proc/net/dev` ; do
logger -t cloud "$(basename $0):Waiting for interface $ethDev to appear, $timer seconds"
sleep 1;
if [ $timer -gt 15 ]; then
logger -t cloud "$(basename $0):interface $ethDev never appeared"
break
fi
timer=$[timer + 1]
done
logger -t cloud "$(basename $0):Adding ip $pubIp on interface $ethDev"
sudo ip link show $ethDev | grep "state DOWN" > /dev/null
local old_state=$?