OpenManage-Enterprise icon indicating copy to clipboard operation
OpenManage-Enterprise copied to clipboard

NetworkAddress device filter not working

Open grantcurell opened this issue 4 years ago • 3 comments

See page 197 of the API doc. It says NetworkAddress should be a valid field, but when you try try to hit it with something like:

$DeviceId = Get-Data "https://$($OmeIpAddress)/api/DeviceService/Devices" "NetworkAddress eq '$($IdracIp)'"

it will fail. This works as expected:

"https://$($OmeIpAddress)/api/DeviceService/Devices" "DeviceServiceTag eq '$($ServiceTag)'"

I suspect this is because NetworkAddress is actually a nested value in the return structure which as far as I know odata does not support filtering.

image

Things like ChassisServiceTag, ServiceTag, ID, etc are not nested and those all work fine.

grantcurell avatar Nov 15 '20 22:11 grantcurell

Nested properties can also be queried - for the specific issue here, this is how you resolve the query - this is not an issue

https:///api/DeviceService/Devices?$filter=DeviceManagement/any(d:contains(d/NetworkAddress,''))

More details - http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html

RaajeevKalyan avatar Nov 16 '20 16:11 RaajeevKalyan

Nested properties can also be queried - for the specific issue here, this is how you resolve the query - this is not an issue

https:///api/DeviceService/Devices?$filter=DeviceManagement/any(d:contains(d/NetworkAddress,''))

More details - http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html

😂 wamp wamp. Man, I spent a while reading about that and couldn't figure out the syntax and saw some people posting saying that it wouldn't work. I'll refactor some code and include that. Thanks!

grantcurell avatar Nov 16 '20 16:11 grantcurell

@RaajeevKalyan I'm still wrapping my head around it. For example "DeviceManagement/any(d:d/NetworkAddress eq '%s')" % device_idrac_ip where device_idrac_ip is 192.168.1.4 matches entries with idrac IP 192.168.1.45. Do you happen to know if I'm doing something silly?

I'm not good enough at odata to know if that's a bug or I'm messing up the syntax, but with eq it seems like that shouldn't happen.

grantcurell avatar Nov 25 '20 15:11 grantcurell