flux-uri(1)¶
SYNOPSIS¶
flux uri [OPTIONS] TARGET
DESCRIPTION¶
Connections to Flux are established via a Uniform Resource Identifier
(URI) which is passed to the flux_open(3) API call. These native
URIs indicate the "connector" which will be used to establish the
connection, and are typically either local, with a local
URI
scheme, or remote, with a ssh
URI scheme. These URIs are considered
fully-resolved, native Flux URIs.
Processes running within a Flux instance will have the FLUX_URI
environment variable set to a native URI which flux_open(3) will
use by default, with fallback to a compiled-in native URI for the system
instance of Flux. Therefore, there is usually no need to specify a URI when
connecting to the enclosing instance. However, connecting to a different
Flux instance will require discovery of the fully-resolved URI for that
instance.
flux uri attempts to resolve its TARGET argument to a native local or remote URI. The TARGET is itself a URI which specifies the method to use in URI resolution via the scheme part, with the path and query parts passed to a plugin which implements the resolution method.
As a convenience, if TARGET is specified with no scheme, then the scheme
is assumed to be jobid
. This allows flux uri
to be used to look
up the URI for a Flux instance running as a job in the current enclosing
instance with:
$ flux uri JOBID
Depending on the TARGET URI scheme and corresponding plugin, specific
query arguments in TARGET may be supported. However, as a convenience,
all TARGET URIs support the special query arguments local
or
remote
to force the resulting URI into a local (local://
) or remote
(ssh://
) form. For example:
$ flux uri JOBID?local
would return the local://
URI for JOBID (if the URI can be resolved).
A special environment variable FLUX_URI_RESOLVE_LOCAL will force
flux uri
to always resolve URIs to local form. This is often useful if
the local connector is known to be on the local system (i.e. within a test
Flux instance), and ssh to localhost does not work.
A list of supported URI schemes will be listed at the bottom of
flux uri --help
message. For a description of the URI resolver schemes
included with Flux, see the URI SCHEMES and EXAMPLES sections below.
OPTIONS¶
- --remote
Return the remote (
ssh://
) equivalent of the resolved URI.- --local
Return the local (
local://
) equivalent of the resolved URI. Warning: the resulting URI may be invalid for the current system if the network host specified by anssh
URI is not the current host.
URI SCHEMES¶
The following URI schemes are included by default:
- jobid:ID[/ID...]
This scheme attempts to get the URI for a Flux instance running as a job in the current enclosing instance. This is the assumed scheme if no
scheme:
is provided in TARGET passed toflux uri
, so thejobid:
prefix is optional. A hierarchy of Flux jobids is supported, sof1234/f3456
will resolve the URI for jobf3456
running in jobf1234
in the current instance. This scheme will raise an error if the target job is not running.- pid:PID
This scheme attempts to read the
FLUX_URI
value from the process id PID using/proc/PID/environ
. If PID refers to aflux-broker
, then the scheme readsFLUX_URI
from the broker's initial program or another child process sinceFLUX_URI
in the broker's environment would refer to its parent (or may not be set at all in the case of a test instance started withflux start --test-size=N
).- slurm:JOBID
This scheme makes a best-effort to resolve the URI of a Flux instance launched under Slurm. It invokes
srun
to runscontrol listpids
on the first node of the job, and then uses thepid
resolver until it finds a validFLUX_URI
.
EXAMPLES¶
To get the URI of a job in the current instance in its local://
form:
$ flux uri --local ƒN8Pz2xVu
local:///tmp/flux-zbVtVg/jobtmp-0-ƒN8Pz2xVu/flux-59uf5w/local-0
or
$ flux uri ƒN8Pz2xVu?local
local:///tmp/flux-zbVtVg/jobtmp-0-ƒN8Pz2xVu/flux-59uf5w/local-0
Get the URI of a nested job:
$ flux uri ƒqxxTiZBM/ƒr2XFWP?local
local:///tmp/flux-zbVtVg/jobtmp-0-ƒqxxTiZBM/flux-EPgSwk/local-0
Note
With the jobid
resolver, ?local
only needs to be placed on
the last component of the jobid "path" or hierarchy. This will resolve
each URI in turn as a local URI.
Get the URI of a local flux-broker
$ flux uri pid:$(pidof -s flux-broker)
local:///tmp/flux-sLuBkZ/local-0
Get the URI for a Flux instance running as a Slurm job:
$ flux uri slurm:7843494
ssh://cluster42/var/tmp/user/flux-MpnytT/local-0