Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

config: conditional sections for upgrading #3939

Closed
TarantoolBot opened this issue Dec 18, 2023 · 0 comments · Fixed by #4364
Closed

config: conditional sections for upgrading #3939

TarantoolBot opened this issue Dec 18, 2023 · 0 comments · Fixed by #4364
Assignees

Comments

@TarantoolBot
Copy link
Collaborator

TarantoolBot commented Dec 18, 2023

Related dev. issue(s): tarantool/tarantool#9452

Product: Tarantool
Since: 3.0
Root document:

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:

  1. Version literal: 1.2.3 (three components, not less, not more).
  2. 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.

  1. Logical OR: ||
  2. Logical AND: &&
  3. Compare: >, <, >=, <=, ==, !=
  4. Parentheses: (, )

All the comparisons assume the versions as three component ones.
Requested by @ Totktonada in tarantool/tarantool@6206f74.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants