diff --git a/internal/smdclient/SMDclient.go b/internal/smdclient/SMDclient.go index 9078e80a..2c633a0c 100644 --- a/internal/smdclient/SMDclient.go +++ b/internal/smdclient/SMDclient.go @@ -51,6 +51,7 @@ type SMDClient struct { tokenEndpoint string accessToken string accessTokenMutex sync.Mutex + refreshLock sync.Mutex nodes map[string]NodeMapping components map[string]base.Component nodesMutex *sync.RWMutex @@ -164,7 +165,6 @@ func (s *SMDClient) StopCacheRefresh() { s.stopOnce.Do(func() { close(s.stopCacheRefresh) }) - close(s.stopCacheRefresh) } // ClusterName returns the name of the cluster @@ -299,7 +299,7 @@ func (s *SMDClient) PopulateNodes() { } var componentArray base.ComponentArray - if err := s.getSMD("/hsm/v2/State/Components", &componentArray); err != nil { + if err := s.getSMD("/hsm/v2/State/Components?type=Node", &componentArray); err != nil { log.Error().Err(err).Msg("Failed to get SMD component data") return } diff --git a/internal/smdclient/SMDclient_test.go b/internal/smdclient/SMDclient_test.go index 7f6dd3eb..f93d06a1 100644 --- a/internal/smdclient/SMDclient_test.go +++ b/internal/smdclient/SMDclient_test.go @@ -135,7 +135,7 @@ func TestPopulateNodes(t *testing.T) { defer requestsMutex.Unlock() require.Equal(t, []string{ "/hsm/v2/Inventory/EthernetInterfaces/", - "/hsm/v2/State/Components", + "/hsm/v2/State/Components?type=Node", "/hsm/v2/memberships?type=node", }, requests) for _, request := range requests { diff --git a/pkg/wgtunnel/tunnels.go b/pkg/wgtunnel/tunnels.go index e1d42a5f..1d470ade 100644 --- a/pkg/wgtunnel/tunnels.go +++ b/pkg/wgtunnel/tunnels.go @@ -151,6 +151,16 @@ func (m *InterfaceManager) IpForPeer(peerName string, publicKey string) string { return m.peers[peerName].IP.IP.String() } +func (m *InterfaceManager) GetPublicKey(peerName string) (string, bool) { + m.peersMutex.RLock() + defer m.peersMutex.RUnlock() + peer, ok := m.peers[peerName] + if !ok { + return "", false + } + return peer.PublicKey, true +} + func (m *InterfaceManager) RemovePeer(peerName string) error { m.peersMutex.RLock() peer, found := m.peers[peerName]