)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7aeb9c21e3a87a2eeae6e51c882d9f8ebc49cfa7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently in volume.api.create(), it uses dict instead of object"},{"line_number":10,"context_line":"fields."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch is to use object filds instead of dict which is more"},{"line_number":13,"context_line":"reliable."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I981b5060abaff280aa34a9570c65300f467045d6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a71b18c_81a8fddc","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":33},"updated":"2016-12-05 08:24:47.000000000","message":"s/filds/field","commit_id":"e83d7377334d02b05362bc833b6108fc09cebd08"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7aeb9c21e3a87a2eeae6e51c882d9f8ebc49cfa7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently in volume.api.create(), it uses dict instead of object"},{"line_number":10,"context_line":"fields."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch is to use object filds instead of dict which is more"},{"line_number":13,"context_line":"reliable."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I981b5060abaff280aa34a9570c65300f467045d6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a71b18c_c1f835c6","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":33},"updated":"2016-12-05 08:24:47.000000000","message":"s/filds/field","commit_id":"e83d7377334d02b05362bc833b6108fc09cebd08"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"9c8454fbbb44c60f57a21e315ef06af6d859a28c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently in volume.api.create(), it uses dict instead of object"},{"line_number":10,"context_line":"fields."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch is to use object filds instead of dict which is more"},{"line_number":13,"context_line":"reliable."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I981b5060abaff280aa34a9570c65300f467045d6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a71b18c_04687b86","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":33},"in_reply_to":"3a71b18c_c1f835c6","updated":"2016-12-05 08:34:52.000000000","message":"Done","commit_id":"e83d7377334d02b05362bc833b6108fc09cebd08"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"2639501a2673131e2827ae4edbcc241bc4eec997","unresolved":false,"context_lines":[{"line_number":14,"context_line":"instead of dict."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Meanwhile the patch uses object fields to access other objects"},{"line_number":17,"context_line":"instead of dict acess."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I981b5060abaff280aa34a9570c65300f467045d6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a430d35_9692259e","line":17,"range":{"start_line":17,"start_character":16,"end_line":17,"end_character":21},"updated":"2017-02-06 07:54:59.000000000","message":"access?","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3e395239167987f66af6783f4a2af1476eeb6fc3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"instead of dict."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Meanwhile the patch uses object fields to access other objects"},{"line_number":17,"context_line":"instead of dict acess."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I981b5060abaff280aa34a9570c65300f467045d6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a430d35_764059a6","line":17,"range":{"start_line":17,"start_character":16,"end_line":17,"end_character":21},"in_reply_to":"1a430d35_9692259e","updated":"2017-02-06 08:02:36.000000000","message":"Or just removed.","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"}],"cinder/objects/volume_type.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ef4ca0ceef6d08f6ecba9a0e6e6a3ad8ac78e836","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def get_by_name_or_id(cls, context, identity):"},{"line_number":159,"context_line":"        orm_obj \u003d volume_types.get_by_name_or_id(context, identity)"},{"line_number":160,"context_line":"        expected_attrs \u003d VolumeType._get_expected_attrs(context)"},{"line_number":161,"context_line":"        return cls._from_db_object(context, cls(context),"},{"line_number":162,"context_line":"                                   orm_obj, expected_attrs\u003dexpected_attrs)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_523d1bba","line":160,"range":{"start_line":160,"start_character":25,"end_line":160,"end_character":35},"updated":"2017-02-06 12:54:58.000000000","message":"-1: cls._get_expected_attrs(context)","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"34027cb4d95bebccbd9c213edb44b1141d81f6a1","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def get_by_name_or_id(cls, context, identity):"},{"line_number":159,"context_line":"        orm_obj \u003d volume_types.get_by_name_or_id(context, identity)"},{"line_number":160,"context_line":"        expected_attrs \u003d VolumeType._get_expected_attrs(context)"},{"line_number":161,"context_line":"        return cls._from_db_object(context, cls(context),"},{"line_number":162,"context_line":"                                   orm_obj, expected_attrs\u003dexpected_attrs)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_07defb3e","line":160,"range":{"start_line":160,"start_character":25,"end_line":160,"end_character":35},"in_reply_to":"1a430d35_523d1bba","updated":"2017-02-13 06:08:31.000000000","message":"Done","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"}],"cinder/tests/unit/consistencygroup/test_cg.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ef4ca0ceef6d08f6ecba9a0e6e6a3ad8ac78e836","unresolved":false,"context_lines":[{"line_number":719,"context_line":"        )"},{"line_number":720,"context_line":"        vol_type \u003d objects.VolumeType.get_by_id(context.get_admin_context(),"},{"line_number":721,"context_line":"                                                vol_type.id)"},{"line_number":722,"context_line":"        cg \u003d objects.ConsistencyGroup(context.get_admin_context(),"},{"line_number":723,"context_line":"                                      id\u003dfake.CONSISTENCY_GROUP_ID,"},{"line_number":724,"context_line":"                                      name\u003d\u0027cg1\u0027,"},{"line_number":725,"context_line":"                                      volume_type_id\u003dvol_type.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_324c0f42","line":722,"range":{"start_line":722,"start_character":38,"end_line":722,"end_character":64},"updated":"2017-02-06 12:54:58.000000000","message":"nit: We should be using self.context, but since the test is already like this I\u0027ll ignore it","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"34027cb4d95bebccbd9c213edb44b1141d81f6a1","unresolved":false,"context_lines":[{"line_number":719,"context_line":"        )"},{"line_number":720,"context_line":"        vol_type \u003d objects.VolumeType.get_by_id(context.get_admin_context(),"},{"line_number":721,"context_line":"                                                vol_type.id)"},{"line_number":722,"context_line":"        cg \u003d objects.ConsistencyGroup(context.get_admin_context(),"},{"line_number":723,"context_line":"                                      id\u003dfake.CONSISTENCY_GROUP_ID,"},{"line_number":724,"context_line":"                                      name\u003d\u0027cg1\u0027,"},{"line_number":725,"context_line":"                                      volume_type_id\u003dvol_type.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_87f2ebd0","line":722,"range":{"start_line":722,"start_character":38,"end_line":722,"end_character":64},"in_reply_to":"1a430d35_324c0f42","updated":"2017-02-13 06:08:31.000000000","message":"Done","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e558be503c056ebaf96f9ac27293af978fb6e13e","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                  \u0027volume_type_id\u0027: biz_type.id}"},{"line_number":1236,"context_line":"        source_vol \u003d fake_volume.fake_volume_obj("},{"line_number":1237,"context_line":"            self.context,"},{"line_number":1238,"context_line":"            **values)"},{"line_number":1239,"context_line":"        source_vol.volume_type \u003d biz_type"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"        self.assertRaises(exception.InvalidInput,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_dbb29ce4","line":1238,"updated":"2017-01-31 09:19:06.000000000","message":"?: Why are we changing the pattern used for foo_type and biz_type and using a dictionary instead of passing the values as parameters?  After all we are not using variable values anywhere else","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3b3bb319e2a5e331fc3bd0c64c17d08ca716eaa0","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                  \u0027volume_type_id\u0027: biz_type.id}"},{"line_number":1236,"context_line":"        source_vol \u003d fake_volume.fake_volume_obj("},{"line_number":1237,"context_line":"            self.context,"},{"line_number":1238,"context_line":"            **values)"},{"line_number":1239,"context_line":"        source_vol.volume_type \u003d biz_type"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"        self.assertRaises(exception.InvalidInput,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_525a7b51","line":1238,"in_reply_to":"1a430d35_0ade256d","updated":"2017-02-06 12:53:11.000000000","message":"It may not support adding OVO type attributes, but it does support adding normal attributes like those you are adding my expanding the dictionary:\n\n        source_vol \u003d fake_volume.fake_volume_obj(\n            self.context,\n            id\u003dfake.VOLUME_ID,\n            status\u003d\u0027available\u0027,\n            ...)","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"f7236948d28ca2057c8a42045141bc2561b0371d","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                  \u0027volume_type_id\u0027: biz_type.id}"},{"line_number":1236,"context_line":"        source_vol \u003d fake_volume.fake_volume_obj("},{"line_number":1237,"context_line":"            self.context,"},{"line_number":1238,"context_line":"            **values)"},{"line_number":1239,"context_line":"        source_vol.volume_type \u003d biz_type"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"        self.assertRaises(exception.InvalidInput,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_ca2cea4c","line":1238,"in_reply_to":"1a430d35_525a7b51","updated":"2017-02-13 06:09:35.000000000","message":"Finally I removed temporary dict related to my changes in this file.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"0716502f2a94f57b74510fb7d441e31c7ab0199b","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                  \u0027volume_type_id\u0027: biz_type.id}"},{"line_number":1236,"context_line":"        source_vol \u003d fake_volume.fake_volume_obj("},{"line_number":1237,"context_line":"            self.context,"},{"line_number":1238,"context_line":"            **values)"},{"line_number":1239,"context_line":"        source_vol.volume_type \u003d biz_type"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"        self.assertRaises(exception.InvalidInput,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_0ade256d","line":1238,"in_reply_to":"3a461143_dbb29ce4","updated":"2017-02-04 03:01:37.000000000","message":"fake_volume doesn\u0027t support to create with object attributes.\nhttps://github.com/openstack/cinder/blob/master/cinder/tests/unit/fake_volume.py#L104\n\nSo I can\u0027t set volume_type in fake_volume_obj.\n\nAbout why using temporary dict here, as I would like to keep same style as existed codes. And about why not change existed codes, as I am a little lazy. :( Sorry for it. Also see explanation in Line 1288.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e558be503c056ebaf96f9ac27293af978fb6e13e","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"            \u0027description\u0027: None}"},{"line_number":1286,"context_line":"        foo_type \u003d fake_volume.fake_volume_type_obj("},{"line_number":1287,"context_line":"            self.context,"},{"line_number":1288,"context_line":"            **values)"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"        values \u003d {"},{"line_number":1291,"context_line":"            \u0027id\u0027: fake.VOLUME_TYPE2_ID,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_db00dc68","line":1288,"updated":"2017-01-31 09:19:06.000000000","message":"nit: I think it\u0027s cleaner passing the parameters directly instead of using a temporary dictionary.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"3b3bb319e2a5e331fc3bd0c64c17d08ca716eaa0","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"            \u0027description\u0027: None}"},{"line_number":1286,"context_line":"        foo_type \u003d fake_volume.fake_volume_type_obj("},{"line_number":1287,"context_line":"            self.context,"},{"line_number":1288,"context_line":"            **values)"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"        values \u003d {"},{"line_number":1291,"context_line":"            \u0027id\u0027: fake.VOLUME_TYPE2_ID,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_f23b67e9","line":1288,"in_reply_to":"1a430d35_6a49695f","updated":"2017-02-06 12:53:11.000000000","message":"I don\u0027t think it\u0027s so much change, but I can understand keeping code changes to a minimum.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"0716502f2a94f57b74510fb7d441e31c7ab0199b","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"            \u0027description\u0027: None}"},{"line_number":1286,"context_line":"        foo_type \u003d fake_volume.fake_volume_type_obj("},{"line_number":1287,"context_line":"            self.context,"},{"line_number":1288,"context_line":"            **values)"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"        values \u003d {"},{"line_number":1291,"context_line":"            \u0027id\u0027: fake.VOLUME_TYPE2_ID,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_6a49695f","line":1288,"in_reply_to":"3a461143_db00dc68","updated":"2017-02-04 03:01:37.000000000","message":"I have considered about this way, but it is too much changes in this file. As it is test file and to use temporary dict doesn\u0027t impact much, I kept it here.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"}],"cinder/volume/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e558be503c056ebaf96f9ac27293af978fb6e13e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            if (volume_utils.matching_backend_name("},{"line_number":195,"context_line":"                    source_extra_specs, target_extra_specs)):"},{"line_number":196,"context_line":"                safe \u003d True"},{"line_number":197,"context_line":"        return safe"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _is_volume_migrating(self, volume):"},{"line_number":200,"context_line":"        # The migration status \u0027none\u0027 means no migration has ever been done"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_3bf1e0cd","line":197,"updated":"2017-01-31 09:19:06.000000000","message":"nit: I would remove the safe variable and just do return True where we are assigning True values and here do return False.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"0716502f2a94f57b74510fb7d441e31c7ab0199b","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            if (volume_utils.matching_backend_name("},{"line_number":195,"context_line":"                    source_extra_specs, target_extra_specs)):"},{"line_number":196,"context_line":"                safe \u003d True"},{"line_number":197,"context_line":"        return safe"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _is_volume_migrating(self, volume):"},{"line_number":200,"context_line":"        # The migration status \u0027none\u0027 means no migration has ever been done"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_8a2695b8","line":197,"in_reply_to":"3a461143_3bf1e0cd","updated":"2017-02-04 03:01:37.000000000","message":"Done.","commit_id":"6c86f20593162a534c6d2c9578517d51881c53ea"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ef4ca0ceef6d08f6ecba9a0e6e6a3ad8ac78e836","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            disabled\u003dTrue)"},{"line_number":190,"context_line":"        if len(services.objects) \u003d\u003d 1:"},{"line_number":191,"context_line":"            return True"},{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            source_extra_specs \u003d {}"},{"line_number":194,"context_line":"            if source_type:"},{"line_number":195,"context_line":"                with source_type.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_32408fa5","line":192,"range":{"start_line":192,"start_character":9,"end_line":192,"end_character":10},"updated":"2017-02-06 12:54:58.000000000","message":"nit: we can remove the word else here, since the return from the previous line ensure we\u0027ll never continue execution if there\u0027s only 1 service","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"34027cb4d95bebccbd9c213edb44b1141d81f6a1","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            disabled\u003dTrue)"},{"line_number":190,"context_line":"        if len(services.objects) \u003d\u003d 1:"},{"line_number":191,"context_line":"            return True"},{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            source_extra_specs \u003d {}"},{"line_number":194,"context_line":"            if source_type:"},{"line_number":195,"context_line":"                with source_type.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_27af7f95","line":192,"range":{"start_line":192,"start_character":9,"end_line":192,"end_character":10},"in_reply_to":"1a430d35_32408fa5","updated":"2017-02-13 06:08:31.000000000","message":"Agree.","commit_id":"c3ba4c54cb6e53fa1fe5b431c387ca152893680a"}]}
