)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2cd70bc88e34f4cbc002989c5825d41ede8b3546","unresolved":false,"context_lines":[{"line_number":5241,"context_line":"        if len(network_info) !\u003d 1:"},{"line_number":5242,"context_line":"            LOG.error(\u0027allocate_port_for_instance returned %(ports)s \u0027"},{"line_number":5243,"context_line":"                      \u0027ports\u0027, {\u0027ports\u0027: len(network_info)})"},{"line_number":5244,"context_line":""},{"line_number":5245,"context_line":"            raise exception.InterfaceAttachFailed("},{"line_number":5246,"context_line":"                    instance_uuid\u003dinstance.uuid)"},{"line_number":5247,"context_line":"        image_meta \u003d objects.ImageMeta.from_instance(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_183ce091","line":5244,"updated":"2017-09-25 09:14:11.000000000","message":"nit: looks like an unnecessary change","commit_id":"ed70e5fbc598c046ebb79f9b922711ea952b96ec"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"f6b37e0c5f20933c0b94a603b99f3100d45780f9","unresolved":false,"context_lines":[{"line_number":5241,"context_line":"        if len(network_info) !\u003d 1:"},{"line_number":5242,"context_line":"            LOG.error(\u0027allocate_port_for_instance returned %(ports)s \u0027"},{"line_number":5243,"context_line":"                      \u0027ports\u0027, {\u0027ports\u0027: len(network_info)})"},{"line_number":5244,"context_line":""},{"line_number":5245,"context_line":"            raise exception.InterfaceAttachFailed("},{"line_number":5246,"context_line":"                    instance_uuid\u003dinstance.uuid)"},{"line_number":5247,"context_line":"        image_meta \u003d objects.ImageMeta.from_instance(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_69ac248c","line":5244,"in_reply_to":"7f515b1d_183ce091","updated":"2017-09-25 11:28:30.000000000","message":"Done","commit_id":"ed70e5fbc598c046ebb79f9b922711ea952b96ec"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"a363ed6409df5a9f7d7995e737ee40b062e0c8bc","unresolved":false,"context_lines":[{"line_number":5241,"context_line":"        if len(network_info) !\u003d 1:"},{"line_number":5242,"context_line":"            LOG.error(\u0027allocate_port_for_instance returned %(ports)s \u0027"},{"line_number":5243,"context_line":"                      \u0027ports\u0027, {\u0027ports\u0027: len(network_info)})"},{"line_number":5244,"context_line":"            # TODO(elod.illes): an instance.interface_attach.error notification"},{"line_number":5245,"context_line":"            # should be sent here"},{"line_number":5246,"context_line":"            raise exception.InterfaceAttachFailed("},{"line_number":5247,"context_line":"                    instance_uuid\u003dinstance.uuid)"},{"line_number":5248,"context_line":"        image_meta \u003d objects.ImageMeta.from_instance(instance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_a4a24199","line":5245,"range":{"start_line":5244,"start_character":12,"end_line":5245,"end_character":33},"updated":"2017-09-25 12:00:23.000000000","message":"We agreed with Gibi offline, that here we should send an error notification, but it should go to a different patch set, because it needs refactor of the notification util.\n(We don\u0027t have here an Exception with trace, which is necessary for the ERROR notification with the current implementation)","commit_id":"f5666fd6d79570f726c253071bc6fd649f1b162d"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2cd70bc88e34f4cbc002989c5825d41ede8b3546","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        self.assertRaises("},{"line_number":1203,"context_line":"            client.OpenStackApiException,"},{"line_number":1204,"context_line":"            self.api.attach_interface, server[\u0027id\u0027], post)"},{"line_number":1205,"context_line":"        self._wait_for_notification(\u0027instance.interface_attach.error\u0027)"},{"line_number":1206,"context_line":"        # 0. instance.interface_attach.start"},{"line_number":1207,"context_line":"        # 1. instance.interface_attach.error"},{"line_number":1208,"context_line":"        # 2. compute.exception"},{"line_number":1209,"context_line":"        self.assertLessEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":1210,"context_line":"        self._verify_notification("},{"line_number":1211,"context_line":"            \u0027instance-interface_attach-start\u0027,"},{"line_number":1212,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_981e900a","line":1209,"range":{"start_line":1205,"start_character":8,"end_line":1209,"end_character":75},"updated":"2017-09-25 09:14:11.000000000","message":"This could be racy. You state that there can be 3 notifications and then only assert 2. If the timing is a bit different the test will see the 3rd exception and this assert will fail. If the compute.exception is the last on in the sequence then please wait for that to make the test stable.","commit_id":"ed70e5fbc598c046ebb79f9b922711ea952b96ec"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"f6b37e0c5f20933c0b94a603b99f3100d45780f9","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        self.assertRaises("},{"line_number":1203,"context_line":"            client.OpenStackApiException,"},{"line_number":1204,"context_line":"            self.api.attach_interface, server[\u0027id\u0027], post)"},{"line_number":1205,"context_line":"        self._wait_for_notification(\u0027instance.interface_attach.error\u0027)"},{"line_number":1206,"context_line":"        # 0. instance.interface_attach.start"},{"line_number":1207,"context_line":"        # 1. instance.interface_attach.error"},{"line_number":1208,"context_line":"        # 2. compute.exception"},{"line_number":1209,"context_line":"        self.assertLessEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":1210,"context_line":"        self._verify_notification("},{"line_number":1211,"context_line":"            \u0027instance-interface_attach-start\u0027,"},{"line_number":1212,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_c912f8b1","line":1209,"range":{"start_line":1205,"start_character":8,"end_line":1209,"end_character":75},"in_reply_to":"7f515b1d_981e900a","updated":"2017-09-25 11:28:30.000000000","message":"This assert tests that at least 2 notification arrived, so it will not fail in case the 3rd exception also arrived.","commit_id":"ed70e5fbc598c046ebb79f9b922711ea952b96ec"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b90dfacfff023b152bc8ad425df69d54aa0c8ce","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        self.assertRaises("},{"line_number":1203,"context_line":"            client.OpenStackApiException,"},{"line_number":1204,"context_line":"            self.api.attach_interface, server[\u0027id\u0027], post)"},{"line_number":1205,"context_line":"        self._wait_for_notification(\u0027instance.interface_attach.error\u0027)"},{"line_number":1206,"context_line":"        # 0. instance.interface_attach.start"},{"line_number":1207,"context_line":"        # 1. instance.interface_attach.error"},{"line_number":1208,"context_line":"        # 2. compute.exception"},{"line_number":1209,"context_line":"        self.assertLessEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":1210,"context_line":"        self._verify_notification("},{"line_number":1211,"context_line":"            \u0027instance-interface_attach-start\u0027,"},{"line_number":1212,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_c40d3d38","line":1209,"range":{"start_line":1205,"start_character":8,"end_line":1209,"end_character":75},"in_reply_to":"7f515b1d_c912f8b1","updated":"2017-09-25 15:29:13.000000000","message":"You are right. My bad. I didn\u0027t noticed that it was not assertEqual but assertLessEqual.","commit_id":"ed70e5fbc598c046ebb79f9b922711ea952b96ec"}]}
