Newton Series Release Notes¶
1.0.0¶
Prelude¶
The initial mitaka release (0.2) did not support ElasticSearch 2.x. ElasticSearch made several changes to internal index data mappings that were not backwards compatible with ElasticSearch 1.x. This release has all the changes required for Searchlight to support both ElasticSearch 1.x and 2.x.
Searchlight now supports oslo pools instead of requiring a different topic for each listener. This simplifies deployment configuration. Previously, services would have to be specifically configured to send notifications to the Searchlight topic. With this change, Searchlight can share topics with other services such as Ceilometer.
Adds ability to include region_name in mapping for multi-region deployments.
Allow aggregations as part of a search request.
Add new functionality to searchlight-manage to force a re-indexing from Elasticsearch only. This option allows new mappings to be applied to the Elasticsearch indices without the overhead of retrieving data from the plugin APIs.
Allow dynamic index settings to allow Searchlight to be tuned differently from other indices on a shared Elasticsearch cluster.
Searchlight will provide resource type info for any reference IDs in the facet results.
Support version as a search param to include _version in search results.
Adds the ability to attain a document count per resource type from the /facets endpoint. Doc count is always returned for a type; field listing is optional.
Added multi-thread support for indexing.
Added separation of administrator-only data at an index level, which allows full faceting and searching of sensitive data by those with access to it.
Allow wildcard character as an argument to searchlight-manage index sync –type
Added support for neutron floating IPs.
Added suppport for neutron security groups and security group rules.
Add support for the new Neutron tenant RBAC policy functionality. This allows networks to be shared across tenants.
Add support to searchlight-manage for displaying with Elasticsearch indices/aliases are currently being used by Searchlight.
Reduce the number of calls to the nova API on instance boots.
The ability to distribute resource type indexing across resource groups has now been fully enabled. This allows for improved indexing speed and clustering customization.
Adds support for service policy files. Simplifies existing API policy support.
Ability added to reindex data while allowing indexing of notifications, and therefore returning accurate search results during the indexing operation.
Added project_id to mappings.
Disable returning options for the facet fields.
Add checks for resource group name configuration.
Correct facet options on analyzed string fields.
Fix the information returned by the API plugins endpoint.
No longer index the data of child plugins as part of indexing a parent plugin, which fixes ConflictErrors occuring specifying parent plugins as the argument to searchlight-manage index sync –type.
Fix routing on delete operations for neutron resources.
Remove support for Designate v1 api because it has already been deprecated. Simplify list zones and recordsets code by using v2 api’s built-in pagination.
Add “updated_at” field to all mappings.
Some Neutron ports that do not send notificatons to Searchlight. Do not initially index them.
Fix mappings for fields erroneously marked as ‘nested’, and allow facet options for ‘object’ fields.
Improved index sync performance.
Change the way of doing facets search, replace use of search_type=count with size=0
New Features¶
Added microversion support for Nova plugins, the default API version for Nova plugins is 2.1. User can change the API microversion for Nova using compute_api_version config option added in section service_credentials:nova.
Adds nova plugin for server groups.
Adds configuration option to include region_name in documents to assist with multi-region tribe node Elasticsearch setups.
Allows aggregations to be requested (as ‘aggs’ or ‘aggregations’ in a search request body). See https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html
Add a new option to the searchlight-manage index command to force a re-indexing from Elasticsearch only. The plugin APIs will not be used with option.
Allows a deployer to override some index-level Elasticsearch settings for all Searchlight-created indices. This is useful when running Searchlight on a shared Elasticsearch cluster. Settings are overriden using the elasticsearch.index_settings config option.
Searchlight will provide resource type info for any reference IDs in the facet results. Parent reference types will also be part of the info This will allow UI’s and CLI’s to explore the data seamlessly
version is supported as a search parameter to return an always-incrementing _version value with each search result.
Includes ‘doc_count’ in /facets response for each resource type.
Adds nova plugin for flavors.
Adds nova plugin for hypervisors.
When searchlight-manage is indexing, all resource types will be indexed in a separate thread. Multiple threads will be run concurrently.
Plugins with sensitive, administrator-only data are indexed twice; once with that data and once without. Searches are directed to the appropriate version depending on the context of the user.
The –type argument to searchlight-manage index sync accepts a wildcard as the final character.
Adds neutron floating IP support (OS::Neutron::FloatingIP).
Added suppport for neutron security groups and security group rules (OS::Neutron::SecurityGroup).
Add support for the new Neutron tenant RBAC policy functionality. This allows networks to be shared across tenants.
Add support to searchlight-manage for displaying with Elasticsearch indices/aliases are currently being used by Searchlight. The indices/aliases are based on the specified configuration file.
Replace some of the nova get server API calls with partial document updates that just update the OS-EXT-STS state fields.
Reenabled multiple indices by allowing plugins to be managed under different resource groups.
API configuration can include service policy files such that access to various resources can match whether their service API allows access for a user.
Reindexing of data now takes place in a separate Elasticsearch index. During indexing, incoming events are processed into both the old and new indices. Once indexing is complete, an Elasticsearch alias is used to switch searches seamlessly onto the new index, at which time the old one is removed.
Plugin configuration refers to resource_group_name rather than index_name to represent groups of resources separate from the logical Elasticsearch index. This setting is used to determine index and alias names.
Openstack is moving away from ‘tenant’ as the nomenclature for keystone projects, preferring ‘project’ instead. Some services already return tenant_id and project_id (or just project_id); this patch adds project_id to those that do not.
Currently the “facet” endpoint will return all information relating to a facet field, including the options. The new parameter “exclude_options” to the facet endpoint will prevent the options for all facet fields from being returned. This option will avoid an aggregation query being performed on Elasticsearch, improving performance. The default behavior (not specifying this option) is return the options for all facet fields.
Known Issues¶
There are no notifications for server groups from nova yet, so we recommend putting it in its own resource group and scheduling a cron job to periodically re-sync. This will create a very low overhead way to keep the index up to date. The index latency will be dependent on how often you re-sync the data.
This is a change that is not compatible with the API response in Mitaka; changes have been made in Newton to the python client and UI.
There are no notifications for flavors from nova yet, so we recommend putting it to its own resource group and scheduling a cron job to re-sync with little overhead.
There are no notifications for hypervisor from nova yet, so we recommend putting it to its own resource group and scheduling a cron job to re-sync with little overhead.
Currently no notifications are sent on status changes for floating IPs (see https://bugs.launchpad.net/neutron/+bug/1593793)
Using multiple resource groups will impact sort behavior when sorting on fields across resource types when all the resource types don’t have the requested ‘sort-by field’. Follow the guidelines below to avoid errors. https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html#_ignoring_unmapped_fields https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html#_missing_values
Reindexing must now take place across all resource types that share the index (it is not possible to re-index a specific resource type). This is a limitation that Elasticsearch 2.x would likely have forced upon us anyway. A subsequent patch will allow more efficient reindexing for associated resource types.
Deployment should use Designate v2 api. if v1 api is in use, designate plugin won’t function correctly.
Upgrade Notes¶
To support ElasticSearch 1.x and 2.x, several internal data mappings have been updated. If you previously deployed Searchlight, you will need to reindex your resource data using
searchlight-manage index sync
. You may re-index everything or limit it toOS::Nova::Server
,OS::Glance::Image
,OS::Glance::Metadef
,OS::Cinder:Volume
, andOS::Cinder::Snapshot
.
To start using a pool with a shared topic instead of separate topics:
Update the respective service configuration files for searchlight enabled plugins to only publish to a single topic (e.g. set
notification_topics = notifications
). If you have Ceilometer enabled, this must be the same topic which Ceilometer uses. You also typically must restart each service for the change to take effect. For example, innova.conf
,glance-api.conf
,cinder.conf
,neutron.conf
, anddesignate.conf
:
notification_topics = notifications
Update
searchlight.conf
. In the[resource_plugin]
section, setnotifications_topic
to match the shared topic that you set in the service configurations. In the[listener]
sections, setnotifications_pool
to your desired pool name. The default name starting in Newton issearchlight
. Thenotifications_pool
does not have to match anything from other services configuration files. For example:
[resource_plugin] notifications_topic = notifications [listener] notifications_pool = searchlight
A version of python-searchlightclient greater than 2.1 must be used with this change, as well as the Newton UI version.
The existing searchlight policy.json has been simplified. The only supported options for resource policy are to enable or disable it for all request types (i.e. the ‘allow’, ‘query’ ‘facet’ suffixes are no longer in effect).
Mappings have changed for several types; it is strongly recommended all data be reindexed and the API service restarted.
Deprecation Notes¶
Two fields returned in the API plugins endpoint ‘name’ and ‘index’ have been removed.
Bug Fixes¶
Bug 1570213 Apply query to highlight query
Bug 1532010 Ensure consistency in mapping field types
Bug 1570674 Fix unicode error when booting instance from volume
Bug 1570199 Fix inconsistent mapping in image plugin
Bug 1568709 Remove port.create.end handler from nova
Bug 1565015 Add volume.retype event
Bug 1583215 Correct Cinder exchange value
Bug 1583215 Enable notification messaging pools
Overwrite child plugin’s resource_group_name during parent registration. Child plugins must live on the same resource group as their parents. This fixes a issue that a misconfiguration of child plugin’s resource_group_name results in inconsistentency with the parent plugin.
Facet options don’t work well with analyzed string fields, because the aggregation runs on tokens. These fields have non-analyzed raw subfields for sorting. Include raw subfields in facet results so that users can use them to do exact matches.
The API plugins API endpoint is returning outdated, duplicated and incomplete information. The hat-trick of uselessness. This fix will correct that. The duplicated field (‘name’) has been removed. The outdated field has been renamed (from ‘index’ to ‘alias-search’). The missing field has been added (‘alias-listener’).
Bug 1584148 Version conflict during re-indexing
Fixes a bug where routing wasn’t specified for delete operations on neutron child resources.
Fixes some compatibility issues around metafield access in es 1.x versus es 2.x.
All Elasticsearch mappings need to include the field “udated_at”. This field is used by Searchlight UI to sort the results.
Searchlight is indexing unused Neutron ports. Some Neutron ports do not result in notifications to Searchlight. We do not want to initially index them.
Bug 1619047 Unnest nova server flavor and image mapping properties
Other Notes¶
The maximum number of threads that will run concurrently can be controlled by setting “max_workers” in the Searchlight configuration file. [manage] max_workers = 6
Searchlight uses configured resource group name to create ElasticSearch indices. Some characters are invalid to index names and will cause faiure of index creation. Add verification to check if resource group name is valid.
In mitaka, indexing a parent plugin also reindexed the data for any children it had. That is no longer the case.
Improved searchlight-manage index sync performance by disabling automatic refresh of newly created indices until they are fully populated and activated for search queries.
Facets search is aggregation-only, no actual documents need to be returned. We do it by setting search_type in search request before, but it has been deprecated in Elasticsearch 2.x, use recommended size=0 instead.