Updated Branches: refs/heads/4.1 73d7b53f1 -> 33fd1a6fb
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 <[email protected]> 1362521453 -0700 Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/33fd1a6f Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/33fd1a6f Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/33fd1a6f Branch: refs/heads/4.1 Commit: 33fd1a6fb3efbc87ed327cb9290f1cf3cad5ceab Parents: 73d7b53 Author: Marcus Sorensen <[email protected]> Authored: Tue Mar 5 15:10:53 2013 -0700 Committer: Marcus Sorensen <[email protected]> Committed: Tue Mar 5 18:09:43 2013 -0700 ---------------------------------------------------------------------- .../debian/config/opt/cloud/bin/vpc_guestnw.sh | 12 ++++++++++++ .../debian/config/opt/cloud/bin/vpc_ipassoc.sh | 12 ++++++++++++ 2 files changed, 24 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/33fd1a6f/patches/systemvm/debian/config/opt/cloud/bin/vpc_guestnw.sh ---------------------------------------------------------------------- diff --git a/patches/systemvm/debian/config/opt/cloud/bin/vpc_guestnw.sh b/patches/systemvm/debian/config/opt/cloud/bin/vpc_guestnw.sh index c909cf7..3100345 100755 --- a/patches/systemvm/debian/config/opt/cloud/bin/vpc_guestnw.sh +++ b/patches/systemvm/debian/config/opt/cloud/bin/vpc_guestnw.sh @@ -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 + http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/33fd1a6f/patches/systemvm/debian/config/opt/cloud/bin/vpc_ipassoc.sh ---------------------------------------------------------------------- diff --git a/patches/systemvm/debian/config/opt/cloud/bin/vpc_ipassoc.sh b/patches/systemvm/debian/config/opt/cloud/bin/vpc_ipassoc.sh index 53e739d..f2f8a49 100755 --- a/patches/systemvm/debian/config/opt/cloud/bin/vpc_ipassoc.sh +++ b/patches/systemvm/debian/config/opt/cloud/bin/vpc_ipassoc.sh @@ -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=$?
