)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eb74b221300023fb7f6f7dc7a02ffbc23f31fa84","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add patch for consistency group update in ProphetStor driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BP consistency-groups-kilo-update is introducing CG Modification"},{"line_number":10,"context_line":"support. This patch is adding ProphetStor support for the new"},{"line_number":11,"context_line":"API."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7aaa499b_0583b405","line":9,"updated":"2015-04-14 04:17:03.000000000","message":"is introducing -\u003e has introduced","commit_id":"fc3babdaa238c2889cd24f38645c3d9ecb00b2cc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eb74b221300023fb7f6f7dc7a02ffbc23f31fa84","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BP consistency-groups-kilo-update is introducing CG Modification"},{"line_number":10,"context_line":"support. This patch is adding ProphetStor support for the new"},{"line_number":11,"context_line":"API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I256f320d2563b247a2493301638a7699b66a83b6"},{"line_number":14,"context_line":"Implements: blueprint cg-modified-prophetstor"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7aaa499b_6572784b","line":11,"updated":"2015-04-14 04:17:03.000000000","message":"This patch is adding support for the new API in the ProphetStor driver.","commit_id":"fc3babdaa238c2889cd24f38645c3d9ecb00b2cc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"177c88135bf580742cda7c9261da141e187c700b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"BP consistency-groups-kilo-update has introduced CG Modification"},{"line_number":10,"context_line":"support. This patch is adding support for the new API in"},{"line_number":11,"context_line":"ProphetStor driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I256f320d2563b247a2493301638a7699b66a83b6"},{"line_number":14,"context_line":"Implements: blueprint cg-modified-prophetstor"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bab921fb_d4abe973","line":12,"updated":"2015-04-25 03:20:04.000000000","message":"You also made some styling changes. Please add the following line in the commit message:\n\nThis patch also included styling changes which replaced \\ with ().","commit_id":"04af2a8b71dc79510e03e189cb88b2847ef3ed3c"}],"cinder/tests/unit/test_prophetstor_dpl.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"177c88135bf580742cda7c9261da141e187c700b","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        self.DPL_MOCK.join_vg.return_value \u003d DATA_OUTPUT"},{"line_number":695,"context_line":"        self.DPL_MOCK.leave_vg.return_value \u003d DATA_OUTPUT"},{"line_number":696,"context_line":"        add_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":697,"context_line":"        add_vol[\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":698,"context_line":"        add_vol[\u0027display_name\u0027] \u003d add_vol[\u0027id\u0027]"},{"line_number":699,"context_line":"        remove_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":700,"context_line":"        remove_vol[\u0027id\u0027] \u003d \u0027fe2dbc515810451dab2f8c8a48d15bee\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab921fb_b4b99517","line":697,"updated":"2015-04-25 03:20:04.000000000","message":"Use six.text_type() instead of str().","commit_id":"04af2a8b71dc79510e03e189cb88b2847ef3ed3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"177c88135bf580742cda7c9261da141e187c700b","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        remove_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":700,"context_line":"        remove_vol[\u0027id\u0027] \u003d \u0027fe2dbc515810451dab2f8c8a48d15bee\u0027"},{"line_number":701,"context_line":"        remove_vol[\u0027display_name\u0027] \u003d remove_vol[\u0027id\u0027]"},{"line_number":702,"context_line":"        model_update, _, _ \u003d self.dpldriver.update_consistencygroup("},{"line_number":703,"context_line":"            self.context, DATA_IN_GROUP, [add_vol], [remove_vol])"},{"line_number":704,"context_line":"        self.DPL_MOCK.join_vg.assert_called_once_with("},{"line_number":705,"context_line":"            self._conver_uuid2hex(add_vol[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab921fb_74dadd4d","line":702,"updated":"2015-04-25 03:20:04.000000000","message":"Please use \"__\" instead of \"_\" for unused variables  because _ could interfere with _ used in logging.","commit_id":"04af2a8b71dc79510e03e189cb88b2847ef3ed3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"177c88135bf580742cda7c9261da141e187c700b","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        self.DPL_MOCK.join_vg.return_value \u003d -1, None"},{"line_number":715,"context_line":"        self.DPL_MOCK.leave_vg.return_value \u003d DATA_OUTPUT"},{"line_number":716,"context_line":"        add_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":717,"context_line":"        add_vol[\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":718,"context_line":"        add_vol[\u0027display_name\u0027] \u003d add_vol[\u0027id\u0027]"},{"line_number":719,"context_line":"        remove_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":720,"context_line":"        remove_vol[\u0027id\u0027] \u003d \u0027fe2dbc515810451dab2f8c8a48d15bee\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab921fb_d453e9e0","line":717,"updated":"2015-04-25 03:20:04.000000000","message":"six.text_type","commit_id":"04af2a8b71dc79510e03e189cb88b2847ef3ed3c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"177c88135bf580742cda7c9261da141e187c700b","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        self.DPL_MOCK.get_vg.return_value \u003d (0, DATA_OUT_CG)"},{"line_number":731,"context_line":"        self.DPL_MOCK.leave_vg.return_value \u003d -1, None"},{"line_number":732,"context_line":"        add_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":733,"context_line":"        add_vol[\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":734,"context_line":"        add_vol[\u0027display_name\u0027] \u003d add_vol[\u0027id\u0027]"},{"line_number":735,"context_line":"        remove_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":736,"context_line":"        remove_vol[\u0027id\u0027] \u003d \u0027fe2dbc515810451dab2f8c8a48d15bee\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab921fb_5456b9ce","line":733,"updated":"2015-04-25 03:20:04.000000000","message":"six.text_type","commit_id":"04af2a8b71dc79510e03e189cb88b2847ef3ed3c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"657ed7caa74c5df505e1cb50f64c63b12897f366","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    \"children\":"},{"line_number":175,"context_line":"    ["},{"line_number":176,"context_line":"        \"fe2dbc515810451dab2f8c8a48d15bee\""},{"line_number":177,"context_line":"    ]"},{"line_number":178,"context_line":"}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7ad32947_b4ee9c89","line":177,"updated":"2015-04-28 11:39:53.000000000","message":"If a dictionary (dict) or list object is longer than 80 characters, the last item in the dictionary should have a trailing comma. Just a tip if you update this patch.\n(http://docs.openstack.org/developer/hacking/#dictionaries-lists)","commit_id":"f598b2c839bb029a1049dc601401eea2da66d4e3"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"657ed7caa74c5df505e1cb50f64c63b12897f366","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        add_vol[\u0027display_name\u0027] \u003d add_vol[\u0027id\u0027]"},{"line_number":700,"context_line":"        remove_vol \u003d copy.deepcopy(DATA_IN_VOLUME_VG)"},{"line_number":701,"context_line":"        remove_vol[\u0027id\u0027] \u003d \u0027fe2dbc515810451dab2f8c8a48d15bee\u0027"},{"line_number":702,"context_line":"        remove_vol[\u0027display_name\u0027] \u003d remove_vol[\u0027id\u0027]"},{"line_number":703,"context_line":"        (model_update, add_vols, remove_vols) \u003d ("},{"line_number":704,"context_line":"            self.dpldriver.update_consistencygroup(self.context,"},{"line_number":705,"context_line":"                                                   DATA_IN_GROUP,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7ad32947_b418dc85","line":702,"updated":"2015-04-28 11:39:53.000000000","message":"Could This block code be moved to a util method? Looks like some duplicate code in those tests.","commit_id":"f598b2c839bb029a1049dc601401eea2da66d4e3"}],"cinder/volume/drivers/prophetstor/dplcommon.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"64cc6f714331a74dc96b0cc29064c9c76dc4a247","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":"    def _leave_volume_group(self, volume, cgId):"},{"line_number":800,"context_line":"        # Join volume group if consistency group id not empty"},{"line_number":801,"context_line":"        msg \u003d \u0027\u0027"},{"line_number":802,"context_line":"        try:"},{"line_number":803,"context_line":"            ret, output \u003d self.dpl.leave_vg("},{"line_number":804,"context_line":"                self._conver_uuid2hex(volume[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_5b2f24f6","line":801,"updated":"2015-04-01 09:31:35.000000000","message":"Cloud we use \u0027None\u0027 in there?","commit_id":"4f372302197984a0404769d8a2154ca4312f0e20"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eb74b221300023fb7f6f7dc7a02ffbc23f31fa84","unresolved":false,"context_lines":[{"line_number":798,"context_line":"                     {\u0027id\u0027: volume[\u0027id\u0027], \u0027cgid\u0027: cgId})"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    def _leave_volume_group(self, volume, cgId):"},{"line_number":801,"context_line":"        # Join volume group if consistency group id not empty"},{"line_number":802,"context_line":"        msg \u003d \u0027\u0027"},{"line_number":803,"context_line":"        try:"},{"line_number":804,"context_line":"            ret, output \u003d self.dpl.leave_vg("}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_f39548e4","line":801,"updated":"2015-04-14 04:17:03.000000000","message":"Join -\u003e Leave","commit_id":"fc3babdaa238c2889cd24f38645c3d9ecb00b2cc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eb74b221300023fb7f6f7dc7a02ffbc23f31fa84","unresolved":false,"context_lines":[{"line_number":990,"context_line":"                    \"group %(group)s due to \""},{"line_number":991,"context_line":"                    \"%(ret)s.\") % {\"vol\": vid, \"group\": cgid,"},{"line_number":992,"context_line":"                                   \"ret\": six.text_type(e)}"},{"line_number":993,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":994,"context_line":"        # Process leave volumes."},{"line_number":995,"context_line":"        try:"},{"line_number":996,"context_line":"            for volume in removevollist:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_85f224d1","line":993,"updated":"2015-04-14 04:17:03.000000000","message":"Please add a unit test for this code path. For example, you can use assertRaises.","commit_id":"fc3babdaa238c2889cd24f38645c3d9ecb00b2cc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eb74b221300023fb7f6f7dc7a02ffbc23f31fa84","unresolved":false,"context_lines":[{"line_number":1002,"context_line":"                    \"group %(group)s due to \""},{"line_number":1003,"context_line":"                    \"%(ret)s.\") % {\"vol\": vid, \"group\": cgid,"},{"line_number":1004,"context_line":"                                   \"ret\": six.text_type(e)}"},{"line_number":1005,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1006,"context_line":"        return model_update, None, None"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_65edd8ee","line":1005,"updated":"2015-04-14 04:17:03.000000000","message":"Same here","commit_id":"fc3babdaa238c2889cd24f38645c3d9ecb00b2cc"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"d6f613c597e2d0a374e7e8b8a5b08d966e7e1c08","unresolved":false,"context_lines":[{"line_number":683,"context_line":""},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"class DPLCOMMONDriver(driver.VolumeDriver):"},{"line_number":686,"context_line":"    \"\"\"class of dpl storage adapter.\"\"\""},{"line_number":687,"context_line":"    VERSION \u003d \u00272.0.3\u0027"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_9bf4a8f2","line":686,"updated":"2015-05-04 08:12:49.000000000","message":"It would be better if you change \"class\" to \"Class\".","commit_id":"34ea0b3b506da129569f464842ef68421e9e65c0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"05fe48d72c7ca98fd178b9ddffd7de452a17f408","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                self._conver_uuid2hex(cgId))"},{"line_number":807,"context_line":"        except Exception as e:"},{"line_number":808,"context_line":"            ret \u003d errno.EFAULT"},{"line_number":809,"context_line":"            msg \u003d _(\u0027Fexvisor failed to leave volume %(id)s \u0027"},{"line_number":810,"context_line":"                    \u0027due to %(reason)s.\u0027) % {\"id\": volume[\u0027id\u0027],"},{"line_number":811,"context_line":"                                             \"reason\": six.text_type(e)}"},{"line_number":812,"context_line":"        if ret:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a0c5dc1_5b7443ce","line":809,"updated":"2015-05-12 04:53:34.000000000","message":"leave -\u003e remove","commit_id":"5f12e0ad7855a55f8dc4e9ea6a708ddbcf1f8d1c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"05fe48d72c7ca98fd178b9ddffd7de452a17f408","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                                             \"reason\": six.text_type(e)}"},{"line_number":812,"context_line":"        if ret:"},{"line_number":813,"context_line":"            if not msg:"},{"line_number":814,"context_line":"                msg \u003d _(\u0027Flexvisor failed to leave volume %(id)s \u0027"},{"line_number":815,"context_line":"                        \u0027from group %(cgid)s.\u0027) % {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":816,"context_line":"                                                   \u0027cgid\u0027: cgId}"},{"line_number":817,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a0c5dc1_fb62d715","line":814,"updated":"2015-05-12 04:53:34.000000000","message":"leave -\u003e remove","commit_id":"5f12e0ad7855a55f8dc4e9ea6a708ddbcf1f8d1c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"05fe48d72c7ca98fd178b9ddffd7de452a17f408","unresolved":false,"context_lines":[{"line_number":816,"context_line":"                                                   \u0027cgid\u0027: cgId}"},{"line_number":817,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":818,"context_line":"        else:"},{"line_number":819,"context_line":"            LOG.info(_LI(\u0027Flexvisor succeeded to leave volume %(id)s from \u0027"},{"line_number":820,"context_line":"                         \u0027group %(cgid)s.\u0027),"},{"line_number":821,"context_line":"                     {\u0027id\u0027: volume[\u0027id\u0027], \u0027cgid\u0027: cgId})"},{"line_number":822,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a0c5dc1_db671324","line":819,"updated":"2015-05-12 04:53:34.000000000","message":"leave -\u003e remove","commit_id":"5f12e0ad7855a55f8dc4e9ea6a708ddbcf1f8d1c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"05fe48d72c7ca98fd178b9ddffd7de452a17f408","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        try:"},{"line_number":982,"context_line":"            for volume in addvollist:"},{"line_number":983,"context_line":"                vid \u003d volume[\u0027id\u0027]"},{"line_number":984,"context_line":"                # Verify the volume existed in the group or not."},{"line_number":985,"context_line":"                if self._conver_uuid2hex(vid) in group_members:"},{"line_number":986,"context_line":"                    continue"},{"line_number":987,"context_line":"                self._join_volume_group(volume, cgid)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a0c5dc1_9b3f5bd6","line":984,"updated":"2015-05-12 04:53:34.000000000","message":"Suggest rewording:\n\nVerify the volume exists in the group.","commit_id":"5f12e0ad7855a55f8dc4e9ea6a708ddbcf1f8d1c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"05fe48d72c7ca98fd178b9ddffd7de452a17f408","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                if self._conver_uuid2hex(vid) in group_members:"},{"line_number":999,"context_line":"                    self._leave_volume_group(volume, cgid)"},{"line_number":1000,"context_line":"        except exception as e:"},{"line_number":1001,"context_line":"            msg \u003d _(\"Fexvisor failed to leave the volume %(vol)s in the \""},{"line_number":1002,"context_line":"                    \"group %(group)s due to \""},{"line_number":1003,"context_line":"                    \"%(ret)s.\") % {\"vol\": vid, \"group\": cgid,"},{"line_number":1004,"context_line":"                                   \"ret\": six.text_type(e)}"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a0c5dc1_1b2c8baa","line":1001,"updated":"2015-05-12 04:53:34.000000000","message":"failed to remove the volume from the group","commit_id":"5f12e0ad7855a55f8dc4e9ea6a708ddbcf1f8d1c"}]}
