)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"49bc21658d2e1f022f404479419494e23dc4d9e4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"hence getattr() will return the appropriate extra_specs instead of"},{"line_number":16,"context_line":"the default value({})."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I869bc0c9b18887da1ea83f855d255557f0f3cba0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_1a1fd95b","line":18,"updated":"2018-09-27 12:25:40.000000000","message":"missing\n\n Closes-Bug: 1790840","commit_id":"7c7de9334745f4920c8204640348a80ef866b3a6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a2f602f531b44cac3ed37768ca39a822100c6254","unresolved":false,"context_lines":[{"line_number":15,"context_line":"hence getattr() will return the appropriate extra_specs instead of"},{"line_number":16,"context_line":"the default value({})."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I869bc0c9b18887da1ea83f855d255557f0f3cba0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_ac0f8c2d","line":18,"in_reply_to":"3f79a3b5_1a1fd95b","updated":"2018-09-27 18:10:55.000000000","message":"Done","commit_id":"7c7de9334745f4920c8204640348a80ef866b3a6"}],"cinder/tests/unit/volume/test_volume_retype.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9aa613d26d4957cf0807de25e84f20b93caada68","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                            {\u0027multiattach\u0027: \"\u003cis\u003e True\"},"},{"line_number":50,"context_line":"                            description\u003d\"test-multiattach\")"},{"line_number":51,"context_line":"        volume_types.create(self.context,"},{"line_number":52,"context_line":"                            \"multiattach-type-dict\","},{"line_number":53,"context_line":"                            {\u0027multiattach\u0027: \"\u003cis\u003e True\"},"},{"line_number":54,"context_line":"                            description\u003d\"test-multiattach\")"},{"line_number":55,"context_line":"        self.default_vol_type \u003d objects.VolumeType.get_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3ef4e954","line":52,"updated":"2018-09-28 15:39:04.000000000","message":"For this test we wouldn\u0027t need to create a new volume type, unless you want to add another test that checks that retype from multiattach volume type to another that also has multiattach enabled works (which could be would be good to have if we don\u0027t have it already).","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                            {\u0027multiattach\u0027: \"\u003cis\u003e True\"},"},{"line_number":50,"context_line":"                            description\u003d\"test-multiattach\")"},{"line_number":51,"context_line":"        volume_types.create(self.context,"},{"line_number":52,"context_line":"                            \"multiattach-type-dict\","},{"line_number":53,"context_line":"                            {\u0027multiattach\u0027: \"\u003cis\u003e True\"},"},{"line_number":54,"context_line":"                            description\u003d\"test-multiattach\")"},{"line_number":55,"context_line":"        self.default_vol_type \u003d objects.VolumeType.get_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2e011808","line":52,"in_reply_to":"3f79a3b5_3ef4e954","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.multiattach_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":59,"context_line":"            self.context,"},{"line_number":60,"context_line":"            \u0027multiattach-type\u0027)"},{"line_number":61,"context_line":"        self.multiattach_type_dict \u003d volume_types.get_by_name_or_id("},{"line_number":62,"context_line":"            self.context,"},{"line_number":63,"context_line":"            \u0027multiattach-type-dict\u0027)"},{"line_number":64,"context_line":"        self.multiattach_type_dict[\u0027extra_specs\u0027] \u003d (getattr("},{"line_number":65,"context_line":"            self.multiattach_type_dict, \u0027extra_specs\u0027, {}))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def fake_get_vtype(self, context, identifier):"},{"line_number":68,"context_line":"        if identifier \u003d\u003d \"multiattach-type\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_43a477a3","line":65,"range":{"start_line":61,"start_character":0,"end_line":65,"end_character":59},"updated":"2018-09-28 10:43:11.000000000","message":"I don\u0027t think we need this anymore","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.multiattach_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":59,"context_line":"            self.context,"},{"line_number":60,"context_line":"            \u0027multiattach-type\u0027)"},{"line_number":61,"context_line":"        self.multiattach_type_dict \u003d volume_types.get_by_name_or_id("},{"line_number":62,"context_line":"            self.context,"},{"line_number":63,"context_line":"            \u0027multiattach-type-dict\u0027)"},{"line_number":64,"context_line":"        self.multiattach_type_dict[\u0027extra_specs\u0027] \u003d (getattr("},{"line_number":65,"context_line":"            self.multiattach_type_dict, \u0027extra_specs\u0027, {}))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def fake_get_vtype(self, context, identifier):"},{"line_number":68,"context_line":"        if identifier \u003d\u003d \"multiattach-type\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_810d9d36","line":65,"range":{"start_line":61,"start_character":0,"end_line":65,"end_character":59},"in_reply_to":"3f79a3b5_3ed2b0fe","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"19566ef9b0affce685a2fa2f8e91f46d0639b04f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.multiattach_type \u003d objects.VolumeType.get_by_name_or_id("},{"line_number":59,"context_line":"            self.context,"},{"line_number":60,"context_line":"            \u0027multiattach-type\u0027)"},{"line_number":61,"context_line":"        self.multiattach_type_dict \u003d volume_types.get_by_name_or_id("},{"line_number":62,"context_line":"            self.context,"},{"line_number":63,"context_line":"            \u0027multiattach-type-dict\u0027)"},{"line_number":64,"context_line":"        self.multiattach_type_dict[\u0027extra_specs\u0027] \u003d (getattr("},{"line_number":65,"context_line":"            self.multiattach_type_dict, \u0027extra_specs\u0027, {}))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def fake_get_vtype(self, context, identifier):"},{"line_number":68,"context_line":"        if identifier \u003d\u003d \"multiattach-type\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3ed2b0fe","line":65,"range":{"start_line":61,"start_character":0,"end_line":65,"end_character":59},"in_reply_to":"3f79a3b5_43a477a3","updated":"2018-09-28 13:07:55.000000000","message":"so we need to verify that whenever we receive a volume-type with the following way (volume_types.get_by_name_or_id), we get a dictionary and the extra_specs gets lost while calling getattr().\nthis seems to be an important point as per the bug.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9aa613d26d4957cf0807de25e84f20b93caada68","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            return self.default_vol_type"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":76,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":77,"context_line":"    def test_retype_multiattach(self, _mock_get_types, mock_authorize):"},{"line_number":78,"context_line":"        \"\"\"Verify multiattach retype restrictions.\"\"\""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7e8341aa","line":76,"updated":"2018-09-28 15:39:04.000000000","message":"I believe this is the cause for the bug, that the test is mocking something it shouldn\u0027t and thus faking the whole test.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":129,"context_line":"             ])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":132,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":133,"context_line":"    def test_multiattach_false_after_retype(self, _mock_get_types,"},{"line_number":134,"context_line":"                                            mock_authorize):"},{"line_number":135,"context_line":"        # Test unsuccessful update of multiattach while"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_839a8f5d","line":132,"updated":"2018-09-28 10:43:11.000000000","message":"Now that we don\u0027t use \"get_by_name_or_id\" we shouldn\u0027t need this, right?","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"19566ef9b0affce685a2fa2f8e91f46d0639b04f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"             ])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":132,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":133,"context_line":"    def test_multiattach_false_after_retype(self, _mock_get_types,"},{"line_number":134,"context_line":"                                            mock_authorize):"},{"line_number":135,"context_line":"        # Test unsuccessful update of multiattach while"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ea4eb394","line":132,"in_reply_to":"3f79a3b5_839a8f5d","updated":"2018-09-28 13:07:55.000000000","message":"this is required because of the condition mentioned above,\nI\u0027m not much sure about any other way this situation can be created alternatively in this test case","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":129,"context_line":"             ])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":132,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":133,"context_line":"    def test_multiattach_false_after_retype(self, _mock_get_types,"},{"line_number":134,"context_line":"                                            mock_authorize):"},{"line_number":135,"context_line":"        # Test unsuccessful update of multiattach while"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8136fde6","line":132,"in_reply_to":"3f79a3b5_b85a517f","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0c4860c99ec008a238309f3867edbc2cd8e4a910","unresolved":false,"context_lines":[{"line_number":129,"context_line":"             ])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":132,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":133,"context_line":"    def test_multiattach_false_after_retype(self, _mock_get_types,"},{"line_number":134,"context_line":"                                            mock_authorize):"},{"line_number":135,"context_line":"        # Test unsuccessful update of multiattach while"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_b85a517f","line":132,"in_reply_to":"3f79a3b5_ea4eb394","updated":"2018-09-28 14:13:11.000000000","message":"I\u0027m pretty sure that you shouldn\u0027t need to mock that method (since you are creating the volume type and the volume on the DB) and if you do and you also need to forcefully set the extra specs like you do on L64, then this patch is most likely not fixing the bug as it should.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    def test_multiattach_false_after_retype(self, _mock_get_types,"},{"line_number":134,"context_line":"                                            mock_authorize):"},{"line_number":135,"context_line":"        # Test unsuccessful update of multiattach while"},{"line_number":136,"context_line":"        # going from default type to multiattach-dict type"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        _mock_get_types.side_effect \u003d self.fake_get_vtype"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a3e30bd8","line":136,"updated":"2018-09-28 10:43:11.000000000","message":"This comment should be a docstring.\nIs it really unsuccessful update? Or is it that we are retyping to a type that doesn\u0027t do multiattach and therefore the volume\u0027s multiattach attribute will get updated?","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"19566ef9b0affce685a2fa2f8e91f46d0639b04f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    def test_multiattach_false_after_retype(self, _mock_get_types,"},{"line_number":134,"context_line":"                                            mock_authorize):"},{"line_number":135,"context_line":"        # Test unsuccessful update of multiattach while"},{"line_number":136,"context_line":"        # going from default type to multiattach-dict type"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        _mock_get_types.side_effect \u003d self.fake_get_vtype"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_1e733418","line":136,"in_reply_to":"3f79a3b5_a3e30bd8","updated":"2018-09-28 13:07:55.000000000","message":"so whenever we retype to a type that supports multiattach, the extra_specs gets filtered by the getattr() function defined in the _is_multiattach() and we get an empty dict\ntherefore the multiattach value turns out to be false when it should be true after retype.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        _mock_get_types.side_effect \u003d self.fake_get_vtype"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        vol \u003d self.volume_api.create(self.context,"},{"line_number":141,"context_line":"                                     1,"},{"line_number":142,"context_line":"                                     \u0027test-multi-false\u0027,"},{"line_number":143,"context_line":"                                     \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_231e1bbb","line":140,"updated":"2018-09-28 10:43:11.000000000","message":"nit: We could use cinder.tests.unit.utils.create_volume instead and then the status would be available by default and we wouldn\u0027t need to update it below.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        _mock_get_types.side_effect \u003d self.fake_get_vtype"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        vol \u003d self.volume_api.create(self.context,"},{"line_number":141,"context_line":"                                     1,"},{"line_number":142,"context_line":"                                     \u0027test-multi-false\u0027,"},{"line_number":143,"context_line":"                                     \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e14a5159","line":140,"in_reply_to":"3f79a3b5_231e1bbb","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                     \u0027\u0027,"},{"line_number":144,"context_line":"                                     volume_type\u003dself.default_vol_type)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        vol.update({\u0027status\u0027: \u0027available\u0027})"},{"line_number":147,"context_line":"        vol.save()"},{"line_number":148,"context_line":"        self.volume_api.retype(self.user_context,"},{"line_number":149,"context_line":"                               vol,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_23d7fbf0","line":146,"updated":"2018-09-28 10:43:11.000000000","message":"nit:\n\n vol.status \u003d \u0027available\u0027","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                     \u0027\u0027,"},{"line_number":144,"context_line":"                                     volume_type\u003dself.default_vol_type)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        vol.update({\u0027status\u0027: \u0027available\u0027})"},{"line_number":147,"context_line":"        vol.save()"},{"line_number":148,"context_line":"        self.volume_api.retype(self.user_context,"},{"line_number":149,"context_line":"                               vol,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a150d90a","line":146,"in_reply_to":"3f79a3b5_23d7fbf0","updated":"2018-09-28 18:15:34.000000000","message":"Removed","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                     volume_type\u003dself.default_vol_type)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        vol.update({\u0027status\u0027: \u0027available\u0027})"},{"line_number":147,"context_line":"        vol.save()"},{"line_number":148,"context_line":"        self.volume_api.retype(self.user_context,"},{"line_number":149,"context_line":"                               vol,"},{"line_number":150,"context_line":"                               \u0027multiattach-type-dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_23737b18","line":147,"updated":"2018-09-28 10:43:11.000000000","message":"nit: it would be good to assert that multiattach is true here.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                     volume_type\u003dself.default_vol_type)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        vol.update({\u0027status\u0027: \u0027available\u0027})"},{"line_number":147,"context_line":"        vol.save()"},{"line_number":148,"context_line":"        self.volume_api.retype(self.user_context,"},{"line_number":149,"context_line":"                               vol,"},{"line_number":150,"context_line":"                               \u0027multiattach-type-dict\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_613e41ba","line":147,"in_reply_to":"3f79a3b5_23737b18","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9df7a2d650168a6f9a0954c441dd38b0e31952d5","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self.volume_api.retype(self.user_context,"},{"line_number":149,"context_line":"                               vol,"},{"line_number":150,"context_line":"                               \u0027multiattach-type-dict\u0027)"},{"line_number":151,"context_line":"        vol \u003d objects.Volume.get_by_id(self.context, vol.id)"},{"line_number":152,"context_line":"        self.assertFalse(vol.multiattach)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        mock_authorize.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_63cdf35c","line":151,"range":{"start_line":151,"start_character":29,"end_line":151,"end_character":38},"updated":"2018-09-28 10:43:11.000000000","message":"nit: we can do vol.refresh()","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        self.volume_api.retype(self.user_context,"},{"line_number":149,"context_line":"                               vol,"},{"line_number":150,"context_line":"                               \u0027multiattach-type-dict\u0027)"},{"line_number":151,"context_line":"        vol \u003d objects.Volume.get_by_id(self.context, vol.id)"},{"line_number":152,"context_line":"        self.assertFalse(vol.multiattach)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        mock_authorize.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_813b5dc6","line":151,"range":{"start_line":151,"start_character":29,"end_line":151,"end_character":38},"in_reply_to":"3f79a3b5_63cdf35c","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b425d9753696c80d304968e58421b2b42139f779","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                               vol,"},{"line_number":150,"context_line":"                               \u0027multiattach-type-dict\u0027)"},{"line_number":151,"context_line":"        vol \u003d objects.Volume.get_by_id(self.context, vol.id)"},{"line_number":152,"context_line":"        self.assertFalse(vol.multiattach)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        mock_authorize.assert_has_calls("},{"line_number":155,"context_line":"            [mock.call(volume_policies.CREATE_POLICY),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_dec4d510","line":152,"updated":"2018-09-28 15:33:51.000000000","message":"The destination volume type has multiattach enabled, so you need to check for True here.  We hare retyping from non multiattach to multiattach.","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fddb328cdcc82ef3653edaab4e3968a22a7332c6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                               vol,"},{"line_number":150,"context_line":"                               \u0027multiattach-type-dict\u0027)"},{"line_number":151,"context_line":"        vol \u003d objects.Volume.get_by_id(self.context, vol.id)"},{"line_number":152,"context_line":"        self.assertFalse(vol.multiattach)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        mock_authorize.assert_has_calls("},{"line_number":155,"context_line":"            [mock.call(volume_policies.CREATE_POLICY),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_4141c535","line":152,"in_reply_to":"3f79a3b5_dec4d510","updated":"2018-09-28 18:15:34.000000000","message":"Done","commit_id":"2bea482510c4e18c530c0eddece4eb1374b9c82d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ceebc8fd17ae4a3d729a5655f8cfaf5f566590b2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return self.default_vol_type"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":75,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":76,"context_line":"    def test_retype_multiattach(self, _mock_get_types, mock_authorize):"},{"line_number":77,"context_line":"        \"\"\"Verify multiattach retype restrictions.\"\"\""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_2f29249b","line":75,"updated":"2018-10-23 12:22:11.000000000","message":"If memory serves me right this mock was faking the whole test, so the test was not actually testing what it should.  I won\u0027t block this patch for it, but I think it should be fixed.","commit_id":"7f85be418669286392c833479dfdc7c2a33f86d1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2bda05b8a65c8a41bf6c1dbad3feedbc57def329","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return self.default_vol_type"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":75,"context_line":"    @mock.patch.object(volume_types, \u0027get_by_name_or_id\u0027)"},{"line_number":76,"context_line":"    def test_retype_multiattach(self, _mock_get_types, mock_authorize):"},{"line_number":77,"context_line":"        \"\"\"Verify multiattach retype restrictions.\"\"\""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_88d2ae5e","line":75,"in_reply_to":"3f79a3b5_2f29249b","updated":"2018-10-23 16:48:52.000000000","message":"Yes. i removed the same in the new test but thought to correct the rest of the tests (1 func per test and remove the mock) in the followup patch.","commit_id":"7f85be418669286392c833479dfdc7c2a33f86d1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ceebc8fd17ae4a3d729a5655f8cfaf5f566590b2","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":131,"context_line":"    def test_multiattach_to_multiattach_retype(self, mock_authorize):"},{"line_number":132,"context_line":"        # Test going from multiattach to multiattach"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        vol \u003d tests_utils.create_volume(self.context,"},{"line_number":135,"context_line":"                                        multiattach\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_6f5abc51","line":132,"updated":"2018-10-23 12:22:11.000000000","message":"nit: This should be a docstring like in the other tests.","commit_id":"7f85be418669286392c833479dfdc7c2a33f86d1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2bda05b8a65c8a41bf6c1dbad3feedbc57def329","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":131,"context_line":"    def test_multiattach_to_multiattach_retype(self, mock_authorize):"},{"line_number":132,"context_line":"        # Test going from multiattach to multiattach"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        vol \u003d tests_utils.create_volume(self.context,"},{"line_number":135,"context_line":"                                        multiattach\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_28e11a2c","line":132,"in_reply_to":"3f79a3b5_6f5abc51","updated":"2018-10-23 16:48:52.000000000","message":"will correct this too in the followup.","commit_id":"7f85be418669286392c833479dfdc7c2a33f86d1"}]}
