[openstack-dev] [nova] Versioned notifications... who cares about the version?
gord chung
gord at live.ca
Thu Nov 19 23:52:05 UTC 2015
ceilometer cares. we listen to all notifications and build Measurement
and Event data from (some of) them. to be honest, i don't know if
changes in nova notifications have/are broken in ceilometer because
quite frankly there are far too many notifications to test and track.
as a consumer of data, we don't really care what the format of the
entire payload is. we just care that the select attributes we do care
about are present and in some known position.
in ceilometer, we have two mapping files which define the notifications
we are interested in and how we to normalise them[1][2]. currently, they
are two files contained within ceilometer which we load at runtime. that
said, at the summit we talked about how the projects should own their
own definitions rather than ceilometer[3]. essentially, producer and
consumer schemas are tightly coupled.
the basic premise was that we as consumers have no idea what is getting
produced, but the projects do know and they know exactly what is useful
in what they are producing. so if nova owned their own meters.yaml and
events.yaml, nova devs could easily edit the appropriate file themselves
when they add/modify/remove notification payloads. if a new metric is
added to a notification, it can easily be added to meters.yaml; if a
metric value is moved, meters.yaml can be updated for old and new locations.
using each projects definition files, ceilometer would load them all in
and as a consumer, not have to worry about what every single change that
happens outside of its domain. it's a different take on it: instead of
having ownership on consumer to interpret accurately, the ownership is
on producer to ensure consumer can understand.
we are working on a POC currently as there some logistics to be thought
out still(ie. how ceilometer knows where to look for each projects
definition files) but using this idea, we wouldn't even need to know
what version of notification we were getting, just that we are told that
we should look "either here or here...". if there's interest in
exploring this idea or if there are any glaring issues please let us know.
[1]
https://github.com/openstack/ceilometer/blob/master/ceilometer/meter/data/meters.yaml
[2]
https://github.com/openstack/ceilometer/blob/master/etc/ceilometer/event_definitions.yaml
[3] https://etherpad.openstack.org/p/mitaka-telemetry-cross-project
On 19/11/2015 5:05 PM, Ryan Rossiter wrote:
> Reading through [1] I started getting worries in the back of my head
> about versioning these notifications. The main concern being how can
> the consumer know about the versions and what's different between
> them? Because these versioned notification payloads hold live nova
> objects, there can be a lot of rug-pulling going on underneath these
> notifications. If the payload doesn't pin itself to a certain level of
> the object, a consumer can never be guaranteed the version of the
> payload's object they will be receiving. I ran through a few of the
> scenarios about irregular versions in the notifications subteam
> meeting on Tuesday [2].
>
> My question is.... do we care about the consumer? Or is it a case of
> "the consumer is always right" so we need to make sure we hand them
> super consistent, well-defined blobs across the wire? Consumers will
> have no idea of nova object internals, unless they feel like `python
> -c import nova`. I do think we get one piece of help from o.vo though.
> When the object is serialized, it hands the version with the object.
> So consumers can look at the object and say "oh, I got 1.4 I know what
> to do with this". But... they will have to implement their own compat
> logic. Everyone will have to implement their own compat logic.
>
> We could expose a new API for getting the schema for a specific
> version of a notification, so a consumer will know what they're
> getting with their notifications. But I think that made mriedem
> nauseous. We could make an oslo library that stuffs a shim in between
> o.vo and nova's notifications to help out with compat/versioning, but
> that sounds like a lot of work, especially because the end goal is
> still not clearly defined.
>
> Thoughts?
>
> [1] https://review.openstack.org/#/c/247024
> [2]
> http://eavesdrop.openstack.org/irclogs/%23openstack-meeting-alt/%23openstack-meeting-alt.2015-11-17.log.html#t2015-11-17T20:22:29
>
--
gord
More information about the OpenStack-dev
mailing list