Skip to content

Commit 8dfd6f9

Browse files
committed
Fix error handling in Perla workaround
1 parent d00e9c4 commit 8dfd6f9

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

pkg/daemon/daemon_internal_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,8 +723,10 @@ func TestProcessTBCTransitionHardwareConfig_HardwareConfigIntegration(t *testing
723723
// Set up mock command executor for GetClockIDFromInterface
724724
mockCmd := hardwareconfig.NewMockCommandExecutor()
725725
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
726+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
726727
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
727728
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
729+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
728730
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
729731
hardwareconfig.SetCommandExecutor(mockCmd)
730732
defer hardwareconfig.ResetCommandExecutor()
@@ -810,8 +812,10 @@ func TestProcessTBCTransitionHardwareConfig_ProcessLogFile(t *testing.T) {
810812
// Set up mock command executor for GetClockIDFromInterface
811813
mockCmd := hardwareconfig.NewMockCommandExecutor()
812814
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
815+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
813816
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
814817
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
818+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
815819
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
816820
hardwareconfig.SetCommandExecutor(mockCmd)
817821
defer hardwareconfig.ResetCommandExecutor()

pkg/hardwareconfig/hardwareconfig_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ func TestApplyHardwareConfigsForProfile(t *testing.T) {
6161
// Set up mock command executor for GetClockIDFromInterface
6262
mockCmd := NewMockCommandExecutor()
6363
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
64+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
6465
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
6566
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
67+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
6668
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
6769
SetCommandExecutor(mockCmd)
6870
defer ResetCommandExecutor()
@@ -120,8 +122,10 @@ func TestHardwareConfigManagerOperations(t *testing.T) {
120122
// Set up mock command executor for GetClockIDFromInterface
121123
mockCmd := NewMockCommandExecutor()
122124
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
125+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
123126
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
124127
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
128+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
125129
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
126130
SetCommandExecutor(mockCmd)
127131
defer ResetCommandExecutor()
@@ -256,8 +260,10 @@ func TestPTPStateDetector(t *testing.T) {
256260
// Set up mock command executor for GetClockIDFromInterface
257261
mockCmd := NewMockCommandExecutor()
258262
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
263+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
259264
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
260265
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
266+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
261267
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
262268
SetCommandExecutor(mockCmd)
263269
defer ResetCommandExecutor()
@@ -300,8 +306,10 @@ func TestDetectStateChange(t *testing.T) {
300306
// Set up mock command executor for GetClockIDFromInterface
301307
mockCmd := NewMockCommandExecutor()
302308
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
309+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
303310
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
304311
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
312+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
305313
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
306314
SetCommandExecutor(mockCmd)
307315
defer ResetCommandExecutor()
@@ -461,8 +469,10 @@ func TestApplyConditionDesiredStatesWithRealData(t *testing.T) {
461469
// Set up mock command executor for GetClockIDFromInterface
462470
mockCmd := NewMockCommandExecutor()
463471
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
472+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
464473
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
465474
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
475+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
466476
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
467477
SetCommandExecutor(mockCmd)
468478
defer ResetCommandExecutor()
@@ -673,8 +683,10 @@ func TestApplyDefaultAndInitConditions(t *testing.T) {
673683
// Set up mock command executor for GetClockIDFromInterface
674684
mockCmd := NewMockCommandExecutor()
675685
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
686+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
676687
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
677688
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
689+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
678690
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
679691
SetCommandExecutor(mockCmd)
680692
defer ResetCommandExecutor()
@@ -1062,8 +1074,10 @@ func TestSysFSCommandCaching(t *testing.T) {
10621074
// Set up mock command executor for GetClockIDFromInterface
10631075
mockCmd := NewMockCommandExecutor()
10641076
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
1077+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
10651078
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
10661079
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
1080+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
10671081
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
10681082
SetCommandExecutor(mockCmd)
10691083
defer ResetCommandExecutor()
@@ -1108,8 +1122,10 @@ func TestESyncConfigurationFromYAML(t *testing.T) {
11081122
// Set up mock command executor for GetClockIDFromInterface
11091123
mockCmd := NewMockCommandExecutor()
11101124
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
1125+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
11111126
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
11121127
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
1128+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
11131129
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b5-80")
11141130
SetCommandExecutor(mockCmd)
11151131
defer ResetCommandExecutor()
@@ -1309,10 +1325,13 @@ func TestHoldoverParametersExtraction(t *testing.T) {
13091325
// Set up mock command executor for GetClockIDFromInterface
13101326
mockCmd := NewMockCommandExecutor()
13111327
mockCmd.SetResponse("ethtool", []string{"-i", "ens4f0"}, "driver: ice\nbus-info: 0000:17:00.0")
1328+
mockCmd.SetResponse("lspci", []string{"-s", "0000:17:00.0"}, "17:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
13121329
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:17:00.0"}, "serial_number 50-7c-6f-ff-ff-5c-4a-e8")
13131330
mockCmd.SetResponse("ethtool", []string{"-i", "ens8f0"}, "driver: ice\nbus-info: 0000:51:00.0")
1331+
mockCmd.SetResponse("lspci", []string{"-s", "0000:51:00.0"}, "51:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
13141332
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:51:00.0"}, "serial_number 50-7c-6f-ff-ff-1f-b1-b8")
13151333
mockCmd.SetResponse("ethtool", []string{"-i", "ens12f0"}, "driver: ice\nbus-info: 0000:85:00.0")
1334+
mockCmd.SetResponse("lspci", []string{"-s", "0000:85:00.0"}, "85:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for backplane")
13161335
mockCmd.SetResponse("devlink", []string{"dev", "info", "pci/0000:85:00.0"}, "serial_number 50-7c-6f-ff-ff-ab-cd-ef")
13171336
SetCommandExecutor(mockCmd)
13181337
defer ResetCommandExecutor()

pkg/hardwareconfig/utils.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,12 @@ func GetClockIDFromInterfaceWithCache(iface string, hwDefPath string, pinCache *
235235

236236
// Step 2: PERLA workaround - Check if this is an E825 device
237237
// For E825 devices, there's no direct NIC-DPLL association, so we look for the zl3073x DPLL
238-
lspciOutput, lspciErr := commandExecutor.Execute("lspci", "-s", busAddr)
239-
if lspciErr == nil && strings.Contains(lspciOutput, "E825") {
238+
lspciOutput, err := commandExecutor.Execute("lspci", "-s", busAddr)
239+
if err != nil {
240+
return 0, fmt.Errorf("failed to run lspci -s %s, output: %s, err: %w", busAddr, lspciOutput, err)
241+
}
242+
if strings.Contains(lspciOutput, "E825") {
240243
glog.Infof("Detected E825 device on %s (interface %s), using PERLA workaround", busAddr, iface)
241-
242244
// Use provided cache or fetch new one
243245
cache := pinCache
244246
if cache == nil {

0 commit comments

Comments
 (0)