[openstack-dev] [puppet] [neutron] Serious bug in puppet neutron cli json output parsing.
Sofer Athlan-Guyot
sathlang at redhat.com
Wed Jan 6 17:45:09 UTC 2016
Mike Dorman <mdorman at godaddy.com> writes:
> I wonder if we should just refactor the Neutron provider to support
> either format? That way we stay independent from whatever the
> particular installation’s cliff/tablib situation is.
>
> We can probably safely assume that none of the Neutron objects will
> have attributes called ‘Field’ or ‘Value’, so it would be fairly easy
> to detect which format is there.
Hum, oki, so you need two parsers as the two outputs are different and a
"format detector" (cliff or clifftab). Furthermore the clifftab always
returns its stuff in a json array, so "[{" was chosen as a starting tag.
Unfortunately cliff can return a json hash as well. So you have to
somehow detect the start tag as well.
Considering that the first tag detection was the original problem[1], I
submitted this patch[2] which solves the problem for csv output quite
easily. So with[3] we can have a not randomly buggy neutron parser.
That sound simpler than a tag detector + format detector + 2 parsers.
[1] https://bugs.launchpad.net/puppet-neutron/+bug/1508511
[2] https://review.openstack.org/#/c/263874/
[3] https://review.openstack.org/262809
>
> Mike
>
> From: Denis Egorenko <degorenko at mirantis.com>
> Reply-To: "OpenStack Development Mailing List (not for usage
> questions)" <openstack-dev at lists.openstack.org>
> Date: Thursday, December 31, 2015 at 5:59 AM
> To: "OpenStack Development Mailing List (not for usage questions)"
> <openstack-dev at lists.openstack.org>
> Subject: Re: [openstack-dev] [puppet] [neutron] Serious bug in puppet
> neutron cli json output parsing.
>
> Last I checked, which was quite a while ago, openstackclient didn't
> support everything we were using from the neutron client.
>
> That's true. Openstack client doesn't support all features of neutron
> client [1].
>
> I would prefer use 3) option, but, unfortunately, i also don't see
> way, how to detect stevedore and cliff.
>
> [1]
> https://github.com/openstack/python-openstackclient/blob/master/setup.cfg#L329-
> L339
>
> 2015-12-30 19:53 GMT+03:00 Colleen Murphy <colleen at gazlene.net>:
>
>
>
>
>
> On Wed, Dec 30, 2015 at 8:37 AM, Sofer Athlan-Guyot
> <sathlang at redhat.com> wrote:
>
> Hi,
>
> 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[1].
> 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
> (Mitaka[2])
>
> 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)
>
> The available solution I can see are:
> 1. go back to parsing csv, shell output (revert [3])
> 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. ?
>
> Last I checked, which was quite a while ago, openstackclient didn't
> support everything we were using from the neutron client. I would
> like to reevaluate that and go with option 2 if we can. Otherwise
> option 1 seems reasonable.
>
> From my point of view 3) is not a option, but other may disagree.
>
> The problem is tricky and the fact that the CI cannot detect
> this is
> trickier[4].
>
> 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[5]
>
> In the meantime, a quick solution to this bug must be found.
>
> Looking forward to your comments.
>
> Regards,
>
> [1] https://bugs.launchpad.net/puppet-neutron/+bug/1530163
> [2]
> https://bugs.launchpad.net/python-neutronclient/+bug/1529914
> [3] https://review.openstack.org/#/c/238156/
> [4] https://review.openstack.org/#/c/262223/
> [5]
> http://lists.openstack.org/pipermail/openstack-dev/2015-October/076439.
> html
> --
> Sofer Athlan-Guyot
>
> Colleen
>
> ___________________________________________________________________
> _______
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Sofer Athlan-Guyot
More information about the OpenStack-dev
mailing list