'Signal the resource.
Returns True if the metadata for all resources in the stack needs to
be regenerated as a result of the signal, False if it should not be.
Subclasses should provide a handle_signal() method to implement the
signal. The base-class raise an exception if no handler is implemented.'

def signal(self, details=None, need_check=True):

    if need_check:
        self._signal_check_hook(details)
    if (details and ('unset_hook' in details)):
        self._unset_hook(details)
        return False
    if need_check:
        self._signal_check_action()
    with self.frozen_properties():
        self._handle_signal(details)
    return self.signal_needs_metadata_updates
