borgcube.daemon package

borgcube.daemon.client module

exception borgcube.daemon.client.APIError[source]

Bases: RuntimeError

class borgcube.daemon.client.APIClient(address=None, context=None)[source]

Bases: object

Client to talk to the backend daemon (borgcubed)

All of these can raise zmq.ZMQError, zmq.Again etc. and these should be handled gracefully (ie not with a 500).


Send request_dict to the borgcube daemon and return the response dictionary.


borgcube.daemon.hookspec module


Called after borgcubed has fully started up.

apiserver is the daemon.APIServer instance handling this. Interesting APIs are:

def error(self, message, *parameters):
Log error message formatted (%) with parameters. Return response dictionary.
def queue_job(self, job):
Enqueue job instance for execution.
borgcube.daemon.hookspec.borgcubed_handle_request(apiserver, request)[source]

Handle request and return a response dictionary.

request[‘command’] is the command string. If this is not for you, return None.


Called on every ‘idle’ iteration in the daemon. This typically occurs roughly every second.

borgcube.daemon.hookspec.borgcubed_job_exit(apiserver, job, exit_code, signo)[source]

Called when a job child process is reaped.

job is the job, while exit_code is the exit code of the process. signo is the POSIX signal number. If the process did not exit due to a signal, signo is zero.

borgcube.daemon.hookspec.borgcubed_client_call(apiclient, call)[source]

Called if an unknown APIClient method call (str) is invoked.

Return a client function that should handle the call.

Return None if you don’t care about it.

You are likely interested in this apiclient API:

def do_request(self, request_dict):
Send request_dict to the borgcube daemon and return the response dictionary.

Don’t forget to raise the appropiate APIError if the daemon returns an error.