Building custom topology
Custom topology can be added to the system by using the two SDK observers, File and REST. These resources can be merged with data from the other observers.
Topology model
-
Resources can be used to represent anything, such as network elements, software, and people.
-
Edges are the relationships between resources.
-
Groups collect resources to allow them to be easily viewed and to provide topological correlation.
-
Applications or services are a collection of groups.
-
Status indicates that alarms are mapped to a resource.
Topology model partOf
edges
The partOf
composition edge from child resources to parents is a special case.
This edge is not visible in the resource management view and associated configuration. The edge is
used for Host to host and Element to host resource management views. The edge is considered when you
match the alerts to resources. An alert that is matched against a part of the child is also seen
against the parent.
partOf
edges have the following limitations:-
A
partOf
relationship is a relationship from many children to a single parent.-
A child cannot have multiple parents.
-
-
A parent cannot be
partOf
another parent.
Resource lifecycle
Each resource or group within the scope of a provider has a lifecycle that is managed by the job that modeled it. Load jobs are expected to take snapshots of the entire system. If a load job finds the resources X, Y, and Z on one run, and the next run finds resources A, B, and X, then Y and Z are deleted. The listen jobs need to explicitly delete resources.
-
The
insertReplace
PUT method removes any properties that are not listed.-
The exception is a placeholder with only uniqueId and _references properties.
-
-
The
insertUpdate
POST method adds to the existing properties of the Topology model.
Edge lifecycle
- Model edges by using _references nested within a resource.
- Always use
insertReplace
PUT method semantics. - Model edges in a consistent direction.
- Edge type and direction per resource provides the replace scope.
- With the
insertReplace
PUT method, all the edges of the same edgeType and direction are replaced. - Direction is implied by _toUniqueId or _fromUniqueId, or use using _direction to remove all edges.
- The edge lifecycle can be maintained independently of properties by using a payload with only the uniqueId and _references properties.
Edge deletion
Edges can be deleted in multiple ways.
uses
edge to
another:"_references":[{"_edgeType":"uses","_toUniqueId":"Y"}]}
- Either end – X or Y – is deleted.
- X is replaced
with:
"_references":[{"_edgeType":"uses","_toUniqueId":"not Y"}]
- Y is replaced
with:
"_references":[{"_edgeType":"uses","_fromUniqueId":"not X"}]
- X is replaced
with:
"_references":[{"_edgeType":"uses",”_direction":"out"}]
- Y is replaced
with
"_references":[{"_edgeType":"uses",”_direction":”in"}]