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.

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.