)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"eb06d2b633755fb4b6b4212628e4d2830208961a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"EMC VMAX Modify CG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for modify CG in VMAX driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"implements blueprint emc-vmax-modify-cg"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_500ebae5","line":9,"updated":"2015-07-15 14:28:35.000000000","message":"Could you be a little more verbose here? What had to be added to implement that support?","commit_id":"c40d776d9d243fdc69e62706cd6aa06ffb6d11a3"}],"cinder/volume/drivers/emc/emc_vmax_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a7ab59c2a514a73d23eb22c88f7681962f20c86d","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"        return modelUpdate, None, None"},{"line_number":4115,"context_line":""},{"line_number":4116,"context_line":"    def _get_volume_instance_names(self, volumes):"},{"line_number":4117,"context_line":"        \"\"\"Get volume instance names from volume"},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"        :param volumes: volume objects"},{"line_number":4120,"context_line":"        :returns: volumeInstanceNames"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_ae082b81","line":4117,"updated":"2015-06-24 01:24:58.000000000","message":"Should end in a period.","commit_id":"4bbe2cff8c60203d5e9183a441a9baf960529613"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"93d7ca2d880afa299d5a66524fd4fd63b6fabbae","unresolved":false,"context_lines":[{"line_number":4114,"context_line":"        return modelUpdate, None, None"},{"line_number":4115,"context_line":""},{"line_number":4116,"context_line":"    def _get_volume_instance_names(self, volumes):"},{"line_number":4117,"context_line":"        \"\"\"Get volume instance names from volume"},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"        :param volumes: volume objects"},{"line_number":4120,"context_line":"        :returns: volumeInstanceNames"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_2e03bb11","line":4117,"in_reply_to":"fa32b979_ae082b81","updated":"2015-06-24 01:36:36.000000000","message":"Done","commit_id":"4bbe2cff8c60203d5e9183a441a9baf960529613"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"822525d8a523a75329939b62f1c09057f10b9844","unresolved":false,"context_lines":[{"line_number":4064,"context_line":"        :param remove_volumes: the volumes uuids you want to remove from"},{"line_number":4065,"context_line":"                               the CG"},{"line_number":4066,"context_line":"        \"\"\""},{"line_number":4067,"context_line":"        LOG.info(_LI(\"Update Consistency Group: %(group)s.\"),"},{"line_number":4068,"context_line":"                 {\u0027group\u0027: group[\u0027id\u0027]})"},{"line_number":4069,"context_line":""},{"line_number":4070,"context_line":"        modelUpdate \u003d {\u0027status\u0027: \u0027available\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_a3f38b9d","line":4067,"updated":"2015-07-01 09:26:51.000000000","message":"Good to have more context like add_volumes, remove_volumes.","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e40cba549aef068ad1760c404fba220d8ed38263","unresolved":false,"context_lines":[{"line_number":4064,"context_line":"        :param remove_volumes: the volumes uuids you want to remove from"},{"line_number":4065,"context_line":"                               the CG"},{"line_number":4066,"context_line":"        \"\"\""},{"line_number":4067,"context_line":"        LOG.info(_LI(\"Update Consistency Group: %(group)s.\"),"},{"line_number":4068,"context_line":"                 {\u0027group\u0027: group[\u0027id\u0027]})"},{"line_number":4069,"context_line":""},{"line_number":4070,"context_line":"        modelUpdate \u003d {\u0027status\u0027: \u0027available\u0027}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_87714c0e","line":4067,"in_reply_to":"ba3cc151_a3f38b9d","updated":"2015-07-03 01:28:40.000000000","message":"Done","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"822525d8a523a75329939b62f1c09057f10b9844","unresolved":false,"context_lines":[{"line_number":4088,"context_line":"            cgInstanceName \u003d ("},{"line_number":4089,"context_line":"                self._find_consistency_group(replicationService, cg_name))"},{"line_number":4090,"context_line":"            if cgInstanceName is None:"},{"line_number":4091,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\") % cg_name)"},{"line_number":4092,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":4093,"context_line":"                    data\u003dexception_message)"},{"line_number":4094,"context_line":"            # Add volume(s) to a consistency group"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_8399a721","line":4091,"updated":"2015-07-01 09:26:51.000000000","message":"Do we need to raise ConsistencyGroupNotFound instead of VolumeBackendAPIException?","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca395734edb0b0a9dfc7d2c53be48cb540f1ecb2","unresolved":false,"context_lines":[{"line_number":4088,"context_line":"            cgInstanceName \u003d ("},{"line_number":4089,"context_line":"                self._find_consistency_group(replicationService, cg_name))"},{"line_number":4090,"context_line":"            if cgInstanceName is None:"},{"line_number":4091,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\") % cg_name)"},{"line_number":4092,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":4093,"context_line":"                    data\u003dexception_message)"},{"line_number":4094,"context_line":"            # Add volume(s) to a consistency group"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ffd90623","line":4091,"in_reply_to":"ba3cc151_8399a721","updated":"2015-07-01 18:34:17.000000000","message":"Good suggestion.","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e40cba549aef068ad1760c404fba220d8ed38263","unresolved":false,"context_lines":[{"line_number":4088,"context_line":"            cgInstanceName \u003d ("},{"line_number":4089,"context_line":"                self._find_consistency_group(replicationService, cg_name))"},{"line_number":4090,"context_line":"            if cgInstanceName is None:"},{"line_number":4091,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\") % cg_name)"},{"line_number":4092,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":4093,"context_line":"                    data\u003dexception_message)"},{"line_number":4094,"context_line":"            # Add volume(s) to a consistency group"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_a757b056","line":4091,"in_reply_to":"ba3cc151_ffd90623","updated":"2015-07-03 01:28:40.000000000","message":"Done","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"822525d8a523a75329939b62f1c09057f10b9844","unresolved":false,"context_lines":[{"line_number":4089,"context_line":"                self._find_consistency_group(replicationService, cg_name))"},{"line_number":4090,"context_line":"            if cgInstanceName is None:"},{"line_number":4091,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\") % cg_name)"},{"line_number":4092,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":4093,"context_line":"                    data\u003dexception_message)"},{"line_number":4094,"context_line":"            # Add volume(s) to a consistency group"},{"line_number":4095,"context_line":"            if add_instance_names:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_e3551350","line":4092,"updated":"2015-07-01 09:26:51.000000000","message":"This will be caught at 4106 and another VolumeBackendAPIException instance is raised. Can we have this outside try..except?\n\nor\n\nhave one more except for VolumeBackendAPIException  which just raise.","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e40cba549aef068ad1760c404fba220d8ed38263","unresolved":false,"context_lines":[{"line_number":4089,"context_line":"                self._find_consistency_group(replicationService, cg_name))"},{"line_number":4090,"context_line":"            if cgInstanceName is None:"},{"line_number":4091,"context_line":"                exception_message \u003d (_(\"Cannot find CG group %s.\") % cg_name)"},{"line_number":4092,"context_line":"                raise exception.VolumeBackendAPIException("},{"line_number":4093,"context_line":"                    data\u003dexception_message)"},{"line_number":4094,"context_line":"            # Add volume(s) to a consistency group"},{"line_number":4095,"context_line":"            if add_instance_names:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_e758588c","line":4092,"in_reply_to":"ba3cc151_e3551350","updated":"2015-07-03 01:28:40.000000000","message":"Done","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"822525d8a523a75329939b62f1c09057f10b9844","unresolved":false,"context_lines":[{"line_number":4099,"context_line":"                    extraSpecs)"},{"line_number":4100,"context_line":"            # Remove volume(s) from a consistency group"},{"line_number":4101,"context_line":"            if remove_instance_names:"},{"line_number":4102,"context_line":"                self.provision.remove_volume_from_cg("},{"line_number":4103,"context_line":"                    self.conn, replicationService, cgInstanceName,"},{"line_number":4104,"context_line":"                    remove_instance_names, cg_name, None,"},{"line_number":4105,"context_line":"                    extraSpecs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_c1ba470a","line":4102,"updated":"2015-07-01 09:26:51.000000000","message":"what will happen if add_volume_to_cg succeeds and remove fails? I guess user will get an error. Will cg become inconsistent?","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca395734edb0b0a9dfc7d2c53be48cb540f1ecb2","unresolved":false,"context_lines":[{"line_number":4099,"context_line":"                    extraSpecs)"},{"line_number":4100,"context_line":"            # Remove volume(s) from a consistency group"},{"line_number":4101,"context_line":"            if remove_instance_names:"},{"line_number":4102,"context_line":"                self.provision.remove_volume_from_cg("},{"line_number":4103,"context_line":"                    self.conn, replicationService, cgInstanceName,"},{"line_number":4104,"context_line":"                    remove_instance_names, cg_name, None,"},{"line_number":4105,"context_line":"                    extraSpecs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_1f4aaaac","line":4102,"in_reply_to":"ba3cc151_c1ba470a","updated":"2015-07-01 18:34:17.000000000","message":"When you add volumes to a CG, they are not consistent. They will only be consistent when you take a snapshot from a CG.","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca395734edb0b0a9dfc7d2c53be48cb540f1ecb2","unresolved":false,"context_lines":[{"line_number":4102,"context_line":"                self.provision.remove_volume_from_cg("},{"line_number":4103,"context_line":"                    self.conn, replicationService, cgInstanceName,"},{"line_number":4104,"context_line":"                    remove_instance_names, cg_name, None,"},{"line_number":4105,"context_line":"                    extraSpecs)"},{"line_number":4106,"context_line":"        except Exception as ex:"},{"line_number":4107,"context_line":"            LOG.error(_LE(\"Exception: %(ex)s\"), {\u0027ex\u0027: ex})"},{"line_number":4108,"context_line":"            exceptionMessage \u003d (_(\"Failed to update consistency group:\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3f61ae05","line":4105,"updated":"2015-07-01 18:34:17.000000000","message":"We can add:\n\nexcept VolumeBackendAPIException:\n    raise","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"822525d8a523a75329939b62f1c09057f10b9844","unresolved":false,"context_lines":[{"line_number":4117,"context_line":"        \"\"\"Get volume instance names from volume."},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"        :param volumes: volume objects"},{"line_number":4120,"context_line":"        :returns: volumeInstanceNames"},{"line_number":4121,"context_line":"        \"\"\""},{"line_number":4122,"context_line":"        volumeInstanceNames \u003d []"},{"line_number":4123,"context_line":"        for volume in volumes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_834e8794","line":4120,"updated":"2015-07-01 09:26:51.000000000","message":"volume instance names","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e40cba549aef068ad1760c404fba220d8ed38263","unresolved":false,"context_lines":[{"line_number":4117,"context_line":"        \"\"\"Get volume instance names from volume."},{"line_number":4118,"context_line":""},{"line_number":4119,"context_line":"        :param volumes: volume objects"},{"line_number":4120,"context_line":"        :returns: volumeInstanceNames"},{"line_number":4121,"context_line":"        \"\"\""},{"line_number":4122,"context_line":"        volumeInstanceNames \u003d []"},{"line_number":4123,"context_line":"        for volume in volumes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_674d28c3","line":4120,"in_reply_to":"ba3cc151_834e8794","updated":"2015-07-03 01:28:40.000000000","message":"Done","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"822525d8a523a75329939b62f1c09057f10b9844","unresolved":false,"context_lines":[{"line_number":4124,"context_line":"            volumeInstance \u003d self._find_lun(volume)"},{"line_number":4125,"context_line":"            if volumeInstance is None:"},{"line_number":4126,"context_line":"                LOG.error(_LE(\"Volume %(name)s not found on the array. \""},{"line_number":4127,"context_line":"                              \"No volume to migrate using retype.\"),"},{"line_number":4128,"context_line":"                          {\u0027name\u0027: volume[\u0027name\u0027]})"},{"line_number":4129,"context_line":"            else:"},{"line_number":4130,"context_line":"                volumeInstanceNames.append(volumeInstance.path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_433f1fd6","line":4127,"updated":"2015-07-01 09:26:51.000000000","message":"Do we need \"No volume to migrate using retype.\"?","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ca395734edb0b0a9dfc7d2c53be48cb540f1ecb2","unresolved":false,"context_lines":[{"line_number":4124,"context_line":"            volumeInstance \u003d self._find_lun(volume)"},{"line_number":4125,"context_line":"            if volumeInstance is None:"},{"line_number":4126,"context_line":"                LOG.error(_LE(\"Volume %(name)s not found on the array. \""},{"line_number":4127,"context_line":"                              \"No volume to migrate using retype.\"),"},{"line_number":4128,"context_line":"                          {\u0027name\u0027: volume[\u0027name\u0027]})"},{"line_number":4129,"context_line":"            else:"},{"line_number":4130,"context_line":"                volumeInstanceNames.append(volumeInstance.path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_7fb41681","line":4127,"in_reply_to":"ba3cc151_433f1fd6","updated":"2015-07-01 18:34:17.000000000","message":"This message should be fixed.","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e40cba549aef068ad1760c404fba220d8ed38263","unresolved":false,"context_lines":[{"line_number":4124,"context_line":"            volumeInstance \u003d self._find_lun(volume)"},{"line_number":4125,"context_line":"            if volumeInstance is None:"},{"line_number":4126,"context_line":"                LOG.error(_LE(\"Volume %(name)s not found on the array. \""},{"line_number":4127,"context_line":"                              \"No volume to migrate using retype.\"),"},{"line_number":4128,"context_line":"                          {\u0027name\u0027: volume[\u0027name\u0027]})"},{"line_number":4129,"context_line":"            else:"},{"line_number":4130,"context_line":"                volumeInstanceNames.append(volumeInstance.path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_27cac01b","line":4127,"in_reply_to":"ba3cc151_7fb41681","updated":"2015-07-03 01:28:40.000000000","message":"Done","commit_id":"f2fbed3b65315dd90acecc0ae0865a7bee62c15d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"19ebe1ab556886eae418d9bc2174eaa17c70bf14","unresolved":false,"context_lines":[{"line_number":4119,"context_line":"        except exception.ConsistencyGroupNotFound:"},{"line_number":4120,"context_line":"            raise"},{"line_number":4121,"context_line":"        except Exception as ex:"},{"line_number":4122,"context_line":"            LOG.error(_LE(\"Exception: %(ex)s\"), {\u0027ex\u0027: ex})"},{"line_number":4123,"context_line":"            exceptionMessage \u003d (_(\"Failed to update consistency group:\""},{"line_number":4124,"context_line":"                                  \" %(cgName)s.\")"},{"line_number":4125,"context_line":"                                % {\u0027cgName\u0027: cg_name})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_d7dc8648","line":4122,"updated":"2015-07-25 00:13:43.000000000","message":"I would rather see the next LOG.error changed to a LOG.exception and this one removed.","commit_id":"9218a0b225c77d2fb1af2901a88dc8e8b0cd4c91"}],"cinder/volume/drivers/emc/emc_vmax_iscsi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a7ab59c2a514a73d23eb22c88f7681962f20c86d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        2.1.3 - Fixed a problem with FAST support (bug #1435069)"},{"line_number":48,"context_line":"        2.2.0 - Add manage/unmanage"},{"line_number":49,"context_line":"    \"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    VERSION \u003d \"2.2.0\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_ae7fcbdd","line":50,"updated":"2015-06-24 01:24:58.000000000","message":"Should this increment too?","commit_id":"4bbe2cff8c60203d5e9183a441a9baf960529613"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"93d7ca2d880afa299d5a66524fd4fd63b6fabbae","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        2.1.3 - Fixed a problem with FAST support (bug #1435069)"},{"line_number":48,"context_line":"        2.2.0 - Add manage/unmanage"},{"line_number":49,"context_line":"    \"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    VERSION \u003d \"2.2.0\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_ee639318","line":50,"in_reply_to":"fa32b979_ae7fcbdd","updated":"2015-06-24 01:36:36.000000000","message":"You are right. This should be incremented too. Fixed.","commit_id":"4bbe2cff8c60203d5e9183a441a9baf960529613"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2863ea3bd4903217ff0b4e31262e9b6e849094be","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        super(EMCVMAXISCSIDriver, self).__init__(*args, **kwargs)"},{"line_number":57,"context_line":"        self.common \u003d\\"},{"line_number":58,"context_line":"            emc_vmax_common.EMCVMAXCommon(\u0027iSCSI\u0027,"},{"line_number":59,"context_line":"                                          configuration\u003dself.configuration)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_07253f07","line":57,"updated":"2015-07-16 00:55:55.000000000","message":"It\u0027s better to use the following, keep consistent with \u0027FC\u0027\nself.common \u003d emc_vmax_common.EMCVMAXCommon(\n    \u0027iSCSI\u0027,\n    configuration\u003dself.configuration)","commit_id":"c40d776d9d243fdc69e62706cd6aa06ffb6d11a3"}],"cinder/volume/drivers/emc/emc_vmax_provision.py":[{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"d1448c938b425fac703f0425db09f31c27e80c9f","unresolved":false,"context_lines":[{"line_number":987,"context_line":"            if rc !\u003d 0:"},{"line_number":988,"context_line":"                exceptionMessage \u003d (_("},{"line_number":989,"context_line":"                    \"Failed to add volume %(volumeName)s \""},{"line_number":990,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":991,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":992,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":993,"context_line":"                       \u0027cgName\u0027: cgName,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_780f932e","line":990,"updated":"2015-07-13 19:19:13.000000000","message":"i think one space is enough after \u0027%(cgName)s.\u0027","commit_id":"c40d776d9d243fdc69e62706cd6aa06ffb6d11a3"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2863ea3bd4903217ff0b4e31262e9b6e849094be","unresolved":false,"context_lines":[{"line_number":988,"context_line":"                exceptionMessage \u003d (_("},{"line_number":989,"context_line":"                    \"Failed to add volume %(volumeName)s \""},{"line_number":990,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":991,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":992,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":993,"context_line":"                       \u0027cgName\u0027: cgName,"},{"line_number":994,"context_line":"                       \u0027rc\u0027: rc,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_07945f40","line":991,"updated":"2015-07-16 00:55:55.000000000","message":"The same as above after \u0027%(rc)lu.\u0027","commit_id":"c40d776d9d243fdc69e62706cd6aa06ffb6d11a3"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"eb06d2b633755fb4b6b4212628e4d2830208961a","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"            if rc !\u003d 0:"},{"line_number":1040,"context_line":"                exceptionMessage \u003d (_("},{"line_number":1041,"context_line":"                    \"Failed to remove volume %(volumeName)s \""},{"line_number":1042,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":1043,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":1044,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":1045,"context_line":"                       \u0027cgName\u0027: cgName,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_d0540acb","line":1042,"updated":"2015-07-15 14:28:35.000000000","message":"Same comment as nikesh\u0027s above: One space after the period is fine; don\u0027t need two.","commit_id":"c40d776d9d243fdc69e62706cd6aa06ffb6d11a3"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2863ea3bd4903217ff0b4e31262e9b6e849094be","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"                exceptionMessage \u003d (_("},{"line_number":1041,"context_line":"                    \"Failed to remove volume %(volumeName)s \""},{"line_number":1042,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":1043,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":1044,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":1045,"context_line":"                       \u0027cgName\u0027: cgName,"},{"line_number":1046,"context_line":"                       \u0027rc\u0027: rc,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_a7757332","line":1043,"updated":"2015-07-16 00:55:55.000000000","message":"The same as above after \u0027%(rc)lu.\u0027","commit_id":"c40d776d9d243fdc69e62706cd6aa06ffb6d11a3"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"ca294d48aa758c4cc89e6d7b5a99e3aaf259105a","unresolved":false,"context_lines":[{"line_number":985,"context_line":"            if rc !\u003d 0:"},{"line_number":986,"context_line":"                exceptionMessage \u003d (_("},{"line_number":987,"context_line":"                    \"Failed to add volume %(volumeName)s \""},{"line_number":988,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":989,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":990,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":991,"context_line":"                       \u0027cgName\u0027: cgName,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_f1b33596","line":988,"updated":"2015-07-23 10:01:16.000000000","message":"There\u0027s an extra space.","commit_id":"c6c3a4e0fcca2e812925b31a21c7e4a2be25ee9d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"014dec883d3ec62fe0a911f7ab5d80fe9c25f532","unresolved":false,"context_lines":[{"line_number":985,"context_line":"            if rc !\u003d 0:"},{"line_number":986,"context_line":"                exceptionMessage \u003d (_("},{"line_number":987,"context_line":"                    \"Failed to add volume %(volumeName)s \""},{"line_number":988,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":989,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":990,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":991,"context_line":"                       \u0027cgName\u0027: cgName,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_2f6b5f86","line":988,"in_reply_to":"3a50d1a3_f1b33596","updated":"2015-07-23 16:36:44.000000000","message":"Done","commit_id":"c6c3a4e0fcca2e812925b31a21c7e4a2be25ee9d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"ca294d48aa758c4cc89e6d7b5a99e3aaf259105a","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"            if rc !\u003d 0:"},{"line_number":1038,"context_line":"                exceptionMessage \u003d (_("},{"line_number":1039,"context_line":"                    \"Failed to remove volume %(volumeName)s \""},{"line_number":1040,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":1041,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":1042,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":1043,"context_line":"                       \u0027cgName\u0027: cgName,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_31119d5d","line":1040,"updated":"2015-07-23 10:01:16.000000000","message":"First, The same as above. Second, it\u0027s should be \"Failed to remove volume xxx from consistency group\", not \"remove to consistency group\".","commit_id":"c6c3a4e0fcca2e812925b31a21c7e4a2be25ee9d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"014dec883d3ec62fe0a911f7ab5d80fe9c25f532","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"            if rc !\u003d 0:"},{"line_number":1038,"context_line":"                exceptionMessage \u003d (_("},{"line_number":1039,"context_line":"                    \"Failed to remove volume %(volumeName)s \""},{"line_number":1040,"context_line":"                    \"to consistency group %(cgName)s.  \""},{"line_number":1041,"context_line":"                    \"Return code: %(rc)lu.  Error: %(error)s.\")"},{"line_number":1042,"context_line":"                    % {\u0027volumeName\u0027: volumeName,"},{"line_number":1043,"context_line":"                       \u0027cgName\u0027: cgName,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_8f707373","line":1040,"in_reply_to":"3a50d1a3_31119d5d","updated":"2015-07-23 16:36:44.000000000","message":"Done","commit_id":"c6c3a4e0fcca2e812925b31a21c7e4a2be25ee9d"}]}
