[openstack-dev] [puppet] [neutron] [oslo] [cliff] Serious bug in puppet neutron cli json output parsing.
amotoki at gmail.com
Mon Jan 4 17:18:56 UTC 2016
I added 'oslo' and 'cliff' subject tag as well.
2015-12-31 1:37 GMT+09:00 Sofer Athlan-Guyot <sathlang at redhat.com>:
> I have added neutron people as they may help to find a solution.
> After banging my head against the wall for a whole afternoon I
> discovered a serious bug in puppet neutron module.
> I not going to repeat here the detail of the bug report. Basically:
> - neutron_port
> - neutron_subnet
> - neutron_router
> - neutron_network
> may break idempotency randomly and won't work at all when clifftablib is
> removed from the package dependency of python-openstackclient
> So the problem is that neutron cli json output on liberty (at least, and
> maybe before) is not consistent and may come from cliff or clifftablib.
> I didn't test it but the same may apply to openstack cli. As we don't
> use the openstack cli json output it's not a issue (for puppet modules)
Apparently the problem comes from the fact the JSON output from
cliff 1.15.0 and cliff-tablib are different.
Another tricky point is that we have two entry points with a single name.
If we install cliff 1.15.0 and cliff-tablib, we will see two json and two yaml
formatters in the help message....
> The available solution I can see are:
> 1. go back to parsing csv, shell output (revert )
> 2. find a way to leverage openstacklib parsing for neutron as well
> 3. keep json and parse the right output (cliff) and find a way to make
> sure that it is always used by stevedore
> 4. ?
A variation of option 3 is to release a new version of cliff-tablbi
without json and yaml formatter.
cliff 1.15.0 and later supports JSON and YAML formatters,
so there is no need that cliff-tablib supports them.
When cliff 1.14.0 is used in some distribution, we can use the current version
of cliff-tablib. If someone uses the latest versions, he can use cliff
a new cliff-tablib without json and yaml formatters.
I believe it helps this confusing situation in liberty.
> From my point of view 3) is not a option, but other may disagree.
My vote is option 3. cliff (or neutronclient as workaround) can ensure
that either of cliff json formatter is chosen if two json formatters
However, I don't think it is a good idea that neutronclient cannot
provide cliff-tablib version
of JSON formatter if cliff 1.15.0 is installed.
Can puppet-neutron can handle the difference?
> The problem is tricky and the fact that the CI cannot detect this is
> So before Mitaka, the json parsing should go. I would love to see an
> interface that all puppet modules would use (solution 2). The current
> openstacklib parses openstack client well enough. The neutron command
> is not that different and I think there is space for code reuse. This
> would be a long term solution. It would bring the advantage of having
> only one interface to change if it was decided to use the API directly
> for instance
> In the meantime, a quick solution to this bug must be found.
> Looking forward to your comments.
>  https://bugs.launchpad.net/puppet-neutron/+bug/1530163
>  https://bugs.launchpad.net/python-neutronclient/+bug/1529914
>  https://review.openstack.org/#/c/238156/
>  https://review.openstack.org/#/c/262223/
>  http://lists.openstack.org/pipermail/openstack-dev/2015-October/076439.html
> Sofer Athlan-Guyot
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
More information about the OpenStack-dev