Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TSA/B/C changes for multi-asic #6510

Merged
merged 7 commits into from
Feb 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dockers/docker-fpm-frr/Dockerfile.j2
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ COPY ["snmp.conf", "/etc/snmp/frr.conf"]
COPY ["TSA", "/usr/bin/TSA"]
COPY ["TSB", "/usr/bin/TSB"]
COPY ["TSC", "/usr/bin/TSC"]
COPY ["TS", "/usr/bin/TS"]
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
COPY ["bgpd.sh", "/usr/bin/"]
RUN chmod a+x /usr/bin/TSA && \
Expand Down
40 changes: 40 additions & 0 deletions dockers/docker-fpm-frr/TS
Original file line number Diff line number Diff line change
@@ -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))
}
16 changes: 3 additions & 13 deletions dockers/docker-fpm-frr/TSA
Original file line number Diff line number Diff line change
@@ -1,18 +1,7 @@
#!/bin/bash

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" | 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
}
# Load the common functions
source /usr/bin/TS

check_not_installed
not_installed=$?
Expand All @@ -21,6 +10,7 @@ then
TSA_FILE=$(mktemp)
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
do
is_internal_route_map $route_map_name && continue
case "$route_map_name" in
*V4*)
ip_version=V4
Expand Down
19 changes: 3 additions & 16 deletions dockers/docker-fpm-frr/TSB
Original file line number Diff line number Diff line change
@@ -1,21 +1,7 @@
#!/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" | 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))
}
# Load the common functions
source /usr/bin/TS

check_installed
installed=$?
Expand All @@ -24,6 +10,7 @@ then
TSB_FILE=$(mktemp)
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
do
is_internal_route_map $route_map_name && continue
case "$route_map_name" in
*V4*)
;;
Expand Down
36 changes: 2 additions & 34 deletions dockers/docker-fpm-frr/TSC
Original file line number Diff line number Diff line change
@@ -1,37 +1,7 @@
#!/bin/bash

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
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:"
# Load the common functions
source /usr/bin/TS

check_not_installed
not_installed=$?
Expand All @@ -48,5 +18,3 @@ then
else
echo "System Mode: Not consistent"
fi

echo
29 changes: 29 additions & 0 deletions dockers/docker-fpm-frr/base_image_files/TS
Original file line number Diff line number Diff line change
@@ -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 ]
judyjoseph marked this conversation as resolved.
Show resolved Hide resolved
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
2 changes: 1 addition & 1 deletion dockers/docker-fpm-frr/base_image_files/TSA
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/bash

docker exec -i bgp /usr/bin/TSA
/usr/bin/TS TSA
2 changes: 1 addition & 1 deletion dockers/docker-fpm-frr/base_image_files/TSB
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/bash

docker exec -i bgp /usr/bin/TSB
/usr/bin/TS TSB
2 changes: 1 addition & 1 deletion dockers/docker-fpm-frr/base_image_files/TSC
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash

docker exec -i bgp /usr/bin/TSC
/usr/bin/TS TSC

portstat -p 5
1 change: 1 addition & 0 deletions rules/docker-fpm-frr.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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 += TSB:/usr/bin/TSB
$(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