[docker-fpm-frr]: TSA/B/C changes for multi-asic (#6510)
- Introduced TS common file in docker as well and moved common functions. - TSA/B/C scripts run only in BGP instances for front end ASICs. In addition skip enforcing it on route maps used between internal BGP sessions. admin@str--acs-1:~$ sudo /usr/bin/TSA System Mode: Normal -> Maintenance and in case of Multi-ASIC admin@str--acs-1:~$ sudo /usr/bin/TSA BGP0 : System Mode: Normal -> Maintenance BGP1 : System Mode: Normal -> Maintenance BGP2 : System Mode: Normal -> Maintenance
This commit is contained in:
parent
0252425377
commit
ad88700912
@ -53,6 +53,7 @@ COPY ["snmp.conf", "/etc/snmp/frr.conf"]
|
|||||||
COPY ["TSA", "/usr/bin/TSA"]
|
COPY ["TSA", "/usr/bin/TSA"]
|
||||||
COPY ["TSB", "/usr/bin/TSB"]
|
COPY ["TSB", "/usr/bin/TSB"]
|
||||||
COPY ["TSC", "/usr/bin/TSC"]
|
COPY ["TSC", "/usr/bin/TSC"]
|
||||||
|
COPY ["TS", "/usr/bin/TS"]
|
||||||
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
|
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
|
||||||
COPY ["zsocket.sh", "/usr/bin/"]
|
COPY ["zsocket.sh", "/usr/bin/"]
|
||||||
RUN chmod a+x /usr/bin/TSA && \
|
RUN chmod a+x /usr/bin/TSA && \
|
||||||
|
40
dockers/docker-fpm-frr/TS
Executable file
40
dockers/docker-fpm-frr/TS
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check whether the routemap is for internal BGP sessions.
|
||||||
|
function is_internal_route_map()
|
||||||
|
{
|
||||||
|
[[ "$1" =~ .*"_INTERNAL_".* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
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' | egrep 'V4|V6');
|
||||||
|
do
|
||||||
|
is_internal_route_map $route_map_name && continue
|
||||||
|
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
|
||||||
|
c=$((c+$?))
|
||||||
|
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
|
||||||
|
c=$((c+$?))
|
||||||
|
done
|
||||||
|
return $c
|
||||||
|
}
|
||||||
|
|
||||||
|
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' | egrep 'V4|V6');
|
||||||
|
do
|
||||||
|
is_internal_route_map $route_map_name && continue
|
||||||
|
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
|
||||||
|
c=$((c+$?))
|
||||||
|
e=$((e+1))
|
||||||
|
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
|
||||||
|
c=$((c+$?))
|
||||||
|
e=$((e+1))
|
||||||
|
done
|
||||||
|
return $((e-c))
|
||||||
|
}
|
@ -1,18 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
function check_not_installed()
|
# Load the common functions
|
||||||
{
|
source /usr/bin/TS
|
||||||
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" | egrep -q "^route-map $route_map_name permit 20$"
|
|
||||||
c=$((c+$?))
|
|
||||||
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
|
|
||||||
c=$((c+$?))
|
|
||||||
done
|
|
||||||
return $c
|
|
||||||
}
|
|
||||||
|
|
||||||
check_not_installed
|
check_not_installed
|
||||||
not_installed=$?
|
not_installed=$?
|
||||||
@ -21,6 +10,7 @@ then
|
|||||||
TSA_FILE=$(mktemp)
|
TSA_FILE=$(mktemp)
|
||||||
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
||||||
do
|
do
|
||||||
|
is_internal_route_map $route_map_name && continue
|
||||||
case "$route_map_name" in
|
case "$route_map_name" in
|
||||||
*V4*)
|
*V4*)
|
||||||
ip_version=V4
|
ip_version=V4
|
||||||
|
@ -1,21 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
function check_installed()
|
# Load the common functions
|
||||||
{
|
source /usr/bin/TS
|
||||||
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" | egrep -q "^route-map $route_map_name permit 20$"
|
|
||||||
c=$((c+$?))
|
|
||||||
e=$((e+1))
|
|
||||||
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
|
|
||||||
c=$((c+$?))
|
|
||||||
e=$((e+1))
|
|
||||||
done
|
|
||||||
return $((e-c))
|
|
||||||
}
|
|
||||||
|
|
||||||
check_installed
|
check_installed
|
||||||
installed=$?
|
installed=$?
|
||||||
@ -24,6 +10,7 @@ then
|
|||||||
TSB_FILE=$(mktemp)
|
TSB_FILE=$(mktemp)
|
||||||
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
|
||||||
do
|
do
|
||||||
|
is_internal_route_map $route_map_name && continue
|
||||||
case "$route_map_name" in
|
case "$route_map_name" in
|
||||||
*V4*)
|
*V4*)
|
||||||
;;
|
;;
|
||||||
|
@ -1,37 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
function check_not_installed()
|
# Load the common functions
|
||||||
{
|
source /usr/bin/TS
|
||||||
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' | egrep 'V4|V6');
|
|
||||||
do
|
|
||||||
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
|
|
||||||
c=$((c+$?))
|
|
||||||
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
|
|
||||||
c=$((c+$?))
|
|
||||||
done
|
|
||||||
return $c
|
|
||||||
}
|
|
||||||
|
|
||||||
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' | egrep 'V4|V6');
|
|
||||||
do
|
|
||||||
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
|
|
||||||
c=$((c+$?))
|
|
||||||
e=$((e+1))
|
|
||||||
echo "$config" | egrep -q "^route-map $route_map_name deny 30$"
|
|
||||||
c=$((c+$?))
|
|
||||||
e=$((e+1))
|
|
||||||
done
|
|
||||||
return $((e-c))
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Traffic Shift Check:"
|
|
||||||
|
|
||||||
check_not_installed
|
check_not_installed
|
||||||
not_installed=$?
|
not_installed=$?
|
||||||
@ -48,5 +18,3 @@ then
|
|||||||
else
|
else
|
||||||
echo "System Mode: Not consistent"
|
echo "System Mode: Not consistent"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
|
||||||
|
29
dockers/docker-fpm-frr/base_image_files/TS
Executable file
29
dockers/docker-fpm-frr/base_image_files/TS
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# read SONiC immutable variables
|
||||||
|
[ -f /etc/sonic/sonic-environment ] && . /etc/sonic/sonic-environment
|
||||||
|
|
||||||
|
PLATFORM=${PLATFORM:-`sonic-cfggen -H -v DEVICE_METADATA.localhost.platform`}
|
||||||
|
|
||||||
|
# Parse the device specific asic conf file, if it exists
|
||||||
|
ASIC_CONF=/usr/share/sonic/device/$PLATFORM/asic.conf
|
||||||
|
[ -f $ASIC_CONF ] && . $ASIC_CONF
|
||||||
|
|
||||||
|
if [[ ($NUM_ASIC -gt 1) ]]; then
|
||||||
|
asic=0
|
||||||
|
NAMESPACE_PREFIX='asic'
|
||||||
|
|
||||||
|
while [ $asic -lt $NUM_ASIC ]
|
||||||
|
do
|
||||||
|
# Run TSA/TSB/TSC scripts in BGP instance for frontend ASICs.
|
||||||
|
sub_role=`sonic-cfggen -d -v "DEVICE_METADATA['localhost']['sub_role']" -n $NAMESPACE_PREFIX$asic`
|
||||||
|
if [ $sub_role == 'FrontEnd' ]
|
||||||
|
then
|
||||||
|
echo -e "BGP"$asic" : \c"
|
||||||
|
docker exec -i bgp$asic /usr/bin/$1
|
||||||
|
fi
|
||||||
|
asic=$[$asic+1]
|
||||||
|
done
|
||||||
|
else
|
||||||
|
docker exec -i bgp /usr/bin/$1
|
||||||
|
fi
|
@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker exec -i bgp /usr/bin/TSA
|
/usr/bin/TS TSA
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker exec -i bgp /usr/bin/TSB
|
/usr/bin/TS TSB
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker exec -i bgp /usr/bin/TSC
|
/usr/bin/TS TSC
|
||||||
|
|
||||||
portstat -p 5
|
portstat -p 5
|
||||||
|
@ -30,4 +30,5 @@ $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += vtysh:/usr/bin/vtysh
|
|||||||
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSA:/usr/bin/TSA
|
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSA:/usr/bin/TSA
|
||||||
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSB:/usr/bin/TSB
|
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSB:/usr/bin/TSB
|
||||||
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSC:/usr/bin/TSC
|
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSC:/usr/bin/TSC
|
||||||
|
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TS:/usr/bin/TS
|
||||||
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += monit_bgp:/etc/monit/conf.d
|
$(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += monit_bgp:/etc/monit/conf.d
|
||||||
|
Loading…
Reference in New Issue
Block a user