Understanding how cmdb_ci_rel works

JeffOnline
Tera Contributor

I have been trying to understand the way cmdb_ci_rel keeps track of directionality between related CIs. Two things are tripping me up:

1) The columns are named Parent and Child, but the relationship type *sometimes* implies the inverse.
2) There are out-of-box relationship types that go in both directions. Ex: "hosts::hosted by" and "hosted by::hosts"

Question:

Does the column (parent or child) provide the direction (as the naming implies)?

If so, why are there relationship types present that are inverted?

If not, what the heck is going on?

Thanks!

FYI, My Relationship Types in use:

Member of::Members
Members::Member of
Hosts::Hosted on
Depends on::Used by
Used by::Depends on
Runs on::Runs
Connects to::Connected by
Hosted on::Hosts
Contains::Contained by
Contained by::Contains
Exchanges data with::Exchanges data with
DR provided by::Provides DR for
Virtualized by::Virtualizes
Managed by::Manages
Receives data from::Sends data to

6 REPLIES 6

Mark Stanger
Giga Sage

Relationship types are just a label, and sometimes their labels are messed up. Probably just data that got put in for a demo a long time ago and it wasn't done correctly.


If what you're saying is true, then because many labels are reversed, users are assigning relationships backwards?

The cmdb_ci_rel table stores the labels, so if you read the data (eg: in a custom report) you have:

(parent) (DR Provided by) (child) - implies parent upstream of child
AND
(parent) (Provides DR for) (child) - implies parent downstream of child

Is this technically correct? I'm pretty sure the parent should always be upstream.

We already have confusion about the parent:child relationships. This kind of messes up the ability to trace CI lineage effectively and do impact assessments.


I always have to open up the BSM map to get it right. Parent should be the CI on the left side of the relationship in the BSM map.


Mark Stanger
Giga Sage

Just sent you a message. Give me a call.