Notification Support for Metadata Definitions¶
https://blueprints.launchpad.net/glance/+spec/metadefs-notifications
This blueprint adds metadata definition notification support.
The implemented juno spec for metadata notifications is here for reference:
http://specs.openstack.org/openstack/glance-specs/specs/juno/metadata-schema-catalog.html
Problem description¶
Metadata definition resources - namespaces, objects, properties, tags, and resource types - don’t provide any notification events when certain operations are performed on them. This doesn’t allow for any intelligent caching of the data, meaning that the only opportunity for catalog users to be aware of changes is to continually poll. Polling is not performant for catalog users and puts extra load on the API and database.
Proposed change¶
We are proposing to support notifications for events on the Metadata Definitions Catalog.
This implementation will include the following events that will be triggered when necessary:
metadef_namespace.create - namespace has been created
metadef_namespace.update - namespace has been updated
metadef_namespace.delete - namespace has been deleted
metadef_object.create - object has been created
metadef_object.update - object has been updated
metadef_object.delete - object has been deleted
metadef_property.create - property has been created
metadef_property.update - property has been updated
metadef_property.delete - property has been deleted
metadef_tag.create - tag has been created
metadef_tag.update - tag has been updated
metadef_tag.delete - tag has been deleted
metadef_resource_type.create - resource type has been added to namespace
metadef_resource_type.delete - resource type has been removed from namespace
In addition we will add a new configuration option to allow for disabling individual notifications. It will be a comma separated list with the following syntax:
disabled_notifications = <type>.<action>
For example, the following would disable all tag notification and property deletions:
disabled_notifications = metadef_tag,metadef_property.delete
The notifier will read this configuration and ignore notifications that are in the disabled list.
The reason for this proposed addition is that we aren’t sure whether or not tag notifications could get too chatty for some reason. Therefore, we’d like to give an option for deployers to disable it.
Alternatives¶
No notification support could be added. In this event, constant polling for changes could be done. The constant polling would lead to both latency in getting updates and extra load on the API and database.
Data model impact¶
None
REST API impact¶
No external API impacts will be visible. The API itself will have a notifier added as part of the call.
Security impact¶
None
Notifications impact¶
A notifier will be added to the REST API calls. The notifications listed above will be added. A new configuration option will be added to disable specific notifications.
Other end user impact¶
None
Performance Impact¶
Additional notifications will be generated, but the amount of changes to metadata definitions are not anticipated to be enough to impact performance.
However we want to add the new disabled_notifications configuration option to allow operators to disable the notifications if they determine that are too chatty.
Other deployer impact¶
Deployers will have to setup listeners to received notification on metadefs if they desire them.
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
kamil-rykowski
- Other contributors:
none
Reviewers¶
- Core reviewer(s):
jokke
- Other reviewer(s):
lakshmi-sampath travis-tripp
Work Items¶
Changes would be made to:
Glance v2 metadef APIs to add notifiers
notifer
gateway
Dependencies¶
Need to sync openstack/common from oslo-incubator for service module.
Testing¶
Unit tests will be added for all possible code with a goal of being able to isolate functionality as much as possible.
Tempest tests will be added wherever possible.
Documentation Impact¶
Docs needed for new notification usage