)]}'
{"cinder/tests/unit/volume/drivers/hitachi/test_hitachi_hbsd_rest_fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        request.return_value \u003d FakeResponse(202, COMPLETED_SUCCEEDED_RESULT)"},{"line_number":494,"context_line":"        ret \u003d self.driver.create_volume(fake_volume.fake_volume_obj(self.ctxt))"},{"line_number":495,"context_line":"        self.assertEqual(\u00271\u0027, ret[\u0027provider_location\u0027])"},{"line_number":496,"context_line":"        self.assertEqual(request.call_count, 1)"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    @reduce_retrying_time"},{"line_number":499,"context_line":"    @mock.patch.object(requests.Session, \"request\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_105d18e9","line":496,"range":{"start_line":496,"start_character":25,"end_line":496,"end_character":47},"updated":"2020-06-09 16:04:21.000000000","message":"assertEqual argument order should be (EXPECTED, ACTUAL).","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        request.return_value \u003d FakeResponse(202, COMPLETED_SUCCEEDED_RESULT)"},{"line_number":494,"context_line":"        ret \u003d self.driver.create_volume(fake_volume.fake_volume_obj(self.ctxt))"},{"line_number":495,"context_line":"        self.assertEqual(\u00271\u0027, ret[\u0027provider_location\u0027])"},{"line_number":496,"context_line":"        self.assertEqual(request.call_count, 1)"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    @reduce_retrying_time"},{"line_number":499,"context_line":"    @mock.patch.object(requests.Session, \"request\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_bf01786d","line":496,"range":{"start_line":496,"start_character":25,"end_line":496,"end_character":47},"in_reply_to":"ff570b3c_105d18e9","updated":"2020-06-11 11:22:13.000000000","message":"Done","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"}],"cinder/volume/drivers/hitachi/hbsd_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        new_ldev \u003d self._copy_on_storage(ldev, size)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        return {"},{"line_number":200,"context_line":"            \u0027provider_location\u0027: six.text_type(new_ldev),"},{"line_number":201,"context_line":"        }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_b000acad","line":200,"range":{"start_line":200,"start_character":33,"end_line":200,"end_character":46},"updated":"2020-06-09 16:04:21.000000000","message":"New code should not use six. We are py3-only now, so all use of six should be removed.","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        new_ldev \u003d self._copy_on_storage(ldev, size)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        return {"},{"line_number":200,"context_line":"            \u0027provider_location\u0027: six.text_type(new_ldev),"},{"line_number":201,"context_line":"        }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_1ff8647a","line":200,"range":{"start_line":200,"start_character":33,"end_line":200,"end_character":46},"in_reply_to":"ff570b3c_b000acad","updated":"2020-06-11 11:22:13.000000000","message":"Done","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    def update_volume_stats(self):"},{"line_number":309,"context_line":"        \"\"\"Update properties, capabilities and current states of the driver.\"\"\""},{"line_number":310,"context_line":"        data \u003d {}"},{"line_number":311,"context_line":"        backend_name \u003d self.conf.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":312,"context_line":"        data[\u0027volume_backend_name\u0027] \u003d ("},{"line_number":313,"context_line":"            backend_name or self.driver_info[\u0027volume_backend_name\u0027])"},{"line_number":314,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027Hitachi\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_a9fec667","line":311,"range":{"start_line":311,"start_character":8,"end_line":311,"end_character":64},"updated":"2020-06-27 00:41:33.000000000","message":"nit: you can do the operations in L311-L13 at once:\n\n        backend_name \u003d (self.conf.safe_get(\u0027volume_backend_name\u0027) or \n                                      self.driver_info[\u0027volume_backend_name\u0027])","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    def update_volume_stats(self):"},{"line_number":309,"context_line":"        \"\"\"Update properties, capabilities and current states of the driver.\"\"\""},{"line_number":310,"context_line":"        data \u003d {}"},{"line_number":311,"context_line":"        backend_name \u003d self.conf.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":312,"context_line":"        data[\u0027volume_backend_name\u0027] \u003d ("},{"line_number":313,"context_line":"            backend_name or self.driver_info[\u0027volume_backend_name\u0027])"},{"line_number":314,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027Hitachi\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_b1c55d0d","line":311,"range":{"start_line":311,"start_character":8,"end_line":311,"end_character":64},"in_reply_to":"bf51134e_a9fec667","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        \"\"\"Update properties, capabilities and current states of the driver.\"\"\""},{"line_number":310,"context_line":"        data \u003d {}"},{"line_number":311,"context_line":"        backend_name \u003d self.conf.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":312,"context_line":"        data[\u0027volume_backend_name\u0027] \u003d ("},{"line_number":313,"context_line":"            backend_name or self.driver_info[\u0027volume_backend_name\u0027])"},{"line_number":314,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027Hitachi\u0027"},{"line_number":315,"context_line":"        data[\u0027driver_version\u0027] \u003d VERSION"},{"line_number":316,"context_line":"        data[\u0027storage_protocol\u0027] \u003d self.storage_info[\u0027protocol\u0027]"},{"line_number":317,"context_line":"        data[\"pools\"] \u003d []"},{"line_number":318,"context_line":"        single_pool \u003d {}"},{"line_number":319,"context_line":"        single_pool.update(dict("},{"line_number":320,"context_line":"            pool_name\u003ddata[\u0027volume_backend_name\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_09d412e8","line":317,"range":{"start_line":312,"start_character":0,"end_line":317,"end_character":26},"updated":"2020-06-27 00:41:33.000000000","message":"nit: you can define this dict at once with:\n\ndata \u003d {\n    \u0027volume_backend_name\u0027: backend_name,\n    \u0027 vendor_name\u0027: \u0027Hitachi\u0027,\n    \u0027driver_version\u0027: VERSION,\n    \u0027storage_protocol\u0027: self.storage_info[\u0027protocol\u0027],\n    \u0027pools\u0027: [],\n}","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        \"\"\"Update properties, capabilities and current states of the driver.\"\"\""},{"line_number":310,"context_line":"        data \u003d {}"},{"line_number":311,"context_line":"        backend_name \u003d self.conf.safe_get(\u0027volume_backend_name\u0027)"},{"line_number":312,"context_line":"        data[\u0027volume_backend_name\u0027] \u003d ("},{"line_number":313,"context_line":"            backend_name or self.driver_info[\u0027volume_backend_name\u0027])"},{"line_number":314,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027Hitachi\u0027"},{"line_number":315,"context_line":"        data[\u0027driver_version\u0027] \u003d VERSION"},{"line_number":316,"context_line":"        data[\u0027storage_protocol\u0027] \u003d self.storage_info[\u0027protocol\u0027]"},{"line_number":317,"context_line":"        data[\"pools\"] \u003d []"},{"line_number":318,"context_line":"        single_pool \u003d {}"},{"line_number":319,"context_line":"        single_pool.update(dict("},{"line_number":320,"context_line":"            pool_name\u003ddata[\u0027volume_backend_name\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_f1cfd526","line":317,"range":{"start_line":312,"start_character":0,"end_line":317,"end_character":26},"in_reply_to":"bf51134e_09d412e8","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        \"\"\"Return volume properties which Cinder needs to manage the volume.\"\"\""},{"line_number":397,"context_line":"        if \u0027source-name\u0027 in existing_ref:"},{"line_number":398,"context_line":"            ldev \u003d self.get_ldev_by_name("},{"line_number":399,"context_line":"                existing_ref.get(\u0027source-name\u0027)["},{"line_number":400,"context_line":"                    _VOLUME_ID_INDEX:].replace(\"-\", \"\"))"},{"line_number":401,"context_line":"        elif \u0027source-id\u0027 in existing_ref:"},{"line_number":402,"context_line":"            ldev \u003d _str2int(existing_ref.get(\u0027source-id\u0027))"},{"line_number":403,"context_line":"        self.check_ldev_manageability(ldev, existing_ref)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_923050a1","line":400,"range":{"start_line":399,"start_character":16,"end_line":400,"end_character":56},"updated":"2020-06-27 00:41:33.000000000","message":"nit: if the source name prefix is always \u0027volume-\u0027, you can do:\n\n    existing_ref.get(\u0027source-name\u0027).lstrip(\u0027volume-\u0027).replace(\u0027-\u0027, \u0027\u0027)","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        \"\"\"Return volume properties which Cinder needs to manage the volume.\"\"\""},{"line_number":397,"context_line":"        if \u0027source-name\u0027 in existing_ref:"},{"line_number":398,"context_line":"            ldev \u003d self.get_ldev_by_name("},{"line_number":399,"context_line":"                existing_ref.get(\u0027source-name\u0027)["},{"line_number":400,"context_line":"                    _VOLUME_ID_INDEX:].replace(\"-\", \"\"))"},{"line_number":401,"context_line":"        elif \u0027source-id\u0027 in existing_ref:"},{"line_number":402,"context_line":"            ldev \u003d _str2int(existing_ref.get(\u0027source-id\u0027))"},{"line_number":403,"context_line":"        self.check_ldev_manageability(ldev, existing_ref)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_31878db9","line":400,"range":{"start_line":399,"start_character":16,"end_line":400,"end_character":56},"in_reply_to":"bf51134e_923050a1","updated":"2020-07-01 10:14:44.000000000","message":"Done. I found the driver don\u0027t need to erase \u0027volume-\u0027 prefix.","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b67334c2bb0603e30e3d30a0069ccbd815f4e433","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"COMMON_VOLUME_OPTS \u003d ["},{"line_number":48,"context_line":"    cfg.StrOpt("},{"line_number":49,"context_line":"        \u0027hitachi_storage_id\u0027,"},{"line_number":50,"context_line":"        default\u003dNone,"},{"line_number":51,"context_line":"        help\u003d\u0027Product number of the storage system.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_eee42011","line":49,"range":{"start_line":49,"start_character":9,"end_line":49,"end_character":17},"updated":"2020-06-30 16:40:41.000000000","message":"Do we really need \u0027hitachi_\u0027 prefix for all config options?","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"3054e776ceb1a1a0c5f79e3ecda91957cce34716","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"COMMON_VOLUME_OPTS \u003d ["},{"line_number":48,"context_line":"    cfg.StrOpt("},{"line_number":49,"context_line":"        \u0027hitachi_storage_id\u0027,"},{"line_number":50,"context_line":"        default\u003dNone,"},{"line_number":51,"context_line":"        help\u003d\u0027Product number of the storage system.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_517cc1b4","line":49,"range":{"start_line":49,"start_character":9,"end_line":49,"end_character":17},"in_reply_to":"bf51134e_eee42011","updated":"2020-07-01 10:45:25.000000000","message":"I think this driver should need \u0027hitachi-\u0027 prefix since the other drivers have set a vendor name or a storage name for prefix of options.\nThe config options like san_login and san_password is defined commonly for all drivers. On the other hand, the config options for storage id and pool do not exist.","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b67334c2bb0603e30e3d30a0069ccbd815f4e433","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        return None"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"class HBSDCommon(object):"},{"line_number":119,"context_line":"    \"\"\"Common class for Hitachi HBSD Driver.\"\"\""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def __init__(self, conf, driverinfo, db):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_0eecf4f1","line":118,"range":{"start_line":118,"start_character":17,"end_line":118,"end_character":23},"updated":"2020-06-30 16:40:41.000000000","message":"nit: It\u0027s not really needed in Python3-only world","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"1cc24144b77a58bc217fea283a1b952f454b0483","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        return None"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"class HBSDCommon(object):"},{"line_number":119,"context_line":"    \"\"\"Common class for Hitachi HBSD Driver.\"\"\""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def __init__(self, conf, driverinfo, db):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_ae584f56","line":118,"range":{"start_line":118,"start_character":17,"end_line":118,"end_character":23},"in_reply_to":"bf51134e_0eecf4f1","updated":"2020-07-02 05:32:41.000000000","message":"Done","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b67334c2bb0603e30e3d30a0069ccbd815f4e433","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        \"\"\"Create a volume and return its properties.\"\"\""},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            ldev \u003d self.create_ldev(volume[\u0027size\u0027])"},{"line_number":155,"context_line":"        except BaseException:"},{"line_number":156,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":157,"context_line":"                utils.output_log(MSG.CREATE_LDEV_FAILED)"},{"line_number":158,"context_line":"        self.modify_ldev_name(ldev, volume[\u0027id\u0027].replace(\"-\", \"\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_6e9f7065","line":155,"updated":"2020-06-30 16:40:41.000000000","message":"Can we handle some less general exception here and in the rest of code?","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"1cc24144b77a58bc217fea283a1b952f454b0483","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        \"\"\"Create a volume and return its properties.\"\"\""},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            ldev \u003d self.create_ldev(volume[\u0027size\u0027])"},{"line_number":155,"context_line":"        except BaseException:"},{"line_number":156,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":157,"context_line":"                utils.output_log(MSG.CREATE_LDEV_FAILED)"},{"line_number":158,"context_line":"        self.modify_ldev_name(ldev, volume[\u0027id\u0027].replace(\"-\", \"\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_8e558b20","line":155,"in_reply_to":"bf51134e_6e9f7065","updated":"2020-07-02 05:32:41.000000000","message":"I think we cannot handle it. I changed BaseException to Exception.","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"29eba8a7e337469d0f86f2dacc87397aa97cbdee","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        values \u003d [_str2int(value) for value in"},{"line_number":446,"context_line":"                  self.conf.safe_get(param).split(\u0027-\u0027)]"},{"line_number":447,"context_line":"        if (len(values) !\u003d 2 or"},{"line_number":448,"context_line":"                values[0] is None or values[1] is None or"},{"line_number":449,"context_line":"                values[0] \u003e values[1]):"},{"line_number":450,"context_line":"            msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dparam)"},{"line_number":451,"context_line":"            raise utils.HBSDError(msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_8ba9bdde","line":448,"range":{"start_line":448,"start_character":16,"end_line":448,"end_character":54},"updated":"2020-07-07 15:22:49.000000000","message":"nit: None in values","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8b0cdcef728c67d00a6632d8734c66ef3e361b9b","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        values \u003d [_str2int(value) for value in"},{"line_number":446,"context_line":"                  self.conf.safe_get(param).split(\u0027-\u0027)]"},{"line_number":447,"context_line":"        if (len(values) !\u003d 2 or"},{"line_number":448,"context_line":"                values[0] is None or values[1] is None or"},{"line_number":449,"context_line":"                values[0] \u003e values[1]):"},{"line_number":450,"context_line":"            msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dparam)"},{"line_number":451,"context_line":"            raise utils.HBSDError(msg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_a5c12957","line":448,"range":{"start_line":448,"start_character":16,"end_line":448,"end_character":54},"in_reply_to":"bf51134e_8ba9bdde","updated":"2020-07-09 06:56:50.000000000","message":"Done","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"}],"cinder/volume/drivers/hitachi/hbsd_fc.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a0cb99a15f135e8d69507879e57a052690948bae","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    .. code-block:: none"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        1.0.0 - Initial driver."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_0c40aa06","line":60,"updated":"2020-05-20 15:13:04.000000000","message":"The driver that existed in Pike had a version of 1.1.\n\nThis driver should have the same history as the original driver, and this driver should simply have a new version so there is no confusion.\n\nhttps://github.com/openstack/cinder/blob/stable/pike/cinder/volume/drivers/hitachi/hbsd_fc.py#L52\n\nhttps://github.com/openstack/cinder/blob/stable/pike/cinder/volume/drivers/hitachi/hbsd_common.py#L35-L40","commit_id":"da7024c6a0dba92bfe9edcd88e91682c5d25bb0b"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"e2f693726d8c2bbc8d213b5cbe83ca67adac8e4c","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    .. code-block:: none"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        1.0.0 - Initial driver."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_011de9bc","line":60,"in_reply_to":"ff570b3c_0c40aa06","updated":"2020-05-22 09:50:53.000000000","message":"Hi Walt, thanks for your comments.\nI changed the history of Hitachi driver and defined this version as 2.0.","commit_id":"da7024c6a0dba92bfe9edcd88e91682c5d25bb0b"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"153176206c2be30566ab5c81ebe0941f413889a0","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        1.0.0 - Initial driver."},{"line_number":61,"context_line":"        1.1.0 - Add manage_existing/manage_existing_get_size/unmanage methods"},{"line_number":62,"context_line":"        2.0.0 - Refactor the driver to support REST API."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_98675152","line":62,"range":{"start_line":62,"start_character":39,"end_line":62,"end_character":46},"updated":"2020-05-28 12:36:56.000000000","message":"I think the change is a bit more than adding support -- doesn\u0027t this driver now *require* the REST API?\n\nIf so, this note should read something like:\n\n2.0.0 - Major redesign of the driver.  This version requires the \u003cinsert name here\u003e REST API for communication with the storage backend.","commit_id":"9ec03a86b51c75426bfe3ea314fe3560d07e0b7e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"e335a22021225ff3fd4e7ec2aa215c075ee4a598","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        1.0.0 - Initial driver."},{"line_number":61,"context_line":"        1.1.0 - Add manage_existing/manage_existing_get_size/unmanage methods"},{"line_number":62,"context_line":"        2.0.0 - Refactor the driver to support REST API."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_1bb20de7","line":62,"range":{"start_line":62,"start_character":39,"end_line":62,"end_character":46},"in_reply_to":"ff570b3c_98675152","updated":"2020-05-29 01:49:17.000000000","message":"Thanks for your comment.\nYes, this driver requires REST API. This REST API has no product name because it is embedded on Hitachi storage. I updated the version history.","commit_id":"9ec03a86b51c75426bfe3ea314fe3560d07e0b7e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":70,"context_line":"    CI_WIKI_NAME \u003d \"Hitachi_VSP_CI\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    SUPPORTED \u003d False"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":75,"context_line":"        \"\"\"Initialize instance variables.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_501cb012","line":72,"updated":"2020-06-09 16:04:21.000000000","message":"You probably want to remove this line.","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":70,"context_line":"    CI_WIKI_NAME \u003d \"Hitachi_VSP_CI\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    SUPPORTED \u003d False"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":75,"context_line":"        \"\"\"Initialize instance variables.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_fff2d09a","line":72,"in_reply_to":"ff570b3c_501cb012","updated":"2020-06-11 11:22:13.000000000","message":"Done","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b67334c2bb0603e30e3d30a0069ccbd815f4e433","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            self.configuration, _DRIVER_INFO, kwargs.get(\u0027db\u0027))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def check_for_setup_error(self):"},{"line_number":87,"context_line":"        \"\"\"Error are checked in do_setup() instead of this method.\"\"\""},{"line_number":88,"context_line":"        pass"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @utils.output_start_end_log"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_aeb068df","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":65},"updated":"2020-06-30 16:40:41.000000000","message":"It breaks cinder behaviour","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"1cc24144b77a58bc217fea283a1b952f454b0483","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            self.configuration, _DRIVER_INFO, kwargs.get(\u0027db\u0027))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def check_for_setup_error(self):"},{"line_number":87,"context_line":"        \"\"\"Error are checked in do_setup() instead of this method.\"\"\""},{"line_number":88,"context_line":"        pass"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    @utils.output_start_end_log"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_2921d9a0","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":65},"in_reply_to":"bf51134e_aeb068df","updated":"2020-07-02 05:32:41.000000000","message":"The comment text was not appropriate and I deleted it. This driver does not need to perform any processing in this function.","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"}],"cinder/volume/drivers/hitachi/hbsd_iscsi.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a0cb99a15f135e8d69507879e57a052690948bae","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        1.0.0 - Initial driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    VERSION \u003d common.VERSION"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_ec5bb6f2","line":69,"updated":"2020-05-20 15:13:04.000000000","message":"The driver that existed in Pike had a version of 1.1.\n\nThis driver should have the same history as the original driver, and this driver should simply have a new version so there is no confusion.\n\nhttps://github.com/openstack/cinder/blob/stable/pike/cinder/volume/drivers/hitachi/hbsd_iscsi.py#L60\n\nhttps://github.com/openstack/cinder/blob/stable/pike/cinder/volume/drivers/hitachi/hbsd_common.py#L35-L40","commit_id":"da7024c6a0dba92bfe9edcd88e91682c5d25bb0b"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"e2f693726d8c2bbc8d213b5cbe83ca67adac8e4c","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        1.0.0 - Initial driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    VERSION \u003d common.VERSION"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_61602537","line":69,"in_reply_to":"ff570b3c_ec5bb6f2","updated":"2020-05-22 09:50:53.000000000","message":"Done","commit_id":"da7024c6a0dba92bfe9edcd88e91682c5d25bb0b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cinder.volume.drivers.hitachi import hbsd_common as common"},{"line_number":23,"context_line":"from cinder.volume.drivers.hitachi import hbsd_utils as utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ISCSI_VOLUME_OPTS \u003d ["},{"line_number":26,"context_line":"    cfg.BoolOpt("},{"line_number":27,"context_line":"        \u0027hitachi_use_chap_auth\u0027,"},{"line_number":28,"context_line":"        default\u003dFalse,"},{"line_number":29,"context_line":"        help\u003d\u0027If True, CHAP authentication will be applied to communication \u0027"},{"line_number":30,"context_line":"        \u0027between hosts and any of the iSCSI targets on the storage ports.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt("},{"line_number":32,"context_line":"        \u0027hitachi_auth_user\u0027,"},{"line_number":33,"context_line":"        help\u003d\u0027Name of the user used for CHAP authentication performed in \u0027"},{"line_number":34,"context_line":"        \u0027communication between hosts and iSCSI targets on the storage ports.\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt("},{"line_number":36,"context_line":"        \u0027hitachi_auth_password\u0027,"},{"line_number":37,"context_line":"        secret\u003dTrue,"},{"line_number":38,"context_line":"        help\u003d\u0027Password corresponding to hitachi_auth_user.\u0027),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"MSG \u003d utils.HBSDMsg"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_f0b984ec","line":38,"range":{"start_line":25,"start_character":0,"end_line":38,"end_character":61},"updated":"2020-06-09 16:04:21.000000000","message":"These should be removed. There are existing common options that should be used. New driver specific config options should be avoided.","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cinder.volume.drivers.hitachi import hbsd_common as common"},{"line_number":23,"context_line":"from cinder.volume.drivers.hitachi import hbsd_utils as utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ISCSI_VOLUME_OPTS \u003d ["},{"line_number":26,"context_line":"    cfg.BoolOpt("},{"line_number":27,"context_line":"        \u0027hitachi_use_chap_auth\u0027,"},{"line_number":28,"context_line":"        default\u003dFalse,"},{"line_number":29,"context_line":"        help\u003d\u0027If True, CHAP authentication will be applied to communication \u0027"},{"line_number":30,"context_line":"        \u0027between hosts and any of the iSCSI targets on the storage ports.\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt("},{"line_number":32,"context_line":"        \u0027hitachi_auth_user\u0027,"},{"line_number":33,"context_line":"        help\u003d\u0027Name of the user used for CHAP authentication performed in \u0027"},{"line_number":34,"context_line":"        \u0027communication between hosts and iSCSI targets on the storage ports.\u0027),"},{"line_number":35,"context_line":"    cfg.StrOpt("},{"line_number":36,"context_line":"        \u0027hitachi_auth_password\u0027,"},{"line_number":37,"context_line":"        secret\u003dTrue,"},{"line_number":38,"context_line":"        help\u003d\u0027Password corresponding to hitachi_auth_user.\u0027),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"MSG \u003d utils.HBSDMsg"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_e26eb3c7","line":38,"range":{"start_line":25,"start_character":0,"end_line":38,"end_character":61},"in_reply_to":"ff570b3c_f0b984ec","updated":"2020-06-11 11:22:13.000000000","message":"I modified the driver to use the following common options:\n\u0027use_chap_auth\u0027,\n\u0027chap_username\u0027,\n\u0027chap_password\u0027","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":77,"context_line":"    CI_WIKI_NAME \u003d \"Hitachi_VSP_CI\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    SUPPORTED \u003d False"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":82,"context_line":"        \"\"\"Initialize instance variables.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_d0be00d3","line":79,"updated":"2020-06-09 16:04:21.000000000","message":"Remove","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    # ThirdPartySystems wiki page"},{"line_number":77,"context_line":"    CI_WIKI_NAME \u003d \"Hitachi_VSP_CI\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    SUPPORTED \u003d False"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":82,"context_line":"        \"\"\"Initialize instance variables.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_2268abb8","line":79,"in_reply_to":"ff570b3c_d0be00d3","updated":"2020-06-11 11:22:13.000000000","message":"Done","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b67334c2bb0603e30e3d30a0069ccbd815f4e433","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            self.configuration, _DRIVER_INFO, kwargs.get(\u0027db\u0027))"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def check_for_setup_error(self):"},{"line_number":71,"context_line":"        \"\"\"Error are checked in do_setup() instead of this method.\"\"\""},{"line_number":72,"context_line":"        pass"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @utils.output_start_end_log"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_eec9c05a","line":71,"range":{"start_line":71,"start_character":11,"end_line":71,"end_character":65},"updated":"2020-06-30 16:40:41.000000000","message":"The same comment as for FC driver","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"1cc24144b77a58bc217fea283a1b952f454b0483","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            self.configuration, _DRIVER_INFO, kwargs.get(\u0027db\u0027))"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def check_for_setup_error(self):"},{"line_number":71,"context_line":"        \"\"\"Error are checked in do_setup() instead of this method.\"\"\""},{"line_number":72,"context_line":"        pass"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @utils.output_start_end_log"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_693ab1cd","line":71,"range":{"start_line":71,"start_character":11,"end_line":71,"end_character":65},"in_reply_to":"bf51134e_eec9c05a","updated":"2020-07-02 05:32:41.000000000","message":"Done. same as FC driver.","commit_id":"0769e840f08161bc98b7e0ad9af946e20ed688da"}],"cinder/volume/drivers/hitachi/hbsd_rest.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo_utils import excutils"},{"line_number":23,"context_line":"from oslo_utils import timeutils"},{"line_number":24,"context_line":"from oslo_utils import units"},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.volume import configuration"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_10b998e8","line":25,"updated":"2020-06-09 16:04:21.000000000","message":"Remove six.","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from oslo_utils import excutils"},{"line_number":23,"context_line":"from oslo_utils import timeutils"},{"line_number":24,"context_line":"from oslo_utils import units"},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder import exception"},{"line_number":28,"context_line":"from cinder.volume import configuration"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_0263e7de","line":25,"in_reply_to":"ff570b3c_10b998e8","updated":"2020-06-11 11:22:13.000000000","message":"Done","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"EX_ENOOBJ \u003d \u0027EX_ENOOBJ\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"REST_VOLUME_OPTS \u003d ["},{"line_number":82,"context_line":"    cfg.StrOpt("},{"line_number":83,"context_line":"        \u0027hitachi_rest_user\u0027,"},{"line_number":84,"context_line":"        default\u003dNone,"},{"line_number":85,"context_line":"        help\u003d\u0027Username of storage system for REST API\u0027),"},{"line_number":86,"context_line":"    cfg.StrOpt("},{"line_number":87,"context_line":"        \u0027hitachi_rest_password\u0027,"},{"line_number":88,"context_line":"        default\u003dNone,"},{"line_number":89,"context_line":"        secret\u003dTrue,"},{"line_number":90,"context_line":"        help\u003d\u0027Password of storage system for REST API\u0027),"},{"line_number":91,"context_line":"    cfg.StrOpt("},{"line_number":92,"context_line":"        \u0027hitachi_rest_api_ip\u0027,"},{"line_number":93,"context_line":"        default\u003dNone,"},{"line_number":94,"context_line":"        help\u003d\u0027IP address of REST API server\u0027),"},{"line_number":95,"context_line":"    cfg.PortOpt("},{"line_number":96,"context_line":"        \u0027hitachi_rest_api_port\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_70cd7485","line":93,"range":{"start_line":82,"start_character":1,"end_line":93,"end_character":21},"updated":"2020-06-09 16:04:21.000000000","message":"Uses existing config options.","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"EX_ENOOBJ \u003d \u0027EX_ENOOBJ\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"REST_VOLUME_OPTS \u003d ["},{"line_number":82,"context_line":"    cfg.StrOpt("},{"line_number":83,"context_line":"        \u0027hitachi_rest_user\u0027,"},{"line_number":84,"context_line":"        default\u003dNone,"},{"line_number":85,"context_line":"        help\u003d\u0027Username of storage system for REST API\u0027),"},{"line_number":86,"context_line":"    cfg.StrOpt("},{"line_number":87,"context_line":"        \u0027hitachi_rest_password\u0027,"},{"line_number":88,"context_line":"        default\u003dNone,"},{"line_number":89,"context_line":"        secret\u003dTrue,"},{"line_number":90,"context_line":"        help\u003d\u0027Password of storage system for REST API\u0027),"},{"line_number":91,"context_line":"    cfg.StrOpt("},{"line_number":92,"context_line":"        \u0027hitachi_rest_api_ip\u0027,"},{"line_number":93,"context_line":"        default\u003dNone,"},{"line_number":94,"context_line":"        help\u003d\u0027IP address of REST API server\u0027),"},{"line_number":95,"context_line":"    cfg.PortOpt("},{"line_number":96,"context_line":"        \u0027hitachi_rest_api_port\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_e2a353ff","line":93,"range":{"start_line":82,"start_character":1,"end_line":93,"end_character":21},"in_reply_to":"ff570b3c_70cd7485","updated":"2020-06-11 11:22:13.000000000","message":"I modified the driver to use the following common options:\n\u0027san_login\u0027,\n\u0027san_password\u0027,\n\u0027san_ip\u0027","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7c30159bd198c3bf4c418066091d18a0f091e6b7","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                    MSG.INVALID_PARAMETER, param\u003d\u0027hitachi_snap_pool\u0027)"},{"line_number":305,"context_line":"                raise utils.HBSDError(msg)"},{"line_number":306,"context_line":"            else:"},{"line_number":307,"context_line":"                raise ex"},{"line_number":308,"context_line":"        try:"},{"line_number":309,"context_line":"            self._wait_copy_pair_status(svol, set([PSUS, SMPP, SMPL]))"},{"line_number":310,"context_line":"        except BaseException:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_b0c70c65","line":307,"range":{"start_line":307,"start_character":16,"end_line":307,"end_character":24},"updated":"2020-06-09 16:04:21.000000000","message":"Should just be \"raise\", not \"raise ex\".","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"4705b529547c7b8e3b90a3f025dc4f2287c9efb6","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                    MSG.INVALID_PARAMETER, param\u003d\u0027hitachi_snap_pool\u0027)"},{"line_number":305,"context_line":"                raise utils.HBSDError(msg)"},{"line_number":306,"context_line":"            else:"},{"line_number":307,"context_line":"                raise ex"},{"line_number":308,"context_line":"        try:"},{"line_number":309,"context_line":"            self._wait_copy_pair_status(svol, set([PSUS, SMPP, SMPL]))"},{"line_number":310,"context_line":"        except BaseException:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_02a807d7","line":307,"range":{"start_line":307,"start_character":16,"end_line":307,"end_character":24},"in_reply_to":"ff570b3c_b0c70c65","updated":"2020-06-11 11:22:13.000000000","message":"Done","commit_id":"afdd4f20c9a7a8bb85ac86d5e3979ea089697f76"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            \u0027status: %(status)s)\u0027,"},{"line_number":632,"context_line":"            {\u0027pvol\u0027: pvol, \u0027svol\u0027: svol, \u0027status\u0027: status})"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"        return (pvol, [{\u0027ldev\u0027: svol, \u0027is_psus\u0027: is_psus, \u0027status\u0027: status}])"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def get_pair_info(self, ldev):"},{"line_number":637,"context_line":"        \"\"\"Return info of the volume pair.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_55c86272","line":634,"range":{"start_line":634,"start_character":14,"end_line":634,"end_character":77},"updated":"2020-06-27 00:41:33.000000000","message":"nit: you can remove the outermost brackets.","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            \u0027status: %(status)s)\u0027,"},{"line_number":632,"context_line":"            {\u0027pvol\u0027: pvol, \u0027svol\u0027: svol, \u0027status\u0027: status})"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"        return (pvol, [{\u0027ldev\u0027: svol, \u0027is_psus\u0027: is_psus, \u0027status\u0027: status}])"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def get_pair_info(self, ldev):"},{"line_number":637,"context_line":"        \"\"\"Return info of the volume pair.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_118409b1","line":634,"range":{"start_line":634,"start_character":14,"end_line":634,"end_character":77},"in_reply_to":"bf51134e_55c86272","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":663,"context_line":"            start \u003d 0"},{"line_number":664,"context_line":"            end \u003d _MAX_LDEV_ID"},{"line_number":665,"context_line":"            cnt \u003d _GET_LDEV_COUNT"},{"line_number":666,"context_line":"        while start \u003c end:"},{"line_number":667,"context_line":"            params \u003d {\u0027headLdevId\u0027: start, \u0027ldevOption\u0027: \u0027dpVolume\u0027,"},{"line_number":668,"context_line":"                      \u0027count\u0027: cnt}"},{"line_number":669,"context_line":"            ldev_list \u003d self.client.get_ldevs("}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_69c02ee2","line":666,"range":{"start_line":666,"start_character":8,"end_line":666,"end_character":26},"updated":"2020-06-27 00:41:33.000000000","message":"nit: you can use range(start, end, step):\n\n    for current in range(start, end, cnt):\n        params \u003d {\u0027headLdevId\u0027: current, ..., \u0027count\u0027: cnt}","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":663,"context_line":"            start \u003d 0"},{"line_number":664,"context_line":"            end \u003d _MAX_LDEV_ID"},{"line_number":665,"context_line":"            cnt \u003d _GET_LDEV_COUNT"},{"line_number":666,"context_line":"        while start \u003c end:"},{"line_number":667,"context_line":"            params \u003d {\u0027headLdevId\u0027: start, \u0027ldevOption\u0027: \u0027dpVolume\u0027,"},{"line_number":668,"context_line":"                      \u0027count\u0027: cnt}"},{"line_number":669,"context_line":"            ldev_list \u003d self.client.get_ldevs("}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_719105f2","line":666,"range":{"start_line":666,"start_character":8,"end_line":666,"end_character":26},"in_reply_to":"bf51134e_69c02ee2","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":670,"context_line":"                params, ignore_message_id\u003dignore_message_id,"},{"line_number":671,"context_line":"                ignore_return_code\u003dignore_return_code)"},{"line_number":672,"context_line":"            for ldev_data in ldev_list:"},{"line_number":673,"context_line":"                if ((\u0027label\u0027 in ldev_data) and (name \u003d\u003d ldev_data[\u0027label\u0027])):"},{"line_number":674,"context_line":"                    return ldev_data[\u0027ldevId\u0027]"},{"line_number":675,"context_line":"            start +\u003d cnt"},{"line_number":676,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_15242a5d","line":673,"range":{"start_line":673,"start_character":19,"end_line":673,"end_character":76},"updated":"2020-06-27 00:41:33.000000000","message":"nit: you can remove the outermost brackets.","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":670,"context_line":"                params, ignore_message_id\u003dignore_message_id,"},{"line_number":671,"context_line":"                ignore_return_code\u003dignore_return_code)"},{"line_number":672,"context_line":"            for ldev_data in ldev_list:"},{"line_number":673,"context_line":"                if ((\u0027label\u0027 in ldev_data) and (name \u003d\u003d ldev_data[\u0027label\u0027])):"},{"line_number":674,"context_line":"                    return ldev_data[\u0027ldevId\u0027]"},{"line_number":675,"context_line":"            start +\u003d cnt"},{"line_number":676,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_518e81d0","line":673,"range":{"start_line":673,"start_character":19,"end_line":673,"end_character":76},"in_reply_to":"bf51134e_15242a5d","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":747,"context_line":"        if ldev_info[\u0027status\u0027] !\u003d NORMAL_STS:"},{"line_number":748,"context_line":"            return False"},{"line_number":749,"context_line":"        if ldev_info[\u0027snapshotPoolId\u0027] is not None:"},{"line_number":750,"context_line":"            svol_info \u003d list(self._get_copy_pair_info(ldev)[1])"},{"line_number":751,"context_line":"            if svol_info and svol_info[0][\u0027status\u0027] \u003d\u003d \u0027PSUP\u0027:"},{"line_number":752,"context_line":"                self._wait_copy_pair_deleting(ldev)"},{"line_number":753,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_55c4e23f","line":750,"range":{"start_line":750,"start_character":11,"end_line":750,"end_character":63},"updated":"2020-06-27 00:41:33.000000000","message":"nit: _get_copy_pair_info returns \n\n    (pvol, [{\u0027ldev\u0027: svol, \u0027is_psus\u0027: is_psus, \u0027status\u0027: status}])\n\nSo you can ignore pvol and assign the 2nd element without conversion:\n\n    _, svol_info \u003d self._get_copy_pair_info(ldev)","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":747,"context_line":"        if ldev_info[\u0027status\u0027] !\u003d NORMAL_STS:"},{"line_number":748,"context_line":"            return False"},{"line_number":749,"context_line":"        if ldev_info[\u0027snapshotPoolId\u0027] is not None:"},{"line_number":750,"context_line":"            svol_info \u003d list(self._get_copy_pair_info(ldev)[1])"},{"line_number":751,"context_line":"            if svol_info and svol_info[0][\u0027status\u0027] \u003d\u003d \u0027PSUP\u0027:"},{"line_number":752,"context_line":"                self._wait_copy_pair_deleting(ldev)"},{"line_number":753,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_b1bc3d6d","line":750,"range":{"start_line":750,"start_character":11,"end_line":750,"end_character":63},"in_reply_to":"bf51134e_55c4e23f","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"29eba8a7e337469d0f86f2dacc87397aa97cbdee","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                params, ignore_message_id\u003dignore_message_id,"},{"line_number":678,"context_line":"                ignore_return_code\u003dignore_return_code)"},{"line_number":679,"context_line":"            for ldev_data in ldev_list:"},{"line_number":680,"context_line":"                if (\u0027label\u0027 in ldev_data) and (name \u003d\u003d ldev_data[\u0027label\u0027]):"},{"line_number":681,"context_line":"                    return ldev_data[\u0027ldevId\u0027]"},{"line_number":682,"context_line":"        return None"},{"line_number":683,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_8b641de7","line":680,"range":{"start_line":680,"start_character":19,"end_line":680,"end_character":74},"updated":"2020-07-07 15:22:49.000000000","message":"nit: you can remove all the brackets","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8b0cdcef728c67d00a6632d8734c66ef3e361b9b","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                params, ignore_message_id\u003dignore_message_id,"},{"line_number":678,"context_line":"                ignore_return_code\u003dignore_return_code)"},{"line_number":679,"context_line":"            for ldev_data in ldev_list:"},{"line_number":680,"context_line":"                if (\u0027label\u0027 in ldev_data) and (name \u003d\u003d ldev_data[\u0027label\u0027]):"},{"line_number":681,"context_line":"                    return ldev_data[\u0027ldevId\u0027]"},{"line_number":682,"context_line":"        return None"},{"line_number":683,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_05b3b50b","line":680,"range":{"start_line":680,"start_character":19,"end_line":680,"end_character":74},"in_reply_to":"bf51134e_8b641de7","updated":"2020-07-09 06:56:50.000000000","message":"Done","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"}],"cinder/volume/drivers/hitachi/hbsd_rest_api.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0f286ad80edc5034832efc6c4ef51b5a859ef21e","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def get_return_code(self):"},{"line_number":130,"context_line":"        return utils.safe_get_return_code(self[\u0027errobj\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def is_success(self, ignore_error\u003d[], ignore_message_id\u003d[],"},{"line_number":133,"context_line":"                   ignore_return_code\u003d[], ignore_all_errors\u003dFalse):"},{"line_number":134,"context_line":"        \"\"\"Check the success or failure of the response.\"\"\""},{"line_number":135,"context_line":"        return (ignore_all_errors or"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_7fb3b9e9","line":132,"updated":"2020-05-21 09:08:17.000000000","message":"pep8: N322: Method\u0027s default argument shouldn\u0027t be mutable!","commit_id":"ebbb180791a4a6b04e3addbe302fc0d9ae0bb6db"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"e2f693726d8c2bbc8d213b5cbe83ca67adac8e4c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def get_return_code(self):"},{"line_number":130,"context_line":"        return utils.safe_get_return_code(self[\u0027errobj\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def is_success(self, ignore_error\u003d[], ignore_message_id\u003d[],"},{"line_number":133,"context_line":"                   ignore_return_code\u003d[], ignore_all_errors\u003dFalse):"},{"line_number":134,"context_line":"        \"\"\"Check the success or failure of the response.\"\"\""},{"line_number":135,"context_line":"        return (ignore_all_errors or"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_a46ecbc6","line":132,"in_reply_to":"ff570b3c_361fa66c","updated":"2020-05-22 09:50:53.000000000","message":"Thanks for an information.\nI removed default arguments from this function. All these arguments are specified in a function that calls this function.","commit_id":"ebbb180791a4a6b04e3addbe302fc0d9ae0bb6db"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"e2f693726d8c2bbc8d213b5cbe83ca67adac8e4c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def get_return_code(self):"},{"line_number":130,"context_line":"        return utils.safe_get_return_code(self[\u0027errobj\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def is_success(self, ignore_error\u003d[], ignore_message_id\u003d[],"},{"line_number":133,"context_line":"                   ignore_return_code\u003d[], ignore_all_errors\u003dFalse):"},{"line_number":134,"context_line":"        \"\"\"Check the success or failure of the response.\"\"\""},{"line_number":135,"context_line":"        return (ignore_all_errors or"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_a4a36b00","line":132,"in_reply_to":"ff570b3c_7fb3b9e9","updated":"2020-05-22 09:50:53.000000000","message":"Done","commit_id":"ebbb180791a4a6b04e3addbe302fc0d9ae0bb6db"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"be1a6d626290936226c6c6a20d815ec5a3d31ebf","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def get_return_code(self):"},{"line_number":130,"context_line":"        return utils.safe_get_return_code(self[\u0027errobj\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def is_success(self, ignore_error\u003d[], ignore_message_id\u003d[],"},{"line_number":133,"context_line":"                   ignore_return_code\u003d[], ignore_all_errors\u003dFalse):"},{"line_number":134,"context_line":"        \"\"\"Check the success or failure of the response.\"\"\""},{"line_number":135,"context_line":"        return (ignore_all_errors or"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_361fa66c","line":132,"in_reply_to":"ff570b3c_7fb3b9e9","updated":"2020-05-21 13:36:21.000000000","message":"https://florimond.dev/blog/articles/2018/08/python-mutable-defaults-are-the-source-of-all-evil/","commit_id":"ebbb180791a4a6b04e3addbe302fc0d9ae0bb6db"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"25315734a54c4b3124808e6225e38daff65579e7","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                self.get_session(session.id, no_retry\u003dTrue, no_log\u003dTrue)"},{"line_number":428,"context_line":"                has_session \u003d True"},{"line_number":429,"context_line":"        except utils.HBSDError as ex:"},{"line_number":430,"context_line":"            LOG.debug(\u0027Failed to get session info: %s\u0027, str(ex))"},{"line_number":431,"context_line":"        return has_session"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    def relogin(self, no_relogin, no_log\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_a655ddfc","line":430,"range":{"start_line":430,"start_character":56,"end_line":430,"end_character":60},"updated":"2020-06-12 11:43:53.000000000","message":"These are being formatted into a string, so no need to force string conversion ahead of time.","commit_id":"c3a3ec02125020a3fb7e50bfbe6d1539e36d9422"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"d5b115934e35b0156f132dc01f6642408c76a32c","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                self.get_session(session.id, no_retry\u003dTrue, no_log\u003dTrue)"},{"line_number":428,"context_line":"                has_session \u003d True"},{"line_number":429,"context_line":"        except utils.HBSDError as ex:"},{"line_number":430,"context_line":"            LOG.debug(\u0027Failed to get session info: %s\u0027, str(ex))"},{"line_number":431,"context_line":"        return has_session"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    def relogin(self, no_relogin, no_log\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_aec5ef3e","line":430,"range":{"start_line":430,"start_character":56,"end_line":430,"end_character":60},"in_reply_to":"ff570b3c_a655ddfc","updated":"2020-06-17 07:09:34.000000000","message":"Done","commit_id":"c3a3ec02125020a3fb7e50bfbe6d1539e36d9422"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            self._keep_session)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.base_url \u003d _build_base_url(ip_addr, self.ip_port)"},{"line_number":210,"context_line":"        self.object_url \u003d (self.base_url + \"/v1/objects/storages/\" +"},{"line_number":211,"context_line":"                           self.storage_id)"},{"line_number":212,"context_line":"        self.service_url \u003d (self.base_url + \"/v1/\" + self.storage_id +"},{"line_number":213,"context_line":"                            \"/services\")"},{"line_number":214,"context_line":"        self.headers \u003d {\"content-type\": \"application/json\","}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_2958f653","line":211,"range":{"start_line":210,"start_character":0,"end_line":211,"end_character":43},"updated":"2020-06-27 00:41:33.000000000","message":"nit: you can use string substition using a dict, instead of concatenating with + operator:\n\n    self.object_url \u003d \u0027%(base_url)s/v1/objects/storages/%(storage_id)s\u0027 % {\n        \u0027base_url\u0027: self.base_url,\n        \u0027storage_id\u0027: self.storage_id,\n    }\n\nWhile reading the code, some people prefer to see the whole string format first, and then replace the parameters.\n\nHere and below.","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            self._keep_session)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.base_url \u003d _build_base_url(ip_addr, self.ip_port)"},{"line_number":210,"context_line":"        self.object_url \u003d (self.base_url + \"/v1/objects/storages/\" +"},{"line_number":211,"context_line":"                           self.storage_id)"},{"line_number":212,"context_line":"        self.service_url \u003d (self.base_url + \"/v1/\" + self.storage_id +"},{"line_number":213,"context_line":"                            \"/services\")"},{"line_number":214,"context_line":"        self.headers \u003d {\"content-type\": \"application/json\","}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_91c139e8","line":211,"range":{"start_line":210,"start_character":0,"end_line":211,"end_character":43},"in_reply_to":"bf51134e_2958f653","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"29eba8a7e337469d0f86f2dacc87397aa97cbdee","unresolved":false,"context_lines":[{"line_number":730,"context_line":"    def unassign_snapshot_volume(self, pvol_ldev_id, mu_number, **kwargs):"},{"line_number":731,"context_line":"        \"\"\"Unassign a snapshot information.\"\"\""},{"line_number":732,"context_line":"        url \u003d ("},{"line_number":733,"context_line":"            \u0027%(url)s/snapshots/%(pvol)d,%(mu)d\u0027 % {"},{"line_number":734,"context_line":"                \u0027url\u0027: self.object_url,"},{"line_number":735,"context_line":"                \u0027pvol\u0027: pvol_ldev_id,"},{"line_number":736,"context_line":"                \u0027mu\u0027: mu_number,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_4ba2054d","line":733,"range":{"start_line":733,"start_character":12,"end_line":733,"end_character":47},"updated":"2020-07-07 15:22:49.000000000","message":"nit: if the whole string is too long to fit in a single line, you can extract some part of it:\n\n    \u0027%(url)s/snapshots/%(pvol)d,%(mu)d/actions/%(action)s/invoke\u0027 % {","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8b0cdcef728c67d00a6632d8734c66ef3e361b9b","unresolved":false,"context_lines":[{"line_number":730,"context_line":"    def unassign_snapshot_volume(self, pvol_ldev_id, mu_number, **kwargs):"},{"line_number":731,"context_line":"        \"\"\"Unassign a snapshot information.\"\"\""},{"line_number":732,"context_line":"        url \u003d ("},{"line_number":733,"context_line":"            \u0027%(url)s/snapshots/%(pvol)d,%(mu)d\u0027 % {"},{"line_number":734,"context_line":"                \u0027url\u0027: self.object_url,"},{"line_number":735,"context_line":"                \u0027pvol\u0027: pvol_ldev_id,"},{"line_number":736,"context_line":"                \u0027mu\u0027: mu_number,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_25cd1985","line":733,"range":{"start_line":733,"start_character":12,"end_line":733,"end_character":47},"in_reply_to":"bf51134e_4ba2054d","updated":"2020-07-09 06:56:50.000000000","message":"Done","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"29eba8a7e337469d0f86f2dacc87397aa97cbdee","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                \u0027url\u0027: self.object_url,"},{"line_number":735,"context_line":"                \u0027pvol\u0027: pvol_ldev_id,"},{"line_number":736,"context_line":"                \u0027mu\u0027: mu_number,"},{"line_number":737,"context_line":"            } + \u0027/actions/unassign-volume/invoke\u0027"},{"line_number":738,"context_line":"        )"},{"line_number":739,"context_line":"        self._invoke(url, **kwargs)"},{"line_number":740,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_8bac1d36","line":737,"range":{"start_line":737,"start_character":16,"end_line":737,"end_character":49},"updated":"2020-07-07 15:22:49.000000000","message":"... and put it inside the dict\n\n    \u0027action\u0027: \u0027unassign-volume\u0027,","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8b0cdcef728c67d00a6632d8734c66ef3e361b9b","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                \u0027url\u0027: self.object_url,"},{"line_number":735,"context_line":"                \u0027pvol\u0027: pvol_ldev_id,"},{"line_number":736,"context_line":"                \u0027mu\u0027: mu_number,"},{"line_number":737,"context_line":"            } + \u0027/actions/unassign-volume/invoke\u0027"},{"line_number":738,"context_line":"        )"},{"line_number":739,"context_line":"        self._invoke(url, **kwargs)"},{"line_number":740,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_65c39158","line":737,"range":{"start_line":737,"start_character":16,"end_line":737,"end_character":49},"in_reply_to":"bf51134e_8bac1d36","updated":"2020-07-09 06:56:50.000000000","message":"Done","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"29eba8a7e337469d0f86f2dacc87397aa97cbdee","unresolved":false,"context_lines":[{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def restore_snapshot(self, pvol_ldev_id, mu_number, body\u003dNone):"},{"line_number":742,"context_line":"        \"\"\"Restore a snapshot information.\"\"\""},{"line_number":743,"context_line":"        url \u003d \u0027%(url)s/snapshots/%(pvol)d,%(mu)d/actions/restore/invoke\u0027 % {"},{"line_number":744,"context_line":"            \u0027url\u0027: self.object_url,"},{"line_number":745,"context_line":"            \u0027pvol\u0027: pvol_ldev_id,"},{"line_number":746,"context_line":"            \u0027mu\u0027: mu_number,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_916e0a94","line":743,"range":{"start_line":743,"start_character":57,"end_line":743,"end_character":64},"updated":"2020-07-07 15:22:49.000000000","message":"... and if you follow the pattern above, it might get easier to compare the methods\n\n    \u0027%(url)s/snapshots/%(pvol)d,%(mu)d/actions/%(action)s/invoke\u0027 % {\n        ...\n        \u0027action\u0027: \u0027restore\u0027,\n    }","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8b0cdcef728c67d00a6632d8734c66ef3e361b9b","unresolved":false,"context_lines":[{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def restore_snapshot(self, pvol_ldev_id, mu_number, body\u003dNone):"},{"line_number":742,"context_line":"        \"\"\"Restore a snapshot information.\"\"\""},{"line_number":743,"context_line":"        url \u003d \u0027%(url)s/snapshots/%(pvol)d,%(mu)d/actions/restore/invoke\u0027 % {"},{"line_number":744,"context_line":"            \u0027url\u0027: self.object_url,"},{"line_number":745,"context_line":"            \u0027pvol\u0027: pvol_ldev_id,"},{"line_number":746,"context_line":"            \u0027mu\u0027: mu_number,"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_05a8d589","line":743,"range":{"start_line":743,"start_character":57,"end_line":743,"end_character":64},"in_reply_to":"bf51134e_916e0a94","updated":"2020-07-09 06:56:50.000000000","message":"Done","commit_id":"0671f017b24d5b1f662c153c104a5e2076ce8dcc"}],"cinder/volume/drivers/hitachi/hbsd_rest_fc.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        target_names \u003d [\u0027-\u0027.join([utils.DRIVER_PREFIX, min(wwpns)])]"},{"line_number":185,"context_line":"        if \u0027ip\u0027 in connector:"},{"line_number":186,"context_line":"            target_names.append("},{"line_number":187,"context_line":"                \u0027-\u0027.join([utils.DRIVER_PREFIX, connector[\u0027ip\u0027]]))"},{"line_number":188,"context_line":"        not_found_count \u003d 0"},{"line_number":189,"context_line":"        for port in target_ports:"},{"line_number":190,"context_line":"            targets[\u0027info\u0027][port] \u003d False"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_2c1be472","line":187,"range":{"start_line":187,"start_character":16,"end_line":187,"end_character":64},"updated":"2020-06-27 00:41:33.000000000","message":"nit:\n\n    \u0027%(prefix)s-%(ip)s\u0027 % {\n        \u0027prefix\u0027: utils.DRIVER_PREFIX,\n        \u0027ip\u0027: connector[\u0027ip\u0027],\n    }","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        target_names \u003d [\u0027-\u0027.join([utils.DRIVER_PREFIX, min(wwpns)])]"},{"line_number":185,"context_line":"        if \u0027ip\u0027 in connector:"},{"line_number":186,"context_line":"            target_names.append("},{"line_number":187,"context_line":"                \u0027-\u0027.join([utils.DRIVER_PREFIX, connector[\u0027ip\u0027]]))"},{"line_number":188,"context_line":"        not_found_count \u003d 0"},{"line_number":189,"context_line":"        for port in target_ports:"},{"line_number":190,"context_line":"            targets[\u0027info\u0027][port] \u003d False"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_31b02d8c","line":187,"range":{"start_line":187,"start_character":16,"end_line":187,"end_character":64},"in_reply_to":"bf51134e_2c1be472","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"}],"cinder/volume/drivers/hitachi/hbsd_utils.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        \u0027loglevel\u0027: base_logging.ERROR,"},{"line_number":368,"context_line":"        \u0027msg\u0027: \u0027No valid value is specified for \"source-id\" or \"source-name\". \u0027"},{"line_number":369,"context_line":"               \u0027A valid LDEV number must be specified in \"source-id\" or \u0027"},{"line_number":370,"context_line":"               \u0027A valid LDEV name must be specified in \"source-name\" \u0027"},{"line_number":371,"context_line":"               \u0027to manage the volume.\u0027,"},{"line_number":372,"context_line":"        \u0027suffix\u0027: ERROR_SUFFIX,"},{"line_number":373,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_55f2229b","line":370,"range":{"start_line":370,"start_character":16,"end_line":370,"end_character":17},"updated":"2020-06-27 00:41:33.000000000","message":"lowercase here","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        \u0027loglevel\u0027: base_logging.ERROR,"},{"line_number":368,"context_line":"        \u0027msg\u0027: \u0027No valid value is specified for \"source-id\" or \"source-name\". \u0027"},{"line_number":369,"context_line":"               \u0027A valid LDEV number must be specified in \"source-id\" or \u0027"},{"line_number":370,"context_line":"               \u0027A valid LDEV name must be specified in \"source-name\" \u0027"},{"line_number":371,"context_line":"               \u0027to manage the volume.\u0027,"},{"line_number":372,"context_line":"        \u0027suffix\u0027: ERROR_SUFFIX,"},{"line_number":373,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_11ad2931","line":370,"range":{"start_line":370,"start_character":16,"end_line":370,"end_character":17},"in_reply_to":"bf51134e_55f2229b","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"d03c39694c1451dcd73693fa0188212ba1bb4940","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    return int(ldev)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"def check_timeout(start_time, timeout):"},{"line_number":480,"context_line":"    \"\"\"Check if the specified time has passed.\"\"\""},{"line_number":481,"context_line":"    return timeutils.is_older_than(start_time, timeout)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_4c7bb88a","line":479,"range":{"start_line":479,"start_character":4,"end_line":479,"end_character":17},"updated":"2020-06-27 00:41:33.000000000","message":"nit:\n\n    if timed_out(start, timeout):\n\nis easier to understand than\n\n    if check_timeout(start, timeout):","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8134f1bc93577460f06eb2bf10e2cf3a751ad2db","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    return int(ldev)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"def check_timeout(start_time, timeout):"},{"line_number":480,"context_line":"    \"\"\"Check if the specified time has passed.\"\"\""},{"line_number":481,"context_line":"    return timeutils.is_older_than(start_time, timeout)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_71aaa519","line":479,"range":{"start_line":479,"start_character":4,"end_line":479,"end_character":17},"in_reply_to":"bf51134e_4c7bb88a","updated":"2020-07-01 10:14:44.000000000","message":"Done","commit_id":"317faa142cf32f3363d6ecc80f7c08fd69651074"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"106bbd747449a3ab046326ba280f648fd7b5a1de","unresolved":false,"context_lines":[{"line_number":447,"context_line":"MSG \u003d HBSDMsg"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"def output_start_end_log(func):"},{"line_number":451,"context_line":"    \"\"\"Output the log of the start and the end of the method.\"\"\""},{"line_number":452,"context_line":"    @functools.wraps(func)"},{"line_number":453,"context_line":"    def wrap(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"bf51134e_8f7a37b7","line":450,"updated":"2020-07-09 18:12:22.000000000","message":"Cinder has something very similar to this already with\ncinder.utils trace method.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/utils.py#L734\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/hpe/hpe_3par_fc.py#L167\n\nIt would be better for cinder as a whole if you used the trace method instead as it creates a uniform look for method trace logging like you are trying to accomplish here.","commit_id":"1f9c0b082f17da922871f14ce4854857420e61a6"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"e0324f35bd5048aefa6a77b61c3aa41a55cab41a","unresolved":false,"context_lines":[{"line_number":447,"context_line":"MSG \u003d HBSDMsg"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"def output_start_end_log(func):"},{"line_number":451,"context_line":"    \"\"\"Output the log of the start and the end of the method.\"\"\""},{"line_number":452,"context_line":"    @functools.wraps(func)"},{"line_number":453,"context_line":"    def wrap(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":16,"id":"bf51134e_33d7f1f0","line":450,"in_reply_to":"bf51134e_8f7a37b7","updated":"2020-07-14 13:09:01.000000000","message":"Done","commit_id":"1f9c0b082f17da922871f14ce4854857420e61a6"}]}
