2019-07-26 16:31:56 -05:00
|
|
|
#!/bin/bash
|
|
|
|
|
2020-04-23 11:42:22 -05:00
|
|
|
function check_not_installed()
|
|
|
|
{
|
|
|
|
c=0
|
|
|
|
config=$(vtysh -c "show run")
|
|
|
|
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
|
|
|
do
|
|
|
|
echo "$config" | grep -q "route-map $route_map_name permit 2"
|
|
|
|
c=$((c+$?))
|
|
|
|
echo "$config" | grep -q "route-map $route_map_name deny 3"
|
|
|
|
c=$((c+$?))
|
|
|
|
done
|
|
|
|
return $c
|
|
|
|
}
|
2019-07-26 16:31:56 -05:00
|
|
|
|
2020-04-23 11:42:22 -05:00
|
|
|
check_not_installed
|
|
|
|
not_installed=$?
|
|
|
|
if [[ $not_installed -ne 0 ]];
|
2019-07-26 16:31:56 -05:00
|
|
|
then
|
2019-11-06 18:07:28 -06:00
|
|
|
TSA_FILE=$(mktemp)
|
2020-04-23 11:42:22 -05:00
|
|
|
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
|
|
|
do
|
|
|
|
case "$route_map_name" in
|
|
|
|
*V4*)
|
|
|
|
ip_version=V4
|
|
|
|
;;
|
|
|
|
*V6*)
|
|
|
|
ip_version=V6
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
sonic-cfggen -d -a "{\"route_map_name\":\"$route_map_name\", \"ip_version\": \"$ip_version\"}" -y /etc/sonic/constants.yml -t /usr/share/sonic/templates/bgpd/tsa/bgpd.tsa.isolate.conf.j2 > "$TSA_FILE"
|
|
|
|
vtysh -f "$TSA_FILE"
|
|
|
|
rm -f "$TSA_FILE"
|
|
|
|
done
|
2019-07-26 16:31:56 -05:00
|
|
|
echo "System Mode: Normal -> Maintenance"
|
|
|
|
else
|
|
|
|
echo "System is already in Maintenance mode"
|
|
|
|
fi
|