Skip to content

Validate Preferred Group shared-service providers (#244) - #276

Open
jeestr4d wants to merge 18 commits into
v4.3.0-devfrom
issue244
Open

Validate Preferred Group shared-service providers (#244)#276
jeestr4d wants to merge 18 commits into
v4.3.0-devfrom
issue244

Conversation

@jeestr4d

@jeestr4d jeestr4d commented Aug 12, 2025

Copy link
Copy Markdown
Collaborator

Fixes #244.

Summary

Adds a pre-upgrade validation for Preferred Group members that provide tenant-
or global-scope shared-service contracts.

The check:

  • Runs for ACI target releases 4.2 and later.
  • Selects fvAEPg and l3extInstP providers with
    prefGrMemb="include" and shared/global pcTags 17-16385.
  • Requires a materialized provider-side vzFromEPg to vzToEPg
    relationship; provider configuration alone is not reported.
  • Resolves provider context through
    vzFromEPg.scopeId -> fvCtxDef.scope -> fvCtxDef.dn.
  • Compares the provider context DN with vzToEPg.ctxDefDn and reports only
    cross-context relationships.
  • Requires matching tenant ancestry for tenant-scope contracts.
  • Reports the specific affected consumer DN and de-duplicates result rows.

Version behavior

Target version Behavior
Before 4.2 Check is not applicable
4.2 through target releases before 6.0(1g) Report any materialized cross-context consumer class; early releases can have silent forwarding risk, while later 4.2/5.x releases can reject the configuration with F0467
6.0(1g) and later Report only cross-context L3Out (/instP-) or vzAny (/any) consumers; ordinary EPG-to-EPG shared service is allowed
6.1(3f) and later Same restricted topology; product validation may surface the condition through F4684

The source-proven Preferred Group-specific F0467 boundaries are 4.2(6d),
5.1(3e), and first-proven 5.2(1g). The first source-visible narrowed behavior
is 6.0(1g).

Sanitized integration result

The deterministic ACI 5.2(4d) to 5.2(8f) integration job identified seven
materialized cross-context relationships across three fabrics:

Fabric Findings
Fabric A 2
Fabric B 4
Fabric C 1

Sanitized examples:

Shared-service contract Preferred Group provider pcTag Affected consumer
uni/tn-Tenant-A/brc-Shared-Contract-1 uni/tn-Tenant-A/ap-App-Provider/epg-Provider-1 57 uni/tn-Tenant-B/ap-App-Consumer/epg-Consumer-1
uni/tn-Tenant-C/brc-Shared-Contract-2 uni/tn-Tenant-C/ap-App-Provider/epg-Provider-2 10934 uni/tn-Tenant-D/ap-App-Consumer/epg-Consumer-2
uni/tn-common/brc-Shared-Contract-3 uni/tn-Tenant-E/ap-App-Provider/epg-Provider-3 10932 uni/tn-Tenant-F/ap-App-Consumer/epg-Consumer-3

Every reported row has a concrete materialized consumer instead of the prior
provider-only Any value.

One additional integration fabric returned APIC DME 503 Resolve timeout
responses. Multiple unrelated validations timed out concurrently on that
fabric. In most affected runs, this check timed out on its first vzBrCP
query and never reached the new fvCtxDef or vzFromEPg queries.

Validation

  • Focused Preferred Group tests: 35 passed.
  • Full local suite: 1,050 passed.
  • GitLab Python 2.7 unit job: passed.
  • GitLab Python 3.8 unit job: passed.
  • GitLab integration pipeline exercised the updated logic against live
    fabrics.

@jeestr4d
jeestr4d requested review from monrog2 and takishida August 12, 2025 19:43
monrog2 and others added 4 commits February 27, 2026 11:08
…n required (#355)

* add `--max-threads` arg
* fix bad descriptor errs/race conditions
* update pytests
… cscwh68103 invalid fabricpathep targets (#357)

* specific testing for known failure conditions of cscwh68103 as to not catch valid scenarios
@monrog2
monrog2 changed the base branch from master to v4.1.0-dev February 27, 2026 19:38
@monrog2

monrog2 commented Feb 27, 2026

Copy link
Copy Markdown
Collaborator

integration test has no issues related to this check

@monrog2

monrog2 commented Feb 27, 2026

Copy link
Copy Markdown
Collaborator
  1. Only checking global scope contract, also tenant scope can be denote shared services.
  2. what about vzAny scenario?

@monrog2 monrog2 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Requesting changes because the new validation can skip affected upgrade targets, fail on valid APIC responses, and report outage warnings for configurations outside the documented defect condition. The test layout follows the repository convention, but it needs regression coverage for these cases and should validate the returned details, not only the status. Focused Python 3.8 tests pass (10/10), but the version-gating and missing-children defects were independently reproduced.

Comment thread aci-preupgrade-validation-script.py 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
@monrog2
monrog2 changed the base branch from v4.1.0-dev to v4.2.0-dev July 21, 2026 19:47
@lovkeshsharma702
lovkeshsharma702 deleted the branch v4.3.0-dev September 9, 2026 09:19
@monrog2 monrog2 reopened this Sep 9, 2026
@monrog2
monrog2 changed the base branch from v4.2.0-dev to v4.3.0-dev September 9, 2026 13:28
monrog2 and others added 9 commits September 9, 2026 15:08
Remove unsupported F0467 version thresholds so the check also covers releases with the silent forwarding risk. Add regression coverage across the source-verified 4.2 through 6.0 boundaries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Treat omitted or empty APIC subtree children as no provider relations so one childless object cannot abort the validation and hide other affected objects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Preserve broad pre-6.0 detection, but on 6.0(1g) and later only report shared-service providers with a cross-VRF L3Out consumer. Include the triggering consumer in result data and cover false-positive cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tell operators how to remove the unsupported relationship and verify policy deployment across the F0467 and F4684 enforcement paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Treat tenant-scoped contracts as shared-service candidates and verify both broad pre-6.0 behavior and cross-VRF L3Out correlation on 6.0(1g) and later.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the APIC reverse vzAny consumer relation on 6.0(1g) and later, report the triggering consumer, reject malformed relation data explicitly, and avoid consumer inventory queries when no candidate provider exists.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the kebab-case MkDocs anchor in both the check result and validation index, with regression coverage for the generated URL.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve overlapping validation additions by preserving the preferred-group check ahead of later upstream checks and retaining all upstream behavior. Reconcile documentation ordering and reference numbering with the source-verified release behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use materialized vzFromEPg-to-vzToEPg relationships and authoritative context definitions to identify affected cross-VRF shared services. Preserve the pre-6.0 broad behavior while restricting 6.0+ findings to L3Out and vzAny consumers, and exclude reserved pcTag 16.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@monrog2 monrog2 changed the title issue244 solved Validate Preferred Group shared-service providers (#244) Sep 11, 2026
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.

NewValidation: Shared Services Provider and Preferred Group not supported post-upgrade

3 participants