Module cartridge.clusterwide-config

The abstraction, representing clusterwide configuration.

Clusterwide configuration is more than just a lua table. It's an object in terms of OOP paradigm.

On filesystem clusterwide config is represented by a file tree.

In Lua it's represented as an object which holds both plaintext files content and unmarshalled lua tables. Unmarshalling is implicit and performed automatically for the sections with .yml file extension.

To access plaintext content there are two functions: get_plaintext and set_plaintext.

Unmarshalled lua tables are accessed without .yml extension by get_readonly and get_deepcopy. Plaintext serves for accessing unmarshalled representation of corresponding sections.

To avoid ambiguity it's prohibited to keep both <FILENAME> and <FILENAME>.yml in the configuration. An attempt to do so would result in return nil, err from new() and load(), and an attempt to call get_readonly/deepcopy would raise an error. Nevertheless one can keep any other extensions because they aren't unmarshalled implicitly.

(Added in v1.2.0-17)

Usage:

    tarantool> cfg = ClusterwideConfig.new({
             >     -- two files
             >     ['forex.yml'] = '{EURRUB_TOM: 70.33, USDRUB_TOM: 63.18}',
             >     ['text'] = 'Lorem ipsum dolor sit amet',
             > })
    ---
    ...
    
    tarantool> cfg:get_plaintext()
    ---
    - text: Lorem ipsum dolor sit amet
      forex.yml: '{EURRUB_TOM: 70.33, USDRUB_TOM: 63.18}'
    ...
    
    tarantool> cfg:get_readonly()
    ---
    - forex.yml: '{EURRUB_TOM: 70.33, USDRUB_TOM: 63.18}'
      forex:
        EURRUB_TOM: 70.33
        USDRUB_TOM: 63.18
      text: Lorem ipsum dolor sit amet
    ...
    

Functions

new ([data]) Create new object.
save (clusterwide_config, filename) Write configuration to filesystem.
load (filename) Load object from filesystem.

Local Functions

load_from_file (filename) Load old-style config from YAML file.
load_from_dir (path) Load new-style config from a directory.
remove (string) Remove config from filesystem atomically.


Functions

new ([data])
Create new object.

Parameters:

Returns:

    ClusterwideConfig

Or

  1. nil
  2. table Error description
save (clusterwide_config, filename)
Write configuration to filesystem.

Write atomicity is achieved by splitting it into two phases: 1. Configuration is saved with a random filename in the same directory 2. Temporal filename is renamed to the destination

Parameters:

  • clusterwide_config ClusterwideConfig
  • filename string

Returns:

    boolean true

Or

  1. nil
  2. table Error description
load (filename)
Load object from filesystem.

This function handles both old-style single YAML and new-style directory with a file tree.

Parameters:

Returns:

    ClusterwideConfig

Or

  1. nil
  2. table Error description

Local Functions

load_from_file (filename)
Load old-style config from YAML file.

Parameters:

  • filename string Filename to load.

Returns:

    ClusterwideConfig

Or

  1. nil
  2. table Error description
load_from_dir (path)
Load new-style config from a directory.

Parameters:

  • path string Path to the config.

Returns:

    ClusterwideConfig

Or

  1. nil
  2. table Error description
remove (string)
Remove config from filesystem atomically.

The atomicity is achieved by splitting it into two phases: 1. Configuration is saved with a random filename in the same directory 2. Temporal filename is renamed to the destination

Parameters:

  • string path Directory path to remove.

Returns:

    boolean true

Or

  1. nil
  2. table Error description
generated by LDoc 1.4.6 Last updated 2020-04-24 16:23:15