[openstack-dev] [all] Treating notifications as a contract
Daniel Dyer
dan.dyer00 at gmail.com
Thu Jul 10 17:53:15 UTC 2014
From my perspective, the requirement is to be able to have a consistent and predictable format for notifications that are being sent from all services. This means:
1. a set of required fields that all events contain and have consistent meaning
2. a set of optional fields, you don’t have to include these but if you do then you follow the same format and meaning
3. versioning of events: version is updated whenever the required fields are changed. managing optional fields can be done via a specification
Discovery of events would be interesting from an automated testing perspective, but I am not sure how effective this would be for an application actually consuming the event.s
Not sure how you would use enumerating the consumption of events
On Jul 10, 2014, at 2:48 AM, Eoghan Glynn <eglynn at redhat.com> wrote:
>
> TL;DR: do we need to stabilize notifications behind a versioned
> and discoverable contract?
>
> Folks,
>
> One of the issues that has been raised in the recent discussions with
> the QA team about branchless Tempest relates to some legacy defects
> in the OpenStack notification system.
>
> Now, I don't personally subscribe to the PoV that ceilometer, or
> indeed any other consumer of these notifications (e.g. StackTach), was
> at fault for going ahead and depending on this pre-existing mechanism
> without first fixing it.
>
> But be that as it may, we have a shortcoming here that needs to be
> called out explicitly, and possible solutions explored.
>
> In many ways it's akin to the un-versioned RPC that existed in nova
> before the versioned-rpc-apis BP[1] was landed back in Folsom IIRC,
> except that notification consumers tend to be at arms-length from the
> producer, and the effect of a notification is generally more advisory
> than actionable.
>
> A great outcome would include some or all of the following:
>
> 1. more complete in-tree test coverage of notification logic on the
> producer side
>
> 2. versioned notification payloads to protect consumers from breaking
> changes in payload format
>
> 3. external discoverability of which event types a service is emitting
>
> 4. external discoverability of which event types a service is consuming
>
> If you're thinking that sounds like a substantial chunk of cross-project
> work & co-ordination, you'd be right :)
>
> So the purpose of this thread is simply to get a read on the appetite
> in the community for such an effort. At the least it would require:
>
> * trashing out the details in say a cross-project-track session at
> the K* summit
>
> * buy-in from the producer-side projects (nova, glance, cinder etc.)
> in terms of stepping up to make the changes
>
> * acquiescence from non-integrated projects that currently consume
> these notifications
>
> (we shouldn't, as good citizens, simply pull the rug out from under
> projects such as StackTach without discussion upfront)
>
> * dunno if the TC would need to give their imprimatur to such an
> approach, or whether we could simply self-organize and get it done
> without the need for governance resolutions etc.
>
> Any opinions on how desirable or necessary this is, and how the
> detailed mechanics might work, would be welcome.
>
> Apologies BTW if this has already been discussed and rejected as
> unworkable. I see a stalled versioned-notifications BP[2] and some
> references to the CADF versioning scheme in the LP fossil-record.
> Also an inconclusive ML thread from 2012[3], and a related grizzly
> summit design session[4], but it's unclear to me whether these
> aspirations got much traction in the end.
>
> Cheers,
> Eoghan
>
> [1] https://blueprints.launchpad.net/nova/+spec/versioned-rpc-apis
> [2] https://blueprints.launchpad.net/nova/+spec/versioned-notifications
> [3] http://osdir.com/ml/openstack/2012-10/msg00003.html
> [4] https://etherpad.openstack.org/p/grizzly-common-messaging
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list