Call this method to get a dictionary that will
        describe the status of all components.  The `*args`
        and `**kwargs` will be passed to the function

        :param list args: args to pass to all of the component checkers
        :param dict kwargs: keyword arguments to pass to
            all of the component checkers
        :return: A dictionary including the
        :rtype: dict

def status(self, *args, **kwargs):
        """
        Call this method to get a dictionary that will
        describe the status of all components.  The `*args`
        and `**kwargs` will be passed to the function

        :param list args: args to pass to all of the component checkers
        :param dict kwargs: keyword arguments to pass to
            all of the component checkers
        :return: A dictionary including the
        :rtype: dict
        """
        resp = {}
        available = True
        fail_count = 0

        for component_name, checker in self._component_checkers.items():
            status_data = self._check_status(checker, self.read_exception, *args, **kwargs)
            status_data['status'] = self._status_english(status_data['available'])
            available = available and status_data['available']
            if not status_data['available']:
                fail_count += 1
            resp[component_name] = status_data

        return dict(status=self._status_english(available),
                    available=available,
                    components=resp,
                    failure_count=fail_count)