)]}'
{"cinder/tests/unit/api/v3/test_volume_protection.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f319cbb62ff7f189497115b1691e86ab4f8c4dab","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                                              body\u003dbody)"},{"line_number":459,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def test_admin_can_begin_roll_attaching(self):"},{"line_number":462,"context_line":"        # Make sure administrators are authorized to begin/roll_attaching"},{"line_number":463,"context_line":"        # volume"},{"line_number":464,"context_line":"        admin_context \u003d self.admin_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3815964c","line":461,"range":{"start_line":461,"start_character":34,"end_line":461,"end_character":43},"updated":"2018-11-27 04:34:53.000000000","message":"detaching ?","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1d8e137fbbd9ea5d904d1df8d2ffba6db9f02b21","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                                              body\u003dbody)"},{"line_number":459,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def test_admin_can_begin_roll_attaching(self):"},{"line_number":462,"context_line":"        # Make sure administrators are authorized to begin/roll_attaching"},{"line_number":463,"context_line":"        # volume"},{"line_number":464,"context_line":"        admin_context \u003d self.admin_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_4e9602f1","line":461,"range":{"start_line":461,"start_character":34,"end_line":461,"end_character":43},"in_reply_to":"3f79a3b5_3815964c","updated":"2018-12-04 08:34:26.000000000","message":"Done","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f319cbb62ff7f189497115b1691e86ab4f8c4dab","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def test_admin_can_begin_roll_attaching(self):"},{"line_number":462,"context_line":"        # Make sure administrators are authorized to begin/roll_attaching"},{"line_number":463,"context_line":"        # volume"},{"line_number":464,"context_line":"        admin_context \u003d self.admin_context"},{"line_number":465,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_58189281","line":462,"range":{"start_line":462,"start_character":64,"end_line":462,"end_character":73},"updated":"2018-11-27 04:34:53.000000000","message":"same","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1d8e137fbbd9ea5d904d1df8d2ffba6db9f02b21","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def test_admin_can_begin_roll_attaching(self):"},{"line_number":462,"context_line":"        # Make sure administrators are authorized to begin/roll_attaching"},{"line_number":463,"context_line":"        # volume"},{"line_number":464,"context_line":"        admin_context \u003d self.admin_context"},{"line_number":465,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_6e997e1b","line":462,"range":{"start_line":462,"start_character":64,"end_line":462,"end_character":73},"in_reply_to":"3f79a3b5_58189281","updated":"2018-12-04 08:34:26.000000000","message":"Done","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f319cbb62ff7f189497115b1691e86ab4f8c4dab","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                                              body\u003dbody)"},{"line_number":480,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def test_owner_can_begin_roll_attaching(self):"},{"line_number":483,"context_line":"        # Make sure owner are authorized to begin/roll_attaching volume"},{"line_number":484,"context_line":"        user_context \u003d self.user_context"},{"line_number":485,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f80abe26","line":482,"range":{"start_line":482,"start_character":34,"end_line":482,"end_character":43},"updated":"2018-11-27 04:34:53.000000000","message":"same","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1d8e137fbbd9ea5d904d1df8d2ffba6db9f02b21","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                                              body\u003dbody)"},{"line_number":480,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def test_owner_can_begin_roll_attaching(self):"},{"line_number":483,"context_line":"        # Make sure owner are authorized to begin/roll_attaching volume"},{"line_number":484,"context_line":"        user_context \u003d self.user_context"},{"line_number":485,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_0e800a9d","line":482,"range":{"start_line":482,"start_character":34,"end_line":482,"end_character":43},"in_reply_to":"3f79a3b5_f80abe26","updated":"2018-12-04 08:34:26.000000000","message":"Done","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f319cbb62ff7f189497115b1691e86ab4f8c4dab","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def test_owner_can_begin_roll_attaching(self):"},{"line_number":483,"context_line":"        # Make sure owner are authorized to begin/roll_attaching volume"},{"line_number":484,"context_line":"        user_context \u003d self.user_context"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        volume \u003d self._create_fake_volume(user_context, status\u003d\u0027in-use\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_b808c62d","line":483,"range":{"start_line":483,"start_character":55,"end_line":483,"end_character":64},"updated":"2018-11-27 04:34:53.000000000","message":"same","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1d8e137fbbd9ea5d904d1df8d2ffba6db9f02b21","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def test_owner_can_begin_roll_attaching(self):"},{"line_number":483,"context_line":"        # Make sure owner are authorized to begin/roll_attaching volume"},{"line_number":484,"context_line":"        user_context \u003d self.user_context"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        volume \u003d self._create_fake_volume(user_context, status\u003d\u0027in-use\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2e7b86d0","line":483,"range":{"start_line":483,"start_character":55,"end_line":483,"end_character":64},"in_reply_to":"3f79a3b5_b808c62d","updated":"2018-12-04 08:34:26.000000000","message":"Done","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f319cbb62ff7f189497115b1691e86ab4f8c4dab","unresolved":false,"context_lines":[{"line_number":499,"context_line":"                                              body\u003dbody)"},{"line_number":500,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_owner_cannot_begin_roll_attaching_for_others(self):"},{"line_number":503,"context_line":"        # Make sure volumes can only begin/roll_attaching by their owners"},{"line_number":504,"context_line":"        user_context \u003d self.user_context"},{"line_number":505,"context_line":"        non_owner_context \u003d self.other_user_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_98f94a1e","line":502,"range":{"start_line":502,"start_character":37,"end_line":502,"end_character":46},"updated":"2018-11-27 04:34:53.000000000","message":"same","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1d8e137fbbd9ea5d904d1df8d2ffba6db9f02b21","unresolved":false,"context_lines":[{"line_number":499,"context_line":"                                              body\u003dbody)"},{"line_number":500,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_owner_cannot_begin_roll_attaching_for_others(self):"},{"line_number":503,"context_line":"        # Make sure volumes can only begin/roll_attaching by their owners"},{"line_number":504,"context_line":"        user_context \u003d self.user_context"},{"line_number":505,"context_line":"        non_owner_context \u003d self.other_user_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ee84aeb1","line":502,"range":{"start_line":502,"start_character":37,"end_line":502,"end_character":46},"in_reply_to":"3f79a3b5_98f94a1e","updated":"2018-12-04 08:34:26.000000000","message":"Done","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f319cbb62ff7f189497115b1691e86ab4f8c4dab","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_owner_cannot_begin_roll_attaching_for_others(self):"},{"line_number":503,"context_line":"        # Make sure volumes can only begin/roll_attaching by their owners"},{"line_number":504,"context_line":"        user_context \u003d self.user_context"},{"line_number":505,"context_line":"        non_owner_context \u003d self.other_user_context"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7e08d723","line":503,"range":{"start_line":503,"start_character":48,"end_line":503,"end_character":57},"updated":"2018-11-27 04:34:53.000000000","message":"same","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1d8e137fbbd9ea5d904d1df8d2ffba6db9f02b21","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_owner_cannot_begin_roll_attaching_for_others(self):"},{"line_number":503,"context_line":"        # Make sure volumes can only begin/roll_attaching by their owners"},{"line_number":504,"context_line":"        user_context \u003d self.user_context"},{"line_number":505,"context_line":"        non_owner_context \u003d self.other_user_context"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8eb5fa82","line":503,"range":{"start_line":503,"start_character":48,"end_line":503,"end_character":57},"in_reply_to":"3f79a3b5_7e08d723","updated":"2018-12-04 08:34:26.000000000","message":"Done","commit_id":"df0cebb32ef304defaa046abfcc0cf6edf6c3106"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7e03266074dac3eec4aac334e981b1705acd1e8a","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                              body\u003dbody)"},{"line_number":368,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI, \u0027attach_volume\u0027)"},{"line_number":371,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI, \u0027detach_volume\u0027)"},{"line_number":372,"context_line":"    def test_owner_cannot_attach_detach_volume_for_others(self, mock_detach,"},{"line_number":373,"context_line":"                                                          mock_attach):"},{"line_number":374,"context_line":"        # Make sure volumes can only be attached/detached by their owners"},{"line_number":375,"context_line":"        user_context \u003d self.user_context"},{"line_number":376,"context_line":"        non_owner_context \u003d self.other_user_context"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        volume \u003d self._create_fake_volume(user_context)"},{"line_number":379,"context_line":"        path \u003d \u0027/v3/%(project_id)s/volumes/%(volume_id)s/action\u0027 % {"},{"line_number":380,"context_line":"            \u0027project_id\u0027: non_owner_context.project_id, \u0027volume_id\u0027: volume.id"},{"line_number":381,"context_line":"        }"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        body \u003d {\"os-attach\": {\"instance_uuid\": fake_constants.UUID1,"},{"line_number":384,"context_line":"                              \"mountpoint\": \"/dev/vdc\"}}"},{"line_number":385,"context_line":"        response \u003d self._get_request_response(non_owner_context, path, \u0027POST\u0027,"},{"line_number":386,"context_line":"                                              body\u003dbody)"},{"line_number":387,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        body \u003d {\"os-detach\": {}}"},{"line_number":390,"context_line":"        response \u003d self._get_request_response(non_owner_context, path, \u0027POST\u0027,"},{"line_number":391,"context_line":"                                              body\u003dbody)"},{"line_number":392,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def test_admin_can_reserve_unreserve_volume(self):"},{"line_number":395,"context_line":"        # Make sure administrators are authorized to (un)reserve volumes"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_0f0c7d42","line":392,"range":{"start_line":370,"start_character":0,"end_line":392,"end_character":68},"updated":"2018-12-04 14:44:37.000000000","message":"This can\u0027t be testing the policy code.  The default policy is unrestricted (\"\"), so this test would be failing if the policy is what\u0027s preventing another user from detaching my volume.","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f67fa50ba3c36b4c27fbcbba19b7512ccee1a690","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                              body\u003dbody)"},{"line_number":368,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI, \u0027attach_volume\u0027)"},{"line_number":371,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI, \u0027detach_volume\u0027)"},{"line_number":372,"context_line":"    def test_owner_cannot_attach_detach_volume_for_others(self, mock_detach,"},{"line_number":373,"context_line":"                                                          mock_attach):"},{"line_number":374,"context_line":"        # Make sure volumes can only be attached/detached by their owners"},{"line_number":375,"context_line":"        user_context \u003d self.user_context"},{"line_number":376,"context_line":"        non_owner_context \u003d self.other_user_context"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        volume \u003d self._create_fake_volume(user_context)"},{"line_number":379,"context_line":"        path \u003d \u0027/v3/%(project_id)s/volumes/%(volume_id)s/action\u0027 % {"},{"line_number":380,"context_line":"            \u0027project_id\u0027: non_owner_context.project_id, \u0027volume_id\u0027: volume.id"},{"line_number":381,"context_line":"        }"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        body \u003d {\"os-attach\": {\"instance_uuid\": fake_constants.UUID1,"},{"line_number":384,"context_line":"                              \"mountpoint\": \"/dev/vdc\"}}"},{"line_number":385,"context_line":"        response \u003d self._get_request_response(non_owner_context, path, \u0027POST\u0027,"},{"line_number":386,"context_line":"                                              body\u003dbody)"},{"line_number":387,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        body \u003d {\"os-detach\": {}}"},{"line_number":390,"context_line":"        response \u003d self._get_request_response(non_owner_context, path, \u0027POST\u0027,"},{"line_number":391,"context_line":"                                              body\u003dbody)"},{"line_number":392,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def test_admin_can_reserve_unreserve_volume(self):"},{"line_number":395,"context_line":"        # Make sure administrators are authorized to (un)reserve volumes"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_873dd1ba","line":392,"range":{"start_line":370,"start_character":0,"end_line":392,"end_character":68},"in_reply_to":"3f79a3b5_0f0c7d42","updated":"2018-12-04 15:53:05.000000000","message":"I noticed that the default is actually base.RULE_ADMIN_OR_OWNER, but I downloaded your patch and changed the default to \"\", and the test still passes.  So I think my overall point is correct, namely, that it\u0027s not the policy configuration that\u0027s preventing a non-admin-non-owner from performing this action.","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"719f11e9badcb96f5620f420d02e1714560f70e7","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                              body\u003dbody)"},{"line_number":368,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI, \u0027attach_volume\u0027)"},{"line_number":371,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI, \u0027detach_volume\u0027)"},{"line_number":372,"context_line":"    def test_owner_cannot_attach_detach_volume_for_others(self, mock_detach,"},{"line_number":373,"context_line":"                                                          mock_attach):"},{"line_number":374,"context_line":"        # Make sure volumes can only be attached/detached by their owners"},{"line_number":375,"context_line":"        user_context \u003d self.user_context"},{"line_number":376,"context_line":"        non_owner_context \u003d self.other_user_context"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        volume \u003d self._create_fake_volume(user_context)"},{"line_number":379,"context_line":"        path \u003d \u0027/v3/%(project_id)s/volumes/%(volume_id)s/action\u0027 % {"},{"line_number":380,"context_line":"            \u0027project_id\u0027: non_owner_context.project_id, \u0027volume_id\u0027: volume.id"},{"line_number":381,"context_line":"        }"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        body \u003d {\"os-attach\": {\"instance_uuid\": fake_constants.UUID1,"},{"line_number":384,"context_line":"                              \"mountpoint\": \"/dev/vdc\"}}"},{"line_number":385,"context_line":"        response \u003d self._get_request_response(non_owner_context, path, \u0027POST\u0027,"},{"line_number":386,"context_line":"                                              body\u003dbody)"},{"line_number":387,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        body \u003d {\"os-detach\": {}}"},{"line_number":390,"context_line":"        response \u003d self._get_request_response(non_owner_context, path, \u0027POST\u0027,"},{"line_number":391,"context_line":"                                              body\u003dbody)"},{"line_number":392,"context_line":"        self.assertEqual(http_client.NOT_FOUND, response.status_int)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def test_admin_can_reserve_unreserve_volume(self):"},{"line_number":395,"context_line":"        # Make sure administrators are authorized to (un)reserve volumes"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_c8cbc619","line":392,"range":{"start_line":370,"start_character":0,"end_line":392,"end_character":68},"in_reply_to":"3f79a3b5_873dd1ba","updated":"2018-12-05 07:56:10.000000000","message":"Done","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7e03266074dac3eec4aac334e981b1705acd1e8a","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                                              body\u003dbody)"},{"line_number":430,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"    def test_owner_cannot_reserve_unreserve_volume_for_others(self):"},{"line_number":433,"context_line":"        # Make sure volumes can only be (un)reserve by their owners"},{"line_number":434,"context_line":"        user_context \u003d self.user_context"},{"line_number":435,"context_line":"        non_owner_context \u003d self.other_user_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_5af79129","line":432,"updated":"2018-12-04 14:44:37.000000000","message":"See comment at line 392.","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"719f11e9badcb96f5620f420d02e1714560f70e7","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                                              body\u003dbody)"},{"line_number":430,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"    def test_owner_cannot_reserve_unreserve_volume_for_others(self):"},{"line_number":433,"context_line":"        # Make sure volumes can only be (un)reserve by their owners"},{"line_number":434,"context_line":"        user_context \u003d self.user_context"},{"line_number":435,"context_line":"        non_owner_context \u003d self.other_user_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a8c8ca1f","line":432,"in_reply_to":"3f79a3b5_5af79129","updated":"2018-12-05 07:56:10.000000000","message":"Done","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7e03266074dac3eec4aac334e981b1705acd1e8a","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                       \u0027initialize_connection\u0027)"},{"line_number":501,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI,"},{"line_number":502,"context_line":"                       \u0027terminate_connection\u0027)"},{"line_number":503,"context_line":"    def test_owner_cannot_initialize_terminate_conn_for_others(self, mock_t,"},{"line_number":504,"context_line":"                                                               mock_i):"},{"line_number":505,"context_line":"        # Make sure volumes conn can only be init/terminate by their owners"},{"line_number":506,"context_line":"        user_context \u003d self.user_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fa053d0e","line":503,"updated":"2018-12-04 14:44:37.000000000","message":"See comment at line 392.","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"719f11e9badcb96f5620f420d02e1714560f70e7","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                       \u0027initialize_connection\u0027)"},{"line_number":501,"context_line":"    @mock.patch.object(volume_api.volume_rpcapi.VolumeAPI,"},{"line_number":502,"context_line":"                       \u0027terminate_connection\u0027)"},{"line_number":503,"context_line":"    def test_owner_cannot_initialize_terminate_conn_for_others(self, mock_t,"},{"line_number":504,"context_line":"                                                               mock_i):"},{"line_number":505,"context_line":"        # Make sure volumes conn can only be init/terminate by their owners"},{"line_number":506,"context_line":"        user_context \u003d self.user_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_28dcbae0","line":503,"in_reply_to":"3f79a3b5_fa053d0e","updated":"2018-12-05 07:56:10.000000000","message":"Done","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7e03266074dac3eec4aac334e981b1705acd1e8a","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                                              body\u003dbody)"},{"line_number":563,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def test_owner_cannot_begin_roll_detaching_for_others(self):"},{"line_number":566,"context_line":"        # Make sure volumes can only begin/roll_detaching by their owners"},{"line_number":567,"context_line":"        user_context \u003d self.user_context"},{"line_number":568,"context_line":"        non_owner_context \u003d self.other_user_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_da33a1f7","line":565,"updated":"2018-12-04 14:44:37.000000000","message":"See comment at line 392.","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"719f11e9badcb96f5620f420d02e1714560f70e7","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                                              body\u003dbody)"},{"line_number":563,"context_line":"        self.assertEqual(http_client.ACCEPTED, response.status_int)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def test_owner_cannot_begin_roll_detaching_for_others(self):"},{"line_number":566,"context_line":"        # Make sure volumes can only begin/roll_detaching by their owners"},{"line_number":567,"context_line":"        user_context \u003d self.user_context"},{"line_number":568,"context_line":"        non_owner_context \u003d self.other_user_context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a8e1aa99","line":565,"in_reply_to":"3f79a3b5_da33a1f7","updated":"2018-12-05 07:56:10.000000000","message":"Done","commit_id":"24ac2f39bab27b537d672d0d3e7bc21634d4c255"}]}
