Skip to content

Latest commit

 

History

History
90 lines (73 loc) · 1.92 KB

associations.md

File metadata and controls

90 lines (73 loc) · 1.92 KB

Associations

Entity Manager will create associations between entities in certain cases.

contained_by, containing

Entity Manager can model the physical topology of how entities plug into each other when upstream and downstream ports are added as Exposes elements. It will then create the 'upstream containing downstream' and 'downstream contained_by upstream' associations for the connected entities.

For example, taken from the referenced physical topology design:

superchassis.json:

{
  "Exposes": [
    {
      "Name": "MyPort",
      "Type": "BackplanePort"
    }
  ],
  "Name": "Superchassis"
}

subchassis.json:

{
  "Exposes": [
    {
      "ConnectsToType": "BackplanePort",
      "Name": "MyDownstreamPort",
      "Type": "DownstreamPort"
    }
  ],
  "Name": "Subchassis"
}

Entity Manager will create the 'Superchassis containing Subchassis' and 'Subchassis contained_by Superchassis` associations, putting the associations definition interface on the downstream entity.

powered_by, powering

In addition to the containing associations, entity-manager will add powering/powered_by associations between a power supply and its parent when its downstream port is marked as a PowerPort.

The below example shows two PSU ports on the motherboard, where the Type fields for those ports match up with the ConnectsToType field from the PSUs.

motherboard.json:

{
  "Exposes": [
    {
      "Name": "PSU 1 Port",
      "Type": "PSU 1 Port"
    },
    {
      "Name": "PSU 2 Port",
      "Type": "PSU 2 Port"
    }
  ]
}

psu.json:

{
  "Exposes": [
    {
      "ConnectsToType": "PSU$ADDRESS % 4 + 1 Port",
      "Name": "PSU Port",
      "Type": "DownstreamPort",
      "PowerPort": true
    }
  ]
}