057ced0391
The one big bgp configuration template was splitted into chunks. Currently we have three types of bgp neighbor peers: general bgp peers. They are represented by CONFIG_DB::BGP_NEIGHBOR table entries dynamic bgp peers. They are represented by CONFIG_DB::BGP_PEER_RANGE table entries monitors bgp peers. They are represented by CONFIG_DB::BGP_MONITORS table entries This PR introduces three templates for each peer type: bgp policies: represent policieas that will be applied to the bgp peer-group (ip prefix-lists, route-maps, etc) bgp peer-group: represent bgp peer group which has common configuration for the bgp peer type and uses bgp routing policy from the previous item bgp peer-group instance: represent bgp configuration, which will be used to instatiate a bgp peer-group for the bgp peer-type. Usually this one is simple, consist of the referral to the bgp peer-group, bgp peer description and bgp peer ip address. This PR redefined constant.yml file. Now this file has a setting for to use or don't use bgp_neighbor metadata. This file has more parameters for now, which are not used. They will be used in the next iteration of bgpcfgd. Currently all tests have been disabled. I'm going to create next PR with the tests right after this PR is merged. I'm going to introduce better bgpcfgd in a short time. It will include support of dynamic changes for the templates. FIX:: #4231
35 lines
890 B
Bash
Executable File
35 lines
890 B
Bash
Executable File
#!/bin/bash
|
|
|
|
function check_installed()
|
|
{
|
|
c=0
|
|
e=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+$?))
|
|
e=$((e+1))
|
|
echo "$config" | grep -q "route-map $route_map_name deny 3"
|
|
c=$((c+$?))
|
|
e=$((e+1))
|
|
done
|
|
return $((e-c))
|
|
}
|
|
|
|
check_installed
|
|
installed=$?
|
|
if [[ $installed -ne 0 ]];
|
|
then
|
|
TSB_FILE=$(mktemp)
|
|
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
|
do
|
|
sonic-cfggen -d -a "{\"route_map_name\":\"$route_map_name\"}" -t /usr/share/sonic/templates/bgpd/tsa/bgpd.tsa.unisolate.conf.j2 > "$TSB_FILE"
|
|
vtysh -f "$TSB_FILE"
|
|
rm -f "$TSB_FILE"
|
|
done
|
|
echo "System Mode: Maintenance -> Normal"
|
|
else
|
|
echo "System is already in Normal mode"
|
|
fi
|