Skip to content

tt cluster worker publish implementation #5660

@TarantoolBot

Description

@TarantoolBot

Implement tt cluster worker publish command for publishing worker
configurations to etcd or tarantool config storage (TCS). The command
accepts a URL with format:

http(s)://[username:password@]host:port/prefix/host-name/worker-name
  • prefix - a base path to the worker configuration.
  • host-name - a name of the host.
  • worker-name - a name of the worker.

Possible arguments:

  • timeout - a request timeout in seconds (default 3.0).
  • ssl_key_file - a path to a private SSL key file.
  • ssl_cert_file - a path to an SSL certificate file.
  • ssl_ca_file - a path to a trusted certificate authorities
    (CA) file.
  • ssl_ca_path - a path to a trusted certificate authorities
    (CA) directory.
  • ssl_ciphers - a list of allowed SSL ciphers.
  • verify_host - set off (default true) verification of the
    certificate’s name against the host.
  • verify_peer - set off (default true) verification of the peer’s
    SSL certificate.

The command supports the following environment variables:

  • TT_CLI_USERNAME - specifies a Tarantool username;
  • TT_CLI_PASSWORD - specifies a Tarantool password.
  • TT_CLI_ETCD_USERNAME - specifies a Etcd username;
  • TT_CLI_ETCD_PASSWORD - specifies a Etcd password.

The priority of credentials:

environment variables < command flags < URL credentials.

Usage:

tt cluster worker publish <URI> <FILE>

Supported flags:

--force             force publish and skip checking existence

-h, --help help for publish
-p, --password string password (used as etcd/tarantool config
storage credentials)
-u, --username string username (used as etcd/tarantool config
storage credentials)

Example:

tt cluster worker publish \
  https://user:pass@localhost:2379/cluster/workers/host/server-1 \
  worker.yaml

The implementation uses go-storage library for both etcd and TCS.
Without --force flag, it checks if the key already exists before
publishing. Due to go-storage limitations (no "count" predicate
support), this check is done via two separate transactions with a
potential race condition.

Closes TNTP-7062
Requested by @oleg-jukovec in tarantool/tt@303dc24.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions