Release 1.0.0 Added - New parameter `topology.replicasets[].all_rw` in clusterwide config for configuring all instances in the replicaset as `read_only = false`. It can be managed with both GraphQL and Lua API `edit_replicaset`. - Remote Control server - a partial replacement for the `box.cfg({listen})`, independent on `box.cfg`. The server is only to be used internally for bootstrapping new instances. - New module `argparse` for gathering configuration options from command-line arguments, environment variables, and configuration files. It is used internally and overrides `cluster.cfg` and `box.cfg` options. - Auth parameter `cookie_max_age` is now configurable with GraphQL API. Also now it's stored in clusterwide config, so changing it on a single server will affect all others in cluster. - Detect that we run under systemd and switch to syslog logging from stderr. This allows to filter log messages by severity with `journalctl` - Redesign WebUI Changed - The project renamed to **cartridge**. Use `require('cartridge')` instead of `require('cluster')`. All submodules are renamed too. **(incompatible change)** - Submodule `cluster.test_helpers` renamed to `cartridge.test-helpers` for consistency. **(incompatible change)** - Modifying auth params with GraphQL before the cluster was bootstrapped is now forbidden and returns an error. - Introducing a new auth parameter `cookie_renew_age`. When cluster handles an HTTP request with the cookie, whose age in older then specified, it refreshes the cookie. It may be useful to set `cookie_max_age` to a small value (for example 10 minutes), so the user will be logged out after `cookie_max_age` seconds of inactivity. Otherwise, if he's active, the cookie will be updated every `cookie_renew_age` seconds and the session will not be interrupted. - Changed configuration options for `cluster.cfg()`: `roles` now is a mandatory table, `workdir` is optional now (defaults to ".") - Parameter `advertise_uri` is optional now, default value is derived as follows. `advertise_uri` is a compound of `<HOST>` and `<PORT>`. When `<HOST>` isn't specified, it's detected as the only non-local IP address. If it can't be determined or there is more than one IP address available it defaults to `"localhost"`. When `<PORT>` isn't specified, it's derived from numeric suffix `_<N>` of `TARANTOOL_INSTANCE_NAME`: `<PORT> = 3300+<N>`. Otherwise default `<PORT> = 3301` is used. - Parameter `http_port` is derived from instance name too. If it can't be derived it defaults to 8081. New parameter `http_enabled = false` is used to disable it (by default it's enabled). - Removed user `cluster`, which was used internally for orchestration over netbox. Tarantool built-in user `admin` is used instead now. It can also be used for HTTP authentication to access WebUI. Cluster cookie is used as a password in both cases. Removed Two-layer table structure in API, which was deprecated earlier, is now removed completely: - `cartridge.service_registry.*` - `cartridge.confapplier.*` - `cartridge.admin.*` Instead you can use top-level functions: - `cartridge.config_get_readonly` - `cartridge.config_get_deepcopy` - `cartridge.config_patch_clusterwide` - `cartridge.service_get` - `cartridge.admin_get_servers` - `cartridge.admin_get_replicasets` - `cartridge.admin_probe_server` - `cartridge.admin_join_server` - `cartridge.admin_edit_server` - `cartridge.admin_expel_server` - `cartridge.admin_enable_servers` - `cartridge.admin_disable_servers` - `cartridge.admin_edit_replicaset` - `cartridge.admin_get_failover` - `cartridge.admin_enable_failover` - `cartridge.admin_disable_failover`