top of page
  • Brock Peterson

vROps Object Relationships and Inventory Trees

Relating objects to each other is an important function of vROps. In the case of vSphere, many of those relationships come out of the box, the main one being: Datacenter > Cluster > ESXi Host > VM > Datastore.

Blue Medora management packs include relationships as well, not only internal to the platform they were developed for, but externally to vSphere objects as well. For example, the NetApp OCUM management pack establishes the following relationships:

In addition to Object Relationships, Inventory Trees are a valuable vROps construct as well. So, what's the difference?

Object Relationships: these are the parent/child relationships established as a foundation to vROps. Users can create them manually via the vROps UI.

Inventory Trees (Traversal Specs): these are the routes taken between objects with defined relationships. They are found in the Environment tab and can be used by constructs like Views and Widgets.

Our lead professional services engineer, Rick Pocklington, explains it like this: "I think of relationships as the physical space in which we live. And traversal specs as an air travel map, where things like Grand Rapids to Miami by way of Dallas makes sense. The air travel map doesn’t change the underlying relationships, but it reveals new information useful for certain contexts."

A client recently asked if he could use our NetApp OCUM management pack to see which VMs were consuming the most space. Using the Object Relationships our management pack establishes, we can get him from the Aggregate to the VM, but there are several hops between, and not are all 1-1. In this case, the path looks like this: Aggregate > Volume > Datastore > VM. So, how can we do this?

There are a couple ways:

1. Create the relationships manually via the UI:

- Administration - Configuration - Object Relationships

- select the Object or Object Types you want to relate

- select the Object you want to relate

- select the Object you want to relate it to, drag them from the third or fourth column into the source object in the second column

- the VMs you selected are now children of the Aggregate you selected and will show as such in your dashboards

There are some drawbacks here though. First, it's manual and static, so you'll have to keep your relationships current. Second, you'll have to know which VMs to relate, which can be problematic and even impossible in certain environments. There is a second option:

2. Create a traversal spec defining the inventory tree from Aggregate to VM, using the existing relationships. In this case we want a mapping from Aggregate to Volume to Datastore to VM. We can do this by adding to the describeExt.xml provided by the Blue Medora TVS Manager (TVSM) management pack.

Originally designed as a licensing and log collection tool, TVSM includes a describeExt.xml which can be used to define new inventory trees, which will be persistent. That is, they won't be over-written upon management pack upgrade.

To define the Aggregate to VM tree, I added the following to my describeExt.xml:

The traversal spec starts with the aggregate, skips the volume, skips the datastore, and makes VMs child objects

Once done, a redescribe is required to capture the new traversal spec. Do this via Administration - Support - Redescribe.

You can now use this new Inventory Tree in the Advanced Object Relationship widget (among others) to show the VMs as children of a selected Aggregate.

Using this Inventory Tree in an Advanced Object Relationship widget will look something like this in a dashboard:

Object relationships are ubiquitous to vROps. Traversal specs and their respective Inventory Trees are powerful constructs that can be used for many different use cases, this is just one of them.



Brock Peterson
Brock Peterson
Jan 27, 2023

Hey @thegabeman! Yep, could create the relationships manually, though this has been removed from the UI. But you don't really need it. Create a dashboard that starts with a vSphere Cluster, shows you the ESXi Hosts in that Cluser, then the UCS Blades they are hosted on. This diagram should help:


Jan 27, 2023

Would it be possible in this way to create a dynamic connection between vSphere Compute Clusters and UCS Servers? For my vSphere Clusters I would like to see which blades are part of it. I'm able to make a dashboard that connects Compute Cluster to a list of ESXi hosts and then when I select one host, I'm able to go to one blade in a connected widget. But I'm unable to click on a Compute Cluster and then list all the blades in that cluster.

bottom of page