github.com-facebook-fboss
all · 84 devs · built 2026-08-09
Repository snapshot
Monthly reports
No monthly reports available yet.
Performance over time
ETV stacked by Growth, Maintenance and Fixes — 90-day moving average, normalized to ETV / month.
Average performance per developer
ETV per active developer per month — 30-day moving average.
Active developers over time
Unique developers committing each day — 90-day moving average.
Knowledge concentration
How dependent is this repo on a small number of contributors? Higher top-1 share = higher key-person risk.
Jasmeet Bagga owns 11.0 % of commits.
Top contributors
Most impactful commits
Top 20 by ETV in the all-time window.
- 2.5ETVAdd test client for FSDB cgo subscriber Summary: Adding FSDB test client in golang to cover FSDB subscribers that are implemented in go. Reviewed By: Reincarnationist Differential Revision: D96035218 fbshipit-source-id: 59a3212155dc196790f41e45fb38273c9c777dbaPriyank Warkhede · d5d6df6e · 2026-03-12
- 2.5ETVAdd/Prune MAC entry while (un)resolving nhop in ecmp helper Summary: ECMP setup helper are relying on the staticL2Observer to add mac entry post neighbor updates being installed. This is no longer the case as we update mac entry in the same update as neighbor entry (D71510482) Therefore, while resolving neighbor entry, ECMP helper also needs update mac entry accordingly in the same update. Reviewed By: jasmeetbagga Differential Revision: D73632906 fbshipit-source-id: 2311ec0d40b3042f0726fd305b21f48290b7d208Ron He · f2034b1a · 2025-05-05
- 2.2ETVMove runners to subdirectory Summary: Pulls out each runner class into a separate file and moves them into a separate `runners/` package Reviewed By: harshitgulati18 Differential Revision: D107117881 fbshipit-source-id: 798e37a9d61f72f5221abf2fc596427e93441960Scott Smith · 498aa6de · 2026-06-10
- 2.0ETVFixing RxEqualizer settings configuration for multi-port optics Summary: We had bugs in the code that sets RxEqualizer setting for multi-port optics. For example, we would correctly configure the setting for /1, but not for /5 in 2x800G-DR4 optics Differential Revision: D87515787 Privacy Context Container: L1390529 fbshipit-source-id: babb8bc52c9f45d911f9743ad31771b2a813d7d3Harshit Gulati · 5b26f8d3 · 2025-12-02
- 1.9ETVLift some asic utils from test utils to agent code Summary: Lift some asic utils from test utils to agent code so they can be used in config flow. Reviewed By: jasmeetbagga Differential Revision: D73865120 fbshipit-source-id: 68bda35d5713f4949e75cf15c59a4f57b16f8e77Max Ng · c5f8e5ab · 2025-05-01
- 1.9ETVAdd Yangra2/Chenab2 platform support Summary: Applying vendor patch for yangra2 support allow-large-files Reviewed By: phshaikh Differential Revision: D92926533 fbshipit-source-id: 095a1696c9644367dd972d7837171248fba97a0eJagadeesh Babu Challagundla · dca5ade3 · 2026-03-05
- 1.9ETVReplace file-based config versioning with Git (#825) Summary: **Pre-submission checklist** - [x] 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` - [x] `pre-commit run` Replace the basic file-based configuration versioning mechanism with Git-based versioning for the CLI config session. Key changes: - Add new `Git` class providing a simple interface for Git operations: init, commit, log, show, etc - Use `folly::Subprocess` with full path `/usr/bin/git` for all Git commands - Replace revision files (`agent-rN.conf` + symlink) with atomic writes to agent.conf tracked in a local Git repository - Use Git commit SHAs as revision identifiers instead of rN format - Update RevisionList validation to accept Git SHAs (7+ hex chars) Repository initialization: - Automatically initialize Git repo if it doesn't exist - Automatically create initial commit if repo has no commits but config file exists - Use `--shared=group` flag and umask 0002 to ensure `.git` directory is group-writable when `/etc/coop` is group-writable Commands updated: - config history: Shows Git commit log with SHA, author, timestamp, message - config session diff: Uses git show to compare commits - config session commit: Creates Git commits with username as author - config rollback: Reads config from Git history and creates new commit Note: this change is part of a series, the previous one is https://github.com/facebook/fboss/issues/809, the next one is https://github.com/facebook/fboss/issues/832. Pull Request resolved: https://github.com/facebook/fboss/pull/825 Test Plan: Test updates: - Update all CLI config tests to use Git-based setup - Initialize Git repo and create initial commit in test fixtures - Added new unit tests for the Git layer ## Sample usage Simple change and session commit: ``` [admin@fboss101 benoit]$ ./fboss2-dev show interface eth1/1/1 +-----------+--------+-------+------+------+------------------------------+-------------+ | Interface | Status | Speed | VLAN | MTU | Addresses | Description | ----------------------------------------------------------------------------------------- | eth1/1/1 | down | 800G | 2001 | 9000 | 10.0.0.0/24 | demo | | | | | | | 2400::/64 | | | | | | | | fe80::b4db:91ff:fe95:ff07/64 | | ----------------------------------------------------------------------------------------- [admin@fboss101 benoit]$ ./fboss2-dev config interface eth1/1/1 description hello Successfully set description for interface(s) eth1/1/1 [admin@fboss101 benoit]$ ./fboss2-dev config session diff --- current live config +++ session config @@ -2200,7 +2200,7 @@ "ports": [ { "conditionalEntropyRehash": false, - "description": "demo", + "description": "hello", "drainState": 0, "expectedLLDPValues": { "2": "eth1/5/1" [admin@fboss101 benoit]$ ./fboss2-dev config session commit Config session committed successfully as b8245b4 and config reloaded. [admin@fboss101 benoit]$ ./fboss2-dev config history | head Commit Author Commit Time Message ------------------------------------------------------------------------ b8245b40 admin 2026-01-21 11:13:57 Config commit by admin 7241abad admin 2026-01-21 11:12:51 Config commit by admin 02fe511c admin 2026-01-21 10:51:36 Config commit by admin e5650a98 admin 2026-01-21 10:51:35 Config commit by admin ad07138f admin 2026-01-21 10:51:35 Config commit by admin 1845e710 admin 2026-01-21 10:51:35 Config commit by admin ede5a527 admin 2026-01-20 14:28:10 Config commit by admin e900ef88 admin 2026-01-20 14:23:25 Config commit by admin [admin@fboss101 benoit]$ cd /etc/coop [admin@fboss101 coop]$ git -c safe.directory=/etc/coop show commit b8245b40b2b3c8797cbeed2fb91161e5440b7fd9 (HEAD -> main) Author: admin <fboss-cli@localhost> Date: Wed Jan 21 11:13:57 2026 -0800 Config commit by admin diff --git a/cli/agent.conf b/cli/agent.conf index 406b341..f61516f 100644 --- a/cli/agent.conf +++ b/cli/agent.conf @@ -2200,7 +2200,7 @@ "ports": [ { "conditionalEntropyRehash": false, - "description": "demo", + "description": "hello", "drainState": 0, "expectedLLDPValues": { "2": "eth1/5/1" diff --git a/cli/cli_metadata.json b/cli/cli_metadata.json index 68f340a..6c6a925 100644 --- a/cli/cli_metadata.json +++ b/cli/cli_metadata.json @@ -1,6 +1,6 @@ { "action": {}, "commands": [ - "config interface eth1/1/1 description demo" + "config interface eth1/1/1 description hello" ] } \ No newline at end of file ``` Rollback flow: ``` [admin@fboss101 benoit]$ ./fboss2-dev config interface eth1/1/1 description hello2 Successfully set description for interface(s) eth1/1/1 [admin@fboss101 benoit]$ ./fboss2-dev config session commit Config session committed successfully as 476f9ee and config reloaded. [admin@fboss101 benoit]$ ./fboss2-dev config history | head Commit Author Commit Time Message ------------------------------------------------------------------------ 476f9ee4 admin 2026-01-21 11:15:23 Config commit by admin b8245b40 admin 2026-01-21 11:13:57 Config commit by admin 7241abad admin 2026-01-21 11:12:51 Config commit by admin <-- we're going to rollback to here 02fe511c admin 2026-01-21 10:51:36 Config commit by admin e5650a98 admin 2026-01-21 10:51:35 Config commit by admin ad07138f admin 2026-01-21 10:51:35 Config commit by admin 1845e710 admin 2026-01-21 10:51:35 Config commit by admin ede5a527 admin 2026-01-20 14:28:10 Config commit by admin [admin@fboss101 benoit]$ ./fboss2-dev config rollback 7241abad Successfully rolled back. New commit: 8be163e7. Config reloaded. [admin@fboss101 benoit]$ ./fboss2-dev show interface eth1/1/1 +-----------+--------+-------+------+------+------------------------------+-------------+ | Interface | Status | Speed | VLAN | MTU | Addresses | Description | ----------------------------------------------------------------------------------------- | eth1/1/1 | down | 800G | 2001 | 9000 | 10.0.0.0/24 | demo | | | | | | | 2400::/64 | | | | | | | | fe80::b4db:91ff:fe95:ff07/64 | | ----------------------------------------------------------------------------------------- [admin@fboss101 benoit]$ ./fboss2-dev config history | head Commit Author Commit Time Message --------------------------------------------------------------------------- 8be163e7 admin 2026-01-21 11:17:26 Rollback to 7241abad by admin 476f9ee4 admin 2026-01-21 11:15:23 Config commit by admin b8245b40 admin 2026-01-21 11:13:57 Config commit by admin 7241abad admin 2026-01-21 11:12:51 Config commit by admin 02fe511c admin 2026-01-21 10:51:36 Config commit by admin e5650a98 admin 2026-01-21 10:51:35 Config commit by admin ad07138f admin 2026-01-21 10:51:35 Config commit by admin 1845e710 admin 2026-01-21 10:51:35 Config commit by admin [admin@fboss101 benoit]$ cd /etc/coop [admin@fboss101 coop]$ git -c safe.directory=/etc/coop show commit 8be163e7cd60574278dc7201b157e4238fa55380 (HEAD -> main) Author: admin <fboss-cli@localhost> Date: Wed Jan 21 11:17:26 2026 -0800 Rollback to 7241abad by admin diff --git a/cli/agent.conf b/cli/agent.conf index d918bae..406b341 100644 --- a/cli/agent.conf +++ b/cli/agent.conf @@ -2200,7 +2200,7 @@ "ports": [ { "conditionalEntropyRehash": false, - "description": "hello2", + "description": "demo", "drainState": 0, "expectedLLDPValues": { "2": "eth1/5/1" diff --git a/cli/cli_metadata.json b/cli/cli_metadata.json index 5435c54..68f340a 100644 --- a/cli/cli_metadata.json +++ b/cli/cli_metadata.json @@ -1,6 +1,6 @@ { "action": {}, "commands": [ - "config interface eth1/1/1 description hello2" + "config interface eth1/1/1 description demo" ] } \ No newline at end of file ``` Reviewed By: srikrishnagopu Differential Revision: D94975358 Pulled By: joseph5wu fbshipit-source-id: 197bc68feed6f5fe9443ad91d24999546ebbb0e7Benoit Sigoure · 307355c5 · 2026-03-03
- 1.6ETVenhance fboss switch_config to prioritize credit requests from certain remote dsf node Summary: FBOSS config proposal to prioritize credit requests from certain subset of remote dsf nodes using SP or WRR scheduling mechanism. One use case is to prioritize EDSW credit request over peer RDSWs requests Reviewed By: jasmeetbagga, zechengh09 Differential Revision: D75976809 Privacy Context Container: L1125642 fbshipit-source-id: 0731c072060a266754f2b6a406336f4e4a50f26cWei Dai · bf8c998f · 2025-06-06
- 1.6ETVRefactor StateUtils to remove FLAGS_switch_id_for_testing dependency Summary: This is a follow-up of D100038728 comments to move FLAGS_switch_id_for_testing related logics from fboss/agent/state/StateUtils.cpp that could be used for production codes to test only codes at fboss/agent/test/TestUtils.cpp Refactor getMacForFirstInterfaceWithPorts(), firstInterfaceIDWithPorts(), and firstInterfaceWithPorts() in StateUtils to take explicit SwitchID instead of optional<SwitchID> with implicit FLAGS_switch_id_for_testing fallback. This separates test-only concerns from production utility code: - StateUtils functions now require an explicit SwitchID parameter, making the API clearer and removing the hidden dependency on a test-only gflag - New ForTesting() wrapper functions added to TestUtils.h/cpp that internally use FLAGS_switch_id_for_testing for convenience in test code - All ~80 test files updated to use the new ForTesting() wrappers - Non-test caller (ApplyThriftConfig.cpp) updated to explicitly provide SwitchID Reviewed By: shri-khare Differential Revision: D100174508 fbshipit-source-id: 5c14d128723be40d4921ec1124fecd1c75afb991Wei Dai · 24e691b0 · 2026-04-11
- 1.5ETVThriftRemoveGetters_fboss/cli/fboss2 Differential Revision: D71212796 fbshipit-source-id: 3efcdff6346ec10c87bb6a760662624cd88c7c5bgeneratedunixname1030151775592158 · ba4ecf0e · 2025-03-14
- 1.4ETVAdd hw-test-dedup skill (coverage-preserving agent_hw_test de-duplication) Summary: 📄 How this works (HTML walkthrough with pipeline diagram): https://pxl.cl/b7Z9J Adds an FBOSS `hw-test-dedup` skill — a repo-native `.llms/skills/` skill at fbcode/fboss/agent/test/agent_hw_tests/.llms/skills/hw-test-dedup/ — that finds agent_hw_tests whose hardware coverage is fully contained in other tests and recommends removing them WITHOUT losing coverage. Report-first; applying edits is a separate, confirmation-gated step that produces draft diffs only. Generalizes the methodology used to reduce the ACL HW tests (D108237516, D108237517). Pairs with the on-diff expert reviewer rule in D108815859 (HWTEST-001), which applies the same gate checklist inline at code-review time. Incumbent check: `fboss-review` reviews a diff, `debug-agent-hw-test` debugs failures, `known-bad-tests`/`netcastle-known-bad-tests`/`trim-known-bad-tests` manage known-bad lists. None find/remove redundant tests while preserving coverage, so a new skill is warranted. Contents: SKILL.md; scripts/ (dedup-workflow.js orchestrator; prefilter.js, roster-count.js, reconcile.js + unit tests; eval-compare.js deterministic scorer; package.json commonjs override); references/ (personas, universal-gates [6 gates], fingerprint-schema, warmboot-semantics [4 base classes], coverage-packs [acl validated; ecmp/mirror/trunk/srv6 drafted; qos/copp stubs], eval/ [acl-expected.json self-test fixture, converge-expected.json target, README with --self-test/--gap-report mechanics; ships in the stacked eval commit], contributing, design). Safety design: deterministic, in-code (a) last-feature-owner protection, (b) hard completeness gate (per-file roster-count vs fingerprint count; abort on mismatch), (c) per-subset reconciliation (reconcile.js) that folds into the CLOSEST confirmed superset and vetoes a removal to human-review when a CLOSER superset was refuted. Fail-safe direction: unmodeled coverage dimensions degrade recall, never safety. Validation: iterated against real landed reduction diffs — our stack + Ravi Vantipalli's stack (D108210738 incl. coverage-derivable D108214584). Final self-test recall 6/6 on the ACL corpus with zero coverage-floor violations; v4/v6 TYPED_TEST collapses (developer knowledge) and code-addition reductions correctly excluded; the atomic-vs-incremental judgment call (MultipleTablesWithEntries) correctly surfaced for human review. eval-compare.js reports converged=true. Status: report-first; suitable for ACL report-mode use. `--apply` still requires human review of the report per the skill's safety rules. Reviewed By: ravi861 Differential Revision: D108639040 fbshipit-source-id: df2bc140296255893a60c3c457fa2c19b4ced000Elangovan Natarajan · de513d10 · 2026-06-25
- 1.4ETVRename qos queuing-policy to queue-config and fold in default Summary: `config qos queuing-policy <name> queue-id <id> ...` and `config qos default-queue-config <id> ...` were two command verbs for one concept: both call `utils::applyPortQueueConfig()` on the same `cfg::PortQueue` attributes and converge in `ThriftConfigApplier::updatePortQueues()`, differing only in which `SwitchConfig` field receives the resulting `list<PortQueue>`. This merges them into `config qos queue-config <name|default> queue-id <id> <attr> <value>...`, where `default` is a reserved name routing to `SwitchConfig::defaultPortQueues` and any other name to a `SwitchConfig::portQueueConfigs` entry. "Queuing policy" has no backing in FBOSS vocabulary -- a repo-wide search finds it nowhere outside the fboss2 CLI. Thrift is consistent the other way: `typedef string PortQueueConfigName`, `map<PortQueueConfigName, list<PortQueue>> portQueueConfigs`, and `Port.portQueueConfigName`, whose doc comment at `switch_config.thrift:1283-1291` already describes both halves as "port queue config". The sharpest case was `config interface <intf> queuing-policy <name>`, which writes a field literally named `portQueueConfigName`. `config qos policy` / `default-policy` also already exist and refer to the unrelated `cfg::QosPolicy`, so `qos policy` and `qos queuing-policy` read as sibling nouns over different thrift types. Reserving `default` is what keeps the two branches disjoint: `portQueueConfigs` can never acquire a `default` key, so `Port.portQueueConfigName` can never resolve to the default list. On the interface side this makes `config interface <intf> queue-config default` a reset: it clears the port's `portQueueConfigName` rather than binding a name that resolves to nothing. That follows the thrift contract directly -- an unset `portQueueConfigName` already means "use `defaultPortQueues`", so selecting `default` and removing the override are the same operation. A matching `delete interface <intf> queue-config` sharing this implementation is a follow-up. Shared vocabulary moves into `PortQueueConfigUtils`: `QueueConfigName` (was `QueuingPolicyName`, now with `isDefault()`), `QueueIdAndAttributes` (was `QueueConfig`, renamed to avoid colliding with the new `CmdConfigQosQueueConfig` class), `kDefaultQueueConfigName`, and `queueConfigListForWrite()`. This also fixes the previous backwards include, where `CmdConfigQosDefaultQueueConfig.h` reached into `queuing_policy/`. No behavior change to `delete qos default-queue-config`, which still operates on the same `defaultPortQueues` field; it is restructured in a follow-up. Reviewed By: srikrishnagopu Differential Revision: D114937596 fbshipit-source-id: fd1dc2d02ce91b1fe241d0155e1fa744c3b2e42cJoseph Wu · 1f636e9b · 2026-08-06
- 1.4ETVUpdate thrift handler to use macro for stats update Summary: As titled. Pass in switchStats to LogThriftCall to update the thrift request completion time. Reviewed By: jasmeetbagga Differential Revision: D75927486 fbshipit-source-id: 56aea8bce66935fad84d284e7de13b732bec6bb5Ron He · 6afaa465 · 2025-06-05
- 1.3ETVMove production feature to a test namespace to avoid collision with configerator sync Summary: As donat is pointing out, the auto generated configerator-synced file is having conflict with the same namespace for production feature. To avoid this, move fbcode thrift to different namespace. Differential Revision: D75919208 fbshipit-source-id: 776ab6bfcd2628ef1d917120d14f003319e9b84fRon He · 4857ab24 · 2025-06-04
- 1.3ETVMerge v4/v6 scenarios in AgentMirroringTests Summary: Merges the per-address-family IPv4/IPv6 test instantiations in `AgentMirroringTests` into single tests that exercise both families in one setup/verify cycle, halving the gtest case count for this file. Each family is given its own traffic and mirror-to ports and its own mirror session (`kV6PortIndexOffset`, `v6MirrorName()`, `kMirrorAcl`/`kMirrorAclV6`) so the v4 and v6 mirrors coexist and are programmed once in `setup()`. The v6 port offset equals the two ports a family consumes, so both families pack into the first four ports -- required on platforms like meru800bia that expose only four hyper ports (one per ASIC core). The port-mirror update test additionally moves each family's mirror to the other family's freed original mirror-to port, so it too stays within four ports while still exercising a real port change. The sampling fixture (`AgentErspanIngressSamplingTest`) is kept IPv6-only because the ASIC allows only one sample-packet mirror across all ports. All fixtures and scenarios are retained (ingress/egress x port/acl x span/erspan, truncate, sampling, warmboot-on-unresolved, remove). Reviewed By: jasmeetbagga Differential Revision: D108234457 fbshipit-source-id: ed398c4b049facbadbea3eff0833f17af6ec8a7fRavi Vantipalli · 1acbb3f8 · 2026-06-17
- 1.3ETVReplace central ObjectArgTypeId enum with per-Traits addCliArg method (#1112) Summary: Every new `fboss2-dev` config subcommand that takes a positional argument used to touch three centralized spots: 1. A new enumerator in `utils::ObjectArgTypeId` (fboss/cli/fboss2/utils/CmdUtilsCommon.h). 2. A new `case` in the ~330-line `switch` in `CmdSubcommands::addCommand` that called `subCmd->add_option(...)` for that enumerator. 3. A `static constexpr utils::ObjectArgTypeId ObjectArgTypeId = ...` on the command's Traits struct plus a matching `static ObjectArgTypeId id = ...` on the arg class. The enum and the switch are merge-conflict magnets — any two teams adding config subcommands in parallel hit the same two spots. The `ObjectArgTypeId` tag itself is only consumed by that switch for config commands; no other code reads it. **This PR migrates config commands only** (those under `fboss/cli/fboss2/commands/config/`) to the new `addCliArg` pattern as a first step. Non-config commands (show, clear, set, bounce, get, start, stop, stream, delete) retain the existing `ObjectArgTypeId` enum + central switch approach unchanged and will be migrated in a follow-up. The new pattern moves the CLI11 positional registration into each config command's own Traits struct via a new `static void addCliArg(CLI::App&, std::vector<std::string>&)` method, dispatched through a `std::function<void(CLI::App&, std::vector<std::string>&)>` slot on `Command`. Adding or editing a config command no longer touches any centrally-shared file: - `BaseCommandTraits` in `CmdHandler.h` provides a no-op `addCliArg` default. - `CmdList.h` gains an `ArgRegistrarFn` / `argRegistrar<T>` type alongside the existing `ArgTypeHandlerFn` / `argTypeHandler<T>`; `Command` carries both as optional fields. - `CmdSubcommands::addCommand` checks `argRegistrar` first (config path → direct `addCliArg` call), then falls through to the existing `argTypeHandler` switch (non-config path). - Each config Traits that took a positional gets a local `addCliArg` method holding the exact `add_option(...)` chain that used to live in the switch. - Config-specific `ObjectArgTypeId` enum values (e.g. `OBJECT_ARG_TYPE_ID_INTERFACES_CONFIG`, `OBJECT_ARG_TYPE_VLAN_ID`, etc.) are retained in the enum for now to avoid churn on the non-config migration; the switch cases for these values become no-ops since they are reached only via `argRegistrar` now. **Future work:** once all non-config commands are migrated to `addCliArg` in a follow-up PR, the entire `ObjectArgTypeId` enum, `BaseObjectArgType::id`, per-arg-class `id` statics, and the central switch can be deleted. Pull Request resolved: https://github.com/facebook/fboss/pull/1112 Test Plan: Build clean with the project's bazel wrapper: ``` $ ./fboss/oss/scripts/bazel.sh build //fboss/cli/... INFO: Build completed successfully, 1605 total actions ``` Run the full CLI test suite: ``` $ ./fboss/oss/scripts/bazel.sh test //fboss/cli/... //fboss/cli/fboss2/test:cmd_test PASSED in 2.0s //fboss/cli/fboss2/test:framework_test PASSED in 0.1s //fboss/cli/fboss2/test/config:cmd_config_test PASSED in 9.2s Executed 3 out of 3 tests: 3 tests pass. ``` **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` Reviewed By: kevin645 Differential Revision: D102417305 Pulled By: joseph5wu fbshipit-source-id: c724b337bbc5b0f9aa5571129864d9a937cf2d08Benoit Sigoure · 5b534a2a · 2026-04-29
- 1.3ETVAdded an interfaces field to TcvrState and TcvrStats Summary: This field will contain all possible interfaces that a transceiver can support. This can be used by downstream clients like Netstate. Currently, those clients use portNameToHostLanes field which will only contain a port name if transceiver exists. However, when a transceiver is incorrectly marked Absent (due to i2c issue), portNameToHostLanes map will be empty and not useful for the clients. Reviewed By: fabianishere Differential Revision: D69361448 Privacy Context Container: L1125642 fbshipit-source-id: 4f3affd2cf2964b3d0917ce3198f7cd5d9bd3ba0Harshit Gulati · 2ea61240 · 2025-02-11
- 1.2ETVAgent side : Use the new asic_temp thirft data structure when exporting ASIC's temperature sensor data Summary: [FBOSS/Platform] Agent side : Use the new asic_temp thirft data structure when exporting ASIC's temperature sensor data Also, rename the fsdb key, according to the RFC in https://fburl.com/gdoc/i0297juy Reviewed By: huruinan Differential Revision: D78693836 fbshipit-source-id: d3b8b1279f0551cce0173485dd7499e76afe116eMike Choi · a5ff9b45 · 2025-07-28
- 1.2ETVMigrate fboss/thrift_cow from Fatal Reflection to Modern Always-On Reflection Summary: Migrate the thrift_cow library from deprecated Fatal Reflection APIs (fatal::tuple_from, fatal::foreach, reflect_struct, reflect_variant) to Modern Always-On Reflection (apache::thrift::op::for_each_field_id, op::invoke_by_field_id, op::get, op::get_ordinal_v). Key changes: - Add CowFieldTraits utility in Traits.h for per-field type resolution - Rewrite ThriftStructNode-inl.h and ThriftUnionNode-inl.h iteration to use op::for_each_field_id and op::invoke_by_field_id - Rewrite all visitors (PathVisitor, RecurseVisitor, DeltaVisitor, ExtendedPathVisitor, PatchApplier) to use modern field iteration - Update VisitorUtils.h to use op::get_name_v for name-based lookup - Remove fatal dependency from nodes BUCK and reflection codegen option - Update all test files to use apache::thrift::ident namespace aliases instead of fatal compile-time string types Reviewed By: praihan Differential Revision: D93915160 fbshipit-source-id: 0fdb7de0e57708c572e916b32771dee459c67b1bShai Szulanski · 320ab3ef · 2026-02-26
- 1.2ETVwatchdog_util Summary: Add watchdog_util, a CLI tool that reads hardware watchdog status (enabled, timeout, timeleft, expired) directly from device registers via devmem or I2C, bypassing the kernel watchdog driver. Discovers watchdogs from /run/devmap/watchdogs and resolves hardware access details from platform_manager.json. Reviewed By: joancaneus Differential Revision: D110857394 fbshipit-source-id: c271992e8732a82512705da91dc51167d9e5675fRoman Choporov · 767ee6f7 · 2026-07-21