From a8d964f11d407efe774100fd672d00fc847ce1bf Mon Sep 17 00:00:00 2001 From: Chai Bot Date: Fri, 11 Sep 2026 10:57:25 +0000 Subject: [PATCH] OCPBUGS-63475: Refresh rendezvous IP selection list --- tools/agent_tui/ui/rendezvous_ip_select.go | 4 ++- .../agent_tui/ui/rendezvous_ip_select_test.go | 31 +++++++++++++++++++ tools/agent_tui/ui/ui.go | 1 + 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/tools/agent_tui/ui/rendezvous_ip_select.go b/tools/agent_tui/ui/rendezvous_ip_select.go index 747ebb39..b6de47c5 100644 --- a/tools/agent_tui/ui/rendezvous_ip_select.go +++ b/tools/agent_tui/ui/rendezvous_ip_select.go @@ -14,6 +14,8 @@ const ( RENDEZVOUS_CONFIGURE_NETWORK_BUTTON = "" ) +var getInterfaceAddrs = net.InterfaceAddrs + func (u *UI) createSelectHostIPPage() { u.selectIPList = tview.NewList() u.refreshSelectIPList() @@ -56,7 +58,7 @@ func (u *UI) createSelectHostIPPage() { } func (u *UI) hostIPAddresses() []string { - addrs, err := net.InterfaceAddrs() + addrs, err := getInterfaceAddrs() if err != nil { u.logger.Errorf("Could not fetch host IPs: %v", err) } diff --git a/tools/agent_tui/ui/rendezvous_ip_select_test.go b/tools/agent_tui/ui/rendezvous_ip_select_test.go index 0e27a33d..6cd7713a 100644 --- a/tools/agent_tui/ui/rendezvous_ip_select_test.go +++ b/tools/agent_tui/ui/rendezvous_ip_select_test.go @@ -1,13 +1,36 @@ package ui import ( + "net" "testing" "github.com/gdamore/tcell/v2" + "github.com/openshift/agent-installer-utils/tools/agent_tui/checks" "github.com/rivo/tview" + "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" ) +func TestSetFocusToSelectIPRefreshesHostIPList(t *testing.T) { + originalGetInterfaceAddrs := getInterfaceAddrs + t.Cleanup(func() { + getInterfaceAddrs = originalGetInterfaceAddrs + }) + + addresses := []net.Addr{&net.IPNet{IP: net.ParseIP("192.0.2.1")}} + getInterfaceAddrs = func() ([]net.Addr, error) { + return addresses, nil + } + + ui := NewUI(tview.NewApplication(), checks.Config{}, logrus.New(), "") + assert.Equal(t, []string{"192.0.2.1", EMPTY_OPTION, BACK_BUTTON}, selectIPListItems(ui.selectIPList)) + + addresses = []net.Addr{&net.IPNet{IP: net.ParseIP("192.0.2.2")}} + ui.setFocusToSelectIP() + + assert.Equal(t, []string{"192.0.2.2", EMPTY_OPTION, BACK_BUTTON}, selectIPListItems(ui.selectIPList)) +} + // Test the InputCapture works correctly func TestSelectIPListNavigation(t *testing.T) { list := tview.NewList() @@ -82,3 +105,11 @@ func applyKeyToList(list *tview.List, key tcell.Key, numKeyPresses int) { list.InputHandler()(tcell.NewEventKey(key, 0, tcell.ModNone), func(p tview.Primitive) {}) } } + +func selectIPListItems(list *tview.List) []string { + items := make([]string, list.GetItemCount()) + for i := range items { + items[i], _ = list.GetItemText(i) + } + return items +} diff --git a/tools/agent_tui/ui/ui.go b/tools/agent_tui/ui/ui.go index ecbc1bdb..765053de 100644 --- a/tools/agent_tui/ui/ui.go +++ b/tools/agent_tui/ui/ui.go @@ -118,6 +118,7 @@ func (u *UI) setFocusToRendezvousIP() { func (u *UI) setFocusToSelectIP() { u.setIsRendezousIPFormActive(true) + u.refreshSelectIPList() u.pages.SwitchToPage(PAGE_SET_NODE_AS_RENDEZVOUS) u.app.SetFocus(u.selectIPList)