diff --git a/ctdb/tests/eventscripts/scripts/11.natgw.sh b/ctdb/tests/eventscripts/scripts/11.natgw.sh new file mode 100644 index 00000000000..162d5b5626a --- /dev/null +++ b/ctdb/tests/eventscripts/scripts/11.natgw.sh @@ -0,0 +1,109 @@ +setup_ctdb_natgw () +{ + debug "Setting up NAT gateway" + + natgw_config_dir="${TEST_VAR_DIR}/natgw_config" + mkdir -p "$natgw_config_dir" + + export CTDB_NATGW_NODES="${natgw_config_dir}/natgw_nodes" + + # Read from stdin + while read _ip _opts ; do + case "$_opts" in + master) + export FAKE_CTDB_NATGW_MASTER="$_ip" + echo "$_ip" + ;; + slave-only) + printf "%s\tslave-only\n" "$_ip" + ;; + *) + echo "$_ip" + ;; + esac + done >"$CTDB_NATGW_NODES" + + # Assume all of the nodes are on a /24 network and have IPv4 + # addresses: + read _ip <"$CTDB_NATGW_NODES" + export CTDB_NATGW_PRIVATE_NETWORK="${_ip%.*}.0/24" + + # These are fixed. Probably don't use the same network for the + # private node IPs. To unset the default gateway just set it to + # "". :-) + export CTDB_NATGW_PUBLIC_IP="10.1.1.121/24" + export CTDB_NATGW_PUBLIC_IFACE="eth1" + export CTDB_NATGW_DEFAULT_GATEWAY="10.1.1.254" + export CTDB_NATGW_SLAVE_ONLY="" +} + +ok_natgw_master_ip_addr_show () +{ + _mac=$(echo "$CTDB_NATGW_PUBLIC_IFACE" | md5sum | sed -r -e 's@(..)(..)(..)(..)(..)(..).*@\1:\2:\3:\4:\5:\6@') + + # This is based on CTDB_NATGW_PUBLIC_IP + _brd="10.1.1.255" + + ok < mtu 1500 qdisc pfifo_fast state UP qlen 1000 + link/ether ${_mac} brd ff:ff:ff:ff:ff:ff + inet ${CTDB_NATGW_PUBLIC_IP} brd ${_brd} scope global ${CTDB_NATGW_PUBLIC_IFACE} + valid_lft forever preferred_lft forever +EOF +} + +ok_natgw_slave_ip_addr_show () +{ + _mac=$(echo "$CTDB_NATGW_PUBLIC_IFACE" | md5sum | sed -r -e 's@(..)(..)(..)(..)(..)(..).*@\1:\2:\3:\4:\5:\6@') + + ok < mtu 1500 qdisc pfifo_fast state UP qlen 1000 + link/ether ${_mac} brd ff:ff:ff:ff:ff:ff +EOF +} + +ok_natgw_master_static_routes () +{ + _nl=" +" + _t="" + for _i in $CTDB_NATGW_STATIC_ROUTES ; do + # This is intentionally different to the code in 11.natgw ;-) + case "$_i" in + *@*) + _net=$(echo "$_i" | sed -e 's|@.*||') + _gw=$(echo "$_i" | sed -e 's|.*@||') + ;; + *) + _net="$_i" + _gw="$CTDB_NATGW_DEFAULT_GATEWAY" + esac + + [ -n "$_gw" ] || continue + _t="${_t}${_t:+${_nl}}" + _t="${_t}${_net} via ${_gw} dev ethXXX metric 10 " + done + _t=$(echo "$_t" | sort) + ok "$_t" +} + +ok_natgw_slave_static_routes () +{ + _nl=" +" + _t="" + for _i in $CTDB_NATGW_STATIC_ROUTES ; do + # This is intentionally different to the code in 11.natgw ;-) + _net=$(echo "$_i" | sed -e 's|@.*||') + + # The interface for the private network isn't + # specified as part of the NATGW configuration and + # isn't part of the command to add the route. It is + # implicitly added by "ip route" but our stub doesn't + # do this and adds "ethXXX". + _t="${_t}${_t:+${_nl}}" + _t="${_t}${_net} via ${FAKE_CTDB_NATGW_MASTER} dev ethXXX metric 10 " + done + _t=$(echo "$_t" | sort) + ok "$_t" +} diff --git a/ctdb/tests/eventscripts/scripts/local.sh b/ctdb/tests/eventscripts/scripts/local.sh index c0f1b26fca1..ae0d3f88a50 100644 --- a/ctdb/tests/eventscripts/scripts/local.sh +++ b/ctdb/tests/eventscripts/scripts/local.sh @@ -586,116 +586,6 @@ EOF ###################################################################### -setup_ctdb_natgw () -{ - debug "Setting up NAT gateway" - - natgw_config_dir="${TEST_VAR_DIR}/natgw_config" - mkdir -p "$natgw_config_dir" - - export CTDB_NATGW_NODES="${natgw_config_dir}/natgw_nodes" - - # Read from stdin - while read _ip _opts ; do - case "$_opts" in - master) - export FAKE_CTDB_NATGW_MASTER="$_ip" - echo "$_ip" - ;; - slave-only) - printf "%s\tslave-only\n" "$_ip" - ;; - *) - echo "$_ip" - ;; - esac - done >"$CTDB_NATGW_NODES" - - # Assume all of the nodes are on a /24 network and have IPv4 - # addresses: - read _ip <"$CTDB_NATGW_NODES" - export CTDB_NATGW_PRIVATE_NETWORK="${_ip%.*}.0/24" - - # These are fixed. Probably don't use the same network for the - # private node IPs. To unset the default gateway just set it to - # "". :-) - export CTDB_NATGW_PUBLIC_IP="10.1.1.121/24" - export CTDB_NATGW_PUBLIC_IFACE="eth1" - export CTDB_NATGW_DEFAULT_GATEWAY="10.1.1.254" - export CTDB_NATGW_SLAVE_ONLY="" -} - -ok_natgw_master_ip_addr_show () -{ - _mac=$(echo "$CTDB_NATGW_PUBLIC_IFACE" | md5sum | sed -r -e 's@(..)(..)(..)(..)(..)(..).*@\1:\2:\3:\4:\5:\6@') - - # This is based on CTDB_NATGW_PUBLIC_IP - _brd="10.1.1.255" - -ok < mtu 1500 qdisc pfifo_fast state UP qlen 1000 - link/ether ${_mac} brd ff:ff:ff:ff:ff:ff - inet ${CTDB_NATGW_PUBLIC_IP} brd ${_brd} scope global ${CTDB_NATGW_PUBLIC_IFACE} - valid_lft forever preferred_lft forever -EOF -} - -ok_natgw_slave_ip_addr_show () -{ - _mac=$(echo "$CTDB_NATGW_PUBLIC_IFACE" | md5sum | sed -r -e 's@(..)(..)(..)(..)(..)(..).*@\1:\2:\3:\4:\5:\6@') -ok < mtu 1500 qdisc pfifo_fast state UP qlen 1000 - link/ether ${_mac} brd ff:ff:ff:ff:ff:ff -EOF -} - -ok_natgw_master_static_routes () -{ - _nl=" -" - _t="" - for _i in $CTDB_NATGW_STATIC_ROUTES ; do - # This is intentionally different to the code in 11.natgw ;-) - case "$_i" in - *@*) - _net=$(echo "$_i" | sed -e 's|@.*||') - _gw=$(echo "$_i" | sed -e 's|.*@||') - ;; - *) - _net="$_i" - _gw="$CTDB_NATGW_DEFAULT_GATEWAY" - esac - - [ -n "$_gw" ] || continue - _t="${_t}${_t:+${_nl}}" - _t="${_t}${_net} via ${_gw} dev ethXXX metric 10 " - done - _t=$(echo "$_t" | sort) - ok "$_t" -} - -ok_natgw_slave_static_routes () -{ - _nl=" -" - _t="" - for _i in $CTDB_NATGW_STATIC_ROUTES ; do - # This is intentionally different to the code in 11.natgw ;-) - _net=$(echo "$_i" | sed -e 's|@.*||') - - # The interface for the private network isn't specified as - # part of the NATGW configuration and isn't part of the - # command to add the route. It is implicitly added by "ip - # route" but our stub doesn't do this and adds "ethXXX". - _t="${_t}${_t:+${_nl}}" - _t="${_t}${_net} via ${FAKE_CTDB_NATGW_MASTER} dev ethXXX metric 10 " - done - _t=$(echo "$_t" | sort) - ok "$_t" -} - -###################################################################### - # Samba/winbind fakery setup_samba ()