Module console
The console module allows one Tarantool instance to access another Tarantool instance, and allows one Tarantool instance to start listening on an admin port.
Below is a list of all console
functions.
Name | Use |
---|---|
console.connect() | Connect to an instance |
console.listen() | Listen for incoming requests |
console.start() | Start the console |
console.ac() | Set the auto-completion flag |
console.delimiter() | Set a delimiter |
console.get_default_output() | Get default output format |
console.set_default_output() | Set default output format |
console.eos() | Set or get end-of-output string |
-
console.
connect
(uri)¶ Connect to the instance at URI, change the prompt from ‘
tarantool>
’ to ‘uri>
’, and act henceforth as a client until the user ends the session or typescontrol-D
.The console.connect function allows one Tarantool instance, in interactive mode, to access another Tarantool instance. Subsequent requests will appear to be handled locally, but in reality the requests are being sent to the remote instance and the local instance is acting as a client. Once connection is successful, the prompt will change and subsequent requests are sent to, and executed on, the remote instance. Results are displayed on the local instance. To return to local mode, enter
control-D
.If the Tarantool instance at
uri
requires authentication, the connection might look something like:console.connect('admin:secretpassword@distanthost.com:3301')
.There are no restrictions on the types of requests that can be entered, except those which are due to privilege restrictions – by default the login to the remote instance is done with user name = ‘guest’. The remote instance could allow for this by granting at least one privilege:
box.schema.user.grant('guest','execute','universe')
.Parameters: - uri (
string
) – the URI of the remote instance
Return: nil
Possible errors: the connection will fail if the target Tarantool instance was not initiated with
box.cfg{listen=...}
.Example:
tarantool> console = require('console') --- ... tarantool> console.connect('198.18.44.44:3301') --- ... 198.18.44.44:3301> -- prompt is telling us that instance is remote
- uri (
-
console.
listen
(uri)¶ Listen on URI. The primary way of listening for incoming requests is via the connection-information string, or URI, specified in
box.cfg{listen=...}
. The alternative way of listening is via the URI specified inconsole.listen(...)
. This alternative way is called “administrative” or simply “admin port”. The listening is usually over a local host with a Unix domain socket.Parameters: - uri (
string
) – the URI of the local instance
The “admin” address is the URI to listen on. It has no default value, so it must be specified if connections will occur via an admin port. The parameter is expressed with URI = Universal Resource Identifier format, for example “/tmpdir/unix_domain_socket.sock”, or a numeric TCP port. Connections are often made with telnet. A typical port value is 3313.
Example:
tarantool> console = require('console') --- ... tarantool> console.listen('unix/:/tmp/X.sock') ... main/103/console/unix/:/tmp/X I> started --- - fd: 6 name: host: unix/ family: AF_UNIX type: SOCK_STREAM protocol: 0 port: /tmp/X.sock ...
- uri (
-
console.
start
()¶ Start the console on the current interactive terminal.
Example:
A special use of
console.start()
is with initialization files. Normally, if one starts the Tarantool instance withtarantool initialization file
there is no console. This can be remedied by adding these lines at the end of the initialization file:local console = require('console') console.start()
-
console.
ac
([true|false])¶ Set the auto-completion flag. If auto-completion is
true
, and the user is using Tarantool as a client or the user is using Tarantool viaconsole.connect()
, then hitting the TAB key may cause tarantool to complete a word automatically. The default auto-completion value istrue
.
-
console.
delimiter
(marker)¶ Set a custom end-of-request marker for Tarantool console.
The default end-of-request marker is a newline (line feed). Custom markers are not necessary because Tarantool can tell when a multi-line request has not ended (for example, if it sees that a function declaration does not have an end keyword). Nonetheless for special needs, or for entering multi-line requests in older Tarantool versions, you can change the end-of-request marker. As a result, newline alone is not treated as end of request.
To go back to normal mode, say:
console.delimiter('')<marker>
Parameters: - marker (
string
) – a custom end-of-request marker for Tarantool console
Example:
tarantool> console = require('console'); console.delimiter('!') --- ... tarantool> function f () > statement_1 = 'a' > statement_2 = 'b' > end! --- ... tarantool> console.delimiter('')! --- ...
- marker (
-
console.
get_default_output
()¶ Return the current default output format. The result will be
fmt="yaml"
, or it will befmt="lua"
if the last set_default_output call wasconsole.set_default_output('lua')
.
-
console.
set_default_output
('yaml'|'lua')¶ Set the default output format. The possible values are ‘yaml’ (the default default) or ‘lua’. The output format can be changed within a session by executing
console.eval('\set output yaml|lua')
; see the description of output format in the Interactive console section.
-
console.
eos
([string])¶ Set or access the end-of-output string if default output is ‘lua’. This is the string that appears at the end of output in a response to any Lua request. The default value is
;
semicolon. Sayingeos()
will return the current value. For example, afterrequire('console').eos('!!')
responses will end with ‘!!’.