Edge types
All edges created in the topology should have an edge type defined. Review the following lists of the types that are associated with each edge label. If none of the default types suffice, you can create your own custom types.
Edge types can be thought of as being instances of the edge label classes. Most interactions with edges in the topology are with types rather than labels.
Edge types for labels
Types for the aggregation label
Edge type | Description | Example |
---|---|---|
contains | The source resource is considered to contain the target resource | Slot contains a card |
federates | The source resource is a federation of the target resources | Database federates nodes |
members | The source resource has the target resources as its members | Subnet members are IP addresses |
Types for the association label
Edge type | Description | Example |
---|---|---|
aliasOf | Depicts that one resource is an alias of another; potentially from different providers | FQDN1 is an alias of FQDN2 |
assignedTo | When one resource is assigned to another | The alarm is assingedTo an operator |
attachedTo | When one resource is attached to another | The plug is attachedTo to the cable |
classifies | When one resource is used to classify another | The government classifies the document |
configures | When one resource configures or provides configuration for another resource | The file configures the application |
deployedTo | Describes when one resource is deployed to another resource | The application was deployedTo the server |
exposes | When one resource exposes another | The application exposes the interface |
has | Generalized relationship when one resource possesses, owns, or has another resource | Host has component |
implements | When one resource implements another | The class implements the interface |
locatedAt | When one resource is physically located in or at another resource's location | Host is locatedAt data center |
manages | When one resource manages another | The boss manages the employee |
monitors | When one resource monitors another | The application monitors the host |
movedTo | When one resource moves to a new and different resource | The service has movedTo the host |
origin | Indicates the origin of a Vertex | Device's origin is a vendor |
owns | Indicates ownership of one resource by another resource | The user owns the server |
rates | Can be used when one resource rates another | The manager rates the employee |
resolvesTo | When one resource resolves to another | The hostname resolvesTo an address |
realizes | When one resource realizes another | The hypervisor realizes the virtual machine |
segregates | When one resource segregates another | The firewall segregates the network |
uses | When one resource takes, employs or deploys another resource as a means of achieving something | Application uses this disk |
Types for the dataFlow label
Edge type | Description | Example |
---|---|---|
accessedVia | One resource is accessed through another, typically remote. | Server is accessedVia a FQDN |
bindsTo | A network layering relationship such that the source runs on top of the target. | Logical interface bindsTo a physical port |
communicatesWith | A relationship whereby one resource communicates with another | The sensor communicatesWith an application |
connectedTo | A relationship whereby one resource is connected to another | The laptop is connectedTo the switch |
downlinkTo | One resource is down-linked to another | The controller has a downlinkTo the sensor |
reachableVia | A resource is reachable through another resource | The network is reachableVia the gateway |
receives | A resource receives data from another | The Mail server receives an email |
routes | A relationship whereby one resource routes data for another | The device routes the data |
routesVia | A relationship whereby data from one resource routes through another | The traffic routesVia the device |
loadBalances | One resource which balances load for others | The load balancer loadBalances to servers |
resolved | When one resource resolved something for another | DNS server resolved IP address |
resolves | Represents that one resource uses another to resolve it | FQDN resolves to the address |
sends | A resource sends some data to another | The application sends an SMS message |
traverses | Describes when one resource traverses another | The message traverses the network |
uplinkTo | One resource is up-linked to another | The sensor has an uplinkTo the controller |
Types for the dependency label
Edge type | Description | Example |
---|---|---|
dependsOn | A generic dependency between resources | One application dependsOn another |
runsOn | A resource runs on (and therefore depends on) another resource | The service runsOn the host |
Custom edge types
If no default edge types suitably represents a relationship, you can define a custom edge type through the https://localhost:8080/1.0/topology/types/edge
POST API.
Important: A custom edge type needs to be created before the observation job passes any edges with the type to the topology service.
-
edgeType
Required. The edgeType name, which must be unique and cannot match the edgeType name of a default edgeType, unless the edgeLabel also matches the corresponding default edge type's edgeLabel parameter.
Restriction: A scenario where both edgeType and edgeLabel match the fields of a default edge type is equivalent to manually creating a default edge type, which is not necessary as default edge types are created implicitly by the topology when needed.
-
edgeLabel
Required. The edgeLabel of the custom edgeType, which must have one of the following labels:
- dataFlow
- dependency
- association
- aggregation
-
description
Optional, but recommended. This should be a meaningful description of the type of relationship this edge type represents.
Example
curl -k -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-TenantID: cfd95b7e-3bc7-4006-a4a8-a73a79c71255' -d '{
"edgeType": "connectedTo",
"edgeLabel": "dataFlow",
"description": "Default relationship between two devices that exchange data"
}' 'https://localhost:8080/1.0/topology/types/edge'