def hook_point(self, hook_name, handle=None):
        """Used to call module function that may define a hook function for hook_name

        Available hook points:
        - `tick`, called on each daemon loop turn
        - `save_retention`; called by the scheduler when live state
            saving is to be done
        - `load_retention`; called by the scheduler when live state
            restoring is necessary (on restart)
        - `get_new_actions`; called by the scheduler before adding the actions to be executed
        - `early_configuration`; called by the arbiter when it begins parsing the configuration
        - `read_configuration`; called by the arbiter when it read the configuration
        - `late_configuration`; called by the arbiter when it finishes parsing the configuration

        As a default, the `handle` parameter provided to the hooked function is the
        caller Daemon object. The scheduler will provide its own instance when it call this
        function.

        :param hook_name: function name we may hook in module
        :type hook_name: str
        :param handle: parameter to provide to the hook function
        :type: handle: alignak.Satellite
        :return: None
        """
        full_hook_name = 'hook_' + hook_name
        for module in self.modules_manager.instances:
            _ts = time.time()
            if not hasattr(module, full_hook_name):
                continue

            fun = getattr(module, full_hook_name)
            try:
                fun(handle if handle is not None else self)
            # pylint: disable=broad-except
            except Exception as exp:  # pragma: no cover, never happen during unit tests...
                logger.warning('The instance %s raised an exception %s. I disabled it,'
                               ' and set it to restart later', module.name, str(exp))
                logger.exception('Exception %s', exp)
                self.modules_manager.set_to_restart(module)
            else:
                statsmgr.timer('hook.%s.%s' % (hook_name, module.name), time.time() - _ts)
Used to call module function that may define a hook function for hook_name

        Available hook points:
        - `tick`, called on each daemon loop turn
        - `save_retention`; called by the scheduler when live state
            saving is to be done
        - `load_retention`; called by the scheduler when live state
            restoring is necessary (on restart)
        - `get_new_actions`; called by the scheduler before adding the actions to be executed
        - `early_configuration`; called by the arbiter when it begins parsing the configuration
        - `read_configuration`; called by the arbiter when it read the configuration
        - `late_configuration`; called by the arbiter when it finishes parsing the configuration

        As a default, the `handle` parameter provided to the hooked function is the
        caller Daemon object. The scheduler will provide its own instance when it call this
        function.

        :param hook_name: function name we may hook in module
        :type hook_name: str
        :param handle: parameter to provide to the hook function
        :type: handle: alignak.Satellite
        :return: None