def test_notify_usage_exists_instance_not_found(self): # Ensure 'exists' notification generates appropriate usage data. instance = create_instance(self.context) self.compute.terminate_instance(self.context, instance, [], []) compute_utils.notify_usage_exists(rpc.get_notifier("compute"), self.context, instance) msg = fake_notifier.NOTIFICATIONS[-1] self.assertEqual(msg.priority, "INFO") self.assertEqual(msg.event_type, "compute.instance.exists") payload = msg.payload self.assertEqual(payload["tenant_id"], self.project_id) self.assertEqual(payload["user_id"], self.user_id) self.assertEqual(payload["instance_id"], instance["uuid"]) self.assertEqual(payload["instance_type"], "m1.tiny") type_id = flavors.get_flavor_by_name("m1.tiny")["id"] self.assertEqual(str(payload["instance_type_id"]), str(type_id)) flavor_id = flavors.get_flavor_by_name("m1.tiny")["flavorid"] self.assertEqual(str(payload["instance_flavor_id"]), str(flavor_id)) for attr in ( "display_name", "created_at", "launched_at", "state", "state_description", "bandwidth", "audit_period_beginning", "audit_period_ending", "image_meta", ): self.assertIn(attr, payload, "Key %s not in payload" % attr) self.assertEqual(payload["image_meta"], {}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload["image_ref_url"], image_ref_url)
def test_notify_usage_exists_instance_not_found(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = instance_obj.Instance.get_by_id(self.context, instance_id, expected_attrs=['metadata', 'system_metadata', 'info_cache']) self.compute.terminate_instance(self.context, instance, [], []) compute_utils.notify_usage_exists( rpc.get_notifier('compute'), self.context, instance) msg = fake_notifier.NOTIFICATIONS[-1] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.exists') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEqual(payload['image_meta'], {}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload['image_ref_url'], image_ref_url)
def test_notify_usage_exists_instance_not_found(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) self.compute.terminate_instance(self.context, instance) compute_utils.notify_usage_exists(self.context, instance) msg = test_notifier.NOTIFICATIONS[-1] self.assertEquals(msg['priority'], 'INFO') self.assertEquals(msg['event_type'], 'compute.instance.exists') payload = msg['payload'] self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], instance['uuid']) self.assertEquals(payload['instance_type'], 'm1.tiny') type_id = instance_types.get_instance_type_by_name('m1.tiny')['id'] self.assertEquals(str(payload['instance_type_id']), str(type_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload['image_meta'], {}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEquals(payload['image_ref_url'], image_ref_url)
def notify_usage_exists(self, context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info): compute_utils.notify_usage_exists(self.notifier, context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info)
def test_notify_usage_exists(self): """Ensure 'exists' notification generates appropriate usage data.""" instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) # Set some system metadata sys_metadata = {"image_md_key1": "val1", "image_md_key2": "val2", "other_data": "meow"} db.instance_system_metadata_update(self.context, instance["uuid"], sys_metadata, False) compute_utils.notify_usage_exists(self.context, instance) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg["priority"], "INFO") self.assertEquals(msg["event_type"], "compute.instance.exists") payload = msg["payload"] self.assertEquals(payload["tenant_id"], self.project_id) self.assertEquals(payload["user_id"], self.user_id) self.assertEquals(payload["instance_id"], instance.uuid) self.assertEquals(payload["instance_type"], "m1.tiny") type_id = instance_types.get_instance_type_by_name("m1.tiny")["id"] self.assertEquals(str(payload["instance_type_id"]), str(type_id)) for attr in ( "display_name", "created_at", "launched_at", "state", "state_description", "bandwidth", "audit_period_beginning", "audit_period_ending", "image_meta", ): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload["image_meta"], {"md_key1": "val1", "md_key2": "val2"}) image_ref_url = "%s/images/1" % utils.generate_glance_url() self.assertEquals(payload["image_ref_url"], image_ref_url) self.compute.terminate_instance(self.context, instance["uuid"])
def test_notify_usage_exists_deleted_instance(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) # Set some system metadata sys_metadata = {'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow'} db.instance_system_metadata_update(self.context, instance['uuid'], sys_metadata, False) self.compute.terminate_instance(self.context, instance) instance = db.instance_get(self.context.elevated(read_deleted='yes'), instance_id) compute_utils.notify_usage_exists(self.context, instance) msg = test_notifier.NOTIFICATIONS[-1] self.assertEquals(msg['priority'], 'INFO') self.assertEquals(msg['event_type'], 'compute.instance.exists') payload = msg['payload'] self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], instance['uuid']) self.assertEquals(payload['instance_type'], 'm1.tiny') type_id = instance_types.get_instance_type_by_name('m1.tiny')['id'] self.assertEquals(str(payload['instance_type_id']), str(type_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload['image_meta'], {'md_key1': 'val1', 'md_key2': 'val2'}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEquals(payload['image_ref_url'], image_ref_url)
def test_notify_usage_exists_deleted_instance(self): """Ensure 'exists' notification generates appropriate usage data.""" instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) # Set some system metadata sys_metadata = {'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow'} db.instance_system_metadata_update(self.context, instance['uuid'], sys_metadata, False) self.compute.terminate_instance(self.context, instance) instance = db.instance_get(self.context.elevated(read_deleted='yes'), instance_id) compute_utils.notify_usage_exists(self.context, instance) msg = test_notifier.NOTIFICATIONS[-1] self.assertEquals(msg['priority'], 'INFO') self.assertEquals(msg['event_type'], 'compute.instance.exists') payload = msg['payload'] self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], instance.uuid) self.assertEquals(payload['instance_type'], 'm1.tiny') type_id = instance_types.get_instance_type_by_name('m1.tiny')['id'] self.assertEquals(str(payload['instance_type_id']), str(type_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload['image_meta'], {'md_key1': 'val1', 'md_key2': 'val2'}) image_ref_url = "%s/images/1" % utils.generate_glance_url() self.assertEquals(payload['image_ref_url'], image_ref_url)
def test_notify_usage_exists_deleted_instance(self): # Ensure 'exists' notification generates appropriate usage data. instance = create_instance(self.context) # Set some system metadata sys_metadata = {'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow'} instance.system_metadata.update(sys_metadata) instance.save() self.compute.terminate_instance(self.context, instance, [], []) compute_utils.notify_usage_exists( rpc.get_notifier('compute'), self.context, instance) msg = fake_notifier.NOTIFICATIONS[-1] self.assertEqual(msg.priority, 'INFO') self.assertEqual(msg.event_type, 'compute.instance.exists') payload = msg.payload self.assertEqual(payload['tenant_id'], self.project_id) self.assertEqual(payload['user_id'], self.user_id) self.assertEqual(payload['instance_id'], instance['uuid']) self.assertEqual(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEqual(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertIn(attr, payload, "Key %s not in payload" % attr) self.assertEqual(payload['image_meta'], {'md_key1': 'val1', 'md_key2': 'val2'}) image_ref_url = "%s/images/%s" % (glance.generate_glance_url(), uuids.fake_image_ref) self.assertEqual(payload['image_ref_url'], image_ref_url)
def test_notify_usage_exists_instance_not_found(self): """Ensure 'exists' notification generates appropriate usage data.""" instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) self.compute.terminate_instance(self.context, instance['uuid']) compute_utils.notify_usage_exists(self.context, instance) msg = test_notifier.NOTIFICATIONS[-1] self.assertEquals(msg['priority'], 'INFO') self.assertEquals(msg['event_type'], 'compute.instance.exists') payload = msg['payload'] self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], instance.uuid) self.assertEquals(payload['instance_type'], 'm1.tiny') type_id = instance_types.get_instance_type_by_name('m1.tiny')['id'] self.assertEquals(str(payload['instance_type_id']), str(type_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload['image_meta'], {}) image_ref_url = "%s/images/1" % utils.generate_glance_url() self.assertEquals(payload['image_ref_url'], image_ref_url)
def notify_usage_exists(self, context, instance, current_period=False, ignore_missing_network_data=True, system_metadata=None, extra_usage_info=None): compute_utils.notify_usage_exists(context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info)
def notify_usage_exists( self, context, instance, current_period=False, ignore_missing_network_data=True, system_metadata=None, extra_usage_info=None, ): compute_utils.notify_usage_exists( context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info )
def notify_usage_exists(self, context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info): if not isinstance(instance, objects.Instance): attrs = ['metadata', 'system_metadata'] instance = objects.Instance._from_db_object(context, objects.Instance(), instance, expected_attrs=attrs) compute_utils.notify_usage_exists(self.notifier, context, instance, current_period, ignore_missing_network_data, system_metadata, extra_usage_info)
def test_notify_usage_exists_deleted_instance(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = instance_obj.Instance.get_by_id( self.context, instance_id, expected_attrs=["metadata", "system_metadata", "info_cache"] ) # Set some system metadata sys_metadata = {"image_md_key1": "val1", "image_md_key2": "val2", "other_data": "meow"} instance.system_metadata.update(sys_metadata) instance.save() self.compute.terminate_instance(self.context, instance, [], []) instance = instance_obj.Instance.get_by_id( self.context.elevated(read_deleted="yes"), instance_id, expected_attrs=["system_metadata"] ) compute_utils.notify_usage_exists(rpc.get_notifier("compute"), self.context, instance) msg = fake_notifier.NOTIFICATIONS[-1] self.assertEqual(msg.priority, "INFO") self.assertEqual(msg.event_type, "compute.instance.exists") payload = msg.payload self.assertEqual(payload["tenant_id"], self.project_id) self.assertEqual(payload["user_id"], self.user_id) self.assertEqual(payload["instance_id"], instance["uuid"]) self.assertEqual(payload["instance_type"], "m1.tiny") type_id = flavors.get_flavor_by_name("m1.tiny")["id"] self.assertEqual(str(payload["instance_type_id"]), str(type_id)) flavor_id = flavors.get_flavor_by_name("m1.tiny")["flavorid"] self.assertEqual(str(payload["instance_flavor_id"]), str(flavor_id)) for attr in ( "display_name", "created_at", "launched_at", "state", "state_description", "bandwidth", "audit_period_beginning", "audit_period_ending", "image_meta", ): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEqual(payload["image_meta"], {"md_key1": "val1", "md_key2": "val2"}) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEqual(payload["image_ref_url"], image_ref_url)
def test_notify_usage_exists(self): # Ensure 'exists' notification generates appropriate usage data. instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) # Set some system metadata sys_metadata = { 'image_md_key1': 'val1', 'image_md_key2': 'val2', 'other_data': 'meow' } db.instance_system_metadata_update(self.context, instance['uuid'], sys_metadata, False) instance = db.instance_get(self.context, instance_id) compute_utils.notify_usage_exists(notify.get_notifier('compute'), self.context, instance) self.assertEquals(len(fake_notifier.NOTIFICATIONS), 1) msg = fake_notifier.NOTIFICATIONS[0] self.assertEquals(msg.priority, 'INFO') self.assertEquals(msg.event_type, 'compute.instance.exists') payload = msg.payload self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], instance['uuid']) self.assertEquals(payload['instance_type'], 'm1.tiny') type_id = flavors.get_flavor_by_name('m1.tiny')['id'] self.assertEquals(str(payload['instance_type_id']), str(type_id)) flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid'] self.assertEquals(str(payload['instance_flavor_id']), str(flavor_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'bandwidth', 'audit_period_beginning', 'audit_period_ending', 'image_meta'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload['image_meta'], { 'md_key1': 'val1', 'md_key2': 'val2' }) image_ref_url = "%s/images/1" % glance.generate_glance_url() self.assertEquals(payload['image_ref_url'], image_ref_url) self.compute.terminate_instance(self.context, jsonutils.to_primitive(instance))
def test_notify_usage_exists(self): """Ensure 'exists' notification generates apropriate usage data.""" instance_id = self._create_instance() instance = db.instance_get(self.context, instance_id) compute_utils.notify_usage_exists(instance) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], 'INFO') self.assertEquals(msg['event_type'], 'compute.instance.exists') payload = msg['payload'] self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], instance_id) self.assertEquals(payload['instance_type'], 'm1.tiny') type_id = instance_types.get_instance_type_by_name('m1.tiny')['id'] self.assertEquals(str(payload['instance_type_id']), str(type_id)) for attr in ('display_name', 'created_at', 'launched_at', 'state', 'state_description', 'fixed_ips', 'bandwidth', 'audit_period_begining', 'audit_period_ending'): self.assertTrue(attr in payload, msg="Key %s not in payload" % attr) self.assertEquals(payload['image_ref'], '1') self.compute.terminate_instance(self.context, instance_id)