- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-26-2022 08:58 AM
Hi,
when trying to create a CI (of class cmdb_ci_apache_web_server), the API call fails with the "error": "MISSING_DEPENDENCY".
The related message is "In payload no relations defined for dependent class [cmdb_ci_apache_web_server] that matches any containment/hosting rules: [cmdb_ci_appl >> Runs on >> cmdb_ci_hardware]."
Following is the body of the call:
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-03-2023 03:20 AM
In the meantime I have found another post, here on community that helped me in the right direction, and I have managed to do the CI creation using payload:
{
"attributes": {
"asset_tag": "tag_lx_web_app40",
"company": "ServiceNow",
"config_file": "/etc/httpd/httpd.conf",
"environment": "dev",
"name": "Apache Server @ lx_web_app40",
"type": "Apache",
"tcp_port": "80",
"version": "2.4.54"
},
"depends_on": {
"outbound_relations": {
"type": "60bc4e22c0a8010e01f074cbe6bd73c3",
"target": "539747cac0a801640163e60735fbbf6e"
}
},
"source": "ServiceNow"
}
It seems there is a total disconnect between what exists and what is described in the documentation 😞
It seems in case of depending CIs one has to add an additional property to the payload: depends_on. And it has to contain the relationship that indicates the parent CI. As you can see you still have to add outbound relation, not an inbound one. Oh, for sure you will need to update "target" of "outbound_relations" to be that of the Linux (or whatever) server you have in your CMDB.
Here's the Linux server before calling the API:
and here it is after calling the API:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-03-2023 03:23 AM
Also, note that property "attributes" must contain the field names (config_file) not the field labels (Configuration file)!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-28-2022 06:57 AM
As for how an IRE payload, used with the API or the REST end-point, should look like, you could consult the REST API reference or the (script) API reference. Knowledge about how Discovery classification (to a lesser extent) and identification works will also help greatly.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-28-2022 07:37 AM
I indeed checked the REST API Documentation to create the payload.
Comparing the payload I use to the documentation, there's nothing I can see what is missing, and why it doesn't work
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-28-2022 07:40 AM
Could you point me to that document?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-28-2022 07:46 AM
PS : I'm running a POST call to https://<instancename>/api/now/cmdb/instance/cmdb_ci_apache_web_server
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-28-2022 07:55 AM
Oh, I see. Perhaps the problem is that the "mandatory" (dependent) relationship for Apache Web Servers is the "Runs on" one, which is an "outbound" relationship not an "inbound" relationship:
Hint: CI Class Manager is your friend, when dealing with CMDB/IRE.
I'd try changing the payload to contain an outbound relationship for the Apache Web Server.