-
Notifications
You must be signed in to change notification settings - Fork 43
Description
Related dev. issue(s): tarantool/tarantool#9452
Product: Tarantool
Since: 3.0
Root document:
- https://docs.d.tarantool.io/en/doc/3.0/concepts/configuration/
- https://docs.d.tarantool.io/en/doc/3.0/reference/configuration/configuration_reference/#config
SME: @ Totktonada
Details
See tarantool/tarantool#9452 for the problem
statement. In short: some upgrade scenarios may need to configure
tarantool instances differently depending on a tarantool version.
A new top level configuration block is added for this purpose:
conditional
. Let's look on an example:
conditional:
- if: tarantool_version >= 3.99.0 && tarantool_version < 4.0.0
# This section shouldn't be validated and shouldn't be applied.
replication:
new_option: foo
- if: tarantool_version < 3.99.0
# This section is to be applied.
process:
title: '{{ instance_name }} -- in upgrade'
The block contains an array of conditional sections, each accompanied by
if
predicate to determine, whether to apply it on particular tarantool
version. (if
is required.)
If a section is not to be applied on the given version, it is not
validated at all and may contain unknown options.
If a section is to be applied, it must match the cluster configuration
schema like the main config.
If the same option is set by several sections with true predicate, the
last section wins.
The if
expression supports one data type: version
. A value may be
referenced in two ways:
- Version literal:
1.2.3
(three components, not less, not more). - Variable:
tarantool_version
(only this variable is supported).
tarantool_version
is assumed as three components version, say, 3.0.0.
The operations are the following.
- Logical OR:
||
- Logical AND:
&&
- Compare:
>
,<
,>=
,<=
,==
,!=
- Parentheses:
(
,)
All the comparisons assume the versions as three component ones.
Requested by @ Totktonada in tarantool/tarantool@6206f74.