)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"9ea2b53e9c821d6ee24f99dac20906a258d7e41c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Előd Illés \u003celod.illes@ericsson.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-08-22 16:54:58 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cover migration fail case with functional test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Test resource allocation during failed cold migrate."},{"line_number":10,"context_line":"This case works fine."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I69c765f7c9fc20f58f2c50716fc8d8fc60d6f841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7f287b81_842f6ff5","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":21},"updated":"2017-08-22 15:53:56.000000000","message":"Could be a bit more informative. Eg:\n\nFunctional test: cold migrate to compute down\n\nCold migrate to a compute host being down is expected to fail. All resource allocations should stay on the source host after the failed cold migrate.","commit_id":"fe948817eeb1f6b4d53d4a98d61265024428009d"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"f4ad153f96b40daddc31bafa4e3cd2d20082f275","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Előd Illés \u003celod.illes@ericsson.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-08-22 16:54:58 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cover migration fail case with functional test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Test resource allocation during failed cold migrate."},{"line_number":10,"context_line":"This case works fine."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I69c765f7c9fc20f58f2c50716fc8d8fc60d6f841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7f287b81_db7d436f","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":21},"in_reply_to":"7f287b81_842f6ff5","updated":"2017-08-23 09:40:12.000000000","message":"Thanks! Sounds better. Done.","commit_id":"fe948817eeb1f6b4d53d4a98d61265024428009d"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"9ea2b53e9c821d6ee24f99dac20906a258d7e41c","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"        self._delete_and_check_allocations("},{"line_number":1592,"context_line":"            server, source_rp_uuid, dest_rp_uuid)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"    def test_migrate_fail_case(self):"},{"line_number":1595,"context_line":"        source_hostname \u003d self.compute1.host"},{"line_number":1596,"context_line":"        dest_hostname \u003d self.compute2.host"},{"line_number":1597,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_e42073fa","line":1594,"range":{"start_line":1594,"start_character":8,"end_line":1594,"end_character":30},"updated":"2017-08-22 15:53:56.000000000","message":"Could be a bit better named:\n\n def test_migrate_to_compute_down(self):","commit_id":"fe948817eeb1f6b4d53d4a98d61265024428009d"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"f4ad153f96b40daddc31bafa4e3cd2d20082f275","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"        self._delete_and_check_allocations("},{"line_number":1592,"context_line":"            server, source_rp_uuid, dest_rp_uuid)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"    def test_migrate_fail_case(self):"},{"line_number":1595,"context_line":"        source_hostname \u003d self.compute1.host"},{"line_number":1596,"context_line":"        dest_hostname \u003d self.compute2.host"},{"line_number":1597,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_5b915399","line":1594,"range":{"start_line":1594,"start_character":8,"end_line":1594,"end_character":30},"in_reply_to":"7f287b81_e42073fa","updated":"2017-08-23 09:40:12.000000000","message":"Done","commit_id":"fe948817eeb1f6b4d53d4a98d61265024428009d"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"9ea2b53e9c821d6ee24f99dac20906a258d7e41c","unresolved":false,"context_lines":[{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"        # migrate the server"},{"line_number":1611,"context_line":"        post \u003d {\u0027migrate\u0027: None}"},{"line_number":1612,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":1613,"context_line":"                               self.api.post_server_action,"},{"line_number":1614,"context_line":"                               server[\u0027id\u0027], post)"},{"line_number":1615,"context_line":"        expected_response \u003d {"},{"line_number":1616,"context_line":"            \u0027badRequest\u0027: {"},{"line_number":1617,"context_line":"                \u0027code\u0027: 400,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_e476333f","line":1614,"range":{"start_line":1612,"start_character":0,"end_line":1614,"end_character":50},"updated":"2017-08-22 15:53:56.000000000","message":"IMHO the \u0027with\u0027 syntax of assertRaises is a bit more readable. Consider:\n\n with self.assertRaises(client.OpenStackApiException):\n     self.api.post_server_action(server[\u0027id\u0027], post)\n\nBut this is just nitpicking.","commit_id":"fe948817eeb1f6b4d53d4a98d61265024428009d"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"f4ad153f96b40daddc31bafa4e3cd2d20082f275","unresolved":false,"context_lines":[{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"        # migrate the server"},{"line_number":1611,"context_line":"        post \u003d {\u0027migrate\u0027: None}"},{"line_number":1612,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":1613,"context_line":"                               self.api.post_server_action,"},{"line_number":1614,"context_line":"                               server[\u0027id\u0027], post)"},{"line_number":1615,"context_line":"        expected_response \u003d {"},{"line_number":1616,"context_line":"            \u0027badRequest\u0027: {"},{"line_number":1617,"context_line":"                \u0027code\u0027: 400,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_5bbf13fb","line":1614,"range":{"start_line":1612,"start_character":0,"end_line":1614,"end_character":50},"in_reply_to":"7f287b81_e476333f","updated":"2017-08-23 09:40:12.000000000","message":"unfortunately it does not work, because here we use testtools and the with syntax for assertRaises is a feature of unittest only","commit_id":"fe948817eeb1f6b4d53d4a98d61265024428009d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15875d174f5dd167c2b54f245e449151e4980a37","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"        self._delete_and_check_allocations("},{"line_number":1592,"context_line":"            server, source_rp_uuid, dest_rp_uuid)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"    def test_migrate_to_compute_down(self):"},{"line_number":1595,"context_line":"        source_hostname \u003d self.compute1.host"},{"line_number":1596,"context_line":"        dest_hostname \u003d self.compute2.host"},{"line_number":1597,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_ec7fae12","line":1594,"range":{"start_line":1594,"start_character":8,"end_line":1594,"end_character":36},"updated":"2017-08-28 13:37:21.000000000","message":"I would name it to test_migrate_no_valid_host","commit_id":"cb0182fd9dbf7d76f7f7d37df20ac09fc54295a0"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"6f54bacc424215f55001367962a8f704163451b6","unresolved":false,"context_lines":[{"line_number":1591,"context_line":"        self._delete_and_check_allocations("},{"line_number":1592,"context_line":"            server, source_rp_uuid, dest_rp_uuid)"},{"line_number":1593,"context_line":""},{"line_number":1594,"context_line":"    def test_migrate_to_compute_down(self):"},{"line_number":1595,"context_line":"        source_hostname \u003d self.compute1.host"},{"line_number":1596,"context_line":"        dest_hostname \u003d self.compute2.host"},{"line_number":1597,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_dda49ea8","line":1594,"range":{"start_line":1594,"start_character":8,"end_line":1594,"end_character":36},"in_reply_to":"7f287b81_ec7fae12","updated":"2017-08-28 15:06:19.000000000","message":"Done","commit_id":"cb0182fd9dbf7d76f7f7d37df20ac09fc54295a0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15875d174f5dd167c2b54f245e449151e4980a37","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1635,"context_line":"                          \u0027DISK_GB\u0027: 0},"},{"line_number":1636,"context_line":"                         dest_usages)"},{"line_number":1637,"context_line":""},{"line_number":1638,"context_line":"    def test_evacuate(self):"},{"line_number":1639,"context_line":"        source_hostname \u003d self.compute1.host"},{"line_number":1640,"context_line":"        dest_hostname \u003d self.compute2.host"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_ec968e4c","line":1637,"updated":"2017-08-28 13:37:21.000000000","message":"Let\u0027s assert allocation as well:\n       allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])\n        self.assertEqual(1, len(allocations))\n        allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]\n        self.assertFlavorMatchesAllocation(self.flavor1, allocation)\n\nand then let\u0027s delete the server:\n\n        self._delete_and_check_allocations(\n            server, source_rp_uuid, dest_rp_uuid)","commit_id":"cb0182fd9dbf7d76f7f7d37df20ac09fc54295a0"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"6f54bacc424215f55001367962a8f704163451b6","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1635,"context_line":"                          \u0027DISK_GB\u0027: 0},"},{"line_number":1636,"context_line":"                         dest_usages)"},{"line_number":1637,"context_line":""},{"line_number":1638,"context_line":"    def test_evacuate(self):"},{"line_number":1639,"context_line":"        source_hostname \u003d self.compute1.host"},{"line_number":1640,"context_line":"        dest_hostname \u003d self.compute2.host"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_bda1d296","line":1637,"in_reply_to":"7f287b81_ec968e4c","updated":"2017-08-28 15:06:19.000000000","message":"Done","commit_id":"cb0182fd9dbf7d76f7f7d37df20ac09fc54295a0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"585f8e83eb756928865e4fdf29021597d31e1d64","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":1735,"context_line":"                               self.api.post_server_action,"},{"line_number":1736,"context_line":"                               server[\u0027id\u0027], post)"},{"line_number":1737,"context_line":"        expected_response \u003d {"},{"line_number":1738,"context_line":"            \u0027badRequest\u0027: {"},{"line_number":1739,"context_line":"                \u0027code\u0027: 400,"},{"line_number":1740,"context_line":"                \u0027message\u0027: \u0027No valid host was found. \u0027"},{"line_number":1741,"context_line":"                           \u0027No valid host found for cold migrate\u0027"},{"line_number":1742,"context_line":"            }"},{"line_number":1743,"context_line":"        }"},{"line_number":1744,"context_line":"        self.assertJsonEqual(expected_response, ex.response.json())"},{"line_number":1745,"context_line":"        expected_params \u003d {\u0027OS-EXT-SRV-ATTR:host\u0027: source_hostname,"},{"line_number":1746,"context_line":"                           \u0027status\u0027: \u0027ACTIVE\u0027}"},{"line_number":1747,"context_line":"        self._wait_for_server_parameter(self.api, server, expected_params)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f93b717_75c13180","line":1744,"range":{"start_line":1737,"start_character":8,"end_line":1744,"end_character":67},"updated":"2018-01-29 23:45:17.000000000","message":"This is getting a bit specific, we could have just done:\n\nself.assertIn(\u0027No valid host\u0027, six.text_type(ex))","commit_id":"eeba723399f82063f9095428f8556196e9a75f2a"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"5a1902f919ffd66988a411809057f8b540684f5c","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"        ex \u003d self.assertRaises(client.OpenStackApiException,"},{"line_number":1735,"context_line":"                               self.api.post_server_action,"},{"line_number":1736,"context_line":"                               server[\u0027id\u0027], post)"},{"line_number":1737,"context_line":"        expected_response \u003d {"},{"line_number":1738,"context_line":"            \u0027badRequest\u0027: {"},{"line_number":1739,"context_line":"                \u0027code\u0027: 400,"},{"line_number":1740,"context_line":"                \u0027message\u0027: \u0027No valid host was found. \u0027"},{"line_number":1741,"context_line":"                           \u0027No valid host found for cold migrate\u0027"},{"line_number":1742,"context_line":"            }"},{"line_number":1743,"context_line":"        }"},{"line_number":1744,"context_line":"        self.assertJsonEqual(expected_response, ex.response.json())"},{"line_number":1745,"context_line":"        expected_params \u003d {\u0027OS-EXT-SRV-ATTR:host\u0027: source_hostname,"},{"line_number":1746,"context_line":"                           \u0027status\u0027: \u0027ACTIVE\u0027}"},{"line_number":1747,"context_line":"        self._wait_for_server_parameter(self.api, server, expected_params)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f93b717_eb8e8677","line":1744,"range":{"start_line":1737,"start_character":8,"end_line":1744,"end_character":67},"in_reply_to":"5f93b717_75c13180","updated":"2018-01-31 18:04:11.000000000","message":"Done","commit_id":"eeba723399f82063f9095428f8556196e9a75f2a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1870e91c91076bdb5a491e738c184b39f1716d29","unresolved":false,"context_lines":[{"line_number":1760,"context_line":"        allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":1761,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, allocation)"},{"line_number":1762,"context_line":""},{"line_number":1763,"context_line":"        self._delete_and_check_allocations("},{"line_number":1764,"context_line":"            server, source_rp_uuid, dest_rp_uuid)"},{"line_number":1765,"context_line":""},{"line_number":1766,"context_line":"    def test_evacuate(self):"},{"line_number":1767,"context_line":"        source_hostname \u003d self.compute1.host"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f93b717_1a80f0be","line":1764,"range":{"start_line":1763,"start_character":0,"end_line":1764,"end_character":49},"updated":"2018-01-31 08:32:43.000000000","message":"This needs to be changed as the signature of the function changed during the rebase. Just pass a single \u0027server\u0027 attribute to make the functional test pass.","commit_id":"eeba723399f82063f9095428f8556196e9a75f2a"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"5a1902f919ffd66988a411809057f8b540684f5c","unresolved":false,"context_lines":[{"line_number":1760,"context_line":"        allocation \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":1761,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, allocation)"},{"line_number":1762,"context_line":""},{"line_number":1763,"context_line":"        self._delete_and_check_allocations("},{"line_number":1764,"context_line":"            server, source_rp_uuid, dest_rp_uuid)"},{"line_number":1765,"context_line":""},{"line_number":1766,"context_line":"    def test_evacuate(self):"},{"line_number":1767,"context_line":"        source_hostname \u003d self.compute1.host"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f93b717_0b8c127d","line":1764,"range":{"start_line":1763,"start_character":0,"end_line":1764,"end_character":49},"in_reply_to":"5f93b717_1a80f0be","updated":"2018-01-31 18:04:11.000000000","message":"Done","commit_id":"eeba723399f82063f9095428f8556196e9a75f2a"}]}
