Example #1
0
def notify_about_instance_usage(notifier, context, instance, event_suffix,
                                network_info=None, system_metadata=None,
                                extra_usage_info=None, fault=None):
    """Send a notification about an instance.

    :param notifier: a messaging.Notifier
    :param event_suffix: Event type like "delete.start" or "exists"
    :param network_info: Networking information, if provided.
    :param system_metadata: system_metadata DB entries for the instance,
        if provided.
    :param extra_usage_info: Dictionary containing extra values to add or
        override in the notification.
    """
    if not extra_usage_info:
        extra_usage_info = {}

    usage_info = notifications.info_from_instance(context, instance,
            network_info, system_metadata, **extra_usage_info)

    if fault:
        # NOTE(johngarbutt) mirrors the format in wrap_exception
        fault_payload = exception_to_dict(fault)
        LOG.debug(fault_payload["message"], instance=instance)
        usage_info.update(fault_payload)

    if event_suffix.endswith("error"):
        method = notifier.error
    else:
        method = notifier.info

    method(context, 'compute.instance.%s' % event_suffix, usage_info)
Example #2
0
def notify_about_instance_usage(notifier,
                                context,
                                instance,
                                event_suffix,
                                network_info=None,
                                system_metadata=None,
                                extra_usage_info=None,
                                fault=None):
    """Send a notification about an instance.

    :param notifier: a messaging.Notifier
    :param event_suffix: Event type like "delete.start" or "exists"
    :param network_info: Networking information, if provided.
    :param system_metadata: system_metadata DB entries for the instance,
        if provided.
    :param extra_usage_info: Dictionary containing extra values to add or
        override in the notification.
    """
    if not extra_usage_info:
        extra_usage_info = {}

    usage_info = notifications.info_from_instance(context, instance,
                                                  network_info,
                                                  system_metadata,
                                                  **extra_usage_info)

    if fault:
        # NOTE(johngarbutt) mirrors the format in wrap_exception
        fault_payload = exception_to_dict(fault)
        LOG.debug(fault_payload["message"], instance=instance)
        usage_info.update(fault_payload)

    if event_suffix.endswith("error"):
        method = notifier.error
    else:
        method = notifier.info

    method(context, 'compute.instance.%s' % event_suffix, usage_info)
Example #3
0
 def test_payload_has_progress(self):
     self.instance.progress = 50
     info = notifications.info_from_instance(self.context, self.instance,
                                               self.net_info, None)
     self.assertIn("progress", info)
     self.assertEqual(50, info["progress"])
Example #4
0
 def test_payload_has_progress_empty(self):
     info = notifications.info_from_instance(self.context, self.instance,
                                               self.net_info, None)
     self.assertIn("progress", info)
     self.assertIsNone(self.instance.progress)
     self.assertEqual("", info["progress"])
Example #5
0
 def test_payload_has_cell_name(self):
     self.instance.cell_name = "cell1"
     info = notifications.info_from_instance(self.context, self.instance,
                                               self.net_info, None)
     self.assertIn("cell_name", info)
     self.assertEqual("cell1", info["cell_name"])
Example #6
0
 def test_payload_has_vif_mac_address(self):
     info = notifications.info_from_instance(self.context, self.instance,
                                               self.net_info, None)
     self.assertIn("fixed_ips", info)
     self.assertEqual(self.net_info[0]['address'],
                      info["fixed_ips"][0]["vif_mac"])
Example #7
0
 def test_payload_has_fixed_ip_labels(self):
     info = notifications.info_from_instance(self.context, self.instance,
                                               self.net_info, None)
     self.assertIn("fixed_ips", info)
     self.assertEqual(info["fixed_ips"][0]["label"], "test1")
Example #8
0
 def test_payload_has_progress(self):
     self.instance.progress = 50
     info = notifications.info_from_instance(self.context, self.instance,
                                             self.net_info, None)
     self.assertIn("progress", info)
     self.assertEqual(50, info["progress"])
Example #9
0
 def test_payload_has_progress_empty(self):
     info = notifications.info_from_instance(self.context, self.instance,
                                             self.net_info, None)
     self.assertIn("progress", info)
     self.assertIsNone(self.instance.progress)
     self.assertEqual("", info["progress"])
Example #10
0
 def test_payload_has_cell_name(self):
     self.instance.cell_name = "cell1"
     info = notifications.info_from_instance(self.context, self.instance,
                                             self.net_info, None)
     self.assertIn("cell_name", info)
     self.assertEqual("cell1", info["cell_name"])
Example #11
0
 def test_payload_has_vif_mac_address(self):
     info = notifications.info_from_instance(self.context, self.instance,
                                             self.net_info, None)
     self.assertIn("fixed_ips", info)
     self.assertEqual(self.net_info[0]['address'],
                      info["fixed_ips"][0]["vif_mac"])
Example #12
0
 def test_payload_has_fixed_ip_labels(self):
     info = notifications.info_from_instance(self.context, self.instance,
                                             self.net_info, None)
     self.assertIn("fixed_ips", info)
     self.assertEqual(info["fixed_ips"][0]["label"], "test1")