[Nexthop][NPI] "asic_config_v3" part 2 - JSON schemas and validation script#1199
Open
marif-nexthop wants to merge 7 commits into
Open
[Nexthop][NPI] "asic_config_v3" part 2 - JSON schemas and validation script#1199marif-nexthop wants to merge 7 commits into
marif-nexthop wants to merge 7 commits into
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pre-submission checklist
pip install -r requirements-dev.txt && pre-commit installpre-commit runSummary
Implements
asic_config_v3design.Add strict JSON schemas for the Broadcom
XGSASIC config, the platform config, and the shared vendor common JSONs. Include a validation script that scans theasic_config_v3directory tree and validates every matching file against its schema.Test Plan
Install required package
python3 -m pip install jsonschemaRun schema validation
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.