Exemplo n.º 1
0
 def _native_event_send_dhcp_notification(self, resource, event, trigger,
                                          payload):
     action = event.replace('after_', '')
     # we unsubscribe the _send_dhcp_notification method now that we know
     # the loaded core plugin emits native resource events
     if resource not in self._unsubscribed_resources:
         self.uses_native_notifications[resource][action] = True
         if all(self.uses_native_notifications[resource].values()):
             # only unsubscribe the API level listener if we are
             # receiving all event types for this resource
             self._unsubscribed_resources.append(resource)
             registry.unsubscribe_by_resource(self._send_dhcp_notification,
                                              resource)
     method_name = '.'.join((resource, action, 'end'))
     data = {resource: payload.latest_state}
     if resource == resources.PORT and event == events.AFTER_UPDATE:
         if self._only_status_changed(payload.states[0],
                                      payload.latest_state):
             # don't waste time updating the DHCP agent for status updates
             return
     self.notify(payload.context, data, method_name)
Exemplo n.º 2
0
 def _native_event_send_dhcp_notification(self, resource, event, trigger,
                                          context, **kwargs):
     action = event.replace('after_', '')
     # we unsubscribe the _send_dhcp_notification method now that we know
     # the loaded core plugin emits native resource events
     if resource not in self._unsubscribed_resources:
         self.uses_native_notifications[resource][action] = True
         if all(self.uses_native_notifications[resource].values()):
             # only unsubscribe the API level listener if we are
             # receiving all event types for this resource
             self._unsubscribed_resources.append(resource)
             registry.unsubscribe_by_resource(self._send_dhcp_notification,
                                              resource)
     method_name = '.'.join((resource, action, 'end'))
     payload = kwargs[resource]
     data = {resource: payload}
     if resource == resources.PORT:
         if self._only_status_changed(kwargs.get('original_port'),
                                      kwargs.get('port')):
             # don't waste time updating the DHCP agent for status updates
             return
     self.notify(context, data, method_name)
Exemplo n.º 3
0
    def _native_event_send_dhcp_notification_payload(self,
                                                     resource,
                                                     event,
                                                     trigger,
                                                     payload=None):

        # TODO(boden): collapse the native event methods back into one

        action = event.replace('after_', '')
        # we unsubscribe the _send_dhcp_notification method now that we know
        # the loaded core plugin emits native resource events
        if resource not in self._unsubscribed_resources:
            self.uses_native_notifications[resource][action] = True
            if all(self.uses_native_notifications[resource].values()):
                # only unsubscribe the API level listener if we are
                # receiving all event types for this resource
                self._unsubscribed_resources.append(resource)
                registry.unsubscribe_by_resource(self._send_dhcp_notification,
                                                 resource)
        method_name = '.'.join((resource, action, 'end'))
        data = {resource: payload.latest_state}
        self.notify(payload.context, data, method_name)
Exemplo n.º 4
0
 def test_unsubscribe_by_resource(self):
     registry.unsubscribe_by_resource(my_callback, 'my-resource')
     self.callback_manager.unsubscribe_by_resource.assert_called_with(
         my_callback, 'my-resource')