How Can I Discover Multiple IP Addresses with a Discovery Pattern on an SNMP device

Adam N_
Kilo Explorer

I have identified the correct SNMP oids to the the IP addresses and the netmasks for each of the nics on the system but I can't figure out how to create the cmdb_ci_ip_address entries all within the same discovery pattern as my main device.  Has anyone done this before and can provide an example?

 

EDIT:

I've been copying a Discovery Pattern for an F5 Load Balancer as an example, but I'm having trouble getting it to work still.  The error I am seeing in the log seems to do with creating a relationship:

2018-03-06 15:12:59: Identification CI Errors:
In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-1-1","ip_address":"10.50.114.22","ip_default_gateway":"10.50.114.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-1-2","ip_address":"10.50.115.22","ip_default_gateway":"10.50.115.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-2-1","ip_address":"10.50.114.23","ip_default_gateway":"10.50.114.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-2-2","ip_address":"10.50.115.23","ip_default_gateway":"10.50.115.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-1-1","ip_address":"10.50.114.22","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-1-2","ip_address":"10.50.115.22","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-2-1","ip_address":"10.50.114.23","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-2-2","ip_address":"10.50.115.23","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors
2018-03-06 15:12:59: Identifier: Identification CI Errors:
In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-1-1","ip_address":"10.50.114.22","ip_default_gateway":"10.50.114.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-1-2","ip_address":"10.50.115.22","ip_default_gateway":"10.50.115.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-2-1","ip_address":"10.50.114.23","ip_default_gateway":"10.50.114.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for '{"className":"cmdb_ci_network_adapter","values":{"dhcp_enabled":"no","discovery_source":"ServiceNow","netmask":"255.255.255.0","cmdb_ci":"testdevice01","name":"MGMT-1-2-2","ip_address":"10.50.115.23","ip_default_gateway":"10.50.115.1","sys_class_name":"cmdb_ci_network_adapter","manufacturer":"RandomVendor"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-1-1","ip_address":"10.50.114.22","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-1-2","ip_address":"10.50.115.22","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-2-1","ip_address":"10.50.114.23","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors,In payload no relations defined for dependent class [cmdb_ci_ip_address] that matches any containment/hosting rules: [cmdb_ci_ip_address >> Owned by >> cmdb_ci_hardware,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_database,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_load_balancer,cmdb_ci_ip_address >> Owned by >> cmdb_ci_cloud_webserver]. Add appropriate relations in payload for '{"className":"cmdb_ci_ip_address","values":{"discovery_source":"ServiceNow","netmask":"255.255.255.0","nic":"MGMT-1-2-2","ip_address":"10.50.115.23","sys_class_name":"cmdb_ci_ip_address"}}',Too many other errors
1 ACCEPTED SOLUTION

Tony Branton
ServiceNow Employee
ServiceNow Employee

Hi,

Not long ago I built a pattern to discover Isilon storage arrays which included collecting disks, volumes and NICs and relating them to the CI.  There's a specific pattern step type (Create Relation/Reference) that makes this easy to do - you can read about it in the Product Documentation.

You can check out the pattern I built in this discussion thread.

Hope this helps with your pattern.

View solution in original post

4 REPLIES 4

Tony Branton
ServiceNow Employee
ServiceNow Employee

Hi,

Not long ago I built a pattern to discover Isilon storage arrays which included collecting disks, volumes and NICs and relating them to the CI.  There's a specific pattern step type (Create Relation/Reference) that makes this easy to do - you can read about it in the Product Documentation.

You can check out the pattern I built in this discussion thread.

Hope this helps with your pattern.

Thanks for your reply. After doing a bunch of digging I found out I needed to create a relation/reference as well but for the life of me I can't get it to work.  I added some logs to my question about with an edit that seem to show an issue with my relation/reference between cmdb_ci_network_adapter and cmdb_ci_hardware.  Looking through your pattern, I see that you did not have to build a relation/reference between cmdb_ci_network_adapter and cmdb_ci_hardware - how did you avoid having to build that out?

Hello, I've had some time to review your pattern and I was wondering if you could explain how the column name gets used.  I understand that you input a column name from the child table, but I don't understand WHY you have to do that.  What does the column name get matched against to complete the reference?

 

By the way, I have things working now with help from your example - now it's just a matter of understanding HOW this stuff works so I can replicate it going forward.

Tony Branton
ServiceNow Employee
ServiceNow Employee

The column is the reference field (e.g. computer in my pattern) in the child table (e.g. $cmdb_ci_nas_file_system ) that provides the relationship to the parent table (e.g. $cmdb_ci_storage_server).  To find out the field to relate, I started with the parent CI form and looked at the related lists, selected the target related list and identified the table.  Then it's a case of identifying the field from that table that represents the parent.

Hope that makes sense and helps.