Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions aci-preupgrade-validation-script.py
Original file line number Diff line number Diff line change
Expand Up @@ -5157,6 +5157,55 @@ def stale_pcons_ra_mo_check(index, total_checks, cversion, tversion, **kwargs):
return result


def isis_database_byte_check(index, total_checks, tversion, **kwargs):
title = 'ISIS DTEPs Byte Size'
result = PASS
msg = ''
headers = ["ISIS DTEPs Byte Size", "ISIS DTEPs"]
data = []
recommended_action = 'Upgrade to a version with the fix for CSCwp15375. Current target version is affected.'
doc_url = 'https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#isis-dteps-byte-size'
print_title(title, index, total_checks)

if not tversion:
print_result(title, MANUAL, "Target version not supplied. Skipping.")
return MANUAL

if tversion.newer_than("6.1(1a)") and tversion.older_than("6.1(3g)"):
isisDTEp_api = 'isisDTEp.json'
isisDTEp_api += '?query-target-filter=eq(isisDTEp.role,"spine")'

isisDTEps = icurl('class', isisDTEp_api)

physical_ids = set()
proxy_acast_ids = set()

for entry in isisDTEps:
dtep_type = entry['isisDTEp']['attributes']['type']
dtep_id = entry['isisDTEp']['attributes']['id']

if dtep_type == "physical":
physical_ids.add(dtep_id)
elif "physical,proxy-acast" in dtep_type:
proxy_acast_ids.add(dtep_id)

for physical_id in physical_ids:
combined_dteps = ",".join([physical_id] + list(proxy_acast_ids))
total_bytes = len(combined_dteps)

if total_bytes > 57:
result = FAIL_O
data.append([total_bytes, combined_dteps])
break

else:
print_result(title, NA, "Target version not affected")
return NA

print_result(title, result, msg, headers, data, recommended_action=recommended_action, doc_url=doc_url)
return result


if __name__ == "__main__":
prints(' ==== %s%s, Script Version %s ====\n' % (ts, tz, SCRIPT_VERSION))
prints('!!!! Check https://github.com/datacenter/ACI-Pre-Upgrade-Validation-Script for Latest Release !!!!\n')
Expand Down Expand Up @@ -5273,6 +5322,7 @@ def stale_pcons_ra_mo_check(index, total_checks, cversion, tversion, **kwargs):
standby_sup_sync_check,
observer_db_size_check,
stale_pcons_ra_mo_check,
isis_database_byte_check,

]
summary = {PASS: 0, FAIL_O: 0, FAIL_UF: 0, ERROR: 0, MANUAL: 0, POST: 0, NA: 0, 'TOTAL': len(checks)}
Expand Down
23 changes: 22 additions & 1 deletion docs/docs/validations.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@ Items | Defect | This Script
[Standby Sup Image Sync][d24] | CSCwi66348 | :white_check_mark: | :no_entry_sign: |:no_entry_sign:
[Observer Database Size][d25] | CSCvw45531 | :white_check_mark: | :no_entry_sign: |:no_entry_sign:
[Stale pconsRA Object][d26] | CSCwp22212 | :white_check_mark: | :no_entry_sign: |:no_entry_sign:
[ISIS DTEPs Byte Size][d27] | CSCwp15375 | :white_check_mark: | :no_entry_sign: |:no_entry_sign:


[d1]: #ep-announce-compatibility
[d2]: #eventmgr-db-size-defect-susceptibility
Expand Down Expand Up @@ -212,6 +214,7 @@ Items | Defect | This Script
[d24]: #standby-sup-image-sync
[d25]: #observer-database-size
[d26]: #stale-pconsra-object
[d27]: #isis-dteps-byte-size


## General Check Details
Expand Down Expand Up @@ -2549,6 +2552,23 @@ Due to [CSCwp22212][57], the existence of stale pconsRA objects within an ACI fa
TAC must be engaged to cleanup these objects, as they require root access.


### ISIS DTEPs Byte Size

Due to [CSCwp15375][58], running a `show` command that dumps out the ISIS Link State Database under certain conditions, such as `show isis database detail vrf all`, will result in a switch crash.

As Switch Tech Support generation includes ISIS show command output, Tech Support generation will also result in a switch crash under the same conditions.

The specific conditions leading to the crash are:

1. The ACI software version is 6.1(1f), 6.1(2f), 6.1(2g), or 6.1(3f)
2. For any spine; The `isisDTEp` address + `PROXY-ACAST-MAC` address + `PROXY-ACAST-V4` address + `PROXY-ACAST-V6` address equals 58 bytes or more

Do not upgrade to any affected ACI software release if this check fails.

!!! note
Nexus Dashboard Insights (NDI) integration can cause ACI tech support generation to happen automatically as part of the bug scan feature.


[0]: https://github.com/datacenter/ACI-Pre-Upgrade-Validation-Script
[1]: https://www.cisco.com/c/dam/en/us/td/docs/Website/datacenter/apicmatrix/index.html
[2]: https://www.cisco.com/c/en/us/support/switches/nexus-9000-series-switches/products-release-notes-list.html
Expand Down Expand Up @@ -2606,4 +2626,5 @@ TAC must be engaged to cleanup these objects, as they require root access.
[54]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvt47850
[55]: https://www.cisco.com/c/en/us/products/collateral/cloud-systems-management/application-policy-infrastructure-controller-apic/eol-apic-virtual-edge-pod-pb.html
[56]: https://www.cisco.com/c/en/us/td/docs/dcn/whitepapers/cisco-aci-virtual-edge-migration.html
[57]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwp22212
[57]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwp22212
[58]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwp15375
Loading