Edge types

All edges created in the Topology Service should have an edge type defined. The following section lists the edge types that are associated with each of the public-facing edge labels. If none of the default edge types suffice, you can create custom edge types.

Edge types for public edge labels

Remember: Edge types can be thought of as being instances of the edge label classes, in this case the public-facing edge labels. Most interactions with edges in the Topology Service are with edge types rather than edge labels.

You can access the Swagger documentation for 'edge types' at the following default link: https://localhost/1.0/topology/swagger#!/Schema/getEdgeTypes

Table 1. Edge types for the Aggregation edge labels
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
Table 2. Edge types for the Association edge labels
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 has been 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 has been deployed to another 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/at another resource's location Host is locatedAt data centre
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 has moved 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
Table 3. Edge types for the Data flow edge labels
Edge type Description Example
accessedVia One resource is accessed via 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 via 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 via another The traffic routesVia the device
loadBalances One resource which load balances 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
Table 4. Edge types for the Dependency edge labels
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 none of the default edge types suitably represent a certain relationship, you can define a custom edge type via 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 Agile Service Manager topology service.
edgeType
Required
The edgeType name, which has to 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 types, 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 has to be one of the following:
  • 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'