)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"98cf7edc78cf300d0e77008cd2da13e76c9a9c38","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When rebuilding and changing the image, we run the new image"},{"line_number":10,"context_line":"through the scheduler to see if it\u0027s valid for the instance"},{"line_number":11,"context_line":"on it\u0027s current compute host. The API saves off the new image"},{"line_number":12,"context_line":"ref on the instance before casting to conductor to run through"},{"line_number":13,"context_line":"the scheduler. If the scheduler fails, the instance.image_ref was"},{"line_number":14,"context_line":"not being rolled back, which meant a user could attempt the rebuild"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f93b717_9693b0a3","line":11,"range":{"start_line":11,"start_character":3,"end_line":11,"end_character":7},"updated":"2018-01-29 16:40:36.000000000","message":"nit: its","commit_id":"b2cb7beeac23ec430abb44bb971408cc53e836e2"}],"nova/conductor/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60efcc2c01a422d5120f38e72f8d334dec5e8d9d","unresolved":false,"context_lines":[{"line_number":949,"context_line":"                    selection \u003d host_list[0]"},{"line_number":950,"context_line":"                    host, node, limits \u003d (selection.service_host,"},{"line_number":951,"context_line":"                            selection.nodename, selection.limits)"},{"line_number":952,"context_line":"                except (exception.NoValidHost,"},{"line_number":953,"context_line":"                        exception.UnsupportedPolicyException) as ex:"},{"line_number":954,"context_line":"                    if migration:"},{"line_number":955,"context_line":"                        migration.status \u003d \u0027error\u0027"},{"line_number":956,"context_line":"                        migration.save()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_739871bf","line":953,"range":{"start_line":952,"start_character":16,"end_line":953,"end_character":68},"updated":"2018-01-29 18:59:10.000000000","message":"Oops I didn\u0027t realize that I had included this in this change, I meant to make it a refactor on top. Oh well.","commit_id":"5d0157c2227f3a2aaf9427f7cd4ca8e170c122da"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"798fbf623fa8c1e65607ec333c27df2a082e905a","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            self.api_fixture.admin_api)"},{"line_number":1214,"context_line":"        # Assert the server image_ref was rolled back on failure."},{"line_number":1215,"context_line":"        server \u003d self.api.get_server(server[\u0027id\u0027])"},{"line_number":1216,"context_line":"        self.assertEqual(\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":1217,"context_line":"                         server[\u0027image\u0027][\u0027id\u0027])"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"        # The server should be in ERROR state"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_dbb5e1ce","line":1216,"range":{"start_line":1216,"start_character":25,"end_line":1216,"end_character":63},"updated":"2018-01-29 16:15:58.000000000","message":"would be super to use a uuidsentinel or at the very least a constant here instead of a seemingly random UUID (I know it\u0027s not random because the same UUID is hard-coded on line 1171, but still...)","commit_id":"5b593e3ac967cc0b48e87a7c62aea2220fa27e1b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"98cf7edc78cf300d0e77008cd2da13e76c9a9c38","unresolved":false,"context_lines":[{"line_number":1168,"context_line":"            \u0027server\u0027: {"},{"line_number":1169,"context_line":"                # We hard-code from a fake image since we can\u0027t get images"},{"line_number":1170,"context_line":"                # via the compute /images proxy API with microversion \u003e 2.35."},{"line_number":1171,"context_line":"                \u0027imageRef\u0027: \u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":1172,"context_line":"                \u0027flavorRef\u0027: \u00271\u0027,   # m1.tiny from DefaultFlavorsFixture,"},{"line_number":1173,"context_line":"                \u0027name\u0027: \u0027test_rebuild_with_image_novalidhost\u0027,"},{"line_number":1174,"context_line":"                # We don\u0027t care about networking for this test. This requires"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_d62b782d","line":1171,"range":{"start_line":1171,"start_character":29,"end_line":1171,"end_character":65},"updated":"2018-01-29 16:40:36.000000000","message":"As Jay said, sentinel here would be nice.","commit_id":"b2cb7beeac23ec430abb44bb971408cc53e836e2"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"98cf7edc78cf300d0e77008cd2da13e76c9a9c38","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            self.api_fixture.admin_api)"},{"line_number":1214,"context_line":"        # Assert the server image_ref was rolled back on failure."},{"line_number":1215,"context_line":"        server \u003d self.api.get_server(server[\u0027id\u0027])"},{"line_number":1216,"context_line":"        self.assertEqual(\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":1217,"context_line":"                         server[\u0027image\u0027][\u0027id\u0027])"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"        # The server should be in ERROR state"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_961df010","line":1216,"range":{"start_line":1216,"start_character":26,"end_line":1216,"end_character":62},"updated":"2018-01-29 16:40:36.000000000","message":"And same sentinel here.","commit_id":"b2cb7beeac23ec430abb44bb971408cc53e836e2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"075da4cb3386744116c18737f6a3c2d05a574984","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            self.api_fixture.admin_api)"},{"line_number":1214,"context_line":"        # Assert the server image_ref was rolled back on failure."},{"line_number":1215,"context_line":"        server \u003d self.api.get_server(server[\u0027id\u0027])"},{"line_number":1216,"context_line":"        self.assertEqual(\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":1217,"context_line":"                         server[\u0027image\u0027][\u0027id\u0027])"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"        # The server should be in ERROR state"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_7622a454","line":1216,"range":{"start_line":1216,"start_character":25,"end_line":1216,"end_character":63},"updated":"2018-01-29 16:39:06.000000000","message":"I\u0027d still love to see a constant used and not a hard-coded UUID like this...","commit_id":"b2cb7beeac23ec430abb44bb971408cc53e836e2"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"98cf7edc78cf300d0e77008cd2da13e76c9a9c38","unresolved":false,"context_lines":[{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"        # Rebuild it again with the same bad image to make sure it\u0027s rejected"},{"line_number":1224,"context_line":"        # again."},{"line_number":1225,"context_line":"        ex \u003d self.assertRaises("},{"line_number":1226,"context_line":"            client.OpenStackApiException, self.api.api_post,"},{"line_number":1227,"context_line":"            \u0027/servers/%s/action\u0027 % server[\u0027id\u0027], rebuild_req_body)"},{"line_number":1228,"context_line":"        self.assertIn(\u0027NoValidHost\u0027, six.text_type(ex))"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_16c00050","line":1225,"updated":"2018-01-29 16:40:36.000000000","message":"Will it actually raise though? The request will go through with a 202, but the instance will remain in ERROR. Shouldn\u0027t we do something like on L1209?","commit_id":"b2cb7beeac23ec430abb44bb971408cc53e836e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"42918888efd0d07de4186dba2f687adfdf0f04a3","unresolved":false,"context_lines":[{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"        # Rebuild it again with the same bad image to make sure it\u0027s rejected"},{"line_number":1224,"context_line":"        # again."},{"line_number":1225,"context_line":"        ex \u003d self.assertRaises("},{"line_number":1226,"context_line":"            client.OpenStackApiException, self.api.api_post,"},{"line_number":1227,"context_line":"            \u0027/servers/%s/action\u0027 % server[\u0027id\u0027], rebuild_req_body)"},{"line_number":1228,"context_line":"        self.assertIn(\u0027NoValidHost\u0027, six.text_type(ex))"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_76d144fb","line":1225,"in_reply_to":"5f93b717_16c00050","updated":"2018-01-29 16:45:59.000000000","message":"We use CastAsCall so the error comes back, there is no 202.","commit_id":"b2cb7beeac23ec430abb44bb971408cc53e836e2"}]}
