API & Integration

Reply
Accepted Solution

How to obtain the parent network object for an IP address in one call

[ Edited ]
cyberblader
Techie
Posts: 4
5196     0

I am fairly new to Infoblox and the WAPI, but I have a pretty good understanding of it.  I am trying to retrieve the network object of an individual IP address (because I have multiple EAs defined on the network that I don't want to duplicate on the Ipv4address or ipv6address meta objects)

 

If I have the following networks defined with different values for comments, EAs, etc.

120.130.140.0/28

120.130.140.16/28

120.130.140.32/28

 

I want to search for an IP address 120.130.140.4 and get its associated network object (120.130.140.0/28)  in one call.  Is there a way to do it?

 

I know I can do a

1) query on http://host/wapi/v2.9/ipv4address?ip_address=120.130.140.4 

2) get the value of the network object in the returned json (returnedNetworkVal)

3) then do a query on http://host/wapi/v2.9/network?network=returnedNetworkVal&_return_fields%2B=extattrs

 

I don't want to do 2 separate calls.  Is there a way to accomplish this with a single WAPI call?

Thanks in advance.

 

Re: How to obtain the parent network object for an IP address in one call

Adviser
Posts: 96
5196     0

You can do this with multiple REST body requests with substitution, combined into one call.

 

Here's a curl example, the request body would look the same no matter what language you use.  I chose to return the extensible attributes along with the network default attributes.  You could customize the request to add additional fields, as needed:

 

curl -k -u admin:infoblox -H "Content-Type: application/json" -X POST 'https://192.168.1.2/wapi/v2.2/request' -d \
'[{
"method": "GET",
"object": "ipv4address",
"data": {"ip_address": "192.168.199.42"},
"args": {"_return_fields":"network"},
"assign_state": {"my_net": "network" },
"enable_substitution": true,
"discard": true
},
{
"method": "GET",
"object": "network",
"enable_substitution": true,
"data": { "network": "##STATE:my_net:##"},
"args": {"_return_fields+":"extattrs"},
"discard": false
},
{
"method": "STATE:DISPLAY"
}]'

And here's the response:

 

[
    [
        {
            "_ref": "network/ZG5zLm5ldHdvcmskMTAuOS4xNi4wLzI0LzA:192.168.199.0/24/default", 
            "extattrs": {
                "Data Center": {
                    "value": "NYC"
                }, 
                "My Date": {
                    "value": "2017-12-18T11:01:00Z"
                }, 
                "Network Type": {
                    "value": "Data Center"
                }, 
                "VLAN Name": {
                    "value": "This is a datacenter vlan"
                }
            }
        }
    ], 
    {
        "my_net": "10.9.16.0/24"
    }
]
Highlighted

Re: How to obtain the parent network object for an IP address in one call

cyberblader
Techie
Posts: 4
5196     0

MRichard,

 

Thank you so much for the example on how to do this.  This is exactly what I was looking for.   So, can you do multiple Gets (for different objects) if you use the format you have given?

 

Can you also do a Get from one object, do an update of  adifferent object using a Put all within the same body?

 

thanks a bunch

Re: How to obtain the parent network object for an IP address in one call

Adviser
Posts: 96
5197     0

Yes, the possibilities are endless!

 

Here's another example, changing a hostname on an existing host record.  First we need to find it.  Then we need to update it.

 

[{
    "method": "STATE:ASSIGN",
    "data": { "old_hostname": "oldname.example.org",
    		  "new_hostname": "newname.example.org",
    		  "dns_view": "Internal" }
 },
 {
    "method": "GET",
    "object": "record:host",
    "data": {"name": "##STATE:old_hostname:##", 
        	 "view": "##STATE:dns_view:##"
        	},
	"assign_state": {"host_ref": "_ref" },
    "enable_substitution": true,
    "discard": true
 },
 {
	"method": "PUT",
	"object": "##STATE:host_ref:##",
	"enable_substitution": true,
	"data": { "name": "##STATE:new_hostname:##"},
	"discard": true
 },
 {
    "method": "STATE:DISPLAY"
}]

Re: How to obtain the parent network object for an IP address in one call

[ Edited ]
Tim25
Techie
Posts: 2
5197     0

Thanks for the example
It's really useful information for my progect  

 

Showing results for 
Search instead for 
Do you mean 

Recommended for You