)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a7998274a952d6437e158337d22ad1a99df5549b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rakesh Jain \u003crakeshj@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-31 00:09:32 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Autoselection of IBM SVC/Storwize IO group"},{"line_number":8,"context_line":"Implements: blueprint ibmsvciogrpselection"},{"line_number":9,"context_line":"DocImpact"},{"line_number":10,"context_line":"(see blueprint for more details)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba5201f7_14aa1f19","line":7,"updated":"2017-01-06 22:14:26.000000000","message":"can you provide a short description of the purpose of this change?","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e408a8bf6d563c24315499121e6ffffdd8d12465","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-01-09 11:02:16 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rebase"},{"line_number":8,"context_line":"Addressing all the comments by xiaoqin on code review."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Autoselection of IBM SVC/Storwize IO group"},{"line_number":11,"context_line":"Implements: blueprint ibmsvciogrpselection"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5201f7_39ab288b","line":8,"updated":"2017-01-10 16:51:12.000000000","message":"Remove this.\n\nPlease provide a short description of the purpose of this patch and why it\u0027s important.","commit_id":"580683c52978c50ec71bccdadc4c2d87b77e92f9"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"3e5a820c98aaa5e01301dd2e1b78678c9a88eb16","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rakesh Jain \u003crakeshj@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-18 11:57:40 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Autoselection of IBM SVC/Storwize IO group"},{"line_number":8,"context_line":"Currently in IBM storwize_SVC driver, user can specify only one IO"},{"line_number":9,"context_line":"group per backend definition. With this change, now user can specify a"},{"line_number":10,"context_line":"list of IO groups, and at the time of creating the volume, the driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7a3c09a3_5521dbb3","line":7,"updated":"2017-01-18 20:11:33.000000000","message":"should have a blank line after the first line","commit_id":"d7327e8683f5195dde4e939a475f1e2e223b6530"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"99c10cfc257f4dc6edbe427f797ec947368253f0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"list of IO groups, and at the time of creating the volume, the driver"},{"line_number":12,"context_line":"will select an IO group which has least number of volumes associates"},{"line_number":13,"context_line":"with. The change is backward compatible."},{"line_number":14,"context_line":"Please see blueprint for full details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint ibmsvciogrpselection"},{"line_number":17,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3a461143_b1db684e","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":38},"updated":"2017-01-29 06:57:33.000000000","message":"better omit this message.","commit_id":"460ac009d6d3574b04b756a3f97c9fe05d2b1113"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9d54453ae694fe634f7eda59fe71d8303d48e205","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently in IBM storwize_SVC driver, user can specify only one IO"},{"line_number":10,"context_line":"group per backend definition. With this change, now user can specify a"},{"line_number":11,"context_line":"list of IO groups, and at the time of creating the volume, the driver"},{"line_number":12,"context_line":"will select an IO group which has least number of volumes associates"},{"line_number":13,"context_line":"with. The change is backward compatible."},{"line_number":14,"context_line":"Please see blueprint for full details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint ibmsvciogrpselection"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1a430d35_537958c7","line":13,"range":{"start_line":12,"start_character":58,"end_line":13,"end_character":4},"updated":"2017-02-07 19:38:23.000000000","message":"associates with-\u003eassociated","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"07c2a475fea15ff83f266f19ce3e3fa434c31bdc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"group per backend definition. With this change, now user can specify a"},{"line_number":11,"context_line":"list of IO groups, and at the time of creating the volume, the driver"},{"line_number":12,"context_line":"will select an IO group which has least number of volumes associated"},{"line_number":13,"context_line":"with. The change is backward compatible."},{"line_number":14,"context_line":"Please see blueprint for full details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint ibmsvciogrpselection"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1a430d35_39702bdc","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":4},"updated":"2017-02-07 20:32:21.000000000","message":"I think Jay suggested you drop \"with\" also. +1  Or maybe better to say \"associated with it\".  nit","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"377035a72b169bffbfb98a3e3113ba02e343827c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"group per backend definition. With this change, now user can specify a"},{"line_number":11,"context_line":"list of IO groups, and at the time of creating the volume, the driver"},{"line_number":12,"context_line":"will select an IO group which has least number of volumes associated"},{"line_number":13,"context_line":"with. The change is backward compatible."},{"line_number":14,"context_line":"Please see blueprint for full details."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint ibmsvciogrpselection"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1a430d35_a82766b4","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":4},"in_reply_to":"1a430d35_39702bdc","updated":"2017-02-07 21:04:42.000000000","message":"Done","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"33eb95ba2a41925119ab7a79c582159d4e53dea6","unresolved":false,"context_lines":[{"line_number":5446,"context_line":""},{"line_number":5447,"context_line":"    @mock.patch.object(storwize_svc_common.StorwizeHelpers, \u0027create_vdisk\u0027)"},{"line_number":5448,"context_line":"    @mock.patch.object(storwize_svc_common.StorwizeHelpers, \u0027get_vdisk_params\u0027)"},{"line_number":5449,"context_line":"    @mock.patch.object(storwize_svc_common.StorwizeHelpers, \u0027select_io_group\u0027)"},{"line_number":5450,"context_line":"    @mock.patch.object(context, \u0027get_admin_context\u0027)"},{"line_number":5451,"context_line":"    @mock.patch.object(mirror_class, \u0027volume_replication_setup\u0027)"},{"line_number":5452,"context_line":"    def test_storwize_create_volume_with_mirror_replication(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_f9f98781","line":5449,"range":{"start_line":5449,"start_character":61,"end_line":5449,"end_character":76},"updated":"2017-01-04 07:59:31.000000000","message":"More unit tests need to be added for volume creation and iogroup auto selection between several iogrps.","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"2bfaa9fbacb11d1f03583f061651c1b9fecfff6e","unresolved":false,"context_lines":[{"line_number":4131,"context_line":"        chck_list.append({\u0027-free_capacity\u0027: \u00270\u0027, \u0027compressed_copy\u0027: \u0027no\u0027,"},{"line_number":4132,"context_line":"                          \u0027warning\u0027: \u00270\u0027, \u0027autoexpand\u0027: \u0027on\u0027,"},{"line_number":4133,"context_line":"                          \u0027grainsize\u0027: \u002732\u0027, \u0027easy_tier\u0027: \u0027off\u0027,"},{"line_number":4134,"context_line":"                          \u0027IO_group_id\u0027: (test_iogrp)})"},{"line_number":4135,"context_line":"        opts_list.append({\u0027rsize\u0027: 2, \u0027compression\u0027: False, \u0027warning\u0027: 80,"},{"line_number":4136,"context_line":"                          \u0027autoexpand\u0027: False, \u0027grainsize\u0027: 256,"},{"line_number":4137,"context_line":"                          \u0027easytier\u0027: True})"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a430d35_6b2d78a7","line":4134,"range":{"start_line":4134,"start_character":41,"end_line":4134,"end_character":42},"updated":"2017-02-07 22:29:50.000000000","message":"unnecessary parens","commit_id":"d0c9a052fbc113c1ac4e338b95caa8d2a4695444"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"33eb95ba2a41925119ab7a79c582159d4e53dea6","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        iog_list \u003d StorwizeHelpers._get_valid_requested_io_groups(state, opts)"},{"line_number":659,"context_line":"        iog_vdc \u003d self.get_vdisk_count_by_io_group()"},{"line_number":660,"context_line":"        LOG.debug(\"IO group current balance \" + str(iog_vdc))"},{"line_number":661,"context_line":"        min_vdisk_count \u003d 100000"},{"line_number":662,"context_line":"        selected_iog \u003d iog_list[0]"},{"line_number":663,"context_line":"        for iog in iog_list:"},{"line_number":664,"context_line":"            if iog_vdc[iog] \u003c min_vdisk_count:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_933bfa9b","line":661,"range":{"start_line":661,"start_character":1,"end_line":661,"end_character":32},"updated":"2017-01-04 07:59:31.000000000","message":"Why 100000 is chosen here?　maybe min_vdisk_count \u003d iog_vdc[iog_list[0]]?","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"33eb95ba2a41925119ab7a79c582159d4e53dea6","unresolved":false,"context_lines":[{"line_number":664,"context_line":"            if iog_vdc[iog] \u003c min_vdisk_count:"},{"line_number":665,"context_line":"                min_vdisk_count \u003d iog_vdc[iog]"},{"line_number":666,"context_line":"                selected_iog \u003d iog"},{"line_number":667,"context_line":"        return selected_iog"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"    def get_volume_io_group(self, vol_name):"},{"line_number":670,"context_line":"        vdisk \u003d self.ssh.lsvdisk(vol_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_3357aecf","line":667,"range":{"start_line":667,"start_character":1,"end_line":667,"end_character":27},"updated":"2017-01-04 07:59:31.000000000","message":"A debug info can be added here before the selected_iog return.","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"33eb95ba2a41925119ab7a79c582159d4e53dea6","unresolved":false,"context_lines":[{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        if len(iogs) \u003d\u003d 0:"},{"line_number":1019,"context_line":"            raise exception.InvalidInput("},{"line_number":1020,"context_line":"                reason\u003d_(\u0027Given I/O group(s) %(iogrp)d not valid; available \u0027"},{"line_number":1021,"context_line":"                         \u0027I/O groups are %(avail)s.\u0027)"},{"line_number":1022,"context_line":"                % {\u0027iogrp\u0027: opts[\u0027iogrp\u0027],"},{"line_number":1023,"context_line":"                   \u0027avail\u0027: state[\u0027available_iogrps\u0027]})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_5803710f","line":1020,"range":{"start_line":1020,"start_character":45,"end_line":1020,"end_character":54},"updated":"2017-01-04 07:59:31.000000000","message":"This should be %(iogrp)s since opts[\u0027iogrp\u0027] is changed to \u00270,1,2\u0027","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"33eb95ba2a41925119ab7a79c582159d4e53dea6","unresolved":false,"context_lines":[{"line_number":1464,"context_line":"        # In case we need to use a specific pool"},{"line_number":1465,"context_line":"        if not pool:"},{"line_number":1466,"context_line":"            pool \u003d src_attrs[\u0027mdisk_grp_name\u0027]"},{"line_number":1467,"context_line":"        iogrp \u003d src_attrs[\u0027IO_group_id\u0027]"},{"line_number":1468,"context_line":"        opts[\u0027iogrp\u0027] \u003d iogrp"},{"line_number":1469,"context_line":"        self.create_vdisk(target, src_size, \u0027b\u0027, pool, opts)"},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"        self.ssh.mkfcmap(source, target, full_copy,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_b97d3f70","line":1468,"range":{"start_line":1467,"start_character":0,"end_line":1468,"end_character":29},"updated":"2017-01-04 07:59:31.000000000","message":"Do not need temporary variable iogrp. Update it to opts[\u0027iogrp\u0027] \u003d src_attrs[\u0027IO_group_id\u0027] ?","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"33eb95ba2a41925119ab7a79c582159d4e53dea6","unresolved":false,"context_lines":[{"line_number":1666,"context_line":"        # In case we need to use a specific pool"},{"line_number":1667,"context_line":"        if not pool:"},{"line_number":1668,"context_line":"            pool \u003d src_attrs[\u0027mdisk_grp_name\u0027]"},{"line_number":1669,"context_line":"        iogrp \u003d src_attrs[\u0027IO_group_id\u0027]"},{"line_number":1670,"context_line":"        opts[\u0027iogrp\u0027] \u003d iogrp"},{"line_number":1671,"context_line":"        self.create_vdisk(tgt, src_size, \u0027b\u0027, pool, opts)"},{"line_number":1672,"context_line":"        timeout \u003d config.storwize_svc_flashcopy_timeout"},{"line_number":1673,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_1993aba4","line":1670,"range":{"start_line":1669,"start_character":0,"end_line":1670,"end_character":29},"updated":"2017-01-04 07:59:31.000000000","message":"Do not need temporary variable iogrp. Update it to opts[\u0027iogrp\u0027] \u003d src_attrs[\u0027IO_group_id\u0027] ?","commit_id":"fa03e0a8da22e6f93041f1a08b39ab634d629151"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"5cbd4b154524c5d2cbed5754d2879839dc3bd672","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":81,"context_line":"                default\u003dTrue,"},{"line_number":82,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":84,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":85,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":86,"context_line":"               \u0027comma-separated list in which case the driver will select an\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_0bb50330","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":14},"updated":"2017-01-11 12:33:59.000000000","message":"If it is a list, you can use ListOpt here","commit_id":"85bc5cd032a8726a71b3081990b348750a003942"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"5cbd4b154524c5d2cbed5754d2879839dc3bd672","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                % {\u0027iogrp\u0027: opts[\u0027iogrp\u0027],"},{"line_number":664,"context_line":"                   \u0027avail\u0027: state[\u0027available_iogrps\u0027]})"},{"line_number":665,"context_line":"        iog_vdc \u003d self.get_vdisk_count_by_io_group()"},{"line_number":666,"context_line":"        LOG.debug(\"IO group current balance %s\", str(iog_vdc))"},{"line_number":667,"context_line":"        min_vdisk_count \u003d iog_vdc[iog_list[0]]"},{"line_number":668,"context_line":"        selected_iog \u003d iog_list[0]"},{"line_number":669,"context_line":"        for iog in iog_list:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_0bc4235d","line":666,"range":{"start_line":666,"start_character":49,"end_line":666,"end_character":52},"updated":"2017-01-11 12:33:59.000000000","message":"please, use six.text_type","commit_id":"85bc5cd032a8726a71b3081990b348750a003942"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"5cbd4b154524c5d2cbed5754d2879839dc3bd672","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"        iog_list \u003d given_iogs.split(\u0027,\u0027)"},{"line_number":1041,"context_line":"        # convert to int"},{"line_number":1042,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1043,"context_line":"        LOG.debug(\"Requested iogroups %s\", str(iog_list))"},{"line_number":1044,"context_line":"        LOG.debug(\"Available iogroups %s\", str(state[\u0027available_iogrps\u0027]))"},{"line_number":1045,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1046,"context_line":"        iog_list \u003d list(filtiog)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_ab25d7c2","line":1043,"range":{"start_line":1043,"start_character":43,"end_line":1043,"end_character":47},"updated":"2017-01-11 12:33:59.000000000","message":"Please, use six.text_type to format the strings on these messages.","commit_id":"85bc5cd032a8726a71b3081990b348750a003942"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"5cbd4b154524c5d2cbed5754d2879839dc3bd672","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"        # convert to int"},{"line_number":1042,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1043,"context_line":"        LOG.debug(\"Requested iogroups %s\", str(iog_list))"},{"line_number":1044,"context_line":"        LOG.debug(\"Available iogroups %s\", str(state[\u0027available_iogrps\u0027]))"},{"line_number":1045,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1046,"context_line":"        iog_list \u003d list(filtiog)"},{"line_number":1047,"context_line":"        LOG.debug(\"Filtered (valid) requested iogroups %s\", str(iog_list))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_2b180784","line":1044,"range":{"start_line":1044,"start_character":43,"end_line":1044,"end_character":46},"updated":"2017-01-11 12:33:59.000000000","message":"ditto","commit_id":"85bc5cd032a8726a71b3081990b348750a003942"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"5cbd4b154524c5d2cbed5754d2879839dc3bd672","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        LOG.debug(\"Available iogroups %s\", str(state[\u0027available_iogrps\u0027]))"},{"line_number":1045,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1046,"context_line":"        iog_list \u003d list(filtiog)"},{"line_number":1047,"context_line":"        LOG.debug(\"Filtered (valid) requested iogroups %s\", str(iog_list))"},{"line_number":1048,"context_line":"        return iog_list"},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"    def _get_opts_from_specs(self, opts, specs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_1dff0602","line":1047,"range":{"start_line":1047,"start_character":60,"end_line":1047,"end_character":63},"updated":"2017-01-11 12:33:59.000000000","message":"ditto","commit_id":"85bc5cd032a8726a71b3081990b348750a003942"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"2355093f34cc7b4eda2ee849412b10198d20e4e6","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                default\u003dTrue,"},{"line_number":82,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":84,"context_line":"               default\u003d0,"},{"line_number":85,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":86,"context_line":"               \u0027comma-separated list in which case the driver will select an\u0027"},{"line_number":87,"context_line":"               \u0027io_group based on least number of volumes associated to the \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_646b0ef2","line":84,"range":{"start_line":84,"start_character":15,"end_line":84,"end_character":24},"updated":"2017-01-16 20:00:33.000000000","message":"default should be string","commit_id":"e77118d38e1d66a63277d0d0f4ec963df92533b5"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"2355093f34cc7b4eda2ee849412b10198d20e4e6","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":84,"context_line":"               default\u003d0,"},{"line_number":85,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":86,"context_line":"               \u0027comma-separated list in which case the driver will select an\u0027"},{"line_number":87,"context_line":"               \u0027io_group based on least number of volumes associated to the \u0027"},{"line_number":88,"context_line":"               \u0027io_groups.\u0027),"},{"line_number":89,"context_line":"    cfg.IntOpt(\u0027storwize_svc_flashcopy_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_e47ffea8","line":86,"updated":"2017-01-16 20:00:33.000000000","message":"add space","commit_id":"e77118d38e1d66a63277d0d0f4ec963df92533b5"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"7d845d567453a66028c2bc553ceed24bd6e9da63","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_6112ee0a","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":14},"updated":"2017-01-30 18:49:10.000000000","message":"did you consider using ListOpt here?","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"e91b216aacc01951cc54a173ed6f98b19f13a5a0","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_37465a4f","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":14},"in_reply_to":"3a461143_2c7b7d8d","updated":"2017-01-31 01:18:17.000000000","message":"I think ListOpt with bounds\u003dFalse does what you want:\n  :param bounds: if True the value should be inside \"[\" and \"]\" pair","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"81a1585484eaa6c9a981c8ba567983b55a8a1737","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_8c4e0339","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":14},"in_reply_to":"3a461143_37465a4f","updated":"2017-01-31 19:25:25.000000000","message":"Ok, I tried that. It turns out to be much more code in terms of handling. I want to be able to handle input cases like \u00270,1,2\u0027 or \u00270, 1,2\u0027 or \u00270, 1, 2\u0027. ListOpt seems to be adding \u0027,\u0027 and \u0027 \u0027 as elements of the list, then I have to remove each occurance of them from the list and so on. StrOpt is working much better.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"2b2be0e55d569f4f3934ce98d0fcc55c8b991791","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_2c7b7d8d","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":14},"in_reply_to":"3a461143_6112ee0a","updated":"2017-01-31 00:58:48.000000000","message":"Yeah, I did, but the user is going to provide the input as: 0,1,3 or so, not [0,1,3], so ListOpt won\u0027t work.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9314ca940e5b283aa07632a688b6382733703b66","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_98ed32f2","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":14},"in_reply_to":"3a461143_8c4e0339","updated":"2017-02-01 18:32:19.000000000","message":"wait, so ListOpt can\u0027t handle whitespace ?!","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"5cafc788488b1a43e3e0a495632ffad644356b0b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    cfg.BoolOpt(\u0027storwize_svc_vol_easytier\u0027,"},{"line_number":83,"context_line":"                default\u003dTrue,"},{"line_number":84,"context_line":"                help\u003d\u0027Enable Easy Tier for volumes\u0027),"},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027storwize_svc_vol_iogrp\u0027,"},{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a461143_fe50df0c","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":14},"in_reply_to":"3a461143_98ed32f2","updated":"2017-02-01 18:47:52.000000000","message":"I find comma and spaces as list elements.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9d54453ae694fe634f7eda59fe71d8303d48e205","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"},{"line_number":89,"context_line":"               \u0027io_group based on least number of volumes associated to the \u0027"},{"line_number":90,"context_line":"               \u0027io_groups.\u0027),"},{"line_number":91,"context_line":"    cfg.IntOpt(\u0027storwize_svc_flashcopy_timeout\u0027,"},{"line_number":92,"context_line":"               default\u003d120,"},{"line_number":93,"context_line":"               min\u003d1, max\u003d600,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_8e32b7f0","line":90,"range":{"start_line":90,"start_character":16,"end_line":90,"end_character":25},"updated":"2017-02-07 19:38:23.000000000","message":"io_group","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"},{"line_number":89,"context_line":"               \u0027io_group based on least number of volumes associated to the \u0027"},{"line_number":90,"context_line":"               \u0027io_groups.\u0027),"},{"line_number":91,"context_line":"    cfg.IntOpt(\u0027storwize_svc_flashcopy_timeout\u0027,"},{"line_number":92,"context_line":"               default\u003d120,"},{"line_number":93,"context_line":"               min\u003d1, max\u003d600,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_59a5f79f","line":90,"range":{"start_line":90,"start_character":16,"end_line":90,"end_character":25},"in_reply_to":"1a430d35_8e32b7f0","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9d54453ae694fe634f7eda59fe71d8303d48e205","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                msg \u003d (_(\u0027Expected integer for node_count, \u0027"},{"line_number":686,"context_line":"                         \u0027svcinfo lsiogrp returned: %(node)s\u0027) %"},{"line_number":687,"context_line":"                       {\u0027node\u0027: iogrp[\u0027node_count\u0027]})"},{"line_number":688,"context_line":"                LOG.error(msg)"},{"line_number":689,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":690,"context_line":"        return res"},{"line_number":691,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_4e4d2f3d","line":688,"range":{"start_line":688,"start_character":16,"end_line":688,"end_character":30},"updated":"2017-02-07 19:38:23.000000000","message":"Why are you doing a LOG.error here in addition to the exception.  You don\u0027t do this below.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                msg \u003d (_(\u0027Expected integer for node_count, \u0027"},{"line_number":686,"context_line":"                         \u0027svcinfo lsiogrp returned: %(node)s\u0027) %"},{"line_number":687,"context_line":"                       {\u0027node\u0027: iogrp[\u0027node_count\u0027]})"},{"line_number":688,"context_line":"                LOG.error(msg)"},{"line_number":689,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":690,"context_line":"        return res"},{"line_number":691,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_b9a89b78","line":688,"range":{"start_line":688,"start_character":16,"end_line":688,"end_character":30},"in_reply_to":"1a430d35_4e4d2f3d","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"10daa8ebdb53bfdd3d3d7d32a66bb2e3beee0f11","unresolved":false,"context_lines":[{"line_number":699,"context_line":"                % {\u0027iogrp\u0027: opts[\u0027iogrp\u0027],"},{"line_number":700,"context_line":"                   \u0027avail\u0027: state[\u0027available_iogrps\u0027]})"},{"line_number":701,"context_line":"        iog_vdc \u003d self.get_vdisk_count_by_io_group()"},{"line_number":702,"context_line":"        LOG.debug(\"IO group current balance %s\", six.text_type(iog_vdc))"},{"line_number":703,"context_line":"        min_vdisk_count \u003d iog_vdc[iog_list[0]]"},{"line_number":704,"context_line":"        selected_iog \u003d iog_list[0]"},{"line_number":705,"context_line":"        for iog in iog_list:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_b3ec3cf4","line":702,"range":{"start_line":702,"start_character":49,"end_line":702,"end_character":62},"updated":"2017-02-07 19:18:30.000000000","message":"This should not be used in logger calls.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":699,"context_line":"                % {\u0027iogrp\u0027: opts[\u0027iogrp\u0027],"},{"line_number":700,"context_line":"                   \u0027avail\u0027: state[\u0027available_iogrps\u0027]})"},{"line_number":701,"context_line":"        iog_vdc \u003d self.get_vdisk_count_by_io_group()"},{"line_number":702,"context_line":"        LOG.debug(\"IO group current balance %s\", six.text_type(iog_vdc))"},{"line_number":703,"context_line":"        min_vdisk_count \u003d iog_vdc[iog_list[0]]"},{"line_number":704,"context_line":"        selected_iog \u003d iog_list[0]"},{"line_number":705,"context_line":"        for iog in iog_list:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_d9b727d6","line":702,"range":{"start_line":702,"start_character":49,"end_line":702,"end_character":62},"in_reply_to":"1a430d35_b3ec3cf4","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"10daa8ebdb53bfdd3d3d7d32a66bb2e3beee0f11","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"        iog_list \u003d given_iogs.split(\u0027,\u0027)"},{"line_number":1077,"context_line":"        # convert to int"},{"line_number":1078,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1079,"context_line":"        LOG.debug(\"Requested iogroups %s\", six.text_type(iog_list))"},{"line_number":1080,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1081,"context_line":"                  six.text_type(state[\u0027available_iogrps\u0027]))"},{"line_number":1082,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_f3c08452","line":1079,"range":{"start_line":1079,"start_character":43,"end_line":1079,"end_character":56},"updated":"2017-02-07 19:18:30.000000000","message":"Same","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"        iog_list \u003d given_iogs.split(\u0027,\u0027)"},{"line_number":1077,"context_line":"        # convert to int"},{"line_number":1078,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1079,"context_line":"        LOG.debug(\"Requested iogroups %s\", six.text_type(iog_list))"},{"line_number":1080,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1081,"context_line":"                  six.text_type(state[\u0027available_iogrps\u0027]))"},{"line_number":1082,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_19ae0f81","line":1079,"range":{"start_line":1079,"start_character":43,"end_line":1079,"end_character":56},"in_reply_to":"1a430d35_f3c08452","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"10daa8ebdb53bfdd3d3d7d32a66bb2e3beee0f11","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1079,"context_line":"        LOG.debug(\"Requested iogroups %s\", six.text_type(iog_list))"},{"line_number":1080,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1081,"context_line":"                  six.text_type(state[\u0027available_iogrps\u0027]))"},{"line_number":1082,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1083,"context_line":"        iog_list \u003d list(filtiog)"},{"line_number":1084,"context_line":"        LOG.debug(\"Filtered (valid) requested iogroups %s\","}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_13b27006","line":1081,"range":{"start_line":1081,"start_character":18,"end_line":1081,"end_character":31},"updated":"2017-02-07 19:18:30.000000000","message":"Same.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1079,"context_line":"        LOG.debug(\"Requested iogroups %s\", six.text_type(iog_list))"},{"line_number":1080,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1081,"context_line":"                  six.text_type(state[\u0027available_iogrps\u0027]))"},{"line_number":1082,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1083,"context_line":"        iog_list \u003d list(filtiog)"},{"line_number":1084,"context_line":"        LOG.debug(\"Filtered (valid) requested iogroups %s\","}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_59cc176a","line":1081,"range":{"start_line":1081,"start_character":18,"end_line":1081,"end_character":31},"in_reply_to":"1a430d35_13b27006","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"10daa8ebdb53bfdd3d3d7d32a66bb2e3beee0f11","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1083,"context_line":"        iog_list \u003d list(filtiog)"},{"line_number":1084,"context_line":"        LOG.debug(\"Filtered (valid) requested iogroups %s\","},{"line_number":1085,"context_line":"                  six.text_type(iog_list))"},{"line_number":1086,"context_line":"        return iog_list"},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    def _get_opts_from_specs(self, opts, specs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_73cd7484","line":1085,"range":{"start_line":1085,"start_character":18,"end_line":1085,"end_character":31},"updated":"2017-02-07 19:18:30.000000000","message":"Same.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"},{"line_number":1083,"context_line":"        iog_list \u003d list(filtiog)"},{"line_number":1084,"context_line":"        LOG.debug(\"Filtered (valid) requested iogroups %s\","},{"line_number":1085,"context_line":"                  six.text_type(iog_list))"},{"line_number":1086,"context_line":"        return iog_list"},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"    def _get_opts_from_specs(self, opts, specs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a430d35_79c9d358","line":1085,"range":{"start_line":1085,"start_character":18,"end_line":1085,"end_character":31},"in_reply_to":"1a430d35_73cd7484","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"07c2a475fea15ff83f266f19ce3e3fa434c31bdc","unresolved":false,"context_lines":[{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"},{"line_number":89,"context_line":"               \u0027io_group based on least number of volumes associated to the \u0027"},{"line_number":90,"context_line":"               \u0027io_group.\u0027),"},{"line_number":91,"context_line":"    cfg.IntOpt(\u0027storwize_svc_flashcopy_timeout\u0027,"},{"line_number":92,"context_line":"               default\u003d120,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_795d5346","line":89,"range":{"start_line":89,"start_character":69,"end_line":89,"end_character":71},"updated":"2017-02-07 20:32:21.000000000","message":"I would say \"associated with\", but think this is OK.","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"377035a72b169bffbfb98a3e3113ba02e343827c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"},{"line_number":89,"context_line":"               \u0027io_group based on least number of volumes associated to the \u0027"},{"line_number":90,"context_line":"               \u0027io_group.\u0027),"},{"line_number":91,"context_line":"    cfg.IntOpt(\u0027storwize_svc_flashcopy_timeout\u0027,"},{"line_number":92,"context_line":"               default\u003d120,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_4839a2d6","line":89,"range":{"start_line":89,"start_character":69,"end_line":89,"end_character":71},"in_reply_to":"1a430d35_795d5346","updated":"2017-02-07 21:04:42.000000000","message":"Done","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b8cd7f8ba64ac774afda0d07b520bb00bed614e0","unresolved":false,"context_lines":[{"line_number":683,"context_line":"            except ValueError:"},{"line_number":684,"context_line":"                msg \u003d (_(\u0027Expected integer for node_count, \u0027"},{"line_number":685,"context_line":"                         \u0027svcinfo lsiogrp returned: %(node)s\u0027) %"},{"line_number":686,"context_line":"                       {\u0027node\u0027: iogrp[\u0027node_count\u0027]})                "},{"line_number":687,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":688,"context_line":"        return res"},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_992d9faa","line":686,"range":{"start_line":686,"start_character":52,"end_line":686,"end_character":69},"updated":"2017-02-07 20:32:33.000000000","message":"This needs to be fixed please.","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"377035a72b169bffbfb98a3e3113ba02e343827c","unresolved":false,"context_lines":[{"line_number":683,"context_line":"            except ValueError:"},{"line_number":684,"context_line":"                msg \u003d (_(\u0027Expected integer for node_count, \u0027"},{"line_number":685,"context_line":"                         \u0027svcinfo lsiogrp returned: %(node)s\u0027) %"},{"line_number":686,"context_line":"                       {\u0027node\u0027: iogrp[\u0027node_count\u0027]})                "},{"line_number":687,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":688,"context_line":"        return res"},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_6832def3","line":686,"range":{"start_line":686,"start_character":52,"end_line":686,"end_character":69},"in_reply_to":"1a430d35_992d9faa","updated":"2017-02-07 21:04:42.000000000","message":"Done","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b8cd7f8ba64ac774afda0d07b520bb00bed614e0","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        iog_list \u003d given_iogs.split(\u0027,\u0027)"},{"line_number":1075,"context_line":"        # convert to int"},{"line_number":1076,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1077,"context_line":"        LOG.debug(\"Requested iogroups %s\", str(iog_list))"},{"line_number":1078,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1079,"context_line":"                  str(state[\u0027available_iogrps\u0027]))"},{"line_number":1080,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_f91ea36e","line":1077,"range":{"start_line":1077,"start_character":43,"end_line":1077,"end_character":46},"updated":"2017-02-07 20:32:33.000000000","message":"Will this work for py27?","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"377035a72b169bffbfb98a3e3113ba02e343827c","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        iog_list \u003d given_iogs.split(\u0027,\u0027)"},{"line_number":1075,"context_line":"        # convert to int"},{"line_number":1076,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1077,"context_line":"        LOG.debug(\"Requested iogroups %s\", str(iog_list))"},{"line_number":1078,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1079,"context_line":"                  str(state[\u0027available_iogrps\u0027]))"},{"line_number":1080,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_882f0a87","line":1077,"range":{"start_line":1077,"start_character":43,"end_line":1077,"end_character":46},"in_reply_to":"1a430d35_347112a9","updated":"2017-02-07 21:04:42.000000000","message":"Done","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ecd85388b138acd2ca544ea944f07ede2440755e","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        iog_list \u003d given_iogs.split(\u0027,\u0027)"},{"line_number":1075,"context_line":"        # convert to int"},{"line_number":1076,"context_line":"        iog_list \u003d list(map(int, iog_list))"},{"line_number":1077,"context_line":"        LOG.debug(\"Requested iogroups %s\", str(iog_list))"},{"line_number":1078,"context_line":"        LOG.debug(\"Available iogroups %s\","},{"line_number":1079,"context_line":"                  str(state[\u0027available_iogrps\u0027]))"},{"line_number":1080,"context_line":"        filtiog \u003d set(iog_list).intersection(state[\u0027available_iogrps\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_347112a9","line":1077,"range":{"start_line":1077,"start_character":43,"end_line":1077,"end_character":46},"in_reply_to":"1a430d35_f91ea36e","updated":"2017-02-07 20:34:53.000000000","message":"It\u0027s not necessary for all of these. Please remove str() calls. You are formatting it into a %s, so there is no need to do a redundant conversion.","commit_id":"69a21b93668ae3357d49fb0d31543941a077b16b"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"2bfaa9fbacb11d1f03583f061651c1b9fecfff6e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"               help\u003d\u0027The I/O group in which to allocate volumes. It can be a \u0027"},{"line_number":88,"context_line":"               \u0027comma-separated list in which case the driver will select an \u0027"},{"line_number":89,"context_line":"               \u0027io_group based on least number of volumes associated with the \u0027"},{"line_number":90,"context_line":"               \u0027io_group.\u0027),"},{"line_number":91,"context_line":"    cfg.IntOpt(\u0027storwize_svc_flashcopy_timeout\u0027,"},{"line_number":92,"context_line":"               default\u003d120,"},{"line_number":93,"context_line":"               min\u003d1, max\u003d600,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a430d35_3e400c34","line":90,"range":{"start_line":90,"start_character":16,"end_line":90,"end_character":24},"updated":"2017-02-07 22:29:50.000000000","message":"\"io_group\" reads OK, but in this message it probably should be consistently I/O group (2 places).","commit_id":"d0c9a052fbc113c1ac4e338b95caa8d2a4695444"}],"releasenotes/notes/bp/ibmsvciogrpselection-e607739b6f655a27.yaml":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"5f3ccd8d26a72c55a08b230e415b0684527b5050","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":4,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":5,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":6,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":7,"context_line":"    associated with it. The change is backward compatible."},{"line_number":8,"context_line":"features:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    If user has specified IO groups 0,2 and 3 for a volume type for pool P1, "}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a3c09a3_a3bac86f","line":7,"range":{"start_line":2,"start_character":0,"end_line":7,"end_character":58},"updated":"2017-01-18 19:52:20.000000000","message":"\"only notes describing major features or adding release theme details should have a prelude.\"\nNo need for prelude. Just put this text in the features section.","commit_id":"b6f66b66f884f654611b456e49714bcf616a96f2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"5f3ccd8d26a72c55a08b230e415b0684527b5050","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    associated with it. The change is backward compatible."},{"line_number":8,"context_line":"features:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    If user has specified IO groups 0,2 and 3 for a volume type for pool P1, "},{"line_number":11,"context_line":"    then the driver will select an IO group out of 0,2 and 3, which has least "},{"line_number":12,"context_line":"    number of volumes associated with. Say io_group 0 has 40, io_group 2 has 35 "},{"line_number":13,"context_line":"    and io_group 3 has 120 volumes associated with. For a new volume request for "},{"line_number":14,"context_line":"    this volume type, the driver will select io_group 2 because it has least "},{"line_number":15,"context_line":"    number of volumes associated with at the time of provisioning."},{"line_number":16,"context_line":"    Before:"},{"line_number":17,"context_line":"    storwize_svc_vol_iogrp \u003d 0"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a3c09a3_635460ca","line":14,"range":{"start_line":10,"start_character":4,"end_line":14,"end_character":77},"updated":"2017-01-18 19:52:20.000000000","message":"remove extra spaces at end of line","commit_id":"b6f66b66f884f654611b456e49714bcf616a96f2"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"99c10cfc257f4dc6edbe427f797ec947368253f0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible."},{"line_number":9,"context_line":"    If user has specified IO groups 0,2 and 3 for a volume type for pool P1,"},{"line_number":10,"context_line":"    then the driver will select an IO group out of 0,2 and 3, which has least"},{"line_number":11,"context_line":"    number of volumes associated with. Say io_group 0 has 40, io_group 2 has 35"},{"line_number":12,"context_line":"    and io_group 3 has 120 volumes associated with. For a new volume request for"},{"line_number":13,"context_line":"    this volume type, the driver will select io_group 2 because it has least"},{"line_number":14,"context_line":"    number of volumes associated with at the time of provisioning."},{"line_number":15,"context_line":"    Before:"},{"line_number":16,"context_line":"    storwize_svc_vol_iogrp \u003d 0"},{"line_number":17,"context_line":"    With this feature, now you can specify a comma separated list of Io groups"},{"line_number":18,"context_line":"    from among which you want to associate the volume to. For eg::"},{"line_number":19,"context_line":"    storwize_svc_vol_iogrp \u003d 0,2,3"},{"line_number":20,"context_line":"    The change is backward compatible, meaning single value is still supported."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3a461143_71a3c0b2","line":20,"range":{"start_line":4,"start_character":4,"end_line":20,"end_character":79},"updated":"2017-01-29 06:57:33.000000000","message":"This will not be the first release note with this length, but I think it is too much for a release note. look for examples at http://docs.openstack.org/releasenotes/cinder/unreleased.html","commit_id":"460ac009d6d3574b04b756a3f97c9fe05d2b1113"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"10daa8ebdb53bfdd3d3d7d32a66bb2e3beee0f11","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible, meaning single value"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a430d35_f3a7a4ba","line":5,"range":{"start_line":5,"start_character":34,"end_line":5,"end_character":51},"updated":"2017-02-07 19:18:30.000000000","message":"Remove this part.","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9d54453ae694fe634f7eda59fe71d8303d48e205","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible, meaning single value"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a430d35_0e0de7e7","line":5,"range":{"start_line":5,"start_character":52,"end_line":5,"end_character":64},"updated":"2017-02-07 19:38:23.000000000","message":"The user now may specify","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible, meaning single value"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a430d35_59d33704","line":5,"range":{"start_line":5,"start_character":52,"end_line":5,"end_character":64},"in_reply_to":"1a430d35_0e0de7e7","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible, meaning single value"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a430d35_39eaebac","line":5,"range":{"start_line":5,"start_character":34,"end_line":5,"end_character":51},"in_reply_to":"1a430d35_f3a7a4ba","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"9d54453ae694fe634f7eda59fe71d8303d48e205","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible, meaning single value"},{"line_number":9,"context_line":"    is still supported."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a430d35_aefe93ab","line":7,"range":{"start_line":7,"start_character":44,"end_line":7,"end_character":54},"updated":"2017-02-07 19:38:23.000000000","message":"has the least","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"},{"author":{"_account_id":12240,"name":"Rakesh Jain","email":"rakeshj@us.ibm.com","username":"rakeshj"},"change_message_id":"469cd97aff36f81adcb90d76a331b363316d69ee","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    In IBM Storwize_SVC driver, user could specify only one IO"},{"line_number":5,"context_line":"    group per backend definition. With this change, now user can specify a"},{"line_number":6,"context_line":"    comma separated list of IO groups, and at the time of creating the volume,"},{"line_number":7,"context_line":"    the driver will select an IO group which has least number of volumes"},{"line_number":8,"context_line":"    associated with it. The change is backward compatible, meaning single value"},{"line_number":9,"context_line":"    is still supported."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a430d35_79d0f3f6","line":7,"range":{"start_line":7,"start_character":44,"end_line":7,"end_character":54},"in_reply_to":"1a430d35_aefe93ab","updated":"2017-02-07 20:15:17.000000000","message":"Done","commit_id":"a649d7afc131dfabce39c455d52985adbcd41c08"}]}
