Skip to content

[Nexthop][NPI] "asic_config_v3" part 2 - JSON schemas and validation script#1199

Open
marif-nexthop wants to merge 7 commits into
facebook:mainfrom
nexthop-ai:marif.fboss-asic-config-v3-2
Open

[Nexthop][NPI] "asic_config_v3" part 2 - JSON schemas and validation script#1199
marif-nexthop wants to merge 7 commits into
facebook:mainfrom
nexthop-ai:marif.fboss-asic-config-v3-2

Conversation

@marif-nexthop
Copy link
Copy Markdown
Contributor

Pre-submission checklist

  • I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running pip install -r requirements-dev.txt && pre-commit install
  • pre-commit run

Summary

Implements asic_config_v3 design.

Add strict JSON schemas for the Broadcom XGS ASIC config, the platform config, and the shared vendor common JSONs. Include a validation script that scans the asic_config_v3 directory tree and validates every matching file against its schema.

Test Plan

Install required package python3 -m pip install jsonschema
Run schema validation

python3 fboss/lib/asic_config_v3/validation/validate_asic_configs.py
Vendor common configs (vendor_common.schema.json):
  No files found.
Broadcom XGS ASIC configs (broadcom_xgs_asic_config.schema.json):
  No files found.
Platform configs (platform_config.schema.json):
  No files found.
0 passed, 0 failed

Note: There are no json files to validate at this point. Will be added in the next PR.


This PR is created on top of #1149 and #1198, so it contains diff from those PRs. When #1149 and #1198 merge, this PR will have shorter diff.

add_fb_thrift_python_executable (and any add_fb_python_executable call
with TYPE dir) produces a directory whose cmake target name is suffixed
with .GEN_PY_EXE. Strip that suffix when computing the on-disk output
path, and invoke directory outputs via python3 so __main__.py runs.
Non-python targets (e.g. fboss-bspmapping-gen) continue to exec directly.
cmake/AsicConfigV2ConfigCli.cmake uses add_fb_thrift_python_executable,
which registers the cmake target with a .GEN_PY_EXE suffix. Pass the
suffixed name so build can find it; run-helper.py strips the suffix
when locating the on-disk output.
Callers can now pass a JSON object of additional cmake defines which is
merged over the hardcoded {CMAKE_BUILD_TYPE, CMAKE_CXX_STANDARD} defaults.
Caller keys win on conflict. Existing callers that do not pass the flag
are unaffected.
range-v3's test suite fails to compile under clang's -Werror,-Wnrvo.
Disable it at the cmake level via --extra-cmake-defines.
Implements the design described in "[Data-Driven asic_config_v3
Design](https://docs.google.com/document/d/1yJ1IHX06IOnv5hznau2hdGvtvjvZwPGRsQT2Ft-y3_g/edit?pli=1&tab=t.yk03mogkzncz)"
document (approved by Meta for phase 1).

Add `fboss/lib/asic_config_v3/` Python package skeleton along
with a fully defined CMake build target. This creates the basic infra of
the data-driven ASIC config generator (`asic_config_v3`) that will
replace the code-driven
`asic_config_v2` path.

The `gen.py` entry point is included with an empty `_GENERATOR_REGISTRY`
so
the `fboss-asic-config-v3-gen` target is buildable immediately; registry
entries for concrete ASIC families will be added in follow-up commits.

Ran `fboss/lib/asic_config_v3/run-helper.sh`.
Add strict JSON schemas for the Broadcom `XGS` ASIC config, the platform
config, and the shared vendor common JSONs. Include a validation script
that scans the `asic_config_v3` directory tree and validates every
matching file
against its schema.
@marif-nexthop marif-nexthop requested review from a team as code owners May 14, 2026 19:01
@meta-cla meta-cla Bot added the CLA Signed label May 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant