From e1b32b1885c2dfec43ace595da2e9653e8bbbca8 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jul 2026 13:39:51 -0400 Subject: [PATCH 1/2] Update FN64251 validation guidance (#402) Replace the retired serial-number validation tool with the chat interface embedded in FN64251 and document the direct Field Notice workflow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- aci-preupgrade-validation-script.py | 2 +- docs/docs/validations.md | 6 ++---- .../test_clock_signal_component_failure_check.py | 3 +++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/aci-preupgrade-validation-script.py b/aci-preupgrade-validation-script.py index 5e79f56e..fd7afd5e 100644 --- a/aci-preupgrade-validation-script.py +++ b/aci-preupgrade-validation-script.py @@ -5630,7 +5630,7 @@ def clock_signal_component_failure_check(**kwargs): result = PASS headers = ['Pod', "Node", "Slot", "Model", "Serial Number"] data = [] - recommended_action = 'Run the SN string through the Serial Number Validation tool (linked within doc url) to check for FN64251.\n\tSN String:\n\t' + recommended_action = 'Use the chat interface embedded in FN64251 (linked within the documentation) to validate the listed serial numbers.\n\tSN String:\n\t' doc_url = 'https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#nexus-950x-fm-or-lc-might-fail-to-boot-after-reload' eqptFC_api = 'eqptFC.json' diff --git a/docs/docs/validations.md b/docs/docs/validations.md index f7886811..1dbe4344 100644 --- a/docs/docs/validations.md +++ b/docs/docs/validations.md @@ -2645,7 +2645,7 @@ The script checks if your upgrade is susceptible to this defect from both versio ### Nexus 950X FM or LC Might Fail to boot after reload A clock signal component manufactured by one supplier, and included in some Cisco products, has been seen to degrade over time in some units. -Although the Cisco products with these components are currently performing normally, we expect product failures to increase over the years, beginning after the unit has been in operation for approximately 18 months. Additional details are document in [FN64251][39] +Although the Cisco products with these components are currently performing normally, we expect product failures to increase over the years, beginning after the unit has been in operation for approximately 18 months. Additional details are documented in [FN64251][39]. The matching defect is [CSCvg26013][40]. @@ -2660,7 +2660,7 @@ Line Card - N9K-X9732C-EX -If alerted, check if identified Serial Numbers are affected using the [Serial Number Validation Tool][41]. +If alerted, open [FN64251][39] and use the chat interface embedded in the Field Notice to validate the identified serial numbers. ### Stale Decommissioned Spine @@ -2887,7 +2887,6 @@ Contact Cisco TAC for next steps. For more details, refer to the workaround in [ [38]: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/6x/verified-scalability/cisco-aci-verified-scalability-guide-612.html [39]: https://www.cisco.com/c/en/us/support/docs/field-notices/642/fn64251.html [40]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvg26013 -[41]: https://snvui.cisco.com/snv/FN64251 [42]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwf58763 [43]: https://www.cisco.com/c/en/us/support/docs/field-notices/740/fn74050.html [44]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwd65255 @@ -2923,4 +2922,3 @@ Contact Cisco TAC for next steps. For more details, refer to the workaround in [ [74]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwm42741 [75]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwt69100 [76]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwt38698 - diff --git a/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py b/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py index a1b017e5..6772875b 100644 --- a/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py +++ b/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py @@ -56,3 +56,6 @@ def test_logic(run_check, mock_icurl, expected_result): result = run_check() assert result.result == expected_result + if expected_result == script.MANUAL: + assert "chat interface embedded in FN64251" in result.recommended_action + assert "Serial Number Validation tool" not in result.recommended_action From 453cf903eb970426f1881cfcfda8e722beeb6a9b Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jul 2026 16:49:55 -0400 Subject: [PATCH 2/2] Clarify FN64251 affected-product guidance (#402) Document the shipment-date cutoff and inconclusive V01 VID, and direct users to TAC when a listed component is not known to be post-cutoff. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- aci-preupgrade-validation-script.py | 7 ++++++- docs/docs/validations.md | 4 +++- .../test_clock_signal_component_failure_check.py | 15 ++++++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/aci-preupgrade-validation-script.py b/aci-preupgrade-validation-script.py index fd7afd5e..a0e8e2ec 100644 --- a/aci-preupgrade-validation-script.py +++ b/aci-preupgrade-validation-script.py @@ -5630,7 +5630,12 @@ def clock_signal_component_failure_check(**kwargs): result = PASS headers = ['Pod', "Node", "Slot", "Model", "Serial Number"] data = [] - recommended_action = 'Use the chat interface embedded in FN64251 (linked within the documentation) to validate the listed serial numbers.\n\tSN String:\n\t' + recommended_action = ( + 'Review the listed serial numbers using FN64251. Products shipped after December 5, 2016 are not affected ' + 'and can be ignored. For products shipped on or before December 5, 2016, or with an unknown ship date, ' + 'contact Cisco TAC to confirm whether they are affected. A V01 Version ID (VID) is only possibly affected ' + 'and is not conclusive because some unaffected products also use V01.\n\tSN String:\n\t' + ) doc_url = 'https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#nexus-950x-fm-or-lc-might-fail-to-boot-after-reload' eqptFC_api = 'eqptFC.json' diff --git a/docs/docs/validations.md b/docs/docs/validations.md index 1dbe4344..05a2d799 100644 --- a/docs/docs/validations.md +++ b/docs/docs/validations.md @@ -2660,7 +2660,9 @@ Line Card - N9K-X9732C-EX -If alerted, open [FN64251][39] and use the chat interface embedded in the Field Notice to validate the identified serial numbers. +If alerted, review the serial numbers reported by the check against [FN64251][39]. Products shipped after December 5, 2016 are not affected and can be ignored. For products shipped on or before December 5, 2016, or with an unknown ship date, contact Cisco TAC with the reported serial numbers to confirm whether they are affected. + +The Field Notice identifies V01 as possibly affected, but the VID is not conclusive because some unaffected products also use V01. The VID of a working module can be obtained with the `show inventory` command; a failed module will not be recognized. ### Stale Decommissioned Spine diff --git a/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py b/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py index 6772875b..7d4b1fcd 100644 --- a/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py +++ b/tests/checks/clock_signal_component_failure_check/test_clock_signal_component_failure_check.py @@ -19,7 +19,7 @@ @pytest.mark.parametrize( - "icurl_outputs, expected_result", + "icurl_outputs, expected_result, expected_serials", # Positive cases, one or both classes return an affected model [ ( @@ -28,6 +28,7 @@ eqptLC_api: read_data(dir, "eqptLC_POS.json") }, script.MANUAL, + ["FOC235053QS", "FOC23506V60", "FOC23506V3J", "FOC235053QU", "FOC235053MR", "FDO23260QX5"], ), ( { @@ -35,6 +36,7 @@ eqptLC_api: read_data(dir, "eqptLC_NEG.json") }, script.MANUAL, + ["FOC235053QS", "FOC23506V60", "FOC23506V3J", "FOC235053QU", "FOC235053MR"], ), ( { @@ -42,6 +44,7 @@ eqptLC_api: read_data(dir, "eqptLC_POS.json") }, script.MANUAL, + ["FDO23260QX5"], ), # Both classes return empty ( @@ -50,12 +53,18 @@ eqptLC_api: read_data(dir, "eqptLC_NEG.json") }, script.PASS, + [], ) ], ) -def test_logic(run_check, mock_icurl, expected_result): +def test_logic(run_check, mock_icurl, expected_result, expected_serials): result = run_check() assert result.result == expected_result if expected_result == script.MANUAL: - assert "chat interface embedded in FN64251" in result.recommended_action + assert "shipped after December 5, 2016 are not affected" in result.recommended_action + assert "on or before December 5, 2016" in result.recommended_action + assert "contact Cisco TAC" in result.recommended_action + assert "V01 Version ID (VID) is only possibly affected" in result.recommended_action + assert all(serial in result.recommended_action for serial in expected_serials) + assert "chat interface" not in result.recommended_action assert "Serial Number Validation tool" not in result.recommended_action