You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make the datumctl inventory plugin type-aware so it can render and operate on the property-graph model (typed Node + Edge with attribute bags) proposed in milo-os/inventory#43 and prototyped in milo-os/inventory#44.
Motivation
The graph model collapses the ~13 NetBox-inspired CRDs into two generic kinds (Node, Edge). That trades away per-kind CRD ergonomics:
Print columns. Today kubectl get site shows typed columns (Region, Type, …). One generic Node CRD can only expose type + attribute-blob columns — kubectl get node.graph loses the per-kind view.
Discoverability. Operators browse inventory by asset class (sites, racks, hosts). A flat node list keyed by spec.type is hard to scan without client-side grouping.
A type-aware datumctl plugin recovers this UX client-side: it reads the NodeType/EdgeType schema registry and renders per-type tables, filters, and validation hints without needing N CRDs.
Scope
Read NodeType/EdgeType to learn each type's attribute keys + value types.
datumctl inventory get <type> — list Nodes of a given spec.type with attribute-derived columns (e.g. get site shows displayName/siteType pulled from attributes).
datumctl inventory get edges --type=located-in [--from=… --to=…] — list/filter edges.
Summary
Make the
datumctlinventory plugin type-aware so it can render and operate on the property-graph model (typedNode+Edgewith attribute bags) proposed in milo-os/inventory#43 and prototyped in milo-os/inventory#44.Motivation
The graph model collapses the ~13 NetBox-inspired CRDs into two generic kinds (
Node,Edge). That trades away per-kind CRD ergonomics:kubectl get siteshows typed columns (Region, Type, …). One genericNodeCRD can only exposetype+ attribute-blob columns —kubectl get node.graphloses the per-kind view.spec.typeis hard to scan without client-side grouping.A type-aware
datumctlplugin recovers this UX client-side: it reads theNodeType/EdgeTypeschema registry and renders per-type tables, filters, and validation hints without needing N CRDs.Scope
NodeType/EdgeTypeto learn each type's attribute keys + value types.datumctl inventory get <type>— listNodes of a givenspec.typewith attribute-derived columns (e.g.get siteshows displayName/siteType pulled fromattributes).datumctl inventory get edges --type=located-in [--from=… --to=…]— list/filter edges.inventory neighbors <node>, followlocated-in/member-of).datumctl inventory apply) for the graph kinds.Dependencies / references
Blocked on the graph model landing (or being installable side-by-side, as the prototype is under group
graph.inventory.miloapis.com).