Skip to content

Commit b258668

Browse files
committed
Resolved merge conflicts
2 parents 72b856c + 68f3673 commit b258668

10 files changed

Lines changed: 640 additions & 12 deletions

aci-preupgrade-validation-script.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2991,25 +2991,29 @@ def apic_disk_space_faults_check(cversion, **kwargs):
29912991
doc_url = "https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#apic-disk-space-usage"
29922992
recommended_action = {
29932993
'/firmware': 'Remove unneeded images',
2994-
'/techsupport': 'Remove unneeded techsupports/cores'
2994+
'/techsupport': 'Remove unneeded techsupports/cores',
2995+
'/data/log': 'Remove unneeded logs in var/log/dme/log'
29952996
}
29962997
default_action = 'Contact Cisco TAC.'
29972998
if cversion.same_as('4.0(1h)') or cversion.older_than('3.2(6i)'):
29982999
default_action += ' A typical issue is CSCvn13119.'
29993000

30003001
dn_regex = node_regex + r'/.+p-\[(?P<mountpoint>.+)\]-f'
3001-
desc_regex = r'is (?P<usage>\d{2}%) full'
3002+
desc_regex = r'is (?P<usage>\d{2,3}%) full'
30023003

30033004
faultInsts = icurl('class',
30043005
'faultInst.json?query-target-filter=or(eq(faultInst.code,"F1527"),eq(faultInst.code,"F1528"),eq(faultInst.code,"F1529"))')
30053006
for faultInst in faultInsts:
3007+
lc = faultInst['faultInst']['attributes']['lc']
3008+
if lc not in ["raised", "soaking"]:
3009+
continue
30063010
fc = faultInst['faultInst']['attributes']['code']
30073011
dn = re.search(dn_regex, faultInst['faultInst']['attributes']['dn'])
30083012
desc = re.search(desc_regex, faultInst['faultInst']['attributes']['descr'])
30093013
if dn and desc:
30103014
data.append([fc, dn.group('pod'), dn.group('node'), dn.group('mountpoint'),
3011-
desc.group('usage'),
3012-
recommended_action.get(dn.group('mountpoint'), default_action)])
3015+
desc.group('usage'),
3016+
recommended_action.get(dn.group('mountpoint'), default_action)])
30133017
else:
30143018
unformatted_data.append([fc, faultInst['faultInst']['attributes']['dn'], default_action])
30153019
if not data and not unformatted_data:
@@ -6026,6 +6030,30 @@ def apic_downgrade_compat_warning_check(cversion, tversion, **kwargs):
60266030
return Result(result=result, headers=headers, data=data, recommended_action=recommended_action, doc_url=doc_url)
60276031

60286032

6033+
@check_wrapper(check_title='Auto Firmware Update on Switch Discovery')
6034+
def auto_firmware_update_on_switch_check(cversion, tversion, **kwargs):
6035+
result = PASS
6036+
headers = ["Auto Firmware Update Status", "Default Firmware Version", "Upgrade Target Version"]
6037+
data = []
6038+
recommended_action = 'Disable Auto Firmware Update before the upgrade as a precaution. See the reference doc for details.'
6039+
doc_url = 'https://datacenter.github.io/ACI-Pre-Upgrade-Validation-Script/validations/#auto-firmware-update-on-switch-discovery'
6040+
6041+
if not tversion or not cversion:
6042+
return Result(result=MANUAL, msg=TVER_MISSING)
6043+
6044+
if tversion.older_than("6.0(3a)") or (
6045+
cversion.newer_than("6.0(3a)") or (cversion.major1 == "5" and cversion.newer_than("5.2(8a)"))
6046+
):
6047+
return Result(result=NA, msg=VER_NOT_AFFECTED)
6048+
6049+
fwrepop = icurl("mo", "uni/fabric/fwrepop.json")
6050+
if fwrepop and fwrepop[0]["firmwareRepoP"]["attributes"]["enforceBootscriptVersionValidation"] == "yes":
6051+
data.append(["Enabled", fwrepop[0]["firmwareRepoP"]["attributes"]["defaultSwitchVersion"], str(tversion)])
6052+
result = MANUAL
6053+
6054+
return Result(result=result, headers=headers, data=data, recommended_action=recommended_action, doc_url=doc_url)
6055+
6056+
60296057
@check_wrapper(check_title="Inband Management Policy Misconfiguration")
60306058
def inband_management_policy_misconfig_check(cversion, tversion, **kwargs):
60316059

@@ -6217,6 +6245,7 @@ class CheckManager:
62176245
standby_sup_sync_check,
62186246
isis_database_byte_check,
62196247
configpush_shard_check,
6248+
auto_firmware_update_on_switch_check,
62206249
inband_management_policy_misconfig_check,
62216250

62226251
]

docs/docs/validations.md

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,9 @@ Items | Defect | This Script
192192
[Observer Database Size][d25] | CSCvw45531 | :white_check_mark: | :no_entry_sign:
193193
[Stale pconsRA Object][d26] | CSCwp22212 | :warning:{title="Deprecated"} | :no_entry_sign:
194194
[ISIS DTEPs Byte Size][d27] | CSCwp15375 | :white_check_mark: | :no_entry_sign:
195-
[Policydist configpushShardCont Crash][d28] | CSCwp95515 | :white_check_mark: |
196-
[Inband Management Policy Misconfiguration][d29]| CSCwd40071 | :white_check_mark: | :no_entry_sign:
195+
[Policydist configpushShardCont Crash][d28] | CSCwp95515 | :white_check_mark: | :no_entry_sign:
196+
[Auto Firmware Update on Switch Discovery][d29] | CSCwe83941 | :white_check_mark: | :no_entry_sign:
197+
[Inband Management Policy Misconfiguration][d30]| CSCwd40071 | :white_check_mark: | :no_entry_sign:
197198

198199
[d1]: #ep-announce-compatibility
199200
[d2]: #eventmgr-db-size-defect-susceptibility
@@ -223,7 +224,8 @@ Items | Defect | This Script
223224
[d26]: #stale-pconsra-object
224225
[d27]: #isis-dteps-byte-size
225226
[d28]: #policydist-configpushshardcont-crash
226-
[d29]: #inband-management-policy-misconfiguration
227+
[d29]: #auto-firmware-update-on-switch-discovery
228+
[d30]: #inband-management-policy-misconfiguration
227229

228230

229231
## General Check Details
@@ -2649,16 +2651,35 @@ Due to [CSCwp95515][59], upgrading to an affected version while having any `conf
26492651

26502652
If any instances of `configpushShardCont` are flagged by this script, Cisco TAC must be contacted to identify and resolve the underlying issue before performing the upgrade.
26512653

2654+
### Auto Firmware Update on Switch Discovery
2655+
2656+
[Auto Firmware Update on Switch Discovery][63] automatically upgrades a new switch to the target firmware version before registering it to the ACI fabric. This feature activates in three scenarios:
2657+
2658+
* when adding a new switch to expand the fabric
2659+
* when replacing an existing switch
2660+
* when initializing and rediscovering an existing switch
2661+
2662+
It does not activate during regular upgrades initiated through the APIC.
2663+
2664+
Due to [CSCwe83941][62], if a new switch is running 6.0(1), 6.0(2) or any version older than 5.2(8), attempting to upgrade it to 6.0(3)+ using Auto Firmware Update will fail. The switch will become unusable until a manual recovery procedure is performed directly on the device.
2665+
2666+
While this issue does not occur during standard upgrades, it is important to be aware of the risk when your target version is 6.0(3) or newer and the switch is running 6.0(1), 6.0(2), or a version older than 5.2(8). Auto Firmware Update may get triggered and hit this issue during switch replacement in an upgrade window or if you need to re-initialize a switch after a failed upgrade.
2667+
2668+
To avoid this risk, consider disabling Auto Firmware Update before upgrading to 6.0(3)+ if any switches are running the affected older versions. In the future, ensure that any new switch is running a compatible version before re-enabling Auto Firmware Update and registering it to the fabric.
2669+
2670+
!!! note
2671+
This issue occurs because older switch firmware versions are not compatible with switch images 6.0(3) or newer. The APIC version is not a factor.
2672+
26522673

26532674
### Inband Management Policy Misconfiguration
26542675

26552676
RCA:
26562677

2657-
Due to the defect [CSCwh80837][62], starting from version 6.0(4c), an implicit deletion of `fvRsCustQosPol` was introduced under InBand EPG as QoS configuration is not applicable to management inband EPG and it was raising an invalid fault under it. This implicit deletion triggers a re-processing and pushes updates to `fvInBEpP` (Inband Endpoint Profile) on leaf nodes where the inband management policy is deployed.
2678+
Due to the defect [CSCwh80837][64], starting from version 6.0(4c), an implicit deletion of `fvRsCustQosPol` was introduced under InBand EPG as QoS configuration is not applicable to management inband EPG and it was raising an invalid fault under it. This implicit deletion triggers a re-processing and pushes updates to `fvInBEpP` (Inband Endpoint Profile) on leaf nodes where the inband management policy is deployed.
26582679

26592680
Impact:
26602681

2661-
When upgrading from versions prior to 6.0(4c) to versions 6.0(4c) or later, if there is a misconfiguration in the inband management policies (`mgmtRsInBStNode`) with invalid values, the re-processing triggered by [CSCwh80837][62] will expose the underlying [CSCwd40071][63] defect. This results in continuous policyelem core dumps and switch reboot when attempting to add any access policies configuration to a leaf switch (such as VLANs tied to leaf profiles via physical domain, AAEP, interface policy group, or port selector).
2682+
When upgrading from versions prior to 6.0(4c) to versions 6.0(4c) or later, if there is a misconfiguration in the inband management policies (`mgmtRsInBStNode`) with invalid values, the re-processing triggered by [CSCwh80837][64] will expose the underlying [CSCwd40071][65] defect. This results in continuous policyelem core dumps and switch reboot when attempting to add any access policies configuration to a leaf switch (such as VLANs tied to leaf profiles via physical domain, AAEP, interface policy group, or port selector).
26622683

26632684
The invalid configuration occurs when `mgmtRsInBStNode` has "0.0.0.0" values (with no mask) for either the "addr" or "gw" fields.
26642685

@@ -2667,7 +2688,7 @@ Suggestion:
26672688
This check identifies misconfigured `mgmtRsInBStNode` objects where either "addr" or "gw" attributes are set to "0.0.0.0" when the upgrade crosses the 6.0(4c) release boundary. Contact Cisco TAC to remove any identified misconfigured objects before performing the upgrade to prevent policyelem crashes.
26682689

26692690
!!! note
2670-
The [CSCwd40071][63] defect affects versions 5.2(5c) and later, with a fix available in 6.0(1g). However, the issue will only be triggered during upgrades crossing 6.0(4c) due to [CSCwh80837][62].
2691+
The [CSCwd40071][65] defect affects versions 5.2(5c) and later, with a fix available in 6.0(1g). However, the issue will only be triggered during upgrades crossing 6.0(4c) due to [CSCwh80837][64].
26712692

26722693

26732694
[0]: https://github.com/datacenter/ACI-Pre-Upgrade-Validation-Script
@@ -2732,5 +2753,7 @@ This check identifies misconfigured `mgmtRsInBStNode` objects where either "addr
27322753
[59]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwp95515
27332754
[60]: https://www.cisco.com/c/en/us/solutions/collateral/data-center-virtualization/application-centric-infrastructure/white-paper-c11-743951.html#Inter
27342755
[61]: https://www.cisco.com/c/en/us/solutions/collateral/data-center-virtualization/application-centric-infrastructure/white-paper-c11-743951.html#EnablePolicyCompression
2735-
[62]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwh80837
2736-
[63]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwd40071
2756+
[62]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwe83941
2757+
[63]: https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/all/apic-installation-aci-upgrade-downgrade/Cisco-APIC-Installation-ACI-Upgrade-Downgrade-Guide/m-auto-firmware-update.html
2758+
[64]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwh80837
2759+
[65]: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwd40071
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
[
2+
{
3+
"faultInst": {
4+
"attributes": {
5+
"ack": "no",
6+
"alert": "no",
7+
"cause": "equipment-full",
8+
"changeSet": "available (Old: 1501496, New: 240908), capUtilized (Old: 29, New: 89), inodesFree (Old: 12148991, New: 12148990), inodesUsed (Old: 721, New: 722), used (Old: 595656, New: 1856244)",
9+
"childAction": "",
10+
"code": "F1529",
11+
"created": "2026-01-12T06:44:26.382+00:00",
12+
"delegated": "no",
13+
"descr": "Storage unit /data/log on Node 1 with hostname fab3-apic1 mounted at /data/log is 94% full",
14+
"dn": "topology/pod-1/node-1/sys/ch/p-[/data/log]-f-[tmpfs]/fault-F1529",
15+
"domain": "infra",
16+
"highestSeverity": "major",
17+
"lastTransition": "2026-01-12T06:44:26.382+00:00",
18+
"lc": "raised",
19+
"occur": "1",
20+
"origSeverity": "major",
21+
"prevSeverity": "major",
22+
"rule": "eqpt-storage-full-major",
23+
"severity": "major",
24+
"status": "",
25+
"subject": "equipment-full",
26+
"title": "",
27+
"type": "operational"
28+
}
29+
}
30+
},
31+
32+
33+
{
34+
"faultInst": {
35+
"attributes": {
36+
"ack": "no",
37+
"alert": "no",
38+
"cause": "equipment-full",
39+
"changeSet": "available (Old: 1501496, New: 240908), capUtilized (Old: 29, New: 89), inodesFree (Old: 12148991, New: 12148990), inodesUsed (Old: 721, New: 722), used (Old: 595656, New: 1856244)",
40+
"childAction": "",
41+
"code": "F1528",
42+
"created": "2026-01-12T06:44:26.382+00:00",
43+
"delegated": "no",
44+
"descr": "Storage unit /firmware on Node 1 with hostname fab3-apic1 mounted at /firmware is 89% full",
45+
"dn": "topology/pod-1/node-1/sys/ch/p-[/firmware]-f-[/dev/mapper/vg_ifc0-firmware]/fault-F1528",
46+
"domain": "infra",
47+
"highestSeverity": "major",
48+
"lastTransition": "2026-01-12T06:44:26.382+00:00",
49+
"lc": "soaking",
50+
"occur": "1",
51+
"origSeverity": "major",
52+
"prevSeverity": "major",
53+
"rule": "eqpt-storage-full-major",
54+
"severity": "major",
55+
"status": "",
56+
"subject": "equipment-full",
57+
"title": "",
58+
"type": "operational"
59+
}
60+
}
61+
},
62+
63+
{
64+
"faultInst": {
65+
"attributes": {
66+
"ack": "no",
67+
"alert": "no",
68+
"cause": "equipment-full",
69+
"changeSet": "available (Old: 1501496, New: 240908), capUtilized (Old: 29, New: 89), inodesFree (Old: 12148991, New: 12148990), inodesUsed (Old: 721, New: 722), used (Old: 595656, New: 1856244)",
70+
"childAction": "",
71+
"code": "F1528",
72+
"created": "2026-01-12T06:44:26.382+00:00",
73+
"delegated": "no",
74+
"descr": "Storage unit /techsupport on Node 1 with hostname fab3-apic1 mounted at /techsupport is 89% full",
75+
"dn": "topology/pod-1/node-1/sys/ch/p-[/techsupport]-f-[/dev/mapper/vg_ifc0-techsupport]/fault-F1528",
76+
"domain": "infra",
77+
"highestSeverity": "major",
78+
"lastTransition": "2026-01-12T06:44:26.382+00:00",
79+
"lc": "raised-clearing",
80+
"occur": "1",
81+
"origSeverity": "major",
82+
"prevSeverity": "major",
83+
"rule": "eqpt-storage-full-major",
84+
"severity": "major",
85+
"status": "",
86+
"subject": "equipment-full",
87+
"title": "",
88+
"type": "operational"
89+
}
90+
}
91+
}
92+
]
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
[
2+
{
3+
"faultInst": {
4+
"attributes": {
5+
"ack": "no",
6+
"alert": "no",
7+
"cause": "equipment-full",
8+
"changeSet": "available (Old: 1501496, New: 240908), capUtilized (Old: 29, New: 89), inodesFree (Old: 12148991, New: 12148990), inodesUsed (Old: 721, New: 722), used (Old: 595656, New: 1856244)",
9+
"childAction": "",
10+
"code": "F1528",
11+
"created": "2026-01-12T06:44:26.382+00:00",
12+
"delegated": "no",
13+
"descr": "Storage unit /data/log on Node 1 with hostname fab3-apic1 mounted at /data/log is 89% full",
14+
"dn": "topology/pod-1/node-1/sys/ch/p-[/data/log]-f-[tmpfs]/fault-F1528",
15+
"domain": "infra",
16+
"highestSeverity": "major",
17+
"lastTransition": "2026-01-12T06:44:26.382+00:00",
18+
"lc": "retaining",
19+
"occur": "1",
20+
"origSeverity": "major",
21+
"prevSeverity": "major",
22+
"rule": "eqpt-storage-full-major",
23+
"severity": "cleared",
24+
"status": "",
25+
"subject": "equipment-full",
26+
"title": "",
27+
"type": "operational"
28+
}
29+
}
30+
},
31+
32+
{
33+
"faultInst": {
34+
"attributes": {
35+
"ack": "no",
36+
"alert": "no",
37+
"cause": "equipment-full",
38+
"changeSet": "available (Old: 1501496, New: 240908), capUtilized (Old: 29, New: 89), inodesFree (Old: 12148991, New: 12148990), inodesUsed (Old: 721, New: 722), used (Old: 595656, New: 1856244)",
39+
"childAction": "",
40+
"code": "F1528",
41+
"created": "2026-01-12T06:44:26.382+00:00",
42+
"delegated": "no",
43+
"descr": "Storage unit /firmware on Node 1 with hostname fab3-apic1 mounted at /firmware is 89% full",
44+
"dn": "topology/pod-1/node-1/sys/ch/p-[/firmware]-f-[/dev/mapper/vg_ifc0-firmware]/fault-F1528",
45+
"domain": "infra",
46+
"highestSeverity": "major",
47+
"lastTransition": "2026-01-12T06:44:26.382+00:00",
48+
"lc": "soaking-clearing",
49+
"occur": "1",
50+
"origSeverity": "major",
51+
"prevSeverity": "major",
52+
"rule": "eqpt-storage-full-major",
53+
"severity": "major",
54+
"status": "",
55+
"subject": "equipment-full",
56+
"title": "",
57+
"type": "operational"
58+
}
59+
}
60+
},
61+
62+
{
63+
"faultInst": {
64+
"attributes": {
65+
"ack": "no",
66+
"alert": "no",
67+
"cause": "equipment-full",
68+
"changeSet": "available (Old: 1501496, New: 240908), capUtilized (Old: 29, New: 89), inodesFree (Old: 12148991, New: 12148990), inodesUsed (Old: 721, New: 722), used (Old: 595656, New: 1856244)",
69+
"childAction": "",
70+
"code": "F1528",
71+
"created": "2026-01-12T06:44:26.382+00:00",
72+
"delegated": "no",
73+
"descr": "Storage unit /techsupport on Node 1 with hostname fab3-apic1 mounted at /techsupport is 89% full",
74+
"dn": "topology/pod-1/node-1/sys/ch/p-[/techsupport]-f-[/dev/mapper/vg_ifc0-techsupport]/fault-F1528",
75+
"domain": "infra",
76+
"highestSeverity": "major",
77+
"lastTransition": "2026-01-12T06:44:26.382+00:00",
78+
"lc": "raised-clearing",
79+
"occur": "1",
80+
"origSeverity": "major",
81+
"prevSeverity": "major",
82+
"rule": "eqpt-storage-full-major",
83+
"severity": "major",
84+
"status": "",
85+
"subject": "equipment-full",
86+
"title": "",
87+
"type": "operational"
88+
}
89+
}
90+
}
91+
]

0 commit comments

Comments
 (0)