Skip to content

Commit fa5a63b

Browse files
committed
Fix crash when deleting the Secret storing BGP passwords
Signed-off-by: Hongliang Liu <[email protected]>
1 parent b7e0c38 commit fa5a63b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

pkg/agent/controller/bgp/controller.go

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

978978
c.bgpPeerPasswords = make(map[string]string)
979-
if secret.Data != nil {
979+
if secret != nil && secret.Data != nil {
980980
for k, v := range secret.Data {
981981
c.bgpPeerPasswords[k] = string(v)
982982
}

pkg/agent/controller/bgp/controller_test.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -1625,7 +1625,7 @@ func TestEgressLifecycle(t *testing.T) {
16251625
doneDummyEvent(t, c)
16261626
}
16271627

1628-
func TestBGPSecretUpdate(t *testing.T) {
1628+
func TestBGPPasswordUpdate(t *testing.T) {
16291629
policy := generateBGPPolicy(bgpPolicyName1,
16301630
creationTimestamp,
16311631
nodeLabels1,
@@ -1707,6 +1707,24 @@ func TestBGPSecretUpdate(t *testing.T) {
17071707
require.NoError(t, c.syncBGPPolicy(ctx))
17081708
// Done with the dummy event.
17091709
doneDummyEvent(t, c)
1710+
1711+
// Delete the Secret.
1712+
err = c.client.CoreV1().Secrets(namespaceKubeSystem).Delete(context.TODO(), secret.Name, metav1.DeleteOptions{})
1713+
require.NoError(t, err)
1714+
// Wait for the dummy event triggered by Secret delete event, and mark it done.
1715+
waitAndGetDummyEvent(t, c)
1716+
updatedIPv4Peer1Config = ipv4Peer1Config
1717+
updatedIPv4Peer2Config = ipv4Peer2Config
1718+
updatedIPv4Peer3Config = ipv4Peer3Config
1719+
updatedIPv4Peer1Config.Password = ""
1720+
updatedIPv4Peer2Config.Password = ""
1721+
updatedIPv4Peer3Config.Password = ""
1722+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), updatedIPv4Peer1Config)
1723+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), updatedIPv4Peer2Config)
1724+
mockBGPServer.EXPECT().UpdatePeer(gomock.Any(), updatedIPv4Peer3Config)
1725+
require.NoError(t, c.syncBGPPolicy(ctx))
1726+
// Done with the dummy event.
1727+
doneDummyEvent(t, c)
17101728
}
17111729

17121730
func TestSyncBGPPolicyFailures(t *testing.T) {

0 commit comments

Comments
 (0)