)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"213dca34a1554c47f6474276446db28c121ed219","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-05-16 12:57:30 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"INFINIDAT driver: add support for generic volume groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I713fdbb83eb008b9e93fc4a743d37cb05d6d77d4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f013ff3_a86337b1","line":8,"updated":"2017-05-16 15:42:20.000000000","message":"Can you add a brief description of the patch in the commit message?  Also please register a blueprint as this is an enhancement/feature and reference here in the commit message.","commit_id":"70cc8a33e4f0a64011d61e40f883bee140c4d01f"},{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"218bdb193c0c25367dee0504d5342fd8f38c3270","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-05-16 12:57:30 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"INFINIDAT driver: add support for generic volume groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I713fdbb83eb008b9e93fc4a743d37cb05d6d77d4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ff0f0b1f_b41d20bf","line":8,"in_reply_to":"1f013ff3_a86337b1","updated":"2017-05-17 14:02:20.000000000","message":"Done","commit_id":"70cc8a33e4f0a64011d61e40f883bee140c4d01f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a08df867f5d9d0b5be3f6dc670b13145e4dad894","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Create generic volume group"},{"line_number":11,"context_line":"* Delete generic volume group"},{"line_number":12,"context_line":"* Update (add/remove) volume from a generic volume group"},{"line_number":13,"context_line":"* Create group from a source, where source can be another group or a snapshot of a group"},{"line_number":14,"context_line":"* Create consistent group snapshot"},{"line_number":15,"context_line":"* Delete consistent group snapshot"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff0f0b1f_b996bb3d","line":13,"updated":"2017-05-22 13:45:05.000000000","message":"If you need to upload another patch set, please wrap this line up at 72 chars.","commit_id":"3ed4ee23e02e1ed2b9ea3758c5f057b174156fa9"},{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"13360fedd4af07b5b067c6e096b9c208e1698ccd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Create generic volume group"},{"line_number":11,"context_line":"* Delete generic volume group"},{"line_number":12,"context_line":"* Update (add/remove) volume from a generic volume group"},{"line_number":13,"context_line":"* Create group from a source, where source can be another group or a snapshot of a group"},{"line_number":14,"context_line":"* Create consistent group snapshot"},{"line_number":15,"context_line":"* Delete consistent group snapshot"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff0f0b1f_170ccb40","line":13,"in_reply_to":"ff0f0b1f_b996bb3d","updated":"2017-05-25 20:57:54.000000000","message":"Done","commit_id":"3ed4ee23e02e1ed2b9ea3758c5f057b174156fa9"}],"cinder/volume/drivers/infinidat.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"165e34432e9affc706872183b359b83e0ab77394","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                                      storage_protocol\u003dself._protocol,"},{"line_number":351,"context_line":"                                      consistencygroup_support\u003d\u0027False\u0027,"},{"line_number":352,"context_line":"                                      total_capacity_gb\u003dtotal_capacity_gb,"},{"line_number":353,"context_line":"                                      free_capacity_gb\u003dfree_capacity_gb)"},{"line_number":354,"context_line":"        return self._volume_stats"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def _create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_a83952a4","line":353,"updated":"2017-05-01 17:17:40.000000000","message":"Need to report consistent_group_snapshot_enabled\u003dTrue here.","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce86bf8816759231681f5ce78e58f21460cb87d6","unresolved":false,"context_lines":[{"line_number":556,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":557,"context_line":"    def create_group(self, context, group):"},{"line_number":558,"context_line":"        \"\"\"Creates a group.\"\"\""},{"line_number":559,"context_line":"        self._system.cons_groups.create(name\u003dself._make_cg_name(group),"},{"line_number":560,"context_line":"                                        pool\u003dself._get_infinidat_pool())"},{"line_number":561,"context_line":"        return dict(status\u003dfields.GroupStatus.AVAILABLE)"},{"line_number":562,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_d5a55ba0","line":559,"updated":"2017-05-01 16:44:58.000000000","message":"Please check whether consistent_group_snapshot_enabled is set to \"\u003cis\u003e True\" in group type specs and create a consistency group only if it is set.  Otherwise let the default implementation handle it.  See example in the following.  This is also how other drivers handled it.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/dell_emc/scaleio/driver.py#L1270","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce86bf8816759231681f5ce78e58f21460cb87d6","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        \"\"\"Creates a group.\"\"\""},{"line_number":559,"context_line":"        self._system.cons_groups.create(name\u003dself._make_cg_name(group),"},{"line_number":560,"context_line":"                                        pool\u003dself._get_infinidat_pool())"},{"line_number":561,"context_line":"        return dict(status\u003dfields.GroupStatus.AVAILABLE)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":564,"context_line":"    def delete_group(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_55b38be9","line":561,"updated":"2017-05-01 16:44:58.000000000","message":"Use dict comprehension {} which has better performance.","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce86bf8816759231681f5ce78e58f21460cb87d6","unresolved":false,"context_lines":[{"line_number":564,"context_line":"    def delete_group(self, context, group, volumes):"},{"line_number":565,"context_line":"        \"\"\"Deletes a group.\"\"\""},{"line_number":566,"context_line":"        try:"},{"line_number":567,"context_line":"            infinidat_cg \u003d self._get_infinidat_cg(group)"},{"line_number":568,"context_line":"        except exception.InvalidGroup:"},{"line_number":569,"context_line":"            pass      # group not found"},{"line_number":570,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_15ce2359","line":567,"updated":"2017-05-01 16:44:58.000000000","message":"Same comment.  \n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/dell_emc/scaleio/driver.py#L1289","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce86bf8816759231681f5ce78e58f21460cb87d6","unresolved":false,"context_lines":[{"line_number":576,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":577,"context_line":"    def update_group(self, context, group,"},{"line_number":578,"context_line":"                     add_volumes\u003dNone, remove_volumes\u003dNone):"},{"line_number":579,"context_line":"        \"\"\"Updates a group.\"\"\""},{"line_number":580,"context_line":"        add_volumes \u003d add_volumes if add_volumes else []"},{"line_number":581,"context_line":"        remove_volumes \u003d remove_volumes if remove_volumes else []"},{"line_number":582,"context_line":"        infinidat_cg \u003d self._get_infinidat_cg(group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_d5d31b00","line":579,"updated":"2017-05-01 16:44:58.000000000","message":"Same","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce86bf8816759231681f5ce78e58f21460cb87d6","unresolved":false,"context_lines":[{"line_number":614,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":615,"context_line":"    def create_group_snapshot(self, context, group_snapshot, snapshots):"},{"line_number":616,"context_line":"        \"\"\"Creates a group_snapshot.\"\"\""},{"line_number":617,"context_line":"        infinidat_cg \u003d self._get_infinidat_cg(group_snapshot.group)"},{"line_number":618,"context_line":"        group_snap_name \u003d self._make_group_snapshot_name(group_snapshot)"},{"line_number":619,"context_line":"        new_group \u003d infinidat_cg.create_snapshot(name\u003dgroup_snap_name)"},{"line_number":620,"context_line":"        # update the names of the individual snapshots in the new snapgroup"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_75fe876b","line":617,"updated":"2017-05-01 16:44:58.000000000","message":"Same","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ce86bf8816759231681f5ce78e58f21460cb87d6","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        return None, None"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":631,"context_line":"    def delete_group_snapshot(self, context, group_snapshot, snapshots):"},{"line_number":632,"context_line":"        \"\"\"Deletes a group_snapshot.\"\"\""},{"line_number":633,"context_line":"        cgsnap_name \u003d self._make_group_snapshot_name(group_snapshot)"},{"line_number":634,"context_line":"        infinidat_cgsnap \u003d self._system.cons_groups.safe_get(name\u003dcgsnap_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_55014b69","line":631,"updated":"2017-05-01 16:44:58.000000000","message":"Same","commit_id":"245dcd296bd9a69ef4c521263b88714fa0b5a9eb"}]}
