)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jia Min \u003cshljia@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-02-20 18:39:19 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DS8K: adding new extra-specs filters to specify pool and lss"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"DS8K driver needs two new properties in extra-specs, so that user"},{"line_number":10,"context_line":"can specify pool or lss or both of them to allocate volume in their"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da36d5c6_f0f53f83","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":60},"updated":"2017-02-21 06:37:08.000000000","message":"limit header to 50 chars","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"}],"cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"        self.assertEqual(\u0027050 FB 520UV\u0027, vol[\u0027metadata\u0027][\u0027data_type\u0027])"},{"line_number":1492,"context_line":""},{"line_number":1493,"context_line":"    def test_create_volume_when_specify_place(self):"},{"line_number":1494,"context_line":"        \"\"\"create volume and put it in specified pool and lss.\"\"\""},{"line_number":1495,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":1496,"context_line":"                                    self.exception, self)"},{"line_number":1497,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_10e653b4","line":1494,"range":{"start_line":1494,"start_character":39,"end_line":1494,"end_character":48},"updated":"2017-02-21 06:37:08.000000000","message":"nit: specific","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"60855a50b105151dce321dd1ec4c7c477a17e8ac","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"        self.assertEqual(\u0027050 FB 520UV\u0027, vol[\u0027metadata\u0027][\u0027data_type\u0027])"},{"line_number":1492,"context_line":""},{"line_number":1493,"context_line":"    def test_create_volume_when_specify_place(self):"},{"line_number":1494,"context_line":"        \"\"\"create volume and put it in specified pool and lss.\"\"\""},{"line_number":1495,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":1496,"context_line":"                                    self.exception, self)"},{"line_number":1497,"context_line":"        self.driver.setup(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_d6de496c","line":1494,"range":{"start_line":1494,"start_character":39,"end_line":1494,"end_character":48},"in_reply_to":"da36d5c6_10e653b4","updated":"2017-02-22 08:23:18.000000000","message":"Thanks Alon, done","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        pool, lss \u003d self.driver._find_pool_lss_pair_from_spec(lun, None)"},{"line_number":1537,"context_line":"        self.assertEqual(TEST_POOL_ID_1, pool)"},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"    def test_create_volume_but_specify_wrong_pool_display_name(self):"},{"line_number":1540,"context_line":"        \"\"\"create volume, but set a wrong pool display name.\"\"\""},{"line_number":1541,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":1542,"context_line":"                                    self.exception, self)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_b0bbc771","line":1539,"range":{"start_line":1539,"start_character":4,"end_line":1539,"end_character":69},"updated":"2017-02-21 06:37:08.000000000","message":"better add another test for wrong (unavailable) lss","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"1a64bc8cc510574bc17fb9ca7a44c64119626ab2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9a30ddce_cd87eb10","updated":"2017-03-07 09:21:39.000000000","message":"Add tests to check verify_version","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"755cea91e4bc5440557bc876cff6d4c7a8b41064","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9a30ddce_2d5fa773","in_reply_to":"9a30ddce_cd87eb10","updated":"2017-03-07 09:56:47.000000000","message":"Thanks Isaac, there are test cases for it, test_verify_version_of_8_0_1, test_verify_rest_version_for_5_7, test_verify_rest_version_for_5_8","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"1a64bc8cc510574bc17fb9ca7a44c64119626ab2","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    },"},{"line_number":426,"context_line":"    \"data\":"},{"line_number":427,"context_line":"    {"},{"line_number":428,"context_line":"        \"pools\":"},{"line_number":429,"context_line":"        ["},{"line_number":430,"context_line":"            {"},{"line_number":431,"context_line":"                \"id\": TEST_POOL_ID_1,"},{"line_number":432,"context_line":"                \"name\": TEST_POOL_NAME_1,"},{"line_number":433,"context_line":"                \"node\": \"0\","},{"line_number":434,"context_line":"                \"stgtype\": \"fb\","},{"line_number":435,"context_line":"                \"cap\": \"10737418240\","},{"line_number":436,"context_line":"                \"capavail\": \"10737418240\""},{"line_number":437,"context_line":"            }"},{"line_number":438,"context_line":"        ]"},{"line_number":439,"context_line":"    }"},{"line_number":440,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_a2c48640","line":437,"range":{"start_line":428,"start_character":0,"end_line":437,"end_character":13},"updated":"2017-03-07 09:21:39.000000000","message":"Add additional pool to check case with multiple pools","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"755cea91e4bc5440557bc876cff6d4c7a8b41064","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    },"},{"line_number":426,"context_line":"    \"data\":"},{"line_number":427,"context_line":"    {"},{"line_number":428,"context_line":"        \"pools\":"},{"line_number":429,"context_line":"        ["},{"line_number":430,"context_line":"            {"},{"line_number":431,"context_line":"                \"id\": TEST_POOL_ID_1,"},{"line_number":432,"context_line":"                \"name\": TEST_POOL_NAME_1,"},{"line_number":433,"context_line":"                \"node\": \"0\","},{"line_number":434,"context_line":"                \"stgtype\": \"fb\","},{"line_number":435,"context_line":"                \"cap\": \"10737418240\","},{"line_number":436,"context_line":"                \"capavail\": \"10737418240\""},{"line_number":437,"context_line":"            }"},{"line_number":438,"context_line":"        ]"},{"line_number":439,"context_line":"    }"},{"line_number":440,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_683eedb9","line":437,"range":{"start_line":428,"start_character":0,"end_line":437,"end_character":13},"in_reply_to":"9a30ddce_a2c48640","updated":"2017-03-07 09:56:47.000000000","message":"Thanks Isaac,driver doesn\u0027t fetch all pools user set at one request, it fetches one by one, because if it fetch all existing pools in DS8K, REST will need a lot of time, but usually user only set one or two pools.\n\nreturn [self._client.fetchone(\u0027GET\u0027, \u0027/pools/%s\u0027 % pid,\n        fields\u003d[\u0027id\u0027, \u0027name\u0027, \u0027node\u0027, \u0027stgtype\u0027, \u0027cap\u0027, \u0027capavail\u0027])\n        for pid in pools_str]","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_helper.py":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                    pools_str +\u003d \u0027,\u0027 + pool_id if pools_str else pool_id"},{"line_number":283,"context_line":"                    specified_pool \u003d specified_pool.replace(pool_name, \u0027\u0027)"},{"line_number":284,"context_line":"            if \u0027_\u0027 in specified_pool:"},{"line_number":285,"context_line":"                msg \u003d (_LE(\u0027Please make sure pool [%s] exists in the \u0027"},{"line_number":286,"context_line":"                           \u0027storage via GUI.\u0027)"},{"line_number":287,"context_line":"                       % specified_pool.lstrip(\u0027,\u0027).lstrip())"},{"line_number":288,"context_line":"                LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_f009bf32","line":285,"range":{"start_line":285,"start_character":23,"end_line":285,"end_character":26},"updated":"2017-02-21 06:37:08.000000000","message":"_()","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"60855a50b105151dce321dd1ec4c7c477a17e8ac","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                    pools_str +\u003d \u0027,\u0027 + pool_id if pools_str else pool_id"},{"line_number":283,"context_line":"                    specified_pool \u003d specified_pool.replace(pool_name, \u0027\u0027)"},{"line_number":284,"context_line":"            if \u0027_\u0027 in specified_pool:"},{"line_number":285,"context_line":"                msg \u003d (_LE(\u0027Please make sure pool [%s] exists in the \u0027"},{"line_number":286,"context_line":"                           \u0027storage via GUI.\u0027)"},{"line_number":287,"context_line":"                       % specified_pool.lstrip(\u0027,\u0027).lstrip())"},{"line_number":288,"context_line":"                LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_b95c66ee","line":285,"range":{"start_line":285,"start_character":23,"end_line":285,"end_character":26},"in_reply_to":"da36d5c6_f009bf32","updated":"2017-02-22 08:23:18.000000000","message":"Thanks Alon, done","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            for lss_id in specified_lss:"},{"line_number":294,"context_line":"                if int(lss_id, 16) \u003e 255:"},{"line_number":295,"context_line":"                    raise exception.InvalidParameterValue("},{"line_number":296,"context_line":"                        \u0027Invalid LSS %s\u0027 % lss_id)"},{"line_number":297,"context_line":"            storage_lss \u003d specified_lss"},{"line_number":298,"context_line":"        return pools_str, storage_lss"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_b0174750","line":296,"range":{"start_line":296,"start_character":24,"end_line":296,"end_character":40},"updated":"2017-02-21 06:37:08.000000000","message":"_()","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"60855a50b105151dce321dd1ec4c7c477a17e8ac","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            for lss_id in specified_lss:"},{"line_number":294,"context_line":"                if int(lss_id, 16) \u003e 255:"},{"line_number":295,"context_line":"                    raise exception.InvalidParameterValue("},{"line_number":296,"context_line":"                        \u0027Invalid LSS %s\u0027 % lss_id)"},{"line_number":297,"context_line":"            storage_lss \u003d specified_lss"},{"line_number":298,"context_line":"        return pools_str, storage_lss"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_76091ddd","line":296,"range":{"start_line":296,"start_character":24,"end_line":296,"end_character":40},"in_reply_to":"da36d5c6_b0174750","updated":"2017-02-22 08:23:18.000000000","message":"Thanks Alon, done.","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":1086,"context_line":"                         not in self.backend[\u0027lss_ids_for_cg\u0027]]"},{"line_number":1087,"context_line":"        if not candidate_lcu:"},{"line_number":1088,"context_line":"            msg \u003d _(\u0027All LCUs have been reserved for consistency group.\u0027)"},{"line_number":1089,"context_line":"            LOG.debug(msg)"},{"line_number":1090,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1091,"context_line":"        if specified_lcu_ids:"},{"line_number":1092,"context_line":"            candidate_lcu \u003d [lcu for lcu in existing_lcu"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_903b23eb","line":1089,"range":{"start_line":1089,"start_character":12,"end_line":1089,"end_character":21},"updated":"2017-02-21 06:37:08.000000000","message":"LOG.error","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"60855a50b105151dce321dd1ec4c7c477a17e8ac","unresolved":false,"context_lines":[{"line_number":1086,"context_line":"                         not in self.backend[\u0027lss_ids_for_cg\u0027]]"},{"line_number":1087,"context_line":"        if not candidate_lcu:"},{"line_number":1088,"context_line":"            msg \u003d _(\u0027All LCUs have been reserved for consistency group.\u0027)"},{"line_number":1089,"context_line":"            LOG.debug(msg)"},{"line_number":1090,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1091,"context_line":"        if specified_lcu_ids:"},{"line_number":1092,"context_line":"            candidate_lcu \u003d [lcu for lcu in existing_lcu"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_3617a5ee","line":1089,"range":{"start_line":1089,"start_character":12,"end_line":1089,"end_character":21},"in_reply_to":"da36d5c6_903b23eb","updated":"2017-02-22 08:23:18.000000000","message":"Thanks Alon, done","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":1094,"context_line":"            if not candidate_lcu:"},{"line_number":1095,"context_line":"                msg \u003d _(\u0027Please make sure LCUs are not full and specified LCUs\u0027"},{"line_number":1096,"context_line":"                        \u0027are a subset of LCUs in ds8k_devadd_unitadd_mapping.\u0027)"},{"line_number":1097,"context_line":"                LOG.debug(msg)"},{"line_number":1098,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1099,"context_line":""},{"line_number":1100,"context_line":"        # prefer to use LCU that is not in PPRC path first."}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_b0402758","line":1097,"range":{"start_line":1097,"start_character":16,"end_line":1097,"end_character":25},"updated":"2017-02-21 06:37:08.000000000","message":"LOG.error","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"60855a50b105151dce321dd1ec4c7c477a17e8ac","unresolved":false,"context_lines":[{"line_number":1094,"context_line":"            if not candidate_lcu:"},{"line_number":1095,"context_line":"                msg \u003d _(\u0027Please make sure LCUs are not full and specified LCUs\u0027"},{"line_number":1096,"context_line":"                        \u0027are a subset of LCUs in ds8k_devadd_unitadd_mapping.\u0027)"},{"line_number":1097,"context_line":"                LOG.debug(msg)"},{"line_number":1098,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1099,"context_line":""},{"line_number":1100,"context_line":"        # prefer to use LCU that is not in PPRC path first."}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_76d75d23","line":1097,"range":{"start_line":1097,"start_character":16,"end_line":1097,"end_character":25},"in_reply_to":"da36d5c6_b0402758","updated":"2017-02-22 08:23:18.000000000","message":"Thanks Alon, done","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"d53fd9e83593b1e977b3e1564c209b3354a4371f","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LSS_VOL_SLOTS \u003d 0x100"},{"line_number":38,"context_line":"LSS_SLOTS \u003d 0xFF"},{"line_number":39,"context_line":"# if use new REST API, please update the verison below"},{"line_number":40,"context_line":"VALID_REST_VERSION_5_7_MIN \u003d \u00275.7.51.1047\u0027"},{"line_number":41,"context_line":"VALID_REST_VERSION_5_8_MIN \u003d \u00275.8.20.1018\u0027"},{"line_number":42,"context_line":"VALID_STORAGE_VERSION \u003d \u00278.1\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"dfeb2761_c96f8590","side":"PARENT","line":39,"updated":"2017-04-05 20:16:23.000000000","message":"JiaMin I\u0027d recommend moving the changes for checking the version checking to a different patch. They seem unrelated.","commit_id":"ea82ca1e6c7b427b738e425adaf11949b53b5927"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"87970b9f8caa63f552389deaf0cd822a1cdfaee6","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                        if lss[\u0027id\u0027] not in excluded_lss]"},{"line_number":323,"context_line":"        if not existing_lss:"},{"line_number":324,"context_line":"            LOG.info(\"All LSSs are full.\")"},{"line_number":325,"context_line":"            return None"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        # user specify LSSs in extra-specs."},{"line_number":328,"context_line":"        if specified_lss_ids:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ffe62b97_07230daa","line":325,"updated":"2017-03-27 14:06:07.000000000","message":"return None \u003d\u003e return","commit_id":"4f0c1fb0e0b30d65cdf7f7a1df60248459d6ee4d"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"65b8dbddee31fe9211fae89298943730680c6de5","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                        if lss[\u0027id\u0027] not in excluded_lss]"},{"line_number":323,"context_line":"        if not existing_lss:"},{"line_number":324,"context_line":"            LOG.info(\"All LSSs are full.\")"},{"line_number":325,"context_line":"            return None"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        # user specify LSSs in extra-specs."},{"line_number":328,"context_line":"        if specified_lss_ids:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ffe62b97_08ce602d","line":325,"in_reply_to":"ffe62b97_07230daa","updated":"2017-03-28 03:50:21.000000000","message":"Thank Ivan, \"return\" and \"return None\" have the same behavior here, but the return value of this function will be used by other functions later, and \"return\" seems to me that it just wants to exit the whole function，so I prefer to return None explicitly. Can you help me to consider it again?","commit_id":"4f0c1fb0e0b30d65cdf7f7a1df60248459d6ee4d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"87970b9f8caa63f552389deaf0cd822a1cdfaee6","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                        node, existing_lss, True)"},{"line_number":344,"context_line":"            else:"},{"line_number":345,"context_line":"                LOG.info(\"All appropriate LSSs specified are full.\")"},{"line_number":346,"context_line":"                return None"},{"line_number":347,"context_line":"        else:"},{"line_number":348,"context_line":"            # exclude LSSs that reserved for CG."},{"line_number":349,"context_line":"            if self.backend[\u0027lss_ids_for_cg\u0027]:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ffe62b97_2751710f","line":346,"updated":"2017-03-27 14:06:07.000000000","message":"return None \u003d\u003e return","commit_id":"4f0c1fb0e0b30d65cdf7f7a1df60248459d6ee4d"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"65b8dbddee31fe9211fae89298943730680c6de5","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                        node, existing_lss, True)"},{"line_number":344,"context_line":"            else:"},{"line_number":345,"context_line":"                LOG.info(\"All appropriate LSSs specified are full.\")"},{"line_number":346,"context_line":"                return None"},{"line_number":347,"context_line":"        else:"},{"line_number":348,"context_line":"            # exclude LSSs that reserved for CG."},{"line_number":349,"context_line":"            if self.backend[\u0027lss_ids_for_cg\u0027]:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ffe62b97_e8ce9c2b","line":346,"in_reply_to":"ffe62b97_2751710f","updated":"2017-03-28 03:50:21.000000000","message":"Thanks Ivan，please check the comment above.","commit_id":"4f0c1fb0e0b30d65cdf7f7a1df60248459d6ee4d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"42c5ee7cb83e0a891058a016bbaf93b5f1a782dc","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        return storage_pools"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    @proxy.logger"},{"line_number":237,"context_line":"    def update_storage_pools(self, stoarge_pools):"},{"line_number":238,"context_line":"        self._storage_pools \u003d stoarge_pools"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _format_pools(self, pools):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f1d235d_3cef40b1","line":237,"updated":"2017-07-04 05:35:40.000000000","message":"storage_pools","commit_id":"84c20c00eef0a0531ca7e95c3f2f94098118f379"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"8c7945379a6846dffe49c068f928ce5327e6ec6e","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        return storage_pools"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    @proxy.logger"},{"line_number":237,"context_line":"    def update_storage_pools(self, stoarge_pools):"},{"line_number":238,"context_line":"        self._storage_pools \u003d stoarge_pools"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _format_pools(self, pools):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f1d235d_3c7ce0b3","line":237,"in_reply_to":"3f1d235d_3cef40b1","updated":"2017-07-04 05:49:38.000000000","message":"thank you very much, done.","commit_id":"84c20c00eef0a0531ca7e95c3f2f94098118f379"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"42c5ee7cb83e0a891058a016bbaf93b5f1a782dc","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    @proxy.logger"},{"line_number":237,"context_line":"    def update_storage_pools(self, stoarge_pools):"},{"line_number":238,"context_line":"        self._storage_pools \u003d stoarge_pools"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _format_pools(self, pools):"},{"line_number":241,"context_line":"        return ((p[\u0027id\u0027], {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f1d235d_7cf5b882","line":238,"updated":"2017-07-04 05:35:40.000000000","message":"storage_pools","commit_id":"84c20c00eef0a0531ca7e95c3f2f94098118f379"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"8c7945379a6846dffe49c068f928ce5327e6ec6e","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    @proxy.logger"},{"line_number":237,"context_line":"    def update_storage_pools(self, stoarge_pools):"},{"line_number":238,"context_line":"        self._storage_pools \u003d stoarge_pools"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _format_pools(self, pools):"},{"line_number":241,"context_line":"        return ((p[\u0027id\u0027], {"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f1d235d_fc4f888f","line":238,"in_reply_to":"3f1d235d_7cf5b882","updated":"2017-07-04 05:49:38.000000000","message":"thank you very much, done","commit_id":"84c20c00eef0a0531ca7e95c3f2f94098118f379"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py":[{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"79c136cd6b4f4a5e292fad99ad359e9157e29544","unresolved":false,"context_lines":[{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":484,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":485,"context_line":"            msg \u003d _(\"It doesn\u0027t support to specify pool or lss \""},{"line_number":486,"context_line":"                    \"for volume which belongs to consistency group.\")"},{"line_number":487,"context_line":"            LOG.error(msg)"},{"line_number":488,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":489,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_cbafaae1","line":486,"range":{"start_line":485,"start_character":21,"end_line":486,"end_character":66},"updated":"2017-02-21 06:37:08.000000000","message":"\"No support for specifying pool or lss for volumes that belong to ...\"","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"60855a50b105151dce321dd1ec4c7c477a17e8ac","unresolved":false,"context_lines":[{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":484,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":485,"context_line":"            msg \u003d _(\"It doesn\u0027t support to specify pool or lss \""},{"line_number":486,"context_line":"                    \"for volume which belongs to consistency group.\")"},{"line_number":487,"context_line":"            LOG.error(msg)"},{"line_number":488,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":489,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_99108203","line":486,"range":{"start_line":485,"start_character":21,"end_line":486,"end_character":66},"in_reply_to":"da36d5c6_cbafaae1","updated":"2017-02-22 08:23:18.000000000","message":"Thanks Alon, done.","commit_id":"6e29ee076f508dae5d37b693250b1e811a5fc926"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"1a64bc8cc510574bc17fb9ca7a44c64119626ab2","unresolved":false,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        # check thin or thick"},{"line_number":796,"context_line":"        old_type_thick, new_type_thick \u003d _check_extra_specs("},{"line_number":797,"context_line":"            \u0027drivers:thin_provision\u0027, \u0027False\u0027.upper())"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        # check replication capability"},{"line_number":800,"context_line":"        old_type_replication, new_type_replication \u003d _check_extra_specs("}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_1ce8577c","line":797,"range":{"start_line":797,"start_character":38,"end_line":797,"end_character":53},"updated":"2017-03-07 09:21:39.000000000","message":"You can just pass \u0027FALSE\u0027","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"755cea91e4bc5440557bc876cff6d4c7a8b41064","unresolved":false,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        # check thin or thick"},{"line_number":796,"context_line":"        old_type_thick, new_type_thick \u003d _check_extra_specs("},{"line_number":797,"context_line":"            \u0027drivers:thin_provision\u0027, \u0027False\u0027.upper())"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        # check replication capability"},{"line_number":800,"context_line":"        old_type_replication, new_type_replication \u003d _check_extra_specs("}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_48af69e3","line":797,"range":{"start_line":797,"start_character":38,"end_line":797,"end_character":53},"in_reply_to":"9a30ddce_1ce8577c","updated":"2017-03-07 09:56:47.000000000","message":"Thanks Isaac, I will fix it.","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"1a64bc8cc510574bc17fb9ca7a44c64119626ab2","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        # because of rollback problem once failed to retype."},{"line_number":805,"context_line":"        new_props \u003d {}"},{"line_number":806,"context_line":"        if old_type_thick !\u003d new_type_thick:"},{"line_number":807,"context_line":"            new_props[\u0027type_thin\u0027] \u003d not new_type_thick"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        if ((old_specified_pool or old_specified_lss) and"},{"line_number":810,"context_line":"           (new_specified_pool or new_specified_lss)):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_7f65c5df","line":807,"range":{"start_line":807,"start_character":11,"end_line":807,"end_character":55},"updated":"2017-03-07 09:21:39.000000000","message":"Why you converted the key to thin. Can\u0027t it be new_props[\u0027type_thick\u0027]\nIn other words, is this extra logic is required \n?","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"755cea91e4bc5440557bc876cff6d4c7a8b41064","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        # because of rollback problem once failed to retype."},{"line_number":805,"context_line":"        new_props \u003d {}"},{"line_number":806,"context_line":"        if old_type_thick !\u003d new_type_thick:"},{"line_number":807,"context_line":"            new_props[\u0027type_thin\u0027] \u003d not new_type_thick"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        if ((old_specified_pool or old_specified_lss) and"},{"line_number":810,"context_line":"           (new_specified_pool or new_specified_lss)):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_4895a93e","line":807,"range":{"start_line":807,"start_character":11,"end_line":807,"end_character":55},"in_reply_to":"9a30ddce_7f65c5df","updated":"2017-03-07 09:56:47.000000000","message":"Thanks Isaac, this is because default value of properties in extra-specs can be False or True, in order to have a common\nfunction(_check_extra_specs) to get the value of all properties, here changes thin to thick to check the properties, but driver uses thin as a keyword everywhere because it is the default value, so I think use type_thick is not so compatible and convert new_type_thick here.","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"1a64bc8cc510574bc17fb9ca7a44c64119626ab2","unresolved":false,"context_lines":[{"line_number":807,"context_line":"            new_props[\u0027type_thin\u0027] \u003d not new_type_thick"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        if ((old_specified_pool or old_specified_lss) and"},{"line_number":810,"context_line":"           (new_specified_pool or new_specified_lss)):"},{"line_number":811,"context_line":"            raise exception.VolumeDriverException("},{"line_number":812,"context_line":"                message\u003d_(\"Retype does not support to move volume from \""},{"line_number":813,"context_line":"                          \"specified pool or lss to another specified \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_bc03cb0e","line":810,"range":{"start_line":810,"start_character":11,"end_line":810,"end_character":52},"updated":"2017-03-07 09:21:39.000000000","message":"Indentation","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"755cea91e4bc5440557bc876cff6d4c7a8b41064","unresolved":false,"context_lines":[{"line_number":807,"context_line":"            new_props[\u0027type_thin\u0027] \u003d not new_type_thick"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        if ((old_specified_pool or old_specified_lss) and"},{"line_number":810,"context_line":"           (new_specified_pool or new_specified_lss)):"},{"line_number":811,"context_line":"            raise exception.VolumeDriverException("},{"line_number":812,"context_line":"                message\u003d_(\"Retype does not support to move volume from \""},{"line_number":813,"context_line":"                          \"specified pool or lss to another specified \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_487cc920","line":810,"range":{"start_line":810,"start_character":11,"end_line":810,"end_character":52},"in_reply_to":"9a30ddce_bc03cb0e","updated":"2017-03-07 09:56:47.000000000","message":"Thanks Isaac, change it here will have a pep8 issue.","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"1a64bc8cc510574bc17fb9ca7a44c64119626ab2","unresolved":false,"context_lines":[{"line_number":851,"context_line":"        if new_lun:"},{"line_number":852,"context_line":"            # if new lun meets all requirements of retype sucessfully,"},{"line_number":853,"context_line":"            # exception happens during clean up can be ignored."},{"line_number":854,"context_line":"            if new_type_replication:"},{"line_number":855,"context_line":"                new_lun.type_replication \u003d True"},{"line_number":856,"context_line":"                new_lun \u003d self._replication.enable_replication(new_lun, True)"},{"line_number":857,"context_line":"            elif old_type_replication:"},{"line_number":858,"context_line":"                new_lun.type_replication \u003d False"},{"line_number":859,"context_line":"                try:"},{"line_number":860,"context_line":"                    self._replication.delete_replica(lun)"},{"line_number":861,"context_line":"                except Exception:"},{"line_number":862,"context_line":"                    pass"},{"line_number":863,"context_line":"            try:"},{"line_number":864,"context_line":"                self._helper.delete_lun(lun)"},{"line_number":865,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_6241ae39","line":862,"range":{"start_line":854,"start_character":12,"end_line":862,"end_character":24},"updated":"2017-03-07 09:21:39.000000000","message":"According to the logic above both new_type_replication and old_type_replication can be True.\nIn this case you give priority to new_type.\nAt least add a comment to explain this.","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"755cea91e4bc5440557bc876cff6d4c7a8b41064","unresolved":false,"context_lines":[{"line_number":851,"context_line":"        if new_lun:"},{"line_number":852,"context_line":"            # if new lun meets all requirements of retype sucessfully,"},{"line_number":853,"context_line":"            # exception happens during clean up can be ignored."},{"line_number":854,"context_line":"            if new_type_replication:"},{"line_number":855,"context_line":"                new_lun.type_replication \u003d True"},{"line_number":856,"context_line":"                new_lun \u003d self._replication.enable_replication(new_lun, True)"},{"line_number":857,"context_line":"            elif old_type_replication:"},{"line_number":858,"context_line":"                new_lun.type_replication \u003d False"},{"line_number":859,"context_line":"                try:"},{"line_number":860,"context_line":"                    self._replication.delete_replica(lun)"},{"line_number":861,"context_line":"                except Exception:"},{"line_number":862,"context_line":"                    pass"},{"line_number":863,"context_line":"            try:"},{"line_number":864,"context_line":"                self._helper.delete_lun(lun)"},{"line_number":865,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_28a4f555","line":862,"range":{"start_line":854,"start_character":12,"end_line":862,"end_character":24},"in_reply_to":"9a30ddce_6241ae39","updated":"2017-03-07 09:56:47.000000000","message":"Thanks isaac, first of all, new_lun only has source volume in the primary here, so here only need to make user new type enables replication or not, if yes, create target volume, otherwise it doesn\u0027t need to do anything and only begin to clean lun(Note: not new_lun)","commit_id":"42d8c1af63c625a4fa322c17f371d1b93e7be40b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ff42d41ccf2b37af9dc177d984dfaf35c37e6cba","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":486,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":487,"context_line":"            msg \u003d _(\"No support for specifying pool or lss for \""},{"line_number":488,"context_line":"                    \"volumes that belong to consistency group.\")"},{"line_number":489,"context_line":"            LOG.error(msg)"},{"line_number":490,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":491,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bff0334d_c9f622d8","line":488,"updated":"2017-04-10 21:25:59.000000000","message":"We should probably stop using the term consistency group here.","commit_id":"75d163cb3ed2810212e3d7013f17ef6745f264f7"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7a8d573eba9e56ffe472ed74ea977b33585034a7","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":486,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":487,"context_line":"            msg \u003d _(\"No support for specifying pool or lss for \""},{"line_number":488,"context_line":"                    \"volumes that belong to consistency group.\")"},{"line_number":489,"context_line":"            LOG.error(msg)"},{"line_number":490,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":491,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bff0334d_18ba0e6d","line":488,"in_reply_to":"bff0334d_c7a9697c","updated":"2017-04-11 02:09:49.000000000","message":"Thanks Walter and Gerald, it is a consistency group here, and I prefer to use generic volume group for non-consistency group.","commit_id":"75d163cb3ed2810212e3d7013f17ef6745f264f7"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"eba9f267e6a906f0b63b3b94656268f48cdaf7e4","unresolved":false,"context_lines":[{"line_number":485,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":486,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":487,"context_line":"            msg \u003d _(\"No support for specifying pool or lss for \""},{"line_number":488,"context_line":"                    \"volumes that belong to consistency group.\")"},{"line_number":489,"context_line":"            LOG.error(msg)"},{"line_number":490,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":491,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bff0334d_c7a9697c","line":488,"in_reply_to":"bff0334d_c9f622d8","updated":"2017-04-10 23:05:12.000000000","message":"But I think in ds8k\u0027s case it is a consistency group.","commit_id":"75d163cb3ed2810212e3d7013f17ef6745f264f7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"03f20412a3d43c6d89483219686248c80925d9e7","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class Lun(object):"},{"line_number":129,"context_line":"    \"\"\"provide volume information for driver from volume db object.\"\"\""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    class FakeLun(object):"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1f013ff3_3ccbe872","line":129,"updated":"2017-05-16 16:12:44.000000000","message":"should start versioning this class and document it\u0027s changes here.","commit_id":"8d0870deb29c5765efc17148c07688eda408c2ba"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"e4176d370789610852811e6ec7c1a2a8ae705084","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class Lun(object):"},{"line_number":129,"context_line":"    \"\"\"provide volume information for driver from volume db object.\"\"\""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    class FakeLun(object):"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_e8c49f61","line":129,"in_reply_to":"1f013ff3_3ccbe872","updated":"2017-05-19 02:50:07.000000000","message":"Thanks Walter for your great suggestion, I fix it in the new patch.","commit_id":"8d0870deb29c5765efc17148c07688eda408c2ba"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"df4008d5316be460773761057c197532ab09f749","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        if connection_type \u003d\u003d storage.XIV_CONNECTION_TYPE_FC_ECKD:"},{"line_number":449,"context_line":"            if lun.type_thin:"},{"line_number":450,"context_line":"                if self._helper.get_thin_provision():"},{"line_number":451,"context_line":"                    msg \u003d (_(\"Backend %s can not support ECKD ESE volume.\")"},{"line_number":452,"context_line":"                           % self._helper.backend[\u0027storage_unit\u0027])"},{"line_number":453,"context_line":"                    LOG.error(msg)"},{"line_number":454,"context_line":"                    raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_8ad653c3","line":451,"updated":"2017-06-07 20:42:11.000000000","message":"We don\u0027t need to translate log messages now.   so you can remove the _()","commit_id":"913fb2bc929669e43c8ae412cbac44b6ed1a04ee"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7767251cffbb568486c78b67774c9557efffbd72","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        if connection_type \u003d\u003d storage.XIV_CONNECTION_TYPE_FC_ECKD:"},{"line_number":449,"context_line":"            if lun.type_thin:"},{"line_number":450,"context_line":"                if self._helper.get_thin_provision():"},{"line_number":451,"context_line":"                    msg \u003d (_(\"Backend %s can not support ECKD ESE volume.\")"},{"line_number":452,"context_line":"                           % self._helper.backend[\u0027storage_unit\u0027])"},{"line_number":453,"context_line":"                    LOG.error(msg)"},{"line_number":454,"context_line":"                    raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f231b9d_3dd797f0","line":451,"in_reply_to":"df140735_8ad653c3","updated":"2017-06-12 07:41:49.000000000","message":"Thanks Walter, but it seems that i18n only removes _LE, _LW, _LI, not _.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/i18n.py\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2017-March/113365.html","commit_id":"913fb2bc929669e43c8ae412cbac44b6ed1a04ee"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"df4008d5316be460773761057c197532ab09f749","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    # or vice versa."},{"line_number":459,"context_line":"                    if target_helper.get_thin_provision():"},{"line_number":460,"context_line":"                        msg \u003d (_(\"Secondary storage %s can not support ECKD \""},{"line_number":461,"context_line":"                                 \"ESE volume.\")"},{"line_number":462,"context_line":"                               % target_helper.backend[\u0027storage_unit\u0027])"},{"line_number":463,"context_line":"                        LOG.error(msg)"},{"line_number":464,"context_line":"                        raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_6ae3ffa5","line":461,"updated":"2017-06-07 20:42:11.000000000","message":"same","commit_id":"913fb2bc929669e43c8ae412cbac44b6ed1a04ee"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7767251cffbb568486c78b67774c9557efffbd72","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    # or vice versa."},{"line_number":459,"context_line":"                    if target_helper.get_thin_provision():"},{"line_number":460,"context_line":"                        msg \u003d (_(\"Secondary storage %s can not support ECKD \""},{"line_number":461,"context_line":"                                 \"ESE volume.\")"},{"line_number":462,"context_line":"                               % target_helper.backend[\u0027storage_unit\u0027])"},{"line_number":463,"context_line":"                        LOG.error(msg)"},{"line_number":464,"context_line":"                        raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f231b9d_3d4557b4","line":461,"in_reply_to":"df140735_6ae3ffa5","updated":"2017-06-12 07:41:49.000000000","message":"thanks Walter, please check the comment above.","commit_id":"913fb2bc929669e43c8ae412cbac44b6ed1a04ee"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"df4008d5316be460773761057c197532ab09f749","unresolved":false,"context_lines":[{"line_number":493,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":494,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":495,"context_line":"            msg \u003d _(\"No support for specifying pool or lss for \""},{"line_number":496,"context_line":"                    \"volumes that belong to consistency group.\")"},{"line_number":497,"context_line":"            LOG.error(msg)"},{"line_number":498,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":499,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_4ae03b97","line":496,"updated":"2017-06-07 20:42:11.000000000","message":"same","commit_id":"913fb2bc929669e43c8ae412cbac44b6ed1a04ee"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7767251cffbb568486c78b67774c9557efffbd72","unresolved":false,"context_lines":[{"line_number":493,"context_line":"    def _find_pool_lss_pair_from_spec(self, lun, excluded_lss):"},{"line_number":494,"context_line":"        if lun.group and lun.group.consisgroup_enabled:"},{"line_number":495,"context_line":"            msg \u003d _(\"No support for specifying pool or lss for \""},{"line_number":496,"context_line":"                    \"volumes that belong to consistency group.\")"},{"line_number":497,"context_line":"            LOG.error(msg)"},{"line_number":498,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":499,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f231b9d_fd18ffd3","line":496,"in_reply_to":"df140735_4ae03b97","updated":"2017-06-12 07:41:49.000000000","message":"thanks Walter, please check the comment above.","commit_id":"913fb2bc929669e43c8ae412cbac44b6ed1a04ee"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"04fc53804b949eccb469527b6dea466468055336","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    Version history:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    .. code-block:: none"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        2.1.0 - Added support for specify pool and lss, also improve the code."},{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"5f201791_329cdd0c","line":134,"updated":"2017-06-26 19:57:44.000000000","message":"Can you add \"1.0.0 - initial revision.\" here too?","commit_id":"7f8aae22715812de6c8768fef7c1df8627d6d62f"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"6e45a999b3b3ef91d4b87cd948956dc3e34ef2a1","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    Version history:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    .. code-block:: none"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        2.1.0 - Added support for specify pool and lss, also improve the code."},{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"5f201791_5dd2c101","line":134,"in_reply_to":"5f201791_329cdd0c","updated":"2017-06-27 04:14:05.000000000","message":"oh, thank you very much for your reminder, i will fix it in next patch.","commit_id":"7f8aae22715812de6c8768fef7c1df8627d6d62f"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_replication.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"03f20412a3d43c6d89483219686248c80925d9e7","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"class Replication(object):"},{"line_number":377,"context_line":"    \"\"\"Metro Mirror and Global Mirror will be used by it.\"\"\""},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def __init__(self, source_helper, target_device):"},{"line_number":380,"context_line":"        self._source_helper \u003d source_helper"},{"line_number":381,"context_line":"        connection_type \u003d target_device.get(\u0027connection_type\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f013ff3_7cb970e7","line":378,"updated":"2017-05-16 16:12:44.000000000","message":"should probably start versioning this class too.","commit_id":"8d0870deb29c5765efc17148c07688eda408c2ba"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"e4176d370789610852811e6ec7c1a2a8ae705084","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"class Replication(object):"},{"line_number":377,"context_line":"    \"\"\"Metro Mirror and Global Mirror will be used by it.\"\"\""},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def __init__(self, source_helper, target_device):"},{"line_number":380,"context_line":"        self._source_helper \u003d source_helper"},{"line_number":381,"context_line":"        connection_type \u003d target_device.get(\u0027connection_type\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_c8a1dbab","line":378,"in_reply_to":"1f013ff3_7cb970e7","updated":"2017-05-19 02:50:07.000000000","message":"Thank you very much. done.","commit_id":"8d0870deb29c5765efc17148c07688eda408c2ba"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"62cfac38f95687c7add805c5961e89fd872a4258","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    Version history:"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    .. code-block:: none"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        2.1.0 - improve the code."},{"line_number":384,"context_line":"    \"\"\""},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5f201791_64e114d1","line":382,"updated":"2017-06-20 15:25:43.000000000","message":"Can you add the following?\n\n 1.0.0 - initial revision.","commit_id":"e4b357d8636e3c778ebb19d743ddff943adec2cc"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"33201f3fdffa197bed7b98f75b386963cbba474f","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    Version history:"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    .. code-block:: none"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        2.1.0 - improve the code."},{"line_number":384,"context_line":"    \"\"\""},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5f201791_370d823e","line":382,"in_reply_to":"5f201791_64e114d1","updated":"2017-06-21 01:59:15.000000000","message":"thanks xyang, I fix it in the new patch.","commit_id":"e4b357d8636e3c778ebb19d743ddff943adec2cc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"62cfac38f95687c7add805c5961e89fd872a4258","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                    self.delete_replica(lun)"},{"line_number":487,"context_line":"                    if delete_source:"},{"line_number":488,"context_line":"                        self._source_helper.delete_lun(lun)"},{"line_number":489,"context_line":"                except restclient.APIException:"},{"line_number":490,"context_line":"                    pass"},{"line_number":491,"context_line":"        lun.replication_status \u003d \u0027enabled\u0027"},{"line_number":492,"context_line":"        return lun"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f201791_a4184c75","line":489,"updated":"2017-06-20 15:25:43.000000000","message":"Can you log an info level msg here?","commit_id":"e4b357d8636e3c778ebb19d743ddff943adec2cc"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"33201f3fdffa197bed7b98f75b386963cbba474f","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                    self.delete_replica(lun)"},{"line_number":487,"context_line":"                    if delete_source:"},{"line_number":488,"context_line":"                        self._source_helper.delete_lun(lun)"},{"line_number":489,"context_line":"                except restclient.APIException:"},{"line_number":490,"context_line":"                    pass"},{"line_number":491,"context_line":"        lun.replication_status \u003d \u0027enabled\u0027"},{"line_number":492,"context_line":"        return lun"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f201791_f706ea20","line":489,"in_reply_to":"5f201791_a4184c75","updated":"2017-06-21 01:59:15.000000000","message":"thanks","commit_id":"e4b357d8636e3c778ebb19d743ddff943adec2cc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"62cfac38f95687c7add805c5961e89fd872a4258","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                if delete_source:"},{"line_number":502,"context_line":"                    try:"},{"line_number":503,"context_line":"                        self._source_helper.delete_lun(lun)"},{"line_number":504,"context_line":"                    except restclient.APIException:"},{"line_number":505,"context_line":"                        pass"},{"line_number":506,"context_line":"                raise exception.VolumeDriverException("},{"line_number":507,"context_line":"                    message\u003d(_(\u0027Failed to delete the target volume for \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f201791_642c7499","line":504,"updated":"2017-06-20 15:25:43.000000000","message":"Same here.","commit_id":"e4b357d8636e3c778ebb19d743ddff943adec2cc"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"33201f3fdffa197bed7b98f75b386963cbba474f","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                if delete_source:"},{"line_number":502,"context_line":"                    try:"},{"line_number":503,"context_line":"                        self._source_helper.delete_lun(lun)"},{"line_number":504,"context_line":"                    except restclient.APIException:"},{"line_number":505,"context_line":"                        pass"},{"line_number":506,"context_line":"                raise exception.VolumeDriverException("},{"line_number":507,"context_line":"                    message\u003d(_(\u0027Failed to delete the target volume for \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f201791_9203440e","line":504,"in_reply_to":"5f201791_642c7499","updated":"2017-06-21 01:59:15.000000000","message":"thanks","commit_id":"e4b357d8636e3c778ebb19d743ddff943adec2cc"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"42c5ee7cb83e0a891058a016bbaf93b5f1a782dc","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    .. code-block:: none"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        1.0.0 - initial revision."},{"line_number":384,"context_line":"        2.1.0 - improve the code."},{"line_number":385,"context_line":"    \"\"\""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    VERSION \u003d \"2.1.0\""}],"source_content_type":"text/x-python","patch_set":21,"id":"3f1d235d_7ccc9860","line":384,"updated":"2017-07-04 05:35:40.000000000","message":"probably should provide something more useful here.","commit_id":"84c20c00eef0a0531ca7e95c3f2f94098118f379"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"8c7945379a6846dffe49c068f928ce5327e6ec6e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    .. code-block:: none"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        1.0.0 - initial revision."},{"line_number":384,"context_line":"        2.1.0 - improve the code."},{"line_number":385,"context_line":"    \"\"\""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    VERSION \u003d \"2.1.0\""}],"source_content_type":"text/x-python","patch_set":21,"id":"3f1d235d_9c7774d5","line":384,"in_reply_to":"3f1d235d_7ccc9860","updated":"2017-07-04 05:49:38.000000000","message":"thanks Walt. done.","commit_id":"84c20c00eef0a0531ca7e95c3f2f94098118f379"}]}
