)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"871fb14e6a1332299184237e2bd6dd45b557ac64","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Alexander Deiter \u003cadeiter@infinidat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-08-26 19:27:23 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Infinidat: add support for manage/unmanage volume and snapshot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds some missing features to the Infinidat driver:"},{"line_number":10,"context_line":"- Volume manage and unmanage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bd5f17e7_4006a04c","line":7,"updated":"2022-08-29 12:58:09.000000000","message":"nit: The first line should be limited to 50 chars.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"cc66fb96c83a107e8e439d71c2d7e38c2b3bbe77","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alexander Deiter \u003cadeiter@infinidat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-08-26 19:27:23 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Infinidat: add support for manage/unmanage volume and snapshot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds some missing features to the Infinidat driver:"},{"line_number":10,"context_line":"- Volume manage and unmanage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"4d40594d_98a5d408","line":7,"in_reply_to":"bd5f17e7_4006a04c","updated":"2022-08-29 14:02:40.000000000","message":"Hello Raghavendra,\n\nThank you very much for the review!\n\nFixed by patch set #5.\n\nThank you!","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"871fb14e6a1332299184237e2bd6dd45b557ac64","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4106e933_0a4bb7f4","updated":"2022-08-29 12:58:09.000000000","message":"Few minor comments inline.\n","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"7cf2fef22fd61a0df0d768ef156d8995392c0877","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"87ec950f_4147cd00","updated":"2022-08-29 13:02:43.000000000","message":"It would be great if you can check with core reviewers ...\nwhether this patch should be added in below list:\nhttps://etherpad.opendev.org/p/cinder-zed-features\n","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"0eed46dcab9cbe0d52f435265c2c92ab010d8fa5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d2186b9e_7f36c30a","updated":"2022-08-27 08:17:07.000000000","message":"recheck cinder-grenade-mn-sub-volbak","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"512bc4260f25538e249ca6fc446162f705f91e95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"629a2bca_843d7f0a","updated":"2022-08-26 22:18:03.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"12c283081656660ec99f85a42bd0144d38596826","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2e5d730a_ffe42c58","updated":"2022-08-29 08:46:31.000000000","message":"recheck openstack-tox-py39","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"69dbfe689a481840a7b951b7ddd4a46bead05a9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"698e65af_81e43d6a","updated":"2022-08-28 09:33:24.000000000","message":"recheck openstack-tox-py39","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"91a247722e4fb3a01fbe674014f515ec35f52451","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a39d8254_365d6cbf","updated":"2022-08-27 11:17:04.000000000","message":"recheck openstack-tox-py39","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"868db1327ab46f90934f3a25b2091ee5f893fa5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"72c1c405_8210e567","updated":"2022-08-30 10:21:16.000000000","message":"My comments from previous patchset have been addressed. Code and UT looks good.\nThe Infinidat CI and Zuul have passed. So +1.\n\nIf another patchset is submitted, then please check two minor comments.\nThanks.\n","commit_id":"54e3de585b1b0cfade057a5d2126a8d01d6c88b9"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"404fd30b4e24f4eb4b23c93e74efca940145d97f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4ca895ae_d396abf6","in_reply_to":"72c1c405_8210e567","updated":"2022-09-11 00:20:40.000000000","message":"Hello Raghavendra,\n\nThank you very much for the review!\nFixed in patch set 6.\nPlease review.\n\nThank you!","commit_id":"54e3de585b1b0cfade057a5d2126a8d01d6c88b9"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"f3cab684f40eadc2079ec161a5d24f9159f7c70a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ba39d46a_6228b2ae","updated":"2022-09-12 06:21:35.000000000","message":"All comments have been addressed. Thanks.\nThe Infinidat CI and Zuul have passed.\n","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b636a4fe765507b7658afae9b4538850bf78de45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"26afdd1d_7fa7c052","updated":"2022-09-12 08:04:24.000000000","message":"The docstrings need to be updated to provide driver specific implementation details instead of the same text as our driver interface class. The interface is to help driver vendors implement the methods and are not relevant for driver specific implementation as it differs from driver to driver.","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"88d475fa06fdeaa6544eb056f507f4da54498114","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a43ba2c3_7c866886","updated":"2022-09-13 17:09:47.000000000","message":"This looks ready, just some final minor corrections. There is a nit noted inline and the releasenote could be better worded.","commit_id":"c2b3a80b2ae40fb2d56d7757d1192c45fb8cefe3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6b4c29821350a1e8bd61ba4797ff808d7c08cbe4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ede10eb6_1de04784","updated":"2022-09-14 18:37:51.000000000","message":"Alexander: thanks for the explanation.  LGTM!","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4e39e673b86e55912cde53d9582f134b7c15648d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"579fe7bf_a2f1a37f","updated":"2022-09-13 17:20:50.000000000","message":"All my comments have been addressed. Thanks Alexander. LGTM.\nCI has passed before and there were only releasenote and comment changes so should be good.","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2de680409a2b0175b9c6d768ef739ab518be38e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8f765a9e_33727855","updated":"2022-09-14 12:44:52.000000000","message":"Code and test coverage look good; CI systems are all green.  Please look at my comment in the test file, though.\n\nOnly a +1 while waiting for an answer to my query.  (I suspect that Rajat is correct and it\u0027s not an issue, but just wanted to check.)","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"653e8007d4a44cb6967113c2350a5572ae80c70f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"16b0e632_03cad49c","updated":"2022-09-14 12:29:21.000000000","message":"Question inline.","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"}],"cinder/tests/unit/volume/drivers/test_infinidat.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2de680409a2b0175b9c6d768ef739ab518be38e8","unresolved":true,"context_lines":[{"line_number":57,"context_line":"TEST_SNAPSHOT_SOURCE_ID \u003d 67890"},{"line_number":58,"context_line":"TEST_SNAPSHOT_METADATA \u003d {\u0027cinder_id\u0027: fake.SNAPSHOT_ID}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"test_volume \u003d mock.Mock(id\u003dfake.VOLUME_ID, size\u003d1,"},{"line_number":61,"context_line":"                        volume_type_id\u003dfake.VOLUME_TYPE_ID)"},{"line_number":62,"context_line":"test_snapshot \u003d mock.Mock(id\u003dfake.SNAPSHOT_ID, volume\u003dtest_volume,"},{"line_number":63,"context_line":"                          volume_id\u003dtest_volume.id)"},{"line_number":64,"context_line":"test_clone \u003d mock.Mock(id\u003dfake.VOLUME4_ID, size\u003d1)"},{"line_number":65,"context_line":"test_group \u003d mock.Mock(id\u003dfake.GROUP_ID)"},{"line_number":66,"context_line":"test_snapgroup \u003d mock.Mock(id\u003dfake.GROUP_SNAPSHOT_ID, group\u003dtest_group)"},{"line_number":67,"context_line":"test_connector \u003d dict(wwpns\u003d[TEST_WWN_1],"},{"line_number":68,"context_line":"                      initiator\u003dTEST_INITIATOR_IQN)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def skip_driver_setup(func):"}],"source_content_type":"text/x-python","patch_set":8,"id":"feedb7a5_6b04b09d","line":68,"range":{"start_line":60,"start_character":0,"end_line":68,"end_character":51},"updated":"2022-09-14 12:44:52.000000000","message":"Two issues here:\n\n(1) Having these module-level vars is a testing anti-pattern, because if they\u0027re modified in one test, the modification carries over to other tests, and can cause them to fail if they\u0027re not run in a particular order.\n\n(2) There are functions in cinder.tests.unit that will generate test objects for most of these ... that way you would be using an actual cinder object instead of a generic mock.  (Generic mocks don\u0027t complain if you call a non-existent method on them, for example, which could allow tests to pass when they shouldn\u0027t.)\n\n\nNot holding the patch up over these (since you aren\u0027t introducing either issue, they\u0027re already here), but you should review the tests and think about refactoring.","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"374a1b4e5595294cfe2b9ebdd70f110ad4775901","unresolved":false,"context_lines":[{"line_number":57,"context_line":"TEST_SNAPSHOT_SOURCE_ID \u003d 67890"},{"line_number":58,"context_line":"TEST_SNAPSHOT_METADATA \u003d {\u0027cinder_id\u0027: fake.SNAPSHOT_ID}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"test_volume \u003d mock.Mock(id\u003dfake.VOLUME_ID, size\u003d1,"},{"line_number":61,"context_line":"                        volume_type_id\u003dfake.VOLUME_TYPE_ID)"},{"line_number":62,"context_line":"test_snapshot \u003d mock.Mock(id\u003dfake.SNAPSHOT_ID, volume\u003dtest_volume,"},{"line_number":63,"context_line":"                          volume_id\u003dtest_volume.id)"},{"line_number":64,"context_line":"test_clone \u003d mock.Mock(id\u003dfake.VOLUME4_ID, size\u003d1)"},{"line_number":65,"context_line":"test_group \u003d mock.Mock(id\u003dfake.GROUP_ID)"},{"line_number":66,"context_line":"test_snapgroup \u003d mock.Mock(id\u003dfake.GROUP_SNAPSHOT_ID, group\u003dtest_group)"},{"line_number":67,"context_line":"test_connector \u003d dict(wwpns\u003d[TEST_WWN_1],"},{"line_number":68,"context_line":"                      initiator\u003dTEST_INITIATOR_IQN)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def skip_driver_setup(func):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fd7de2f6_8524f03d","line":68,"range":{"start_line":60,"start_character":0,"end_line":68,"end_character":51},"in_reply_to":"feedb7a5_6b04b09d","updated":"2022-09-14 18:30:10.000000000","message":"Hello Brian,\n\nThank you very much for the review!\n\nYes - I agree with you!\nPlease let me refactored this code and submit it as a separate patch.\n\nThank you very much!","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"}],"cinder/volume/drivers/infinidat.py":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"871fb14e6a1332299184237e2bd6dd45b557ac64","unresolved":true,"context_lines":[{"line_number":127,"context_line":"            - fixed volume multi-attach"},{"line_number":128,"context_line":"            - fixed backup for attached volume"},{"line_number":129,"context_line":"            - added revert to snapshot"},{"line_number":130,"context_line":"            - added manage/unmanage/manageable-list volume/snapshot"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    \"\"\""},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"0bdc0a54_fd187583","line":130,"updated":"2022-08-29 12:58:09.000000000","message":"Would it better to bump version to 1.8 ?\nThus, it would be clear to know what went into 1.7 earlier \u0026 what went to 1.8 now.","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"dc11ec217c22b5981d1f81671fc5691f4d4b8f23","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            - fixed volume multi-attach"},{"line_number":128,"context_line":"            - fixed backup for attached volume"},{"line_number":129,"context_line":"            - added revert to snapshot"},{"line_number":130,"context_line":"            - added manage/unmanage/manageable-list volume/snapshot"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    \"\"\""},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"35a9750e_2ff3e707","line":130,"in_reply_to":"0bdc0a54_fd187583","updated":"2022-08-29 13:29:28.000000000","message":"Hello Raghavendra,\n\nThank you very much for the review!\nAll these 7 fixes and features were added for version 1.7.\nAll all of them under review.\n\nThank you!","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"871fb14e6a1332299184237e2bd6dd45b557ac64","unresolved":true,"context_lines":[{"line_number":273,"context_line":"        infinidat_snapshot \u003d self._system.volumes.safe_get(**kwargs)"},{"line_number":274,"context_line":"        if infinidat_snapshot is None:"},{"line_number":275,"context_line":"            raise exception.SnapshotNotFound(snapshot_id\u003dexisting_ref)"},{"line_number":276,"context_line":"        if not infinidat_snapshot.is_snapshot():"},{"line_number":277,"context_line":"            reason \u003d (_(\u0027reference %(existing_ref)s is a volume\u0027)"},{"line_number":278,"context_line":"                      % {\u0027existing_ref\u0027: existing_ref})"},{"line_number":279,"context_line":"            raise exception.InvalidSnapshot(reason\u003dreason)"},{"line_number":280,"context_line":"        return infinidat_snapshot"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def _get_infinidat_volume_by_name(self, name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"cd58a96f_dd470d09","line":279,"range":{"start_line":276,"start_character":0,"end_line":279,"end_character":58},"updated":"2022-08-29 12:58:09.000000000","message":"Except for these 4 lines, the two functions _get_infinidat_volume_by_ref and _get_infinidat_snapshot_by_ref are nearly same.\nPlease check if it would be better to just keep one function \u0026 add a parameter in function header i.e volume/snapshot.","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"cc66fb96c83a107e8e439d71c2d7e38c2b3bbe77","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        infinidat_snapshot \u003d self._system.volumes.safe_get(**kwargs)"},{"line_number":274,"context_line":"        if infinidat_snapshot is None:"},{"line_number":275,"context_line":"            raise exception.SnapshotNotFound(snapshot_id\u003dexisting_ref)"},{"line_number":276,"context_line":"        if not infinidat_snapshot.is_snapshot():"},{"line_number":277,"context_line":"            reason \u003d (_(\u0027reference %(existing_ref)s is a volume\u0027)"},{"line_number":278,"context_line":"                      % {\u0027existing_ref\u0027: existing_ref})"},{"line_number":279,"context_line":"            raise exception.InvalidSnapshot(reason\u003dreason)"},{"line_number":280,"context_line":"        return infinidat_snapshot"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def _get_infinidat_volume_by_name(self, name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f3055a9_40871a1e","line":279,"range":{"start_line":276,"start_character":0,"end_line":279,"end_character":58},"in_reply_to":"cd58a96f_dd470d09","updated":"2022-08-29 14:02:40.000000000","message":"Hello Raghavendra,\n\nThank you very much for the review!\n\nFixed by patch set #5.\n\nThank you!","commit_id":"1ebb282674aec7897022454c0f11de0523e3049e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"868db1327ab46f90934f3a25b2091ee5f893fa5c","unresolved":true,"context_lines":[{"line_number":1032,"context_line":"        The volume may have a volume_type, and the driver can inspect that and"},{"line_number":1033,"context_line":"        compare against the properties of the referenced backend storage"},{"line_number":1034,"context_line":"        object.  If they are incompatible, raise a"},{"line_number":1035,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":1038,"context_line":"        :param existing_ref: Driver-specific information used to identify a"}],"source_content_type":"text/x-python","patch_set":5,"id":"a4f42516_d4f19598","line":1035,"range":{"start_line":1035,"start_character":8,"end_line":1035,"end_character":40},"updated":"2022-08-30 10:21:16.000000000","message":"This exception isn\u0027t used in the code below.","commit_id":"54e3de585b1b0cfade057a5d2126a8d01d6c88b9"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"404fd30b4e24f4eb4b23c93e74efca940145d97f","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"        The volume may have a volume_type, and the driver can inspect that and"},{"line_number":1033,"context_line":"        compare against the properties of the referenced backend storage"},{"line_number":1034,"context_line":"        object.  If they are incompatible, raise a"},{"line_number":1035,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":1038,"context_line":"        :param existing_ref: Driver-specific information used to identify a"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7dd29f_6f4cc4ff","line":1035,"range":{"start_line":1035,"start_character":8,"end_line":1035,"end_character":40},"in_reply_to":"a4f42516_d4f19598","updated":"2022-09-11 00:20:40.000000000","message":"Hello Raghavendra,\n\nThank you very much for the review!\nFixed in patch set 6.\nPlease review.\n\nThank you!","commit_id":"54e3de585b1b0cfade057a5d2126a8d01d6c88b9"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"868db1327ab46f90934f3a25b2091ee5f893fa5c","unresolved":true,"context_lines":[{"line_number":1199,"context_line":"           backend storage object when required."},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        If the existing_ref doesn\u0027t make sense, or doesn\u0027t refer to an existing"},{"line_number":1202,"context_line":"        backend storage object, raise a ManageExistingInvalidReference"},{"line_number":1203,"context_line":"        exception."},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"        :param snapshot:     Cinder volume snapshot to manage"}],"source_content_type":"text/x-python","patch_set":5,"id":"5b68a845_96108193","line":1202,"range":{"start_line":1202,"start_character":40,"end_line":1202,"end_character":70},"updated":"2022-08-30 10:21:16.000000000","message":"Same comment as in line 1035","commit_id":"54e3de585b1b0cfade057a5d2126a8d01d6c88b9"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"404fd30b4e24f4eb4b23c93e74efca940145d97f","unresolved":false,"context_lines":[{"line_number":1199,"context_line":"           backend storage object when required."},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"        If the existing_ref doesn\u0027t make sense, or doesn\u0027t refer to an existing"},{"line_number":1202,"context_line":"        backend storage object, raise a ManageExistingInvalidReference"},{"line_number":1203,"context_line":"        exception."},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"        :param snapshot:     Cinder volume snapshot to manage"}],"source_content_type":"text/x-python","patch_set":5,"id":"77c2528a_8e0e480a","line":1202,"range":{"start_line":1202,"start_character":40,"end_line":1202,"end_character":70},"in_reply_to":"5b68a845_96108193","updated":"2022-09-11 00:20:40.000000000","message":"Hello Raghavendra,\n\nThank you very much for the review!\nFixed in patch set 6.\nPlease review.\n\nThank you!","commit_id":"54e3de585b1b0cfade057a5d2126a8d01d6c88b9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b636a4fe765507b7658afae9b4538850bf78de45","unresolved":true,"context_lines":[{"line_number":889,"context_line":"        be interpreted.  It should be sufficient to identify a storage object"},{"line_number":890,"context_line":"        that the driver should somehow associate with the newly-created cinder"},{"line_number":891,"context_line":"        volume structure."},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"        There are two ways to do this:"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        1. Rename the backend storage object so that it matches the,"},{"line_number":896,"context_line":"           volume[\u0027name\u0027] which is how drivers traditionally map between a"},{"line_number":897,"context_line":"           cinder volume and the associated backend storage object."},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        2. Place some metadata on the volume, or somewhere in the backend, that"},{"line_number":900,"context_line":"           allows other driver requests (e.g. delete, clone, attach, detach...)"},{"line_number":901,"context_line":"           to locate the backend storage object when required."},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"        If the existing_ref doesn\u0027t make sense, or doesn\u0027t refer to an existing"},{"line_number":904,"context_line":"        backend storage object, raise a ManageExistingInvalidReference"},{"line_number":905,"context_line":"        exception."},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        The volume may have a volume_type, and the driver can inspect that and"},{"line_number":908,"context_line":"        compare against the properties of the referenced backend storage"},{"line_number":909,"context_line":"        object."},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":912,"context_line":"        :param existing_ref: Driver-specific information used to identify a"}],"source_content_type":"text/x-python","patch_set":6,"id":"d00edd64_7d6426a2","line":909,"range":{"start_line":892,"start_character":0,"end_line":909,"end_character":15},"updated":"2022-09-12 08:04:24.000000000","message":"I think this is taken from the driver.py reference[1]. That is a generic description to help driver maintainers implement the method. What we actually want to do here is to provide the driver specific implementation details. Like we are following the 2nd approach here adding cinder_id in metadata of volume.\n\n[1] https://github.com/openstack/cinder/blob/c86c9576f7e87789c2e20e2e7e9f8b6c8b6ef21f/cinder/volume/driver.py#L2023-L2049","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"921cd4ad40c2274c1706dc44d0c5ca5bedb7d49a","unresolved":false,"context_lines":[{"line_number":889,"context_line":"        be interpreted.  It should be sufficient to identify a storage object"},{"line_number":890,"context_line":"        that the driver should somehow associate with the newly-created cinder"},{"line_number":891,"context_line":"        volume structure."},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"        There are two ways to do this:"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        1. Rename the backend storage object so that it matches the,"},{"line_number":896,"context_line":"           volume[\u0027name\u0027] which is how drivers traditionally map between a"},{"line_number":897,"context_line":"           cinder volume and the associated backend storage object."},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"        2. Place some metadata on the volume, or somewhere in the backend, that"},{"line_number":900,"context_line":"           allows other driver requests (e.g. delete, clone, attach, detach...)"},{"line_number":901,"context_line":"           to locate the backend storage object when required."},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"        If the existing_ref doesn\u0027t make sense, or doesn\u0027t refer to an existing"},{"line_number":904,"context_line":"        backend storage object, raise a ManageExistingInvalidReference"},{"line_number":905,"context_line":"        exception."},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"        The volume may have a volume_type, and the driver can inspect that and"},{"line_number":908,"context_line":"        compare against the properties of the referenced backend storage"},{"line_number":909,"context_line":"        object."},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":912,"context_line":"        :param existing_ref: Driver-specific information used to identify a"}],"source_content_type":"text/x-python","patch_set":6,"id":"88952146_420da026","line":909,"range":{"start_line":892,"start_character":0,"end_line":909,"end_character":15},"in_reply_to":"d00edd64_7d6426a2","updated":"2022-09-12 22:55:46.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nAll comments have been addressed in the patch set 7, please review.\n\nThank you!","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b636a4fe765507b7658afae9b4538850bf78de45","unresolved":true,"context_lines":[{"line_number":936,"context_line":"        When calculating the size, round up to the next GB."},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":939,"context_line":"        :param existing_ref: Driver-specific information used to identify a"},{"line_number":940,"context_line":"                             volume"},{"line_number":941,"context_line":"        :returns size:       Volume size in GiB (integer)"},{"line_number":942,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"d9be8bdc_c5367fe1","line":939,"range":{"start_line":939,"start_character":29,"end_line":939,"end_character":44},"updated":"2022-09-12 08:04:24.000000000","message":"again these docstrings need to be updated for providing information of the currently implemented method.\nFor reference, see RBD docstring[1]\n\n[1] https://github.com/openstack/cinder/blob/c86c9576f7e87789c2e20e2e7e9f8b6c8b6ef21f/cinder/volume/drivers/rbd.py#L1904-L1910","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"921cd4ad40c2274c1706dc44d0c5ca5bedb7d49a","unresolved":false,"context_lines":[{"line_number":936,"context_line":"        When calculating the size, round up to the next GB."},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":939,"context_line":"        :param existing_ref: Driver-specific information used to identify a"},{"line_number":940,"context_line":"                             volume"},{"line_number":941,"context_line":"        :returns size:       Volume size in GiB (integer)"},{"line_number":942,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9419d6f0_cb4e3253","line":939,"range":{"start_line":939,"start_character":29,"end_line":939,"end_character":44},"in_reply_to":"d9be8bdc_c5367fe1","updated":"2022-09-12 22:55:46.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nAll comments have been addressed in the patch set 7, please review.\n\nThank you!","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b636a4fe765507b7658afae9b4538850bf78de45","unresolved":true,"context_lines":[{"line_number":946,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":947,"context_line":"    def get_manageable_volumes(self, cinder_volumes, marker, limit, offset,"},{"line_number":948,"context_line":"                               sort_keys, sort_dirs):"},{"line_number":949,"context_line":"        \"\"\"List volumes on the backend available for management by Cinder."},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        Returns a list of dictionaries, each specifying a volume in the host,"},{"line_number":952,"context_line":"        with the following keys:"},{"line_number":953,"context_line":"        - reference (dictionary): The reference for a volume, which can be"},{"line_number":954,"context_line":"        passed to \"manage_existing\"."},{"line_number":955,"context_line":"        - size (int): The size of the volume according to the storage"},{"line_number":956,"context_line":"        backend, rounded up to the nearest GB."},{"line_number":957,"context_line":"        - safe_to_manage (boolean): Whether or not this volume is safe to"},{"line_number":958,"context_line":"        manage according to the storage backend. For example, is the volume"},{"line_number":959,"context_line":"        in use or invalid for any reason."},{"line_number":960,"context_line":"        - reason_not_safe (string): If safe_to_manage is False, the reason why."},{"line_number":961,"context_line":"        - cinder_id (string): If already managed, provide the Cinder ID."},{"line_number":962,"context_line":"        - extra_info (string): Any extra information to return to the user"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        :param cinder_volumes: A list of volumes in this host that Cinder"},{"line_number":965,"context_line":"                               currently manages, used to determine if"},{"line_number":966,"context_line":"                               a volume is manageable or not."},{"line_number":967,"context_line":"        :param marker:    The last item of the previous page; we return the"},{"line_number":968,"context_line":"                          next results after this value (after sorting)"},{"line_number":969,"context_line":"        :param limit:     Maximum number of items to return"},{"line_number":970,"context_line":"        :param offset:    Number of items to skip after marker"},{"line_number":971,"context_line":"        :param sort_keys: List of keys to sort results by (valid keys are"},{"line_number":972,"context_line":"                          \u0027identifier\u0027 and \u0027size\u0027)"},{"line_number":973,"context_line":"        :param sort_dirs: List of directions to sort by, corresponding to"},{"line_number":974,"context_line":"                          sort_keys (valid directions are \u0027asc\u0027 and \u0027desc\u0027)"},{"line_number":975,"context_line":"        \"\"\""},{"line_number":976,"context_line":"        manageable_volumes \u003d []"},{"line_number":977,"context_line":"        cinder_ids \u003d [cinder_volume.id for cinder_volume in cinder_volumes]"},{"line_number":978,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"}],"source_content_type":"text/x-python","patch_set":6,"id":"f323df56_01ad9999","line":975,"range":{"start_line":949,"start_character":8,"end_line":975,"end_character":11},"updated":"2022-09-12 08:04:24.000000000","message":"same, please provide driver specific implementation details for all methods instead of the same docsting as our driver interface","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"921cd4ad40c2274c1706dc44d0c5ca5bedb7d49a","unresolved":false,"context_lines":[{"line_number":946,"context_line":"    @infinisdk_to_cinder_exceptions"},{"line_number":947,"context_line":"    def get_manageable_volumes(self, cinder_volumes, marker, limit, offset,"},{"line_number":948,"context_line":"                               sort_keys, sort_dirs):"},{"line_number":949,"context_line":"        \"\"\"List volumes on the backend available for management by Cinder."},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        Returns a list of dictionaries, each specifying a volume in the host,"},{"line_number":952,"context_line":"        with the following keys:"},{"line_number":953,"context_line":"        - reference (dictionary): The reference for a volume, which can be"},{"line_number":954,"context_line":"        passed to \"manage_existing\"."},{"line_number":955,"context_line":"        - size (int): The size of the volume according to the storage"},{"line_number":956,"context_line":"        backend, rounded up to the nearest GB."},{"line_number":957,"context_line":"        - safe_to_manage (boolean): Whether or not this volume is safe to"},{"line_number":958,"context_line":"        manage according to the storage backend. For example, is the volume"},{"line_number":959,"context_line":"        in use or invalid for any reason."},{"line_number":960,"context_line":"        - reason_not_safe (string): If safe_to_manage is False, the reason why."},{"line_number":961,"context_line":"        - cinder_id (string): If already managed, provide the Cinder ID."},{"line_number":962,"context_line":"        - extra_info (string): Any extra information to return to the user"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        :param cinder_volumes: A list of volumes in this host that Cinder"},{"line_number":965,"context_line":"                               currently manages, used to determine if"},{"line_number":966,"context_line":"                               a volume is manageable or not."},{"line_number":967,"context_line":"        :param marker:    The last item of the previous page; we return the"},{"line_number":968,"context_line":"                          next results after this value (after sorting)"},{"line_number":969,"context_line":"        :param limit:     Maximum number of items to return"},{"line_number":970,"context_line":"        :param offset:    Number of items to skip after marker"},{"line_number":971,"context_line":"        :param sort_keys: List of keys to sort results by (valid keys are"},{"line_number":972,"context_line":"                          \u0027identifier\u0027 and \u0027size\u0027)"},{"line_number":973,"context_line":"        :param sort_dirs: List of directions to sort by, corresponding to"},{"line_number":974,"context_line":"                          sort_keys (valid directions are \u0027asc\u0027 and \u0027desc\u0027)"},{"line_number":975,"context_line":"        \"\"\""},{"line_number":976,"context_line":"        manageable_volumes \u003d []"},{"line_number":977,"context_line":"        cinder_ids \u003d [cinder_volume.id for cinder_volume in cinder_volumes]"},{"line_number":978,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"}],"source_content_type":"text/x-python","patch_set":6,"id":"cbd4f218_40abd1b8","line":975,"range":{"start_line":949,"start_character":8,"end_line":975,"end_character":11},"in_reply_to":"f323df56_01ad9999","updated":"2022-09-12 22:55:46.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nAll comments have been addressed in the patch set 7, please review.\n\nThank you!","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b636a4fe765507b7658afae9b4538850bf78de45","unresolved":true,"context_lines":[{"line_number":1143,"context_line":"        cinder_ids \u003d [cinder_snapshot.id for cinder_snapshot"},{"line_number":1144,"context_line":"                      in cinder_snapshots]"},{"line_number":1145,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"},{"line_number":1146,"context_line":"        infinidat_snapshots \u003d infinidat_pool.get_volumes()"},{"line_number":1147,"context_line":"        for infinidat_snapshot in infinidat_snapshots:"},{"line_number":1148,"context_line":"            if not infinidat_snapshot.is_snapshot():"},{"line_number":1149,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"67eb8f71_e988e153","line":1146,"range":{"start_line":1146,"start_character":8,"end_line":1146,"end_character":27},"updated":"2022-09-12 08:04:24.000000000","message":"I\u0027m confused, here we are fetching volumes but naming it snapshots?","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"921cd4ad40c2274c1706dc44d0c5ca5bedb7d49a","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"        cinder_ids \u003d [cinder_snapshot.id for cinder_snapshot"},{"line_number":1144,"context_line":"                      in cinder_snapshots]"},{"line_number":1145,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"},{"line_number":1146,"context_line":"        infinidat_snapshots \u003d infinidat_pool.get_volumes()"},{"line_number":1147,"context_line":"        for infinidat_snapshot in infinidat_snapshots:"},{"line_number":1148,"context_line":"            if not infinidat_snapshot.is_snapshot():"},{"line_number":1149,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"c8b078e6_1f777300","line":1146,"range":{"start_line":1146,"start_character":8,"end_line":1146,"end_character":27},"in_reply_to":"67eb8f71_e988e153","updated":"2022-09-12 22:55:46.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\n\n\u003eI\u0027m confused, here we are fetching volumes but naming it snapshots?\n\nYes, because the Infinidat API have the same API call to get list volumes and snapshots.\n\nThank you!","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"88d475fa06fdeaa6544eb056f507f4da54498114","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"        cinder_ids \u003d [cinder_snapshot.id for cinder_snapshot"},{"line_number":1144,"context_line":"                      in cinder_snapshots]"},{"line_number":1145,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"},{"line_number":1146,"context_line":"        infinidat_snapshots \u003d infinidat_pool.get_volumes()"},{"line_number":1147,"context_line":"        for infinidat_snapshot in infinidat_snapshots:"},{"line_number":1148,"context_line":"            if not infinidat_snapshot.is_snapshot():"},{"line_number":1149,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"f8cd66ea_fda84a79","line":1146,"range":{"start_line":1146,"start_character":8,"end_line":1146,"end_character":27},"in_reply_to":"c8b078e6_1f777300","updated":"2022-09-13 17:09:47.000000000","message":"So IIUC, the get_volumes() method returns both snapshots and volumes?","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b636a4fe765507b7658afae9b4538850bf78de45","unresolved":true,"context_lines":[{"line_number":1145,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"},{"line_number":1146,"context_line":"        infinidat_snapshots \u003d infinidat_pool.get_volumes()"},{"line_number":1147,"context_line":"        for infinidat_snapshot in infinidat_snapshots:"},{"line_number":1148,"context_line":"            if not infinidat_snapshot.is_snapshot():"},{"line_number":1149,"context_line":"                continue"},{"line_number":1150,"context_line":"            safe_to_manage \u003d False"},{"line_number":1151,"context_line":"            reason_not_safe \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"88104bf2_53c2340e","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":51},"updated":"2022-09-12 08:04:24.000000000","message":"again, we have used the name as infinidat_snapshot but it\u0027s actually a volume right? else this will always evaluate to True","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"921cd4ad40c2274c1706dc44d0c5ca5bedb7d49a","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"},{"line_number":1146,"context_line":"        infinidat_snapshots \u003d infinidat_pool.get_volumes()"},{"line_number":1147,"context_line":"        for infinidat_snapshot in infinidat_snapshots:"},{"line_number":1148,"context_line":"            if not infinidat_snapshot.is_snapshot():"},{"line_number":1149,"context_line":"                continue"},{"line_number":1150,"context_line":"            safe_to_manage \u003d False"},{"line_number":1151,"context_line":"            reason_not_safe \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf944858_13f7317c","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":51},"in_reply_to":"88104bf2_53c2340e","updated":"2022-09-12 22:55:46.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nWe can get common list of volumes and snapshots, but only snapshots have parent volumes and is_snapshot() will only be true for datasets that have a paren.\n\nThank you!","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"88d475fa06fdeaa6544eb056f507f4da54498114","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"        infinidat_pool \u003d self._get_infinidat_pool()"},{"line_number":1146,"context_line":"        infinidat_snapshots \u003d infinidat_pool.get_volumes()"},{"line_number":1147,"context_line":"        for infinidat_snapshot in infinidat_snapshots:"},{"line_number":1148,"context_line":"            if not infinidat_snapshot.is_snapshot():"},{"line_number":1149,"context_line":"                continue"},{"line_number":1150,"context_line":"            safe_to_manage \u003d False"},{"line_number":1151,"context_line":"            reason_not_safe \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"2466c087_19f7cb44","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":51},"in_reply_to":"bf944858_13f7317c","updated":"2022-09-13 17:09:47.000000000","message":"Ack","commit_id":"d1c642ade26c6be8cb8096ee183748e678cdeaea"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"88d475fa06fdeaa6544eb056f507f4da54498114","unresolved":true,"context_lines":[{"line_number":1044,"context_line":"        Renames the Infinidat snapshot to match the expected name."},{"line_number":1045,"context_line":"        Updates QoS and metadata."},{"line_number":1046,"context_line":""},{"line_number":1047,"context_line":"        :param volume:       Cinder snapshot to manage"},{"line_number":1048,"context_line":"        :param existing_ref: dictionary of the forms:"},{"line_number":1049,"context_line":"                             {\u0027source-name\u0027: \u0027Infinidat snapshot name\u0027} or"},{"line_number":1050,"context_line":"                             {\u0027source-id\u0027: \u0027Infinidat snapshot serial number\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"abefdf92_b76769fe","line":1047,"range":{"start_line":1047,"start_character":15,"end_line":1047,"end_character":21},"updated":"2022-09-13 17:09:47.000000000","message":"snapshot","commit_id":"c2b3a80b2ae40fb2d56d7757d1192c45fb8cefe3"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"9f358e19109ec77a30451c3886ce7edf1b270331","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        Renames the Infinidat snapshot to match the expected name."},{"line_number":1045,"context_line":"        Updates QoS and metadata."},{"line_number":1046,"context_line":""},{"line_number":1047,"context_line":"        :param volume:       Cinder snapshot to manage"},{"line_number":1048,"context_line":"        :param existing_ref: dictionary of the forms:"},{"line_number":1049,"context_line":"                             {\u0027source-name\u0027: \u0027Infinidat snapshot name\u0027} or"},{"line_number":1050,"context_line":"                             {\u0027source-id\u0027: \u0027Infinidat snapshot serial number\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"b227504d_cf8f5208","line":1047,"range":{"start_line":1047,"start_character":15,"end_line":1047,"end_character":21},"in_reply_to":"abefdf92_b76769fe","updated":"2022-09-13 17:19:26.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nFixed in patch set 8.\nPlease review!\n\nThank you!","commit_id":"c2b3a80b2ae40fb2d56d7757d1192c45fb8cefe3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"653e8007d4a44cb6967113c2350a5572ae80c70f","unresolved":true,"context_lines":[{"line_number":1020,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":1021,"context_line":"        \"\"\""},{"line_number":1022,"context_line":"        infinidat_volume \u003d self._get_infinidat_volume(volume)"},{"line_number":1023,"context_line":"        infinidat_volume.clear_metadata()"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def _check_already_managed_snapshot(self, snapshot_id):"},{"line_number":1026,"context_line":"        \"\"\"Check cinder db for already managed snapshot."}],"source_content_type":"text/x-python","patch_set":8,"id":"dddb0a3a_f78af280","line":1023,"range":{"start_line":1023,"start_character":25,"end_line":1023,"end_character":41},"updated":"2022-09-14 12:29:21.000000000","message":"Just want to verify that this is what you want.  Is there no backend metadata that should be kept?  See line 911, where cinder-specific metadata is set.  Do we want to clear only those fields?  (Same thing for unmanage snapshots.)","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"99a927b36e6b88b1447cac7e1407073f8969b6f5","unresolved":true,"context_lines":[{"line_number":1020,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":1021,"context_line":"        \"\"\""},{"line_number":1022,"context_line":"        infinidat_volume \u003d self._get_infinidat_volume(volume)"},{"line_number":1023,"context_line":"        infinidat_volume.clear_metadata()"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def _check_already_managed_snapshot(self, snapshot_id):"},{"line_number":1026,"context_line":"        \"\"\"Check cinder db for already managed snapshot."}],"source_content_type":"text/x-python","patch_set":8,"id":"f0c9fc2a_b6c13b90","line":1023,"range":{"start_line":1023,"start_character":25,"end_line":1023,"end_character":41},"in_reply_to":"dddb0a3a_f78af280","updated":"2022-09-14 12:33:40.000000000","message":"I had the same doubt but thought they are only using metadata for OpenStack related purpose and it has no usage in their backend but let\u0027s see what Alexander says.","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"374a1b4e5595294cfe2b9ebdd70f110ad4775901","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":1021,"context_line":"        \"\"\""},{"line_number":1022,"context_line":"        infinidat_volume \u003d self._get_infinidat_volume(volume)"},{"line_number":1023,"context_line":"        infinidat_volume.clear_metadata()"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    def _check_already_managed_snapshot(self, snapshot_id):"},{"line_number":1026,"context_line":"        \"\"\"Check cinder db for already managed snapshot."}],"source_content_type":"text/x-python","patch_set":8,"id":"041f3154_ce51baad","line":1023,"range":{"start_line":1023,"start_character":25,"end_line":1023,"end_character":41},"in_reply_to":"f0c9fc2a_b6c13b90","updated":"2022-09-14 18:30:10.000000000","message":"Hello Brian,\n\nThank you very much for the review!\n\n\u003e\u003e Just want to verify that this is what you want.\n\u003e\u003e Is there no backend metadata that should be kept? \n\u003e\u003e See line 911, where cinder-specific metadata is set.  \n\u003e\u003e Do we want to clear only those fields? (Same thing for unmanage snapshots.)\n\nYes of course. The Infinidat driver stores a metadata on the storage side (as metadata for an Infinidat volume) and this metadata can be internally used on the Infinidat storage side for management and analytics. For example, to distinguish Cinder-managed volumes from other volumes (the Infinidat storage system uses a flat namespace). And when we \"export\" a volume from Cinder management, we must clear all existing metadata so that it can be seen on the storage side that this volume no longer belongs to any service or application.\n\nThank you!","commit_id":"9cf599064f66d25428c099a06dc6190b89c615a0"}],"releasenotes/notes/infinidat-manage-unmanage-ccc42b79d741369f.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"88d475fa06fdeaa6544eb056f507f4da54498114","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":" - |"},{"line_number":4,"context_line":"   Infinidat driver: added manage and unmanage volumes and snapshots and"},{"line_number":5,"context_line":"   list manageable volumes and snapshots."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"016f5601_c6cafe1f","line":5,"range":{"start_line":4,"start_character":21,"end_line":5,"end_character":41},"updated":"2022-09-13 17:09:47.000000000","message":"would\u0027ve been better worded as,\n\n\"Added support to manage and unmanage volumes and snapshots. Also added the functionality to list the manageable volumes and snapshots.\"","commit_id":"c2b3a80b2ae40fb2d56d7757d1192c45fb8cefe3"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"9f358e19109ec77a30451c3886ce7edf1b270331","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":" - |"},{"line_number":4,"context_line":"   Infinidat driver: added manage and unmanage volumes and snapshots and"},{"line_number":5,"context_line":"   list manageable volumes and snapshots."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"174f40f3_c57b4172","line":5,"range":{"start_line":4,"start_character":21,"end_line":5,"end_character":41},"in_reply_to":"016f5601_c6cafe1f","updated":"2022-09-13 17:19:26.000000000","message":"Hello Rajat,\n\nThank you very much for the review!\nFixed in patch set 8.\nPlease review!\n\nThank you!","commit_id":"c2b3a80b2ae40fb2d56d7757d1192c45fb8cefe3"}]}
