Skip to content

Commit dfd320e

Browse files
authored
Fix crash when deleting the Secret storing BGP passwords (#7042) (#7047)
Signed-off-by: Hongliang Liu <[email protected]>
1 parent 40a5bcd commit dfd320e

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

pkg/agent/controller/bgp/controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -923,7 +923,7 @@ func (c *Controller) updateBGPPeerPasswords(secret *corev1.Secret) {
923923
defer c.bgpPeerPasswordsMutex.Unlock()
924924

925925
c.bgpPeerPasswords = make(map[string]string)
926-
if secret.Data != nil {
926+
if secret != nil && secret.Data != nil {
927927
for k, v := range secret.Data {
928928
c.bgpPeerPasswords[k] = string(v)
929929
}

pkg/agent/controller/bgp/controller_test.go

+25-7
Original file line numberDiff line numberDiff line change
@@ -1515,7 +1515,7 @@ func TestEgressLifecycle(t *testing.T) {
15151515
doneDummyEvent(t, c)
15161516
}
15171517

1518-
func TestBGPSecretUpdate(t *testing.T) {
1518+
func TestBGPPasswordUpdate(t *testing.T) {
15191519
policy := generateBGPPolicy(bgpPolicyName1,
15201520
creationTimestamp,
15211521
nodeLabels1,
@@ -1594,12 +1594,30 @@ func TestBGPSecretUpdate(t *testing.T) {
15941594

15951595
// Wait for the dummy event triggered by Secret update event, and mark it done.
15961596
waitAndGetDummyEvent(t, c)
1597-
updatedIPv4Peer1Config := ipv4Peer1Config
1598-
updatedIPv4Peer3Config := ipv4Peer3Config
1599-
updatedIPv4Peer1Config.Password = "updated-" + peer1AuthPassword
1600-
updatedIPv4Peer3Config.Password = "updated-" + peer3AuthPassword
1601-
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), updatedIPv4Peer1Config)
1602-
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), updatedIPv4Peer3Config)
1597+
expectedIPv4Peer1Config := ipv4Peer1Config
1598+
expectedIPv4Peer3Config := ipv4Peer3Config
1599+
expectedIPv4Peer1Config.Password = "updated-" + peer1AuthPassword
1600+
expectedIPv4Peer3Config.Password = "updated-" + peer3AuthPassword
1601+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), expectedIPv4Peer1Config)
1602+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), expectedIPv4Peer3Config)
1603+
require.NoError(t, c.syncBGPPolicy(ctx))
1604+
// Done with the dummy event.
1605+
doneDummyEvent(t, c)
1606+
1607+
// Delete the Secret.
1608+
err = c.client.CoreV1().Secrets(namespaceKubeSystem).Delete(context.TODO(), secret.Name, metav1.DeleteOptions{})
1609+
require.NoError(t, err)
1610+
// Wait for the dummy event triggered by Secret delete event, and mark it done.
1611+
waitAndGetDummyEvent(t, c)
1612+
expectedIPv4Peer1Config = ipv4Peer1Config
1613+
expectedIPv4Peer2Config := ipv4Peer2Config
1614+
expectedIPv4Peer3Config = ipv4Peer3Config
1615+
expectedIPv4Peer1Config.Password = ""
1616+
expectedIPv4Peer2Config.Password = ""
1617+
expectedIPv4Peer3Config.Password = ""
1618+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), expectedIPv4Peer1Config)
1619+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), expectedIPv4Peer2Config)
1620+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), expectedIPv4Peer3Config)
16031621
require.NoError(t, c.syncBGPPolicy(ctx))
16041622
// Done with the dummy event.
16051623
doneDummyEvent(t, c)

0 commit comments

Comments
 (0)