[Openstack] neutron -f json output parsing

Bill Nerenberg bill.nerenberg75 at gmail.com
Fri Sep 30 12:43:22 UTC 2016


Thanks for the feedback Akihiro

Related to JSON formatting I also find that lbaas pool members shouldn't be
a string but instead it should be a JSON Array.

Could this be something that could be improved?

Thanks!

      Ulises

On Fri, Sep 30, 2016 at 1:57 PM, Akihiro Motoki <amotoki at gmail.com> wrote:

> You hit https://bugs.launchpad.net/python-neutronclient/+bug/1524624.
> The current neutronclient formats an object to string even if non-table
> format is specified.
> https://review.openstack.org/#/c/255696/ is the fix but it lacks
> reviewers for 10 months :(
>
>
> 2016-09-30 18:16 GMT+09:00 Kevin Benton <kevin at benton.pub>:
>
>> Looks very much like a bug (double json encoding). File a bug on
>> launchpad against python-neutronclient.
>>
>> On Sep 30, 2016 05:10, "Bill Nerenberg" <bill.nerenberg75 at gmail.com>
>> wrote:
>>
>>> Hi all
>>>
>>> When I run neutron -f json in the command below, the pools value is
>>> quoted so I cannot use it with JSON parsers like jq
>>>
>>> For example, this is neutron's problematic output [1] (see the pools
>>> line)
>>>
>>> $ neutron lbaas-loadbalancer-show ef315cff-1d0a-4327-93c6-e9bf7e544e2d
>>> -f json
>>> {
>>>   "description": "",
>>>   "admin_state_up": false,
>>>   "tenant_id": "1bcf7ba13bcb496196d72f481bfebb5c",
>>>   "provisioning_status": "ACTIVE",
>>>   "vip_subnet_id": "d02c8267-30be-4cdc-aa4a-a7c1ca6504b8",
>>>   "listeners": "",
>>>   "vip_address": "10.0.2.160",
>>>   "vip_port_id": "07227a77-1afe-466b-9d54-20e8637fc2b0",
>>>   "provider": "f5networks",
>>>   "pools": "{\"id\": \"1b792ace-0cbf-47cc-a3d5-2140c570ccee\"}",
>>>   "id": "ef315cff-1d0a-4327-93c6-e9bf7e544e2d",
>>>   "operating_status": "ONLINE",
>>>   "name": "test-lbaasv2"
>>> }
>>>
>>> Which triggers an error in jq (or other tools)
>>>
>>> neutron lbaas-loadbalancer-show ef315cff-1d0a-4327-93c6-e9bf7e544e2d -f
>>> json | jq ".pools.id"
>>> jq: error: Cannot index string with string
>>>
>>>
>>> If instead I use the followin JSON without the double quotes it works
>>> just fine
>>>
>>> $ cat myjson
>>> {
>>>   "description": "",
>>>   "admin_state_up": false,
>>>   "tenant_id": "1bcf7ba13bcb496196d72f481bfebb5c",
>>>   "provisioning_status": "ACTIVE",
>>>   "vip_subnet_id": "d02c8267-30be-4cdc-aa4a-a7c1ca6504b8",
>>>   "listeners": "",
>>>   "vip_address": "10.0.2.160",
>>>   "vip_port_id": "07227a77-1afe-466b-9d54-20e8637fc2b0",
>>>   "provider": "f5networks",
>>>   "pools": {"id": "1b792ace-0cbf-47cc-a3d5-2140c570ccee"},
>>>   "id": "ef315cff-1d0a-4327-93c6-e9bf7e544e2d",
>>>   "operating_status": "ONLINE",
>>>   "name": "test-lbaasv2"
>>> }
>>> $ cat myjson | jq ".pools.id"
>>> "1b792ace-0cbf-47cc-a3d5-2140c570ccee"
>>>
>>> Questions, questions...
>>>
>>> Is it intentional the output of [1] or is it a bug? If it is not a bug
>>> and it is intentional... how is it expected we should be parsing it?
>>>
>>> Comments would be greatly appreciated
>>>
>>> Many thanks
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Mailing list: http://lists.openstack.org/cgi
>>> -bin/mailman/listinfo/openstack
>>> Post to     : openstack at lists.openstack.org
>>> Unsubscribe : http://lists.openstack.org/cgi
>>> -bin/mailman/listinfo/openstack
>>>
>>>
>> _______________________________________________
>> Mailing list: http://lists.openstack.org/cgi
>> -bin/mailman/listinfo/openstack
>> Post to     : openstack at lists.openstack.org
>> Unsubscribe : http://lists.openstack.org/cgi
>> -bin/mailman/listinfo/openstack
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20160930/b5a61835/attachment.html>


More information about the Openstack mailing list