Skip to content

Added APIC OOB connectivity checks for CSCwu91693 - #418

Open
Priyanka-Patil14 wants to merge 4 commits into
datacenter:v4.2.0-devfrom
Priyanka-Patil14:CSCwu91693-apic-oob
Open

Added APIC OOB connectivity checks for CSCwu91693#418
Priyanka-Patil14 wants to merge 4 commits into
datacenter:v4.2.0-devfrom
Priyanka-Patil14:CSCwu91693-apic-oob

Conversation

@Priyanka-Patil14

@Priyanka-Patil14 Priyanka-Patil14 commented Jul 27, 2026

Copy link
Copy Markdown

Summary:

  • This PR adds a new validation check: APIC OOB Connectivity.

  • The check detects broken OOB management connectivity between APIC controllers, which can cause a partial or failed cluster upgrade.

What Changed:

  • Added apic_oob_connectivity_check with nested helper _get_apic_oob_connectivity in aci-preupgrade-validation-script.py
  • Added validation documentation in docs/docs/validations.md
  • Added dedicated unit tests and test data under: tests/checks/apic_oob_connectivity_check/

Check Behavior:

APIC OOB Connectivity:

  • Returns N/A if target version is below 6.0(2a)
  • Returns PASS if all APIC OOB IPs are reachable on the required HTTPS ports
  • Returns FAIL_UF if any APIC OOB IP is unreachable
  • Returns ERROR if commHttps port cannot be read

Test Results:

@asraf-khan asraf-khan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it as single function check for 2 different validation with help of helper inside same function.

@Priyanka-Patil14

Copy link
Copy Markdown
Author

Make it as single function check for 2 different validation with help of helper inside same function.

Done. Merged both validations into a single check function

Comment thread docs/docs/validations.md Outdated

### APIC OOB Connectivity

Due to [CSCwu91693][77], when an APIC cluster upgrade is triggered, the orchestrating APIC fans out an HTTPS POST to every peer APIC over the OOB management network. If OOB connectivity to any peer APIC is broken at upgrade time, only the reachable APICs receive the trigger and start upgrading. The unreachable APICs are silently skipped, leaving the cluster partially upgraded — a state that cannot be recovered remotely.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apic bootx use https POST for upgrade starting from 602. Due to [CSCwu91693][77], If OOB connectivity to any peer APIC is broken during upgrade, only the reachable APICs receive the trigger and start upgrading. The unreachable APICs are silently skipped, leaving the cluster partially upgraded.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated.

Comment thread docs/docs/validations.md Outdated

This check performs two verifications:

1. **Default port (443)**: Used by APIC bootx starting from 6.0(2). Applicable when target version is 6.0(2) or above.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Default port (443): APIC used bootx starting from 6.0(2). default https port used is 443.
    remote all AI marked special symbol.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated.

Comment thread docs/docs/validations.md Outdated
This check performs two verifications:

1. **Default port (443)**: Used by APIC bootx starting from 6.0(2). Applicable when target version is 6.0(2) or above.
2. **Custom HTTPS port (from `commHttps`)**: Used by the upgrade fanout starting from 6.2(1). Applicable when both current and target versions are 6.2(1) or above. If the configured port is the same as the default (443), this step is skipped as it is already covered above.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Custom HTTPS port (from commHttps): starting from 6.2(1) Customer ports are supported. Applicable when both current and target versions are 6.2(1) or above.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated.

Comment thread docs/docs/validations.md Outdated
Comment thread aci-preupgrade-validation-script.py
Comment thread aci-preupgrade-validation-script.py
Comment thread aci-preupgrade-validation-script.py
Comment thread aci-preupgrade-validation-script.py Outdated
Comment on lines +6728 to +6731
if subprocess.call(
'curl --max-time 5 -k -s -o /dev/null https://{}:{} 2>/dev/null'.format(ip, port),
shell=True
) in [7, 28]:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anything as !0 should be tracked as failure.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated

Comment thread aci-preupgrade-validation-script.py Outdated
has_error = True

# Custom HTTPS port check: upgrade fanout uses commHttps port from 6.2(1)
if not (cversion.older_than("6.2(1a)") or tversion.older_than("6.2(1a)")):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if (cversion.newer_than("6.2(1a)"). target version can be ignored.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to if not cversion.older_than "6.2(1a)".

Comment thread docs/docs/validations.md Outdated
Comment thread aci-preupgrade-validation-script.py Outdated
Comment thread aci-preupgrade-validation-script.py Outdated
Comment thread aci-preupgrade-validation-script.py Outdated
@@ -0,0 +1,32 @@
[

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing testcase for both ipv6. please add that as well and test in lab.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants