Refactoring of the Topology struct (mainly) to better support generic objects added to the graph.
In general, allows creating and navigating topologies such as the following:
Changes the topology functions so the graph can be searched and navigated for generic objects:
Listing functions Targetables(filters...) and Policies(filters...) have been modified to now return pointers to collections of that type, that can be navigated through the graph methods Roots(), Parents(), Children(), and Paths()
Navigation can be inflected from one type to another – e.g. topology.Objects().Children(gateway) to return all generic objects that are children of the gateway (targetable)
Make policy kinds generically linkable – useful to associate them to generic objects
Changes the shape, style and colors used to represent objects in the topology in Graphviz DOT language – now:
Targetables → colored square boxes
Policies → white dashed notes
Other objects → white solid ellipses
Add/export controller types/functions (useful for implementing reconcilers)
Object struct (previously genericObject) – for easy wrapping of any runtime object kind
New function Destruct - to create and and update objects from concrete types
Restructure function – for consistency with Destruct (also public)
Cache Store – so access to the objects can be given to build runtime link functions
Adds new examples of the Kuadrant custom controller working alongside with Envoy Gateway and Istio (to demo reconciliation of other generic objects appended to the topology)
Refactoring of the
Topology
struct (mainly) to better support generic objects added to the graph.In general, allows creating and navigating topologies such as the following:
Targetables(filters...)
andPolicies(filters...)
have been modified to now return pointers to collections of that type, that can be navigated through the graph methodsRoots()
,Parents()
,Children()
, andPaths()
topology.Objects().Children(gateway)
to return all generic objects that are children of the gateway (targetable)Object
struct (previouslygenericObject
) – for easy wrapping of any runtime object kindDestruct
- to create and and update objects from concrete typesRestructure
function – for consistency withDestruct
(also public)Store
– so access to the objects can be given to build runtime link functions