IP Network CI relationships

Earl L
Mega Guru

I'm doing some testing of loading up IP networks into the CMDB (cmdb_ci_ip_network table). We have a very large IP address space that we manage and there are lots or parent>child relationships, sometimes up to 4 or 5 levels deep. If you're familiar with IP network management these are known as subnets and they have a "nested set" relationship to each other.

My goal is to show the entire IP space at the highest levels with just a dozen or so nodes for each of the major IP address ranges. And then each node at that level will expand with all the child relationships and you will continue to drill down in the BSM until you hit the lowest levels. In effect, and in DBMS terms, this is a self-join, where the parent of the IP network is noted as part of the subnet record and you recursively join "up the tree" until the parent value is null. At least, this is how I'm envisioning it from a database point of view.

What I'd like to know are two things:

  1) has anyone else dealt with this kind of situation with ServiceNow?

  2) if you did, how did you manage this parent>child relationship, both in terms of the table (custom columns?) and the CI relationship manager?

What I've done so far is loaded up a sample of the subnets using the usual data import>transform process. Next thing I did was add a custom field for the parent subnet, and I made it a reference field to the Configuration Item (cmdb_ci) table. I tried to reference the cmdb_ci_ip_network table itself but ServiceNow didn't seem to allow that. Then I ran another import>transform to populate the parent subnet field from my source data. It all seems OK so far but now I'm trying to use the built-in CI relationship tools to try to define a way for these CI relationships to be "automagically" discovered (using a relationship filter something like cmdb_ci_ip_network.u_parent_subnet = cmdb_ci.name. This is where I'm stuck. Not sure if this is the right way to be approaching this.

I've considered running an import on the cmdb_rel_ci table, which I think would get me what I want, using a Parent contains::Child contained by relationship. I did a similar thing in order to assign these subnets to people and groups, and that seemed to work just fine.

So am I on the right track here? Or am I way off base? Or maybe not way off base, but headed off course?

Earl

1 REPLY 1

avinashrvn
Tera Contributor

Hello Earl, Did you find any approach other than loading data into cmdb_rel_ci table and creating custom fields. I want to utilize the OOB fields to achieve this.