mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-15 10:02:27 +01:00
CLOUDSTACK-6062: nic device ids don't always correspond to
'eth' device numbers, but vpc scripts require it. Now we match based on mac.
This commit is contained in:
parent
3384633834
commit
c39ec1eb8f
@ -637,6 +637,7 @@ public class VirtualRoutingResource {
|
||||
String netmask = NetUtils.getSubNet(routerGIP, nic.getNetmask());
|
||||
|
||||
String args = " -C";
|
||||
args += " -M " + nic.getMac();
|
||||
args += " -d " + dev;
|
||||
args += " -i " + routerGIP;
|
||||
args += " -g " + gateway;
|
||||
@ -677,6 +678,7 @@ public class VirtualRoutingResource {
|
||||
ExecutionResult result;
|
||||
|
||||
String args = " -d " + dev;
|
||||
args += " -M " + nic.getMac();
|
||||
if (privateGw != null) {
|
||||
args += " -a " + rule;
|
||||
result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), "vpc_privategw_acl.sh", args);
|
||||
|
||||
@ -155,11 +155,13 @@ acl_entry_for_guest_network() {
|
||||
dflag=0
|
||||
gflag=0
|
||||
aflag=0
|
||||
Mflag=0
|
||||
rules=""
|
||||
rules_list=""
|
||||
ip=""
|
||||
dev=""
|
||||
while getopts 'd:i:m:a:' OPTION
|
||||
mac=""
|
||||
while getopts 'd:i:m:M:a:' OPTION
|
||||
do
|
||||
case $OPTION in
|
||||
d) dflag=1
|
||||
@ -171,6 +173,9 @@ do
|
||||
m) mflag=1
|
||||
mask="$OPTARG"
|
||||
;;
|
||||
M) Mflag=1
|
||||
mac="$OPTARG"
|
||||
;;
|
||||
a) aflag=1
|
||||
rules="$OPTARG"
|
||||
;;
|
||||
@ -186,6 +191,18 @@ then
|
||||
unlock_exit 2 $lock $locked
|
||||
fi
|
||||
|
||||
# override dev with mac address match, if provided
|
||||
if [[ ! -z "$mac" ]]; then
|
||||
logger -t cloud "$(basename $0): mac $mac passed, trying to match to device"
|
||||
for i in `ls /sys/class/net`; do
|
||||
if grep -q $mac /sys/class/net/$i/address; then
|
||||
dev=$i
|
||||
logger -t cloud "$(basename $0): matched dev $i to mac $mac, dev is now $dev"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
gcidr="$ip/$mask"
|
||||
if [ -n "$rules" ]
|
||||
then
|
||||
|
||||
@ -30,7 +30,7 @@ then
|
||||
fi
|
||||
|
||||
usage() {
|
||||
printf "Usage:\n %s -A -d <dev> -i <ip address> -g <gateway> -m <network mask> -s <dns ip> -e < domain> [-f] \n" $(basename $0) >&2
|
||||
printf "Usage:\n %s -A -M <mac> -d <dev> -i <ip address> -g <gateway> -m <network mask> -s <dns ip> -e < domain> [-f] \n" $(basename $0) >&2
|
||||
printf " %s -D -d <dev> -i <ip address> \n" $(basename $0) >&2
|
||||
}
|
||||
|
||||
@ -131,15 +131,33 @@ 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
|
||||
|
||||
# match dev based on mac, if passed
|
||||
if [[ ! -z "$mac" ]]; then
|
||||
logger -t cloud "$(basename $0): mac $mac passed, trying to match to device"
|
||||
while [ ! $timer -gt 15 ]; do
|
||||
for i in `ls /sys/class/net`; do
|
||||
if grep -q $mac /sys/class/net/$i/address; then
|
||||
dev=$i
|
||||
logger -t cloud "$(basename $0): matched dev $i to mac $mac, dev is now $dev"
|
||||
timer=15
|
||||
break
|
||||
fi
|
||||
done
|
||||
sleep 1;
|
||||
timer=$[timer + 1]
|
||||
done
|
||||
else
|
||||
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
|
||||
fi
|
||||
|
||||
logger -t cloud " $(basename $0): Create network on interface $dev, gateway $gw, network $ip/$mask "
|
||||
# setup ip configuration
|
||||
@ -225,11 +243,12 @@ dflag=
|
||||
gflag=
|
||||
Cflag=
|
||||
Dflag=
|
||||
Mflag=
|
||||
|
||||
op=""
|
||||
|
||||
|
||||
while getopts 'CDn:m:d:i:g:s:e:' OPTION
|
||||
while getopts 'CDn:m:M:d:i:g:s:e:' OPTION
|
||||
do
|
||||
case $OPTION in
|
||||
C) Cflag=1
|
||||
@ -244,6 +263,9 @@ do
|
||||
m) mflag=1
|
||||
mask="$OPTARG"
|
||||
;;
|
||||
M) Mflag=1
|
||||
mac="$OPTARG"
|
||||
;;
|
||||
d) dflag=1
|
||||
dev="$OPTARG"
|
||||
;;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user