ceph-rest-api is a WSGI application that can run as a
standalone web service or run under a web server that supports
WSGI. It provides much of the functionality of the ceph
command-line tool through an HTTP-accessible interface.

names the ceph.conf file to use for configuration. If -c is not
specified, the default depends on the state of the –cluster option
(default ‘ceph’; see below). The configuration file is searched
for in this order:

specifies the client ‘name’, which is used to find the
client-specific configuration options in the config file, and
also is the name used for authentication when connecting
to the cluster (the entity name appearing in ‘ceph auth ls’ output,
for example). The default is ‘client.restapi’.

Commands are submitted with HTTP GET requests (for commands that
primarily return data) or PUT (for commands that affect cluster state).
HEAD and OPTIONS are also supported. Standard HTTP status codes
are returned.

For commands that return bulk data, the request can include
Accept: application/json or Accept: application/xml to select the
desired structured output, or you may use a .json or .xml addition
to the requested PATH. Parameters are supplied as query parameters
in the request; for parameters that take more than one value, repeat
the key=val construct. For instance, to remove OSDs 2 and 3,
send a PUT request to osd/rm?ids=2&ids=3.

Human-readable discovery of supported commands and parameters, along
with a small description of each command, is provided when the requested
path is incomplete/partially matching. Requesting / will redirect to
the value of restapi base url, and that path will give a full list
of all known commands.
For example, requesting api/vX.X/mon will return the list of API calls for
monitors - api/vX.X/osd will return the list of API calls for OSD and so on.

The command set is very similar to the commands
supported by the ceph tool. One notable exception is that the
cephpg<pgid><command> style of commands is supported here
as tell/<pgid>/command?args.

When deploying as WSGI application (say, with Apache/mod_wsgi,
or nginx/uwsgi, or gunicorn, etc.), use the ceph_rest_api.py module
(ceph-rest-api is a thin layer around this module). The standalone web
server is of course not used, so address/port configuration is done in
the WSGI server. Use a python .wsgi module or the equivalent to call
app=generate_app(conf,cluster,clientname,clientid,args) where:

conf is as -c/–conf above

cluster is as –cluster above

clientname, -n/–name

clientid, -i/–id, and

args are any other generic Ceph arguments

When app is returned, it will have attributes ‘ceph_addr’ and ‘ceph_port’
set to what the address and port are in the Ceph configuration;
those may be used for the server, or ignored.

Any errors reading configuration or connecting to the cluster cause an
exception to be raised; see your WSGI server documentation for how to
see those messages in case of problem.