We are proposing to support notifications for events on the Metadata Definitions Catalog. Implements: blueprint metadefs-notifications Change-Id: I73a0921b8cf66cbaeffed285fcbc04a9aaee3c43 Co-Authored-By: Lakshmi N Sampath <lakshmi.sampath@hp.com> Co-Authored-By: Kamil Rykowski <kamil.rykowski@intel.com>
4.7 KiB
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.
https://bugs.launchpad.net/glance/+bug/1413861
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