)]}'
{"tempest/api/compute/admin/test_servers.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"33c4e5e45972945feb2f2812502025a121262018","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                                               wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":203,"context_line":"        self.assertEqual(\u0027202\u0027, resp[\u0027status\u0027])"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":206,"context_line":"        response_body \u003d self.admin_hosts_client.list_hosts()"},{"line_number":207,"context_line":"        return ["},{"line_number":208,"context_line":"            host_record[\u0027host_name\u0027] for host_record in response_body"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_f2ee35b4","line":205,"updated":"2015-02-11 17:20:33.000000000","message":"Copy/pasted from ./test_live_block_migration.py.\n\nPlease don\u0027t duplicate code.","commit_id":"373dc9e4999b1ba38b4eee92cb74f2b693094867"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"33c4e5e45972945feb2f2812502025a121262018","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        resp, _ \u003d self.client.migrate_server(server_id)"},{"line_number":224,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":225,"context_line":"        self.client.wait_for_server_status(server_id, \u0027VERIFY_RESIZE\u0027)"},{"line_number":226,"context_line":"        # confirm-resize server"},{"line_number":227,"context_line":"        self.client.confirm_resize(server_id)"},{"line_number":228,"context_line":"        self.client.wait_for_server_status(server_id, \u0027ACTIVE\u0027)"},{"line_number":229,"context_line":"        resp, body \u003d self.client.list_migrations()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_7296c53f","line":226,"updated":"2015-02-11 17:20:33.000000000","message":"This seems already tested in servers/test_server_actions.py and/or admin/test_migrations.py","commit_id":"373dc9e4999b1ba38b4eee92cb74f2b693094867"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"72ca4ae5520acb85a7d9a2e4e4ad3e4e07644946","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                                               wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":204,"context_line":"        self.assertEqual(\u0027202\u0027, resp[\u0027status\u0027])"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _get_compute_hostnames(self):"},{"line_number":207,"context_line":"        response_body \u003d self.admin_hosts_client.list_hosts()"},{"line_number":208,"context_line":"        return ["},{"line_number":209,"context_line":"            host_record[\u0027host_name\u0027] for host_record in response_body"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_2dc86c21","line":206,"updated":"2015-02-11 17:42:41.000000000","message":"Copy/pasted from ./test_live_block_migration.py.\n\nPlease don\u0027t duplicate code.","commit_id":"8b6d0bfe81a3f69c92d2dda9f578adf155f85990"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"72ca4ae5520acb85a7d9a2e4e4ad3e4e07644946","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        resp, _ \u003d self.client.migrate_server(server_id)"},{"line_number":225,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":226,"context_line":"        self.client.wait_for_server_status(server_id, \u0027VERIFY_RESIZE\u0027)"},{"line_number":227,"context_line":"        # confirm-resize server"},{"line_number":228,"context_line":"        self.client.confirm_resize(server_id)"},{"line_number":229,"context_line":"        self.client.wait_for_server_status(server_id, \u0027ACTIVE\u0027)"},{"line_number":230,"context_line":"        resp, body \u003d self.migrations_client.list_migrations()"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_6dcee42e","line":227,"updated":"2015-02-11 17:42:41.000000000","message":"This seems already tested in servers/test_server_actions.py and/or admin/test_migrations.py","commit_id":"8b6d0bfe81a3f69c92d2dda9f578adf155f85990"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1077b26ad3566137d8660169e2ebbf6ce132f8f6","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":220,"context_line":"        self.client.wait_for_server_status(server_id, \u0027VERIFY_RESIZE\u0027)"},{"line_number":221,"context_line":"        # check list migrations"},{"line_number":222,"context_line":"        resp, body \u003d self.migrations_client.list_migrations()"},{"line_number":223,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":224,"context_line":"        instance_uuids \u003d [body_element[\u0027instance_uuid\u0027]"},{"line_number":225,"context_line":"                          for body_element in body]"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_1ea494b8","line":222,"updated":"2015-02-12 10:18:27.000000000","message":"Are you sure you are not duplicating a test here ?\n\nCould you have a look at \"test_list_migrations_in_flavor_resize_situation\" (especially the 4 last lines of the test test_list_migrations_in_flavor_resize_situation). \n\nThanks","commit_id":"61a20c749add8a121c03ff80a198c65a16a707ff"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3425b09e3ef216b51a1757c3936f6dd7468c7870","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        # migrate server"},{"line_number":214,"context_line":"        resp, _ \u003d self.client.migrate_server(self.s1_id)"},{"line_number":215,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":216,"context_line":"        self.client.wait_for_server_status(self.s1_id, \u0027VERIFY_RESIZE\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_d2bb9a0d","line":216,"updated":"2015-02-13 09:52:26.000000000","message":"can we also confirm the migration here and wait for server status to become ACTIVE?","commit_id":"e01253f82705a9292d94eb6cc84cf79f7e5ee468"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"fd88e403e8635c44affae39b0dc21e104eb529d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"da86d52c_55bb78c3","line":216,"updated":"2015-02-18 12:21:48.000000000","message":"The complete sequence requires a confirm_resize and waiting for active status.","commit_id":"3c0bdea27321c6967a7be51b2af33faf56da5cac"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"81ec7dee0886a34adc16de9dea5638ad36bd0d67","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                                wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":210,"context_line":"    @test.idempotent_id(\u002700000000-1111-2222-3333-444444444444\u0027)"},{"line_number":211,"context_line":"    def test_migrate_server(self):"},{"line_number":212,"context_line":"        # Migrate an instance to another host"},{"line_number":213,"context_line":"        skip_msg \u003d (\u0027Less than 2 compute nodes and \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6ced46_c9db474d","line":210,"updated":"2015-03-26 10:48:35.000000000","message":"I\u0027m not an expert here, but this is an \u0027artificial\u0027 uuid, while other test cases use randomly generated ones. I\u0027m not sure if we want to make this particular test any special.","commit_id":"dc51729a10a736f35a1110db3a847191c4a0c904"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"1221039a3d0c826c2a680bbeef1cbbbf9ab40b1c","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                    \u0027skipping migration test.\u0027)"},{"line_number":220,"context_line":"        try:"},{"line_number":221,"context_line":"            response_body \u003d self.client.migrate_server(self.s1_id)"},{"line_number":222,"context_line":"        except exceptions.BadRequest as ex:"},{"line_number":223,"context_line":"            if (\u0027No valid host was found. \u0027"},{"line_number":224,"context_line":"                    \u0027No valid host found for cold migrate\u0027) in str(ex):"},{"line_number":225,"context_line":"                raise self.skipTest(skip_msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aaa499b_a55e7d43","line":222,"updated":"2015-04-10 20:45:30.000000000","message":"I really don\u0027t like skipping based on the content of error messages. Seems better to have a compute feature that says whether migrate server is supported and default it to true since the only time it would be false is if there was a single node system that did not allow migration so same node.","commit_id":"2e9fef34981cfeda79f757098856f14deb8b8203"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"a92d5b0517cfee8247d75a2422ba5f5db0e2a5c8","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                    \u0027skipping migration test.\u0027)"},{"line_number":220,"context_line":"        try:"},{"line_number":221,"context_line":"            response_body \u003d self.client.migrate_server(self.s1_id)"},{"line_number":222,"context_line":"        except exceptions.BadRequest as ex:"},{"line_number":223,"context_line":"            if (\u0027No valid host was found. \u0027"},{"line_number":224,"context_line":"                    \u0027No valid host found for cold migrate\u0027) in str(ex):"},{"line_number":225,"context_line":"                raise self.skipTest(skip_msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aaa499b_9dab9c1d","line":222,"in_reply_to":"7aaa499b_a55e7d43","updated":"2015-04-14 08:39:16.000000000","message":"I agree that it is nice to have ability to check if migration is supported for existing clouds.\nBut even if we merge such feature right now Jenkins would fail because it would run this test on previous releases (juno, icehouse).\nUnfortunately I can\u0027t see the way to make Jenkins happy without comparing error message.","commit_id":"2e9fef34981cfeda79f757098856f14deb8b8203"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"1221039a3d0c826c2a680bbeef1cbbbf9ab40b1c","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                raise self.skipTest(skip_msg)"},{"line_number":226,"context_line":"            else:"},{"line_number":227,"context_line":"                raise ex"},{"line_number":228,"context_line":"        self.assertEqual(202, int(response_body.response[\u0027status\u0027]))"},{"line_number":229,"context_line":"        server \u003d self.client.get_server(self.s1_id)"},{"line_number":230,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":231,"context_line":"            # Because of bug #1297052 migration can silently fail"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aaa499b_05365103","line":228,"updated":"2015-04-10 20:45:30.000000000","message":"This check is not necessary as it is already done by the client call.","commit_id":"2e9fef34981cfeda79f757098856f14deb8b8203"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"a92d5b0517cfee8247d75a2422ba5f5db0e2a5c8","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                raise self.skipTest(skip_msg)"},{"line_number":226,"context_line":"            else:"},{"line_number":227,"context_line":"                raise ex"},{"line_number":228,"context_line":"        self.assertEqual(202, int(response_body.response[\u0027status\u0027]))"},{"line_number":229,"context_line":"        server \u003d self.client.get_server(self.s1_id)"},{"line_number":230,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":231,"context_line":"            # Because of bug #1297052 migration can silently fail"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aaa499b_967819f4","line":228,"in_reply_to":"7aaa499b_05365103","updated":"2015-04-14 08:39:16.000000000","message":"Done","commit_id":"2e9fef34981cfeda79f757098856f14deb8b8203"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"7a23fd7e80ba0e9f25c710b00152ebb6e27688be","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                    \u0027No valid host found for cold migrate\u0027) in str(ex):"},{"line_number":224,"context_line":"                raise self.skipTest(skip_msg)"},{"line_number":225,"context_line":"            else:"},{"line_number":226,"context_line":"                raise ex"},{"line_number":227,"context_line":"        server \u003d self.client.get_server(self.s1_id)"},{"line_number":228,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":229,"context_line":"            # Because of bug #1297052 migration can silently fail"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aaa499b_61dc9712","line":226,"updated":"2015-04-14 14:26:06.000000000","message":"Just use \u0027raise\u0027 here. This way you get the full backtrace.","commit_id":"e867f83f8b3709f0c464c6ab09b7e721a96139d7"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"1a09c89f0ff01f7a5f5ec39a3b053d7726a7799e","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                    \u0027No valid host found for cold migrate\u0027) in str(ex):"},{"line_number":224,"context_line":"                raise self.skipTest(skip_msg)"},{"line_number":225,"context_line":"            else:"},{"line_number":226,"context_line":"                raise ex"},{"line_number":227,"context_line":"        server \u003d self.client.get_server(self.s1_id)"},{"line_number":228,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":229,"context_line":"            # Because of bug #1297052 migration can silently fail"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aca2d91_fd519b63","line":226,"in_reply_to":"7aaa499b_61dc9712","updated":"2015-05-06 16:43:04.000000000","message":"Done","commit_id":"e867f83f8b3709f0c464c6ab09b7e721a96139d7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"7a23fd7e80ba0e9f25c710b00152ebb6e27688be","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":229,"context_line":"            # Because of bug #1297052 migration can silently fail"},{"line_number":230,"context_line":"            # with changing status to `ACTIVE` on icehouse"},{"line_number":231,"context_line":"            raise self.skipTest(skip_msg)"},{"line_number":232,"context_line":"        self.client.wait_for_server_status(self.s1_id, \u0027VERIFY_RESIZE\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aaa499b_41ee3bb5","line":231,"updated":"2015-04-14 14:26:06.000000000","message":"The skip message is wrong here. If you work around a bug in Icehouse, you should say so.","commit_id":"e867f83f8b3709f0c464c6ab09b7e721a96139d7"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"1a09c89f0ff01f7a5f5ec39a3b053d7726a7799e","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":229,"context_line":"            # Because of bug #1297052 migration can silently fail"},{"line_number":230,"context_line":"            # with changing status to `ACTIVE` on icehouse"},{"line_number":231,"context_line":"            raise self.skipTest(skip_msg)"},{"line_number":232,"context_line":"        self.client.wait_for_server_status(self.s1_id, \u0027VERIFY_RESIZE\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aca2d91_dd4edfc0","line":231,"in_reply_to":"7aaa499b_41ee3bb5","updated":"2015-05-06 16:43:04.000000000","message":"Done","commit_id":"e867f83f8b3709f0c464c6ab09b7e721a96139d7"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"0af81f9aa55babea649f8541d66edc1ef7b09c8e","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                raise"},{"line_number":240,"context_line":"        server \u003d self.client.get_server(server_id)"},{"line_number":241,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":242,"context_line":"            # Because of bug #1297052 migration can silently fail"},{"line_number":243,"context_line":"            # with changing status to `ACTIVE` on icehouse"},{"line_number":244,"context_line":"            raise self.skipTest(skip_icehouse_msg)"},{"line_number":245,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":27,"id":"5afe65bd_120e9134","line":242,"updated":"2015-06-02 13:35:44.000000000","message":"Please continue on backporting the fix.\nWee should not audotect buggy icehouse and skip the test at run time. (-2)","commit_id":"a6d6387e7a7a51d132ef41182d93827cd2cb1320"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"0c478d8e03de6eeec719c8866f129f186ae687ad","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                raise"},{"line_number":240,"context_line":"        server \u003d self.client.get_server(server_id)"},{"line_number":241,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":242,"context_line":"            # Because of bug #1297052 migration can silently fail"},{"line_number":243,"context_line":"            # with changing status to `ACTIVE` on icehouse"},{"line_number":244,"context_line":"            raise self.skipTest(skip_icehouse_msg)"},{"line_number":245,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":27,"id":"1af86dd1_952282b8","line":242,"in_reply_to":"5afe65bd_120e9134","updated":"2015-06-12 08:31:18.000000000","message":"Hi afazekas, there is backport review: https://review.openstack.org/#/c/159240/ . But community doesn\u0027t want this fix in icehouse because this issue is not critical...","commit_id":"a6d6387e7a7a51d132ef41182d93827cd2cb1320"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6059a18bf11b86873f4d7e918ec9231b516a2a45","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                raise self.skipTest(skip_no_valid_host_msg)"},{"line_number":228,"context_line":"            else:"},{"line_number":229,"context_line":"                raise"},{"line_number":230,"context_line":"        server \u003d self.client.get_server(server_id)"},{"line_number":231,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":232,"context_line":"            # Because of bug #1297052 migration can silently fail"},{"line_number":233,"context_line":"            # with changing status to `ACTIVE` on icehouse"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a41bdd9_31d265d3","line":230,"updated":"2015-07-14 12:04:28.000000000","message":"get_server -\u003e show_server","commit_id":"ed09de10d8ad6565e4230d07233325e298bfa6bc"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"02cfa31b5afe617606143a0e9c2630c39147a52f","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                raise self.skipTest(skip_no_valid_host_msg)"},{"line_number":228,"context_line":"            else:"},{"line_number":229,"context_line":"                raise"},{"line_number":230,"context_line":"        server \u003d self.client.get_server(server_id)"},{"line_number":231,"context_line":"        if server[\u0027status\u0027] \u003d\u003d \u0027ACTIVE\u0027:"},{"line_number":232,"context_line":"            # Because of bug #1297052 migration can silently fail"},{"line_number":233,"context_line":"            # with changing status to `ACTIVE` on icehouse"}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_4f255d5a","line":230,"in_reply_to":"9a41bdd9_31d265d3","updated":"2015-07-24 14:13:46.000000000","message":"Done","commit_id":"ed09de10d8ad6565e4230d07233325e298bfa6bc"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6059a18bf11b86873f4d7e918ec9231b516a2a45","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            # with changing status to `ACTIVE` on icehouse"},{"line_number":234,"context_line":"            raise self.skipTest(skip_icehouse_msg)"},{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            self.client.wait_for_server_status(server_id, \u0027VERIFY_RESIZE\u0027)"},{"line_number":237,"context_line":"        except exceptions.BuildErrorException as ex:"},{"line_number":238,"context_line":"            if (no_valid_host_err in str(ex) or"},{"line_number":239,"context_line":"                    re.search(unable_to_migrate_pattern, str(ex))):"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a41bdd9_649cadc0","line":236,"updated":"2015-07-14 12:04:28.000000000","message":"Please, take a look at Ken\u0027ichi\u0027s patch https://review.openstack.org/#/c/200986/ . The wait_for_server_status method will be deleted from client.","commit_id":"ed09de10d8ad6565e4230d07233325e298bfa6bc"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"02cfa31b5afe617606143a0e9c2630c39147a52f","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            # with changing status to `ACTIVE` on icehouse"},{"line_number":234,"context_line":"            raise self.skipTest(skip_icehouse_msg)"},{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            self.client.wait_for_server_status(server_id, \u0027VERIFY_RESIZE\u0027)"},{"line_number":237,"context_line":"        except exceptions.BuildErrorException as ex:"},{"line_number":238,"context_line":"            if (no_valid_host_err in str(ex) or"},{"line_number":239,"context_line":"                    re.search(unable_to_migrate_pattern, str(ex))):"}],"source_content_type":"text/x-python","patch_set":28,"id":"3a50d1a3_eac9b45b","line":236,"in_reply_to":"9a41bdd9_649cadc0","updated":"2015-07-24 14:13:46.000000000","message":"Done","commit_id":"ed09de10d8ad6565e4230d07233325e298bfa6bc"}]}
