Repository navigation
Description
Full spec (canonical copy): .scratch/open/10-device-profile-parallel-stacks-spec.md on branch/worktree used for delivery.
Problem Statement
Device-profile work for gNMI southbound targets is stacked as Cisco IOS-XR (#442) → SONiC (#480). That ordering blocks merging SONiC even though it is further along, while Cisco IOS-XR is not fully working in the lab. The combined stack also mixes shared southbound materialization with two independent NOS encoders and buries generic tree/converter fixes inside the SONiC PR, which makes review, merge order, and dependency tracking harder than they need to be.
Solution
Reshape delivery into three parallel Git lines off a shared device-profile base:
-
Base PR (
device-profile-base→main): Materialization layer, plan types, config/gRPC with both proto enum values, dispatch switch structure for SONiC and Cisco that fail closed until a NOS PR enables that profile. No NOS encoder packages. -
SONiC PR → base: SONiC encoder, Get shaping, validation, enable
soniconly. -
Cisco IOS-XR PR → base (draft): permodule encoder, validation, enable
cisco-ios-xrin the same PR when ready to merge.
SONiC and Cisco PRs do not depend on each other. Generic fixes → main first, rebase stack; cherry-pick to base only as documented bridge. config-server stacks on data-server base with both enums; API fails for disabled profiles until NOS PRs land. Supersede #442 / #480 after new PRs exist.
Primary test seams (confirm before split)
| Seam | Behavior |
|---|---|
| SBI + config validation | Generic OK; sonic/cisco rejected on base, enabled per NOS PR |
| gRPC CreateDataStore | Enum round-trip + same enablement errors |
Southbound materialization (BuildPlan) |
Generic unchanged; disabled profiles error; enabled delegate to encoder |
Links
- Supersedes PR feat: Cisco IOS-XR gNMI support via module-anchored SetRequest encoding #442, PR feat: SONiC device-profile — encoder, materialize dispatch, and gRPC layer #480
- Depends on Add device_profile sdc-protos#120
- Related: config-server Possible fix(deps): 13 vulnerable dependencies in go.mod #484, issue SDCIO data-server gNMI Set incompatibility with Cisco IOS XR / XRd when per-leaf json_ietf_val is required #483
See .scratch/open/10-device-profile-parallel-stacks-spec.md for full user stories, implementation/testing decisions, and out of scope.
Activity
feat(#504): enable SONiC device profile on sonic-device-profile stack
docs(#504): complete ticket 07 — supersede legacy PRs #442 and #480
fix(tree): attach path and must text to xpath must-statement errors
docs(#504): inventory legacy #442/#480 commits for parallel stacks
docs(#504): mark ticket 02 done on ticket-02-generic-fixes branch
feat(#504): device-profile base — materialize plans and fail-closed N…
feat(#504): enable Cisco IOS-XR device profile on cisco-ios-xr-gnmi s…
fix(tree): attach path and must text to xpath must-statement errors
docs(#504): inventory legacy #442/#480 commits for parallel stacks
docs(#504): mark ticket 02 done on ticket-02-generic-fixes branch
feat(#504): device-profile base — materialize plans and fail-closed N…
feat(#504): enable Cisco IOS-XR device profile on cisco-ios-xr-gnmi s…