Conversation
Greptile SummaryThe PR adds bare-metal and Kubernetes LLDP providers, LLDP collection through the node-data-broker, interface filtering, topology construction, Helm integration, documentation, and Slurm tooling support.
Confidence Score: 4/5The PR is not yet safe to merge because the keyed-chassis parser fails its new regression case and several LLDP discovery failures can still preserve stale topology state. The parser classifies a chassis keyed as Files Needing Attention: pkg/providers/lldp/common.go, pkg/providers/lldp/provider_k8s.go, cmd/node-data-broker/main.go Important Files Changed
Sequence DiagramsequenceDiagram
participant LLDPD as Host lldpd
participant Broker as node-data-broker
participant K8s as Kubernetes API
participant Provider as lldp-k8s provider
participant Graph as Topology graph
Broker->>LLDPD: lldpctl -f json
LLDPD-->>Broker: keyed interface/chassis JSON
Broker->>Broker: parse and select chassis
Broker->>K8s: update node annotations
Provider->>K8s: list selected nodes
K8s-->>Provider: instance and chassis annotations
Provider->>Graph: build leaf-switch tiers
Reviews (6): Last reviewed commit: "feat(provider/lldp): add LLDP leaf topol..." | Re-trigger Greptile |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #443 +/- ##
==========================================
+ Coverage 72.15% 75.35% +3.19%
==========================================
Files 89 98 +9
Lines 5689 6994 +1305
==========================================
+ Hits 4105 5270 +1165
- Misses 1382 1421 +39
- Partials 202 303 +101 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
🌿 Preview your docs: https://nvidia-preview-pull-request-443.docs.buildwithfern.com/topograph |
b4315fd to
56a4a1c
Compare
Signed-off-by: Dmitry Shmulevich <dshmulevich@nvidia.com>
| var idFields map[string]json.RawMessage | ||
| if err := json.Unmarshal(fields["id"], &idFields); err != nil { | ||
| return false | ||
| } | ||
| _, hasType := idFields["type"] | ||
| _, hasValue := idFields["value"] | ||
| return hasType || hasValue |
There was a problem hiding this comment.
When a keyed chassis object uses id as its chassis name, isChassisRecord classifies the outer object as a normalized record. Decoding then leaves the nested chassis identifier empty, so parseNeighbors discards the neighbor and the new TestParseNeighborsHandlesNamesMatchingRecordFields regression case fails.
Knowledge Base Used: Providers registry
Add bare-metal and Kubernetes LLDP providers that group compute
nodes by their directly connected switch chassis ID.
Support interface filtering, reject ambiguous multi-switch
attachments, and integrate LLDP collection with the node-data-broker,
Helm chart, documentation, and Slurm update tooling.
closes #442