-
Notifications
You must be signed in to change notification settings - Fork 13
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
fix(evpn-bridge): fix for frr to handle vrf setup and teardown #401
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Venkatesh, Vemula <venkatesh.vemula@intel.com>
if strings.Contains(data, "Can't find BGP instance") { // Trying to delete non exist VRF return true | ||
return true | ||
} | ||
if err != nil || checkFrrResult(data, false) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if we need to check frr for each frr cmd, why not move that check into FrrBgpCmd/FrrZebraCmd and other frr functions?
as well as strings.Contains(
?
if err != nil { | ||
data, err = Frr.FrrZebraCmd(ctx, fmt.Sprintf("configure terminal\n %s\n exit\n", delCmd2)) | ||
if err != nil || checkFrrResult(data, false) { | ||
log.Printf("FRR: Error %s\n", data) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does data contain error description?
@@ -437,7 +430,7 @@ func setUpVrf(vrf *infradb.Vrf) (string, bool) { | |||
|
|||
// checkFrrResult checks the vrf result | |||
func checkFrrResult(cp string, show bool) bool { | |||
return ((show && reflect.ValueOf(cp).IsZero()) || strings.Contains(cp, "warning") || strings.Contains(cp, "unknown") || strings.Contains(cp, "Unknown") || strings.Contains(cp, "Warning") || strings.Contains(cp, "Ambiguous") || strings.Contains(cp, "specified does not exist")) | |||
return ((show && reflect.ValueOf(cp).IsZero()) || strings.Contains(cp, "warning") || strings.Contains(cp, "unknown") || strings.Contains(cp, "Unknown") || strings.Contains(cp, "Warning") || strings.Contains(cp, "Ambiguous") || strings.Contains(cp, "specified does not exist") || strings.Contains(cp, "Error")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reflect.ValueOf(cp).IsZero()) -> cp == ""
what if cp contains waRning
? Will you add a new comparison then? Will it be better to lower case the string and only then check what itcontains?
} | ||
hname, _ := os.Hostname() | ||
L2vpnCmd := strings.Split(cp, "json") | ||
L2vpnCmd = strings.Split(L2vpnCmd[1], hname) | ||
cp = L2vpnCmd[0] | ||
// fmt.Printf("FRR_L2vpn[0]: %s\n",cp) | ||
if len(cp) != 7 { | ||
if len(cp) != 7 { // Checking CMD o/p |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
magic number. Rely on string length is very unreliable
fix: frr handle the duplicate vni and deleting of non-existence vrf and svi.