)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chris Morrell \u003cgomeler@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-04-26 16:06:03 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"SolidFire Generic Groups Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In order to satisfy the changes around generic groups in Cinder, the"},{"line_number":10,"context_line":"consistency group calls within the SolidFire driver were wrapped in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_162a0d7e","line":7,"updated":"2017-04-27 03:01:38.000000000","message":"SolidFire: Add CG support in Generic Volume Groups","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In order to satisfy the changes around generic groups in Cinder, the"},{"line_number":10,"context_line":"consistency group calls within the SolidFire driver were wrapped in the"},{"line_number":11,"context_line":"appropriate generic group calls. Asides from a few key changes, there is no"},{"line_number":12,"context_line":"functional change in the underlying methods."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I150133c02f5c35a7ef226f99fe30f34c484c4341"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_f6056112","line":11,"updated":"2017-04-27 03:01:38.000000000","message":"Please wrap it at 72 chars.","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I150133c02f5c35a7ef226f99fe30f34c484c4341"},{"line_number":15,"context_line":"Closes-Bug: #1682241"},{"line_number":16,"context_line":"Implements: blueprint add generic groups to SolidFire Cinder driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_1601ed05","line":16,"range":{"start_line":16,"start_character":22,"end_line":16,"end_character":67},"updated":"2017-04-27 03:01:38.000000000","message":"Is this the blueprint you registered for this?  \"err\" is the name of the blueprint?\n\nhttps://blueprints.launchpad.net/cinder/+spec/err\n\n It looks like you may have forgotten to give a name to this blueprint and it automatically generated this \"err\" as the name of the blueprint?  Anyway, your blueprint name should be something like this: solidfire-add-cg-to-generic-volume-groups\n\nThen you reference it here:\n\nImplements: blueprint solidfire-add-cg-to-generic-volume-groups","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5b7cae1b33b55be00e1d6ebf4706528d8831bb13","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I150133c02f5c35a7ef226f99fe30f34c484c4341"},{"line_number":15,"context_line":"Closes-Bug: #1682241"},{"line_number":16,"context_line":"Implements: blueprint solidfire-add-cg-to-generic-volume-groups"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff0f0b1f_1f4fc734","line":16,"updated":"2017-05-22 14:39:06.000000000","message":"Please ping Sean to approve your blueprint.","commit_id":"54fac52a8d329ceaad348749e89c2f1a024a1185"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1633,"context_line":"                source_group,"},{"line_number":1634,"context_line":"                source_vols)"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"        # We don\u0027t support any other group types at this time."},{"line_number":1637,"context_line":"        raise NotImplementedError()"},{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"    def create_group_snapshot(self, ctxt, group_snapshot, snapshots):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_b6591936","line":1636,"range":{"start_line":1636,"start_character":10,"end_line":1636,"end_character":62},"updated":"2017-04-27 03:01:38.000000000","message":"This is not true.  By raising NotImplementedError, the default implementation will handle this in the generic way.  It will create a generic group that does not support consistent group snapshot.  So this comment should be changed.","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"        if vol_utils.is_group_a_cg_snapshot_type(group_snapshot):"},{"line_number":1642,"context_line":"            return self.create_cgsnapshot(ctxt, group_snapshot, snapshots)"},{"line_number":1643,"context_line":""},{"line_number":1644,"context_line":"        # We don\u0027t support any other group types at this time."},{"line_number":1645,"context_line":"        raise NotImplementedError()"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"    def delete_group(self, ctxt, group, volumes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_36450944","line":1644,"updated":"2017-04-27 03:01:38.000000000","message":"Same.  Just change it to \"It will be handled by the default implementation to create a group snapshot that does not support consistency\" or something like that.","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1667,"context_line":"        # We don\u0027t support any other group types at this time."},{"line_number":1668,"context_line":"        raise NotImplementedError()"},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"    def create_consistencygroup_from_src(self, ctxt, group, volumes,"},{"line_number":1671,"context_line":"                                         cgsnapshot, snapshots,"},{"line_number":1672,"context_line":"                                         source_cg, source_vols):"},{"line_number":1673,"context_line":"        if cgsnapshot and snapshots:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_966bbdb5","line":1670,"range":{"start_line":1670,"start_character":8,"end_line":1670,"end_character":40},"updated":"2017-04-27 03:01:38.000000000","message":"I suggest adding _ in front of it to make it an internal function: _create_consistencygroup_from_src","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1703,"context_line":"                self._delete_cgsnapshot_by_name(gsnap_name)"},{"line_number":1704,"context_line":"            return {\u0027status\u0027: fields.GroupStatus.AVAILABLE}, vol_models"},{"line_number":1705,"context_line":""},{"line_number":1706,"context_line":"    def create_cgsnapshot(self, ctxt, cgsnapshot, snapshots):"},{"line_number":1707,"context_line":"        vol_ids \u003d [snapshot[\u0027volume_id\u0027] for snapshot in snapshots]"},{"line_number":1708,"context_line":"        vol_names \u003d [self.configuration.sf_volume_prefix + vol_id"},{"line_number":1709,"context_line":"                     for vol_id in vol_ids]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_5661b5d2","line":1706,"updated":"2017-04-27 03:01:38.000000000","message":"_create_cgsnapshot","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"        # group object means there is nothing to update on the cluster."},{"line_number":1727,"context_line":"        return None, None, None"},{"line_number":1728,"context_line":""},{"line_number":1729,"context_line":"    def delete_cgsnapshot(self, ctxt, cgsnapshot, snapshots):"},{"line_number":1730,"context_line":"        snap_name \u003d self.configuration.sf_volume_prefix + cgsnapshot[\u0027id\u0027]"},{"line_number":1731,"context_line":"        self._delete_cgsnapshot_by_name(snap_name)"},{"line_number":1732,"context_line":"        return None, None"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_169d6dbb","line":1729,"range":{"start_line":1729,"start_character":8,"end_line":1729,"end_character":25},"updated":"2017-04-27 03:01:38.000000000","message":"_delete_cgsnapshot","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1731,"context_line":"        self._delete_cgsnapshot_by_name(snap_name)"},{"line_number":1732,"context_line":"        return None, None"},{"line_number":1733,"context_line":""},{"line_number":1734,"context_line":"    def delete_consistencygroup(self, ctxt, group, volumes):"},{"line_number":1735,"context_line":"        #TODO: exception handling and return correctly updated volume_models."},{"line_number":1736,"context_line":"        for vol in volumes:"},{"line_number":1737,"context_line":"            self.delete_volume(vol)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_f6a1e1f9","line":1734,"range":{"start_line":1734,"start_character":8,"end_line":1734,"end_character":31},"updated":"2017-04-27 03:01:38.000000000","message":"_delete_consistencygroup","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4564a6e58ceb580b20a65619f4cef9b81c71666c","unresolved":false,"context_lines":[{"line_number":1732,"context_line":"        return None, None"},{"line_number":1733,"context_line":""},{"line_number":1734,"context_line":"    def delete_consistencygroup(self, ctxt, group, volumes):"},{"line_number":1735,"context_line":"        #TODO: exception handling and return correctly updated volume_models."},{"line_number":1736,"context_line":"        for vol in volumes:"},{"line_number":1737,"context_line":"            self.delete_volume(vol)"},{"line_number":1738,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_76add1e7","line":1735,"range":{"start_line":1735,"start_character":8,"end_line":1735,"end_character":15},"updated":"2017-04-27 03:01:38.000000000","message":"Need a space after #\n\n# TODO(your name): …...","commit_id":"e31de37d99aa62b367e99b83e005036849036032"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84b4dde7b535551ca63b6138f912455457d613b4","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"    def delete_group(self, ctxt, group, volumes):"},{"line_number":1648,"context_line":"        # Delete a volume group. SolidFire does not track volume groups,"},{"line_number":1649,"context_line":"        # however we do need to actually remove the member volumes of the"},{"line_number":1650,"context_line":"        # group. Right now only consistent volume groups are supported."},{"line_number":1651,"context_line":"        if vol_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":1652,"context_line":"            return self._delete_consistencygroup(ctxt, group, volumes)"},{"line_number":1653,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_df8a6f68","line":1650,"range":{"start_line":1650,"start_character":17,"end_line":1650,"end_character":71},"updated":"2017-05-22 14:37:21.000000000","message":"This sentence should be removed because non-consistent groups are supported using the default implementation.","commit_id":"54fac52a8d329ceaad348749e89c2f1a024a1185"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"84f15cd2c4baa66ae6635820697480c48c2ed3f2","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"    def delete_group(self, ctxt, group, volumes):"},{"line_number":1648,"context_line":"        # Delete a volume group. SolidFire does not track volume groups,"},{"line_number":1649,"context_line":"        # however we do need to actually remove the member volumes of the"},{"line_number":1650,"context_line":"        # group. Right now only consistent volume groups are supported."},{"line_number":1651,"context_line":"        if vol_utils.is_group_a_cg_snapshot_type(group):"},{"line_number":1652,"context_line":"            return self._delete_consistencygroup(ctxt, group, volumes)"},{"line_number":1653,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_7b256208","line":1650,"range":{"start_line":1650,"start_character":17,"end_line":1650,"end_character":71},"updated":"2017-05-24 16:54:23.000000000","message":"Please remove this sentence if you need to upload another patch set.","commit_id":"1cbf1194203945308bfcae2656e800e5b084275f"}]}
