)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02b1f909e6250fc2e44999e06128b6b28c26236a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"appear at the end of tests and services are started during each test"},{"line_number":19,"context_line":"setUp() and killed during each test tearDown() via the ServiceFixture."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1850735"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I74f64b68e4b33ee0f8c45fdc5f570c7e12e05d3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_f996d4ef","line":21,"updated":"2019-11-08 15:07:49.000000000","message":"This is a duplicate of bug 1783565.","commit_id":"eaa9d84c137914adc2c701e751d55687fcbe8c36"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1c8857e06947eb8327818f4c8f2d60d9d1265dc0","unresolved":false,"context_lines":[{"line_number":18,"context_line":"appear at the end of tests and services are started during each test"},{"line_number":19,"context_line":"setUp() and killed during each test tearDown() via the ServiceFixture."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1850735"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I74f64b68e4b33ee0f8c45fdc5f570c7e12e05d3b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_7970a4db","line":21,"in_reply_to":"3fa7e38b_f996d4ef","updated":"2019-11-08 15:14:42.000000000","message":"Done","commit_id":"eaa9d84c137914adc2c701e751d55687fcbe8c36"}],"nova/tests/functional/test_server_group.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1eccae721064c2f6ed03e3af6cd144c1c8fb8ce1","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    @staticmethod"},{"line_number":404,"context_line":"    def _set_forced_down(service, forced_down):"},{"line_number":405,"context_line":"        service.service_ref.forced_down \u003d forced_down"},{"line_number":406,"context_line":"        service.service_ref.save()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def test_evacuate_with_anti_affinity(self):"},{"line_number":409,"context_line":"        created_group \u003d self.api.post_server_groups(self.anti_affinity)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_46776ba1","line":406,"updated":"2019-10-31 08:46:43.000000000","message":"In functional test I suggest to use the REST API instead. I proposed a followup with this change. Feel free to squash that into your patch.","commit_id":"ebe5527676f0cc86e032f14423cf3797e3026395"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2e137810752751e92cfc642ce80e59ef7f1833ab","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    @staticmethod"},{"line_number":404,"context_line":"    def _set_forced_down(service, forced_down):"},{"line_number":405,"context_line":"        service.service_ref.forced_down \u003d forced_down"},{"line_number":406,"context_line":"        service.service_ref.save()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def test_evacuate_with_anti_affinity(self):"},{"line_number":409,"context_line":"        created_group \u003d self.api.post_server_groups(self.anti_affinity)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8ef495d0","line":406,"in_reply_to":"3fa7e38b_46776ba1","updated":"2019-10-31 16:18:32.000000000","message":"Oh, I looked at gibi\u0027s patch first. Yeah, we should use the existing self.put_service_force_down helper instead of rolling a new one here.","commit_id":"ebe5527676f0cc86e032f14423cf3797e3026395"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1eacbefd4e5830105c8404593fe4f7d524346e3c","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    @staticmethod"},{"line_number":404,"context_line":"    def _set_forced_down(service, forced_down):"},{"line_number":405,"context_line":"        service.service_ref.forced_down \u003d forced_down"},{"line_number":406,"context_line":"        service.service_ref.save()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def test_evacuate_with_anti_affinity(self):"},{"line_number":409,"context_line":"        created_group \u003d self.api.post_server_groups(self.anti_affinity)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f1be4863","line":406,"in_reply_to":"3fa7e38b_8ef495d0","updated":"2019-10-31 18:07:21.000000000","message":"I did this based on this example which merged recently:\n\nhttps://github.com/openstack/nova/blob/7fb4e3001a8bca82fc5da1dd2cf5d1f6f3ef2e8e/nova/tests/functional/compute/test_cache_image.py#L46\n\nBut I can use the existing force_down_service helper (I didn\u0027t know about it before now).","commit_id":"ebe5527676f0cc86e032f14423cf3797e3026395"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"117a4203eb76fa4d92c0dddc8336ab0288e15769","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        self.assertNotEqual(evacuated_server[\u0027OS-EXT-SRV-ATTR:host\u0027],"},{"line_number":616,"context_line":"                            servers[0][\u0027OS-EXT-SRV-ATTR:host\u0027])"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        compute3.kill()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def test_evacuate_with_anti_affinity_no_valid_host(self):"},{"line_number":621,"context_line":"        created_group \u003d self.api.post_server_groups(self.anti_affinity)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d2c3b505","line":618,"updated":"2019-11-08 06:13:37.000000000","message":"I think we can delete this .kill() as well","commit_id":"eaa9d84c137914adc2c701e751d55687fcbe8c36"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cc77b77771342b79ef5d9976e71b7e6143ce4ac4","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        self.assertNotEqual(evacuated_server[\u0027OS-EXT-SRV-ATTR:host\u0027],"},{"line_number":616,"context_line":"                            servers[0][\u0027OS-EXT-SRV-ATTR:host\u0027])"},{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        compute3.kill()"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def test_evacuate_with_anti_affinity_no_valid_host(self):"},{"line_number":621,"context_line":"        created_group \u003d self.api.post_server_groups(self.anti_affinity)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_72abe11d","line":618,"in_reply_to":"3fa7e38b_d2c3b505","updated":"2019-11-08 06:21:42.000000000","message":"I wanted to but was worried someone would say it\u0027s not related to the change :) I was overthinking it.","commit_id":"eaa9d84c137914adc2c701e751d55687fcbe8c36"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7a1506fee0fe265427308b2c3a169bccc9d33661","unresolved":false,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def _set_forced_down(self, service, forced_down):"},{"line_number":404,"context_line":"        # Use microversion 2.53 for PUT /os-services/{service_id} force down."},{"line_number":405,"context_line":"        with utils.temporary_mutation(self.admin_api, microversion\u003d\u00272.53\u0027):"},{"line_number":406,"context_line":"            self.admin_api.put_service_force_down(service.service_ref.uuid,"},{"line_number":407,"context_line":"                                                  forced_down)"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_3928ec95","line":405,"updated":"2019-11-08 15:21:34.000000000","message":"Obviously this is a cheat since forced_down isn\u0027t available until 2.11 and some of the tests using this are running 2.1, and that\u0027s likely why they were originally written to rely on the sleep timer stuff, but I\u0027m OK with doing this because how the service group API timer works is not the point of the test. This is just the means to the end and it\u0027s the safer way to do it in tests.","commit_id":"1c93ca82b8fb8e39787020decfe335d45f8732e7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f56cf0be9c5b049702e277a7edbc4f313ebecc2d","unresolved":false,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def _set_forced_down(self, service, forced_down):"},{"line_number":404,"context_line":"        # Use microversion 2.53 for PUT /os-services/{service_id} force down."},{"line_number":405,"context_line":"        with utils.temporary_mutation(self.admin_api, microversion\u003d\u00272.53\u0027):"},{"line_number":406,"context_line":"            self.admin_api.put_service_force_down(service.service_ref.uuid,"},{"line_number":407,"context_line":"                                                  forced_down)"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_54380dd3","line":405,"in_reply_to":"3fa7e38b_3928ec95","updated":"2019-11-08 15:28:25.000000000","message":"Indeed. I did try first to compare self.admin_api.microversion and do the API accordingly (PUT /os-services/force-down or PUT /os-services/{service_id}), but then ran into the 2.1 tests and no forced_down altogether, and arrived at the same conclusion.","commit_id":"1c93ca82b8fb8e39787020decfe335d45f8732e7"}]}
