Exemplo n.º 1
0
    def _manage_flags(self):
        """
        Manage automatic relation flags.

        Internal use only.
        """
        already_joined = is_flag_set(self.expand_name('joined'))
        hook_name = hookenv.hook_name()
        rel_hook = hook_name.startswith(self.endpoint_name + '-relation-')
        departed_hook = rel_hook and hook_name.endswith('-departed')

        toggle_flag(self.expand_name('joined'), self.is_joined)

        if departed_hook:
            set_flag(self.expand_name('departed'))
        elif self.is_joined:
            clear_flag(self.expand_name('departed'))

        if already_joined and not rel_hook:
            # skip checking relation data outside hooks for this relation
            # to save on API calls to the controller (unless we didn't have
            # the joined flag before, since then we might migrating to Endpoints)
            return

        for unit in self.all_units:
            for key, value in unit.received.items():
                data_key = 'endpoint.{}.{}.{}.{}'.format(
                    self.endpoint_name, unit.relation.relation_id,
                    unit.unit_name, key)
                if data_changed(data_key, value):
                    set_flag(self.expand_name('changed'))
                    set_flag(self.expand_name('changed.{}'.format(key)))
        self.manage_flags()
Exemplo n.º 2
0
 def _manage_flags(self):
     super()._manage_flags()
     toggle_flag(self.expand_name('endpoint.{endpoint_name}.has_requests'),
                 self.all_requests)
     toggle_flag(self.expand_name('endpoint.{endpoint_name}.new_requests'),
                 self.new_requests)
Exemplo n.º 3
0
 def _manage_flags(self):
     super()._manage_flags()
     toggle_flag(self.expand_name('endpoint.{endpoint_name}.has_responses'),
                 self.responses)
     toggle_flag(self.expand_name('endpoint.{endpoint_name}.all_responses'),
                 len(self.responses) == len(self.requests))