check_supervisord.py
def get_status(options):
    """
    Get programs statuses.

    :param options: parsed commandline arguments.
    :type options: optparse.Values.
    :return: supervisord XML-RPC call result.
    :rtype: dict.
    """

    payload = {  # server connection URI formatted string payload
        "username": options.username,
        "password": options.password,
        "server": options.server,
        "port": options.port,
    }

    try:
        if options.server.startswith("/") and stat.S_ISSOCK(os.stat(options.server).st_mode):  # communicate with server via unix socket (simple check is server address is path and path is unix socket)
            try:
                import supervisor.xmlrpc
            except ImportError as error:
                sys.stderr.write("ERROR: Couldn't load module. {error}\n".format(error=error))
                sys.stderr.write("ERROR: Unix socket support not available! Please install nagios-check-supervisord with unix socket support: 'nagios-check-supervisord[unix-socket-support]' or install 'supervisor' separately.\n")
                sys.exit(-1)

            if all([options.username, options.password, ]):  # with auth
                connection = xmlrpclib.ServerProxy("https://", transport=supervisor.xmlrpc.SupervisorTransport(options.username, options.password, serverurl=URI[URI_TPL_SOCKET].format(**payload)))
            else:
                connection = xmlrpclib.ServerProxy("https://", transport=supervisor.xmlrpc.SupervisorTransport(None, None, serverurl=URI[URI_TPL_SOCKET].format(**payload)))

        else:  # communicate with server via http
            if all([options.username, options.password, ]):  # with auth
                connection = xmlrpclib.Server(URI[URI_TPL_HTTP_AUTH].format(**payload))
            else:
                connection = xmlrpclib.Server(URI[URI_TPL_HTTP].format(**payload))

        return connection.supervisor.getAllProcessInfo()

    except Exception as error:
        if not options.quiet:
            sys.stdout.write("ERROR: Server communication problem. {error}\n".format(error=error))
        sys.exit(EXIT_CODES.get(options.network_errors_exit_code, EXIT_CODE_UNKNOWN))
def get_status(options):
    """
    Get programs statuses.

    :param options: parsed commandline arguments.
    :type options: optparse.Values.
    :return: supervisord XML-RPC call result.
    :rtype: dict.
    """

    payload = {  # server connection URI formatted string payload
        "username": options.username,
        "password": options.password,
        "server": options.server,
        "port": options.port,
    }

    try:
        if options.server.startswith("/") and stat.S_ISSOCK(os.stat(options.server).st_mode):  # communicate with server via unix socket (simple check is server address is path and path is unix socket)
            try:
                import supervisor.xmlrpc
            except ImportError as error:
                sys.stderr.write("ERROR: Couldn't load module. {error}\n".format(error=error))
                sys.stderr.write("ERROR: Unix socket support not available! Please install nagios-check-supervisord with unix socket support: 'nagios-check-supervisord[unix-socket-support]' or install 'supervisor' separately.\n")
                sys.exit(-1)

            if all([options.username, options.password, ]):  # with auth
                connection = xmlrpclib.ServerProxy("https://", transport=supervisor.xmlrpc.SupervisorTransport(options.username, options.password, serverurl=URI[URI_TPL_SOCKET].format(**payload)))
            else:
                connection = xmlrpclib.ServerProxy("https://", transport=supervisor.xmlrpc.SupervisorTransport(None, None, serverurl=URI[URI_TPL_SOCKET].format(**payload)))

        else:  # communicate with server via http
            if all([options.username, options.password, ]):  # with auth
                connection = xmlrpclib.Server(URI[URI_TPL_HTTP_AUTH].format(**payload))
            else:
                connection = xmlrpclib.Server(URI[URI_TPL_HTTP].format(**payload))

        return connection.supervisor.getAllProcessInfo()

    except Exception as error:
        if not options.quiet:
            sys.stdout.write("ERROR: Server communication problem. {error}\n".format(error=error))
        sys.exit(EXIT_CODES.get(options.network_errors_exit_code, EXIT_CODE_UNKNOWN))
Get programs statuses.

    :param options: parsed commandline arguments.
    :type options: optparse.Values.
    :return: supervisord XML-RPC call result.
    :rtype: dict.