Skip to content

Commit 2a87915

Browse files
authored
docs(PYEGERIA_ISSUES): log ISSUE-85 -- no create endpoint for SolutionPort, confirmed Egeria-side gap (#340)
dwolfson-1b/trellis confirmed via live OpenAPI spec inspection (not just .http ground truth) -- 30 POST paths contain "port", all attach/detach, zero creation endpoints. Nothing for pyegeria to build until Egeria adds a real create-port endpoint server-side; follow-on work outlined for when it does. Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com>
1 parent 4caf235 commit 2a87915

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

‎PYEGERIA_ISSUES.md‎

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,72 @@ evidence for both dates — not yet deleted.
622622

623623
---
624624

625+
### ISSUE-85: No REST endpoint exists to create a `SolutionPort` element — only attach/detach/delegation relationships are exposed
626+
627+
**Status:** open, confirmed Egeria-side gap 2026-09-03. Found by a
628+
consumer (trellis/Resource Explorer, designing a `PortMaterializer` for
629+
architecture-recovery proposals) hitting the same shape of gap ISSUE-84
630+
turned out not to be: this time the `.http` ground truth's absence really
631+
does match the live server, not a stale/incomplete `.http` file.
632+
633+
**Confirmed at every layer:**
634+
- `pyegeria/omvs/solution_architect.py`: `link_solution_component_port`
635+
(attach an *existing* port to a component), `link_solution_port_delegation`
636+
(port-to-port delegation), and both detach counterparts exist. No
637+
`create_solution_port`/`_async_create_solution_port` anywhere.
638+
- `Egeria-api-solution-architect.http`: only `.../solution-components/
639+
{guid}/solution-ports/{guid}/attach|detach` and `.../solution-ports/
640+
{guid}/port-delegations/{guid}/attach|detach`. No `POST .../solution-ports`
641+
create path.
642+
- `md_processing/data/compact_commands/commands_solution_architect_compact.json`:
643+
only `Link Solution Component Port`/`Link Solution Port Delegation`. No
644+
`Create Solution Port` command.
645+
- `pyegeria/models/models.py`: no `SolutionPortProperties` model at all —
646+
so even the generic fallback route has nothing typed to build a body
647+
against.
648+
649+
**Live-verified not just a stale-`.http`-file case** (the precedent this
650+
repo already has for that shape of false alarm — see the multi-link audit
651+
above, where 3 of 4 similarly-unwrapped relationship types turned out to
652+
have zero real endpoint on live-server inspection while others did):
653+
`dwolfson-1b`/trellis fetched the full live OpenAPI spec directly
654+
(`GET /v3/api-docs`, 2.39MB) and searched every path containing "port" —
655+
30 POST paths matched, every one of them attach/detach (component-port,
656+
port-delegation, even a generic process-ports attach under a different
657+
`{urlMarker}` service). Zero creation endpoints anywhere in the spec.
658+
This confirms the `.http` ground truth exactly; not a documentation gap.
659+
660+
**The generic fallback exists but isn't usable without guessing:**
661+
`/servers/{serverName}/api/open-metadata/{urlMarker}/metadata-elements`
662+
(`MetadataExpert.create_metadata_element`,
663+
`NewOpenMetadataElementRequestBody`) is real and live-confirmed present,
664+
with a top-level `type_name` field that could carry `"SolutionPort"`. But
665+
per this file's own `pyegeria/models/models.py` gotcha, that endpoint's
666+
`properties` field needs the verbose nested `ElementProperties`/
667+
`propertyValueMap` shape server-side, not the flat dict every bespoke
668+
wrapper uses — and with no `SolutionPortProperties` model to check
669+
property names against, building that body means hand-guessing what
670+
properties a `SolutionPort` actually takes. Consistent with this repo's
671+
established practice (see the multi-link audit's "left unbuilt rather
672+
than guessing at undocumented URLs or building against the awkward
673+
generic path speculatively") — not attempted.
674+
675+
**Nothing to fix in pyegeria until Egeria adds a real create endpoint.**
676+
Once one exists, the follow-on work is small and well-precedented: a
677+
`create_solution_port`/`_async_create_solution_port` wrapper in
678+
`SolutionArchitect` following the exact pattern ISSUE-84 just corrected
679+
(`NewElementRequestBody` + `contentStatus` inside `properties`, no
680+
fictional separate request-body class), plus a `Create Solution Port`
681+
Dr.Egeria compact command — the family's registration plumbing in
682+
`register_solution_architect_processors()` (`md_processing/dr_egeria.py`)
683+
already handles this shape of addition with no new routing logic needed.
684+
685+
**Not blocking anything urgent** on the trellis/Resource Explorer side —
686+
they're holding real port materialization until this exists server-side
687+
(tracked as their own Backlog item 8), or until a workaround surfaces.
688+
689+
---
690+
625691
## Open pyegeria items (including follow-ons blocked on an Egeria fix)
626692

627693
Actionable in this repo. Some of these are fully blocked today — waiting

0 commit comments

Comments
 (0)