)]}'
{"nova/tests/functional/regressions/test_bug_1713783.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7119baffbb8ebdfa933acc19d617f769598a1b3f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                               integrated_helpers.InstanceHelperMixin):"},{"line_number":34,"context_line":"    \"\"\"Regression Tests for bug #1713783"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    When evacuation fails with NoValidHost, the migration status remains"},{"line_number":37,"context_line":"    \u0027accepted\u0027 instead of \u0027error\u0027."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    REQUIRES_LOCKING \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_03a80b75","line":37,"range":{"start_line":36,"start_character":4,"end_line":37,"end_character":34},"updated":"2017-09-01 13:55:09.000000000","message":"This could go into some more detail. The problem with this is when the source compute service starts up again and looks for migrations with status \u0027accepted\u0027, it then removes local instances for those migrations even though the instance never actually migrated to another host.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                               integrated_helpers.InstanceHelperMixin):"},{"line_number":34,"context_line":"    \"\"\"Regression Tests for bug #1713783"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    When evacuation fails with NoValidHost, the migration status remains"},{"line_number":37,"context_line":"    \u0027accepted\u0027 instead of \u0027error\u0027."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    REQUIRES_LOCKING \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_a66ee5c6","line":37,"range":{"start_line":36,"start_character":4,"end_line":37,"end_character":34},"in_reply_to":"7f287b81_03a80b75","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7119baffbb8ebdfa933acc19d617f769598a1b3f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    \u0027accepted\u0027 instead of \u0027error\u0027."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":41,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_a3b017df","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":27},"updated":"2017-09-01 13:55:09.000000000","message":"We shouldn\u0027t need this.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    \u0027accepted\u0027 instead of \u0027error\u0027."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":41,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_a3e8177c","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":27},"in_reply_to":"7f287b81_a3b017df","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"00812311e9f129c83c614c0b82ac670c710cc580","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def setUp(self):"},{"line_number":44,"context_line":"        self.flags(compute_driver\u003d\u0027fake.SmallFakeDriver\u0027)"},{"line_number":45,"context_line":"        super(FailedEvacuateStateTests, self).setUp()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_a3449775","line":44,"updated":"2017-09-01 14:05:27.000000000","message":"That is the default in the fixture so we don\u0027t need to be explicit here.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def setUp(self):"},{"line_number":44,"context_line":"        self.flags(compute_driver\u003d\u0027fake.SmallFakeDriver\u0027)"},{"line_number":45,"context_line":"        super(FailedEvacuateStateTests, self).setUp()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_6668fdb9","line":44,"in_reply_to":"7f287b81_a3449775","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7119baffbb8ebdfa933acc19d617f769598a1b3f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":52,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":55,"context_line":"        self.admin_api.microversion \u003d self.microversion"},{"line_number":56,"context_line":"        self.api \u003d self.admin_api"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        nova.tests.unit.image.fake.stub_out_image_service(self)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_63cfcf57","line":56,"range":{"start_line":54,"start_character":8,"end_line":56,"end_character":33},"updated":"2017-09-01 13:55:09.000000000","message":"Since these are the same, can we just stick with a single self.api which is api_fixture.admin_api?","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("},{"line_number":52,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":55,"context_line":"        self.admin_api.microversion \u003d self.microversion"},{"line_number":56,"context_line":"        self.api \u003d self.admin_api"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        nova.tests.unit.image.fake.stub_out_image_service(self)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_c3c1e3e6","line":56,"range":{"start_line":54,"start_character":8,"end_line":56,"end_character":33},"in_reply_to":"7f287b81_63cfcf57","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7119baffbb8ebdfa933acc19d617f769598a1b3f","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.hostname \u003d \u0027host1\u0027"},{"line_number":66,"context_line":"        self.compute1 \u003d self.start_service(\u0027compute\u0027, host\u003dself.hostname)"},{"line_number":67,"context_line":"        self.addCleanup(fake.restore_nodes)"},{"line_number":68,"context_line":"        fake_network.set_stub_network_methods(self)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        flavors \u003d self.api.get_flavors()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_e304df80","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":43},"updated":"2017-09-01 13:55:09.000000000","message":"Since you aren\u0027t setting different nodes, this is probably unnecessary.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.hostname \u003d \u0027host1\u0027"},{"line_number":66,"context_line":"        self.compute1 \u003d self.start_service(\u0027compute\u0027, host\u003dself.hostname)"},{"line_number":67,"context_line":"        self.addCleanup(fake.restore_nodes)"},{"line_number":68,"context_line":"        fake_network.set_stub_network_methods(self)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        flavors \u003d self.api.get_flavors()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_437293e5","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":43},"in_reply_to":"7f287b81_e304df80","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7119baffbb8ebdfa933acc19d617f769598a1b3f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            self.api, \u0027some-server\u0027, flavor_id\u003dself.flavor1[\u0027id\u0027],"},{"line_number":89,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":90,"context_line":"            networks\u003d\u0027none\u0027)"},{"line_number":91,"context_line":"        server_req[\u0027availability_zone\u0027] \u003d \u0027nova:%s\u0027 % self.hostname"},{"line_number":92,"context_line":"        LOG.info(\u0027booting on %s\u0027, self.hostname)"},{"line_number":93,"context_line":"        created_server \u003d self.api.post_server({\u0027server\u0027: server_req})"},{"line_number":94,"context_line":"        return self._wait_for_state_change("}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_63f8ef7b","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":67},"updated":"2017-09-01 13:55:09.000000000","message":"We shouldn\u0027t need this as we only have a single compute.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            self.api, \u0027some-server\u0027, flavor_id\u003dself.flavor1[\u0027id\u0027],"},{"line_number":89,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":90,"context_line":"            networks\u003d\u0027none\u0027)"},{"line_number":91,"context_line":"        server_req[\u0027availability_zone\u0027] \u003d \u0027nova:%s\u0027 % self.hostname"},{"line_number":92,"context_line":"        LOG.info(\u0027booting on %s\u0027, self.hostname)"},{"line_number":93,"context_line":"        created_server \u003d self.api.post_server({\u0027server\u0027: server_req})"},{"line_number":94,"context_line":"        return self._wait_for_state_change("}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_e34a9f81","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":67},"in_reply_to":"7f287b81_63f8ef7b","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7119baffbb8ebdfa933acc19d617f769598a1b3f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Force source compute down"},{"line_number":102,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":103,"context_line":"            host\u003dself.hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":104,"context_line":"        self.compute1.stop()"},{"line_number":105,"context_line":"        self.admin_api.put_service("},{"line_number":106,"context_line":"            compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_e3297ff2","line":104,"range":{"start_line":104,"start_character":8,"end_line":104,"end_character":28},"updated":"2017-09-01 13:55:09.000000000","message":"I don\u0027t think you need this if you force the service down.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"change_message_id":"64f1b09fca6b351aa582223dc24435cd17cd6a40","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Force source compute down"},{"line_number":102,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":103,"context_line":"            host\u003dself.hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":104,"context_line":"        self.compute1.stop()"},{"line_number":105,"context_line":"        self.admin_api.put_service("},{"line_number":106,"context_line":"            compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_86a889db","line":104,"range":{"start_line":104,"start_character":8,"end_line":104,"end_character":28},"in_reply_to":"7f287b81_e3297ff2","updated":"2017-09-01 14:20:02.000000000","message":"Done","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"00812311e9f129c83c614c0b82ac670c710cc580","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Force source compute down"},{"line_number":102,"context_line":"        compute_id \u003d self.admin_api.get_services("},{"line_number":103,"context_line":"            host\u003dself.hostname, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":104,"context_line":"        self.compute1.stop()"},{"line_number":105,"context_line":"        self.admin_api.put_service("},{"line_number":106,"context_line":"            compute_id, {\u0027forced_down\u0027: \u0027true\u0027})"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_43ff3334","line":104,"range":{"start_line":104,"start_character":8,"end_line":104,"end_character":28},"in_reply_to":"7f287b81_e3297ff2","updated":"2017-09-01 14:05:27.000000000","message":"Technically we don\u0027t need this but semantically force_move should only be called if we made sure that the compute is fenced (e.g. not running). \nBut this is just a regression test so I\u0027m OK to remove it.","commit_id":"90d4a7215df7148b2cc5198404b9733783b3fd28"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c9ee74f173c8ebcebff9022b17076eb36be61e11","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    When evacuation fails with NoValidHost, the migration status remains"},{"line_number":36,"context_line":"    \u0027accepted\u0027 instead of \u0027error\u0027. This causes problem in case the compute"},{"line_number":37,"context_line":"    service starts up again and looks for migrations with status \u0027accepted\u0027,"},{"line_number":38,"context_line":"    as it then removes the local instances for those migrations even though"},{"line_number":39,"context_line":"    the instance never actually migrated to another host."},{"line_number":40,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_26f2f59b","line":37,"range":{"start_line":37,"start_character":42,"end_line":37,"end_character":52},"updated":"2017-09-01 14:29:53.000000000","message":"nit: evacuations","commit_id":"5687c170ea003aafa2720fb00af9d84836bb41df"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c9ee74f173c8ebcebff9022b17076eb36be61e11","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \u0027accepted\u0027 instead of \u0027error\u0027. This causes problem in case the compute"},{"line_number":37,"context_line":"    service starts up again and looks for migrations with status \u0027accepted\u0027,"},{"line_number":38,"context_line":"    as it then removes the local instances for those migrations even though"},{"line_number":39,"context_line":"    the instance never actually migrated to another host."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_66f8fd7b","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":40},"updated":"2017-09-01 14:29:53.000000000","message":"nit: evacuated","commit_id":"5687c170ea003aafa2720fb00af9d84836bb41df"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a95f33bc1906e20dcbddc221251092cd061f57d2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            api_version\u003d\u0027v2.1\u0027))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.api \u003d api_fixture.admin_api"},{"line_number":55,"context_line":"        self.api.microversion \u003d self.microversion"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        nova.tests.unit.image.fake.stub_out_image_service(self)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_d95e76e8","line":55,"range":{"start_line":55,"start_character":32,"end_line":55,"end_character":49},"updated":"2017-09-01 14:46:58.000000000","message":"nit: since we aren\u0027t going to subclass, we could just hardcode this to \u0027latest\u0027 and avoid the class-level variable.","commit_id":"5687c170ea003aafa2720fb00af9d84836bb41df"}]}
