blob: 323021dbf1055324875827265cc89a2f1df31263 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#!/bin/bash
# Update gateway mac to onos for l3 function
# author: Bob zhou
# author: Tim Rozet
# Update gateway mac to onos for l3 function
# params: external CIDR, external gateway
function onos_update_gw_mac {
local CIDR
local GW_IP
if [[ -z "$1" || -z "$2" ]]; then
return 1
else
CIDR=$1
GW_IP=$2
fi
if [ -z "$UNDERCLOUD" ]; then
#if not found then dnsmasq may be using leasefile-ro
instack_mac=$(virsh domiflist instack | grep default | \
grep -Eo "[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+")
UNDERCLOUD=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $1'})
fi
# get controller ip address
controller_ip=$(ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
source stackrc
openstack server list | grep overcloud-controller-0 | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
EOI
)
if [ -z "$controller_ip" ]; then
echo "ERROR: Failed to find controller_ip for overcloud-controller-0"
return 1
fi
# get gateway mac
GW_MAC=$(arping ${GW_IP} -c 1 -I br-public | grep -Eo '([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})')
if [ -z "$GW_MAC" ]; then
echo "ERROR: Failed to find gateway mac for ${GW_IP}"
return 1
fi
# update gateway mac to onos
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
ssh -T ${SSH_OPTIONS[@]} "heat-admin@${controller_ip}" <<EOF
echo "external gateway mac is ${GW_MAC}"
/opt/onos/bin/onos "externalgateway-update -m ${GW_MAC}"
EOF
EOI
}
|