Jump to: navigation, search

Trove/use-datastore-version-when-considering-configs

Description

Trove currently can use different config files for each datastore, but uses the same configs for each datastore version. This blueprint is to add the tiny bit of functionality to allow an operator to optionally use different configs each datastore version.

Justification/Benefits

As versions of a datastore change, it makes sense to allow operators to optionally offer different config values for each version.

Impacts

Configuration

No Impact.

Database

No impact.

Public API

No impact.

CLI interface

No impact.

ReST Part

No impact.

Internal API

Today a template is loaded by looking in the path "{manager}/config.template".format(manager=datastore.manager). We can allow for this new functionality by creating a list which contains different name patterns to look for. Each one will be tried in order to see if there's a match. I propose these static defaults:

   ['{name}/{version}/{template_name}',
    '{name}/{template_name}',
    '{manager}/{template_name}']

Where: {name} is the datastore name. (ie. mysql, percona, or redis etc.) {version} is the datastore version (ie. 5.1, 5.5, or 5,6 etc.) {template_name} is the name of the template (ie. 'config.template' or 'overrides.config.template' etc.)

This will preserve the backward compatibility of the current template path and allow you to choose a more specific template per datastore version.

RPC API description

No impact.

Guest Agent

No impact.