)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3a11f96377497ca9b39c19f773dc969727d57326","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"cfaae276_4c4daac3","updated":"2022-05-12 10:30:13.000000000","message":"Below links might help:\nhttps://wiki.openstack.org/wiki/Cinder/how-to-contribute-a-driver\nhttps://docs.openstack.org/cinder/latest/contributor/new_driver_checklist.html","commit_id":"5e8ea6f7e8873081b2c7811bb90d4d18073356cb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"66c43c7366e764c66fe8783c00cbe40db49d9c3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1ec28322_f071a350","updated":"2022-05-23 11:02:19.000000000","message":"doc/source/reference/support-matrix.ini can be updated\n","commit_id":"b4e12001b0168846050353c803e27b16e5f78e96"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"bd44e01824ba5c26495d9d5cca20c257022ea5fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5e63ab18_d6033fd0","updated":"2022-05-24 11:52:04.000000000","message":"Some comments.","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"885e51be_d917a249","updated":"2022-05-25 10:48:40.000000000","message":"Some additional comments.\n\nIt takes time to review code; For me it is difficult to review 3000 lines at once.\nSo providing comments in parts.\n","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"8427ec66099263e4546143941d9e8a24790a73cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"5c420fd8_5874b96a","updated":"2022-05-27 08:28:17.000000000","message":"Thanks for addressing my comments.\n\nOne last query: If the Yadro_Tatlin_Unified_CI is ready, please submit CI results.\n\nKindly refer: https://docs.openstack.org/cinder/latest/contributor/new_driver_checklist.html -\u003e Third Party CI checks\n","commit_id":"1323d6fa190631fba823d0f893e9cb27b4956ccd"},{"author":{"_account_id":33807,"name":"Jacob Wang","email":"jacob_wang1@dell.com","username":"jacob0522"},"change_message_id":"c13b01bb76e73d0107e8ec8c6cf5f74bea3530e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"dc3a2dd7_21e5141f","updated":"2022-05-31 04:50:41.000000000","message":"run-DellEMC PowerStore CI","commit_id":"c0f6cc33ebea1895a91f71d07b75bdc586902aa2"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"2ad35addf1742e2489dd7fd5e00f4b02d7b130d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"225ea993_cfba3cdc","updated":"2022-06-06 10:53:11.000000000","message":"CI result looks good. Zuul also passed. So +1.\n\nOne observation:\n[a] In https://wiki.openstack.org/wiki/ThirdPartySystems, it is mentioned as: Yadro_Tatlin_Unified_CI\n[b] Also in code (tatlin_iscsi.py \u0026 tatlin_fc.py Line 46), it is mentioned as: Yadro_Tatlin_Unified_CI\n[c] However while triggering CI, command used is: run-YADRO TATLIN CI\ni.e \"Unified\" is missing.\n\nWould it be possible to add \"Unified\" in [c] OR remove \"Unified\" from [a] \u0026 [b] ?\n","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":33746,"name":"YADRO TATLIN CI","email":"tatlin_ci@yadro.com","username":"tatlin-ci"},"change_message_id":"4056c65d739bfd18d80f96b4ef07b0ef9c15f9a2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"7f8bd569_8b389701","updated":"2022-06-03 16:14:14.000000000","message":"run-YADRO TATLIN CI","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"46d75aceb37a65b4d31718274d2262d74f7afbc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"c02f1a57_a2aa3b91","updated":"2022-06-03 15:57:41.000000000","message":"run-YADRO TATLIN CI","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":33746,"name":"YADRO TATLIN CI","email":"tatlin_ci@yadro.com","username":"tatlin-ci"},"change_message_id":"3d4ef66b075188f29797d6e4f6aa3a22f62c6039","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"d0dade42_cd0123df","updated":"2022-06-03 16:22:08.000000000","message":"run-YADRO TATLIN CI","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ca870e04d16157064f723191faced38581fba195","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"182d02a9_1ab875b4","in_reply_to":"225ea993_cfba3cdc","updated":"2022-06-06 11:22:05.000000000","message":"thank you very much for the feedback! Yes, we have fixed this, also small correction for update stats and import of library in tatlin_common.py","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"25691173f3b573142f2fb4fa2211466d9c019b29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"1a527c0d_c3dd157b","in_reply_to":"7f8bd569_8b389701","updated":"2022-06-06 06:54:16.000000000","message":"Done","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"25691173f3b573142f2fb4fa2211466d9c019b29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"93fca339_ed0d0daf","in_reply_to":"d0dade42_cd0123df","updated":"2022-06-06 06:54:16.000000000","message":"Done","commit_id":"b5d2abaebceef2d7f2250059fd85acf105278e6d"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"147f536131b696d2aa57c3e8258ee6eea26fde7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"2c399fdf_a437c12a","updated":"2022-06-07 06:07:02.000000000","message":"My comments have been addressed.\n","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"f816dada_9a52f78b","updated":"2022-06-09 13:04:57.000000000","message":"Thanks Eric!","commit_id":"3a96d64a6387d4546cd8667fb7d18562628b2d4e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"521f6c383da2cfdf8a29161e6cff3bbd652846ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"7a0baaee_3dbcc5d0","updated":"2022-06-17 12:20:16.000000000","message":"Need to utilize the Fiber Channel Zone Manager to ensure proper zoning of attach/detach calls.","commit_id":"47073baab62144bd69cc207ec9f9bf74bd512fbc"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"7c1a70ed421578a97f7cd818fc75423405a804f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"b9c64b47_c06b3a5e","updated":"2022-06-17 15:02:10.000000000","message":"Since this commit comes from a Blueprint,it should be mentioned somehwere into the commit message.","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":33807,"name":"Jacob Wang","email":"jacob_wang1@dell.com","username":"jacob0522"},"change_message_id":"f2b1e39d70a3dde1ed411c0028a6242902df2a14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"43be7c82_567f17fc","updated":"2022-06-21 08:43:46.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ed00c768099184c0b04a716953453a950c75e914","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"bccfe394_eb7f1279","updated":"2022-06-21 10:44:18.000000000","message":"run-YADRO TATLIN CI","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"457ff66209c0d00dc86a1e3cd7e6db2818cd3d7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"f17f486d_9d4b382a","updated":"2022-06-21 10:33:03.000000000","message":"run-YADRO TATLIN CI","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"d34b457d3f14381568fa3854be910ebc529ae2c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"1aebf0e8_766208b7","in_reply_to":"b9c64b47_c06b3a5e","updated":"2022-06-17 15:14:04.000000000","message":"Hey, JP! \n\nYes, it\u0027s in commit message:\n\nImplements: blueprint yadro-tatlin-unified-driver\n\nIt\u0027s a clickable link\n\nBest regards!","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"058e6a0c_3fe626e6","updated":"2022-07-11 18:32:57.000000000","message":"Needs a release note and a few other things. Make sure to read through all of the driver requirements in https://wiki.openstack.org/wiki/Cinder/how-to-contribute-a-driver and especially the common issues that maintainers look for in https://docs.openstack.org/cinder/latest/contributor/new_driver_checklist.html","commit_id":"ee73fbb7ffe64507d2afdf10ed9d00da8ef4df63"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fbb993517d55ce730857dc0ae27bb9ce58c82cad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"cef56eea_cc2ffbc4","in_reply_to":"058e6a0c_3fe626e6","updated":"2022-07-12 06:31:44.000000000","message":"in patch 25th, the latest by now I have changed all .id to .name_id,\nthanks for the guidance!","commit_id":"ee73fbb7ffe64507d2afdf10ed9d00da8ef4df63"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"727481db0f8265ec02f181531ea9c900f29c5490","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"44ca6631_d4fba87f","updated":"2022-07-12 21:20:31.000000000","message":"Some CI issues: please address anything marked with an \u0027𐄂\u0027.\n\n🗸 CI_WIKI_NAME correct in driver properties for all drivers: Yadro_Tatlin_Unified_CI\n🗸 CI wiki page is there: https://wiki.openstack.org/wiki/ThirdPartySystems/Yadro_Tatlin_Unified_CI\n  🗸 email ping to contact info on the wiki\n  🗸 received pong\n𐄂 checked recheck trigger\n  * trigger: \"run-Yadro Tatlin Unified CI\"\n  𐄂 looks like the CI name is actually \"Yadro Tatlin CI\"\n    (we want this to be consistent for automation purposes, you can change the CI_WIKI_NAME and move the web page, or change the trigger, it\u0027s up to you)\n    (looks like it does respond to \"run-Yadro Tatlin CI\")\n🗸 CI is responding on the new driver patch\n  * successful run comment link: https://review.opendev.org/c/openstack/cinder/+/825492/25#message-69ca33a491248f517765af63c8a8ec1b3a1e9c76\n𐄂 CI is responding on other patches\n  * https://review.opendev.org/q/reviewedby:tatlin_ci%2540yadro.com+project:openstack/cinder+-dir:cinder/volume/drivers/yadro\n𐄂 CI is responding on os-brick patches\n  * https://review.opendev.org/q/reviewedby:tatlin_ci%2540yadro.com+project:openstack/os-brick\n𐄂 CI results\nCan\u0027t access these:\nping tempest-openstack.spb.yadro.com works, but:\n$ curl http://tempest-openstack.spb.yadro.com/gerrit-test/152\ncurl: (7) Failed to connect to tempest-openstack.spb.yadro.com port 80: Connection refused","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"b3943263_97932f1c","updated":"2022-07-13 12:04:22.000000000","message":"few comments inline","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"70d284574206921b838bf1344eceb8a5ce36369c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"98ec1c3c_ffd58614","updated":"2022-07-12 14:45:32.000000000","message":"run-DellEMC PowerStore CI","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6784cb7dbf3a50ffb2a8bdf50e4158357595e062","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"29ddbd89_60d88464","updated":"2022-07-13 08:40:54.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"f694397e458ff1ccb39a449e2d45c26bc5f135b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"cf3bb795_15e1d4e5","in_reply_to":"0eeb1543_07e70942","updated":"2022-07-25 07:14:07.000000000","message":"corrected","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"c118fd159888e8197b96f4b66a4a54270f106622","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"0eeb1543_07e70942","in_reply_to":"44ca6631_d4fba87f","updated":"2022-07-15 07:57:54.000000000","message":"thanks Brian! Looking into it","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"0302487dcf1ae61908acd5f65076a56cec71a7fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"0bb2cf5b_e2d47cf5","updated":"2022-07-19 13:58:25.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"cdfdccf8c29cc043bbf4a15062ca137ecb75dfba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"0f6e0783_c50240f0","updated":"2022-07-20 08:40:11.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"e0f30f58585194660d668f034dd5544ac37b98a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"461a9b90_c174c872","updated":"2022-07-14 15:18:15.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"53ff1672ff6c80a1cf6d650e89a52482b65f6fee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"5575dd54_bffbcd7c","updated":"2022-07-19 12:40:30.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"4c0fc891710995dac42f02721f764ee5800cb564","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"567b86cc_1c82183f","updated":"2022-07-20 08:38:00.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"5b2bddef84f9b2bf975374564e9b5064982dbdab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a85c597e_4c382434","updated":"2022-07-18 12:22:02.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"37e1a880046989d60ec2adc0285263f3a5371ae8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"e4fd2b1c_61b91a1d","updated":"2022-07-20 08:14:31.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"cfdbc883_6ab5f711","updated":"2022-07-14 08:55:41.000000000","message":"thanks Rajat! I have fixed the findings","commit_id":"2a1c01c59eb58070fd6d0653589ee61b830769b6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ac0c1dbcdf051c43c4809728448c7b063bfa5288","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"68329371_e52a3871","updated":"2022-07-24 23:49:51.000000000","message":"Looks mostly OK; a few things noted inline.  It\u0027s a bit light on unit tests (common, iscsi, and utils all have \u003c50% coverage), so you may want to add some more as a follow up.\n\nThe link from the third party CI is working now, and it looks like the cinder.conf is configured to test the features claimed in the support matrix.  You\u0027re not posting the cinder logs, though, so if there\u0027s a failure, you won\u0027t be able to troubleshoot directly from the CI results.","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"26fbf2c2e5e371809e23ce64fe6085a608e69f56","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ebfd0d34_316d60ec","updated":"2022-07-22 06:55:45.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"f694397e458ff1ccb39a449e2d45c26bc5f135b8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":27,"id":"94265bfc_150088ee","in_reply_to":"68329371_e52a3871","updated":"2022-07-25 07:14:07.000000000","message":"thanks a lot Brian! I will address all of these in a few steps","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"93b7777dec5c5a2fe3eb3011d86cc3937459d377","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"e038e83e_10a17ae1","updated":"2022-07-26 14:50:52.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"ae5c2aeff7c88360e19e613fb21c4d0c4896152c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"991d167cdc013a8670cda2476a9b87d30c049dad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"520cacea_3e1d9087","updated":"2022-07-26 20:02:08.000000000","message":"Thank you for reorganizing the unit tests, I think it\u0027s much better to have them in separate files.  And also thanks for addressing the constant strings issue, it\u0027s better to have that done now than as a followup.  I think the driver and tests look good, so other than the mistake noted in test_tatlin_utils, I think this is ready to go.\n\nI\u0027m about to go on vacation, so I will leave a statement here that once the mistake in test_tatlin_utils is fixed, I\u0027m +2 on this patch.  (That previous sentence is the statement I\u0027m referring to.)  My only concern is that the third party CI appears to have stopped responding, so I hope you can get that corrected quickly.","commit_id":"02ff484fd2534511eedcf98cc838d7e379c34400"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"4b6831e7_9a314b45","updated":"2022-07-28 08:48:14.000000000","message":"Few comments inline but nothing that can\u0027t be addressed in a followup.\nCI is passing[1]. LGTM.\n\n[1] http://tempest-openstack.spb.yadro.com/gerrit-trigger/281/result.log","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"84548c0665d18b3d30e0e961e3653c80475858d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"c044ec67_98f3231a","updated":"2022-07-27 11:00:57.000000000","message":"Revisions LGTM, and third party CI has responded on the latest patch set:\nhttps://review.opendev.org/c/openstack/cinder/+/825492/32#message-03751e34da42b5fc823bf18e2b3a569703146958\n\nmypy job failure is the issue that is addressed by https://review.opendev.org/c/openstack/cinder/+/851032/ , so I don\u0027t think this patch is introducing any problems there.","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"59ca0c7cf1d31f929f1ded9bc7e57cb7a0e079a9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":32,"id":"ab3999be_303f13ff","in_reply_to":"4b6831e7_9a314b45","updated":"2022-07-28 14:45:59.000000000","message":"Thanks Rajat for your review and all the comments! We will fix these problems soon.","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"}],"cinder/tests/unit/volume/drivers/yadro/test_tatlin_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from unittest import TestCase, mock"},{"line_number":2,"context_line":"from unittest.mock import MagicMock, Mock, patch"},{"line_number":3,"context_line":"from unittest.suite import TestSuite"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9e237574_3c2af07a","line":1,"updated":"2022-07-11 18:32:57.000000000","message":"Copyright header needed.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"aab725dc9fe7f738bcce5e5017e5ee9f7d7292bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from unittest import TestCase, mock"},{"line_number":2,"context_line":"from unittest.mock import MagicMock, Mock, patch"},{"line_number":3,"context_line":"from unittest.suite import TestSuite"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"06d9ccb2_b713dfe3","line":1,"in_reply_to":"9e237574_3c2af07a","updated":"2022-07-12 05:46:45.000000000","message":"Hi Sean,\n\nthanks a lot for looking into the changes,\n\ncan you please check the latest, 24th patch set? I believe all the findings have been fixed there.\n\nMany thanks!","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"}],"cinder/tests/unit/volume/drivers/yadro/test_tatlin_utils.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"991d167cdc013a8670cda2476a9b87d30c049dad","unresolved":true,"context_lines":[{"line_number":55,"context_line":"    def test_increment(self, exists, open, lock):"},{"line_number":56,"context_line":"        exists.side_effect \u003d [False, True]"},{"line_number":57,"context_line":"        self.assertEqual(self.connections.increment(VOL_ID), 1)"},{"line_number":58,"context_line":"        open.asert_called_once_with(os.path.join(self.path, VOL_ID), \u0027w\u0027)"},{"line_number":59,"context_line":"        with open() as f:"},{"line_number":60,"context_line":"            f.write.assert_called_once_with(\u00271\u0027)"},{"line_number":61,"context_line":"        self.assertEqual(self.connections.increment(VOL_ID), 2)"}],"source_content_type":"text/x-python","patch_set":31,"id":"01d000b2_6bd3bb34","line":58,"range":{"start_line":58,"start_character":13,"end_line":58,"end_character":35},"updated":"2022-07-26 20:02:08.000000000","message":"-1: Notice that all these assertions on \u0027open\u0027 in this file are misspelled ... since it\u0027s a mock object, it lets you call arbitrary methods on it, so this line is not failing, but it\u0027s not actually checking your assertion, either.  (I didn\u0027t see it happening anywhere else, but you might want to grep your tests for \u0027asert\u0027 just to make sure.)","commit_id":"02ff484fd2534511eedcf98cc838d7e379c34400"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"f1d3a8ce40556de361faca4378320b11e9ef86db","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def test_increment(self, exists, open, lock):"},{"line_number":56,"context_line":"        exists.side_effect \u003d [False, True]"},{"line_number":57,"context_line":"        self.assertEqual(self.connections.increment(VOL_ID), 1)"},{"line_number":58,"context_line":"        open.asert_called_once_with(os.path.join(self.path, VOL_ID), \u0027w\u0027)"},{"line_number":59,"context_line":"        with open() as f:"},{"line_number":60,"context_line":"            f.write.assert_called_once_with(\u00271\u0027)"},{"line_number":61,"context_line":"        self.assertEqual(self.connections.increment(VOL_ID), 2)"}],"source_content_type":"text/x-python","patch_set":31,"id":"e6eba43c_38429e57","line":58,"range":{"start_line":58,"start_character":13,"end_line":58,"end_character":35},"in_reply_to":"01d000b2_6bd3bb34","updated":"2022-07-27 07:08:23.000000000","message":"very good catch! Thanks Brian, I have double-checked. These mock methods require more attention :)","commit_id":"02ff484fd2534511eedcf98cc838d7e379c34400"}],"cinder/volume/drivers/yadro/tatlin_api.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#  Copyright (C) 2021-2022 YADRO."},{"line_number":2,"context_line":"#  All rights reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#  Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":30,"id":"7586553e_ff629792","line":1,"updated":"2022-07-28 08:48:14.000000000","message":"These constants could\u0027ve been defined directly in the client file globally so not sure about the need of this file","commit_id":"ae5c2aeff7c88360e19e613fb21c4d0c4896152c"}],"cinder/volume/drivers/yadro/tatlin_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":17,"context_line":"from cinder import exception"},{"line_number":18,"context_line":"from cinder.i18n import _"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from six.moves import http_client"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from .tatlin_exception import TatlinAPIException"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ecdbf22e_e42677a2","line":20,"updated":"2022-07-11 18:32:57.000000000","message":"Remove use of six. We only support python 3 and do not want compatibility code for python 2 included.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from cinder import exception"},{"line_number":18,"context_line":"from cinder.i18n import _"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from six.moves import http_client"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from .tatlin_exception import TatlinAPIException"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a6ce093a_1d846d4b","line":20,"in_reply_to":"ecdbf22e_e42677a2","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def retry(times):"},{"line_number":28,"context_line":"    def decorator(func):"},{"line_number":29,"context_line":"        def newfn(*args, **kwargs):"},{"line_number":30,"context_line":"            attempts \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f9d574e_58154934","line":27,"updated":"2022-07-11 18:32:57.000000000","message":"Use ``retry`` implementation in ``cinder.utils``.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def retry(times):"},{"line_number":28,"context_line":"    def decorator(func):"},{"line_number":29,"context_line":"        def newfn(*args, **kwargs):"},{"line_number":30,"context_line":"            attempts \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"78d4b782_404b5df4","line":27,"in_reply_to":"1f9d574e_58154934","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ac0c1dbcdf051c43c4809728448c7b063bfa5288","unresolved":true,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class TatlinClientCommon:"},{"line_number":118,"context_line":"    session \u003d None"},{"line_number":119,"context_line":"    _host_group_info \u003d \u0027personalities/v1/config/groups\u0027"},{"line_number":120,"context_line":"    _hosts_info \u003d \u0027personalities/v1/config/hosts\u0027"},{"line_number":121,"context_line":"    _resource_str \u003d \u0027personalities/v1/personalities/block/\u0027"},{"line_number":122,"context_line":"    _resource_info_str \u003d \u0027personalities/v1/personalities?id\u003d\u0027"},{"line_number":123,"context_line":"    _resource_health_str \u003d \u0027health/v1/personalities?id\u003d\u0027"},{"line_number":124,"context_line":"    _resource_mapping \u003d \u0027personalities/v1/config/resource_mapping\u0027"},{"line_number":125,"context_line":"    _vol_to_host \u003d \u0027personalities/v1/personalities/block/%s/hosts/%s\u0027"},{"line_number":126,"context_line":"    _vol_to_hgroup \u003d \u0027personalities/v1/personalities/block/%s/groups/%s\u0027"},{"line_number":127,"context_line":"    _all_resources \u003d \u0027personalities/v1/personalities\u0027"},{"line_number":128,"context_line":"    _pool_str \u003d \u0027health/v1/pools\u0027"},{"line_number":129,"context_line":"    _stat_detail \u003d \u0027health/v1/statistics/current\u0027"},{"line_number":130,"context_line":"    _ip_ports_str \u003d \u0027osmgr/v1/ports/\u0027"},{"line_number":131,"context_line":"    _resource_count \u003d \u0027personalities/v1/personalities/block/countPerPool\u0027"},{"line_number":132,"context_line":"    _tatlin_version \u003d \u0027upmgr/v1/version\u0027"},{"line_number":133,"context_line":"    _api \u003d None"},{"line_number":134,"context_line":"    access_api_retry_count \u003d 1"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def __init__(self, tatlin_rest_api, api_retry_count,"}],"source_content_type":"text/x-python","patch_set":27,"id":"bc519c9d_255e660c","line":133,"range":{"start_line":119,"start_character":0,"end_line":133,"end_character":15},"updated":"2022-07-24 23:49:51.000000000","message":"You may want to think about refactoring this at some point.  Most people know that a variable beginning with \u0027_\u0027 should be treated as private (although that\u0027s not enforced by the runtime), but there\u0027s a mix here of string constants and vars that will actually be modified (like _api).  Usually something that you want to be treated like a constant is named with ALL_CAPS.  Most drivers handle this by declaring the constants in a utility file or something.  The only reason to observe the convention is that when someone has to maintain the driver later on, it\u0027s less likely they\u0027ll be confused.","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc6fc0b2207c851f887e41f9d3d3cbf48c302118","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class TatlinClientCommon:"},{"line_number":118,"context_line":"    session \u003d None"},{"line_number":119,"context_line":"    _host_group_info \u003d \u0027personalities/v1/config/groups\u0027"},{"line_number":120,"context_line":"    _hosts_info \u003d \u0027personalities/v1/config/hosts\u0027"},{"line_number":121,"context_line":"    _resource_str \u003d \u0027personalities/v1/personalities/block/\u0027"},{"line_number":122,"context_line":"    _resource_info_str \u003d \u0027personalities/v1/personalities?id\u003d\u0027"},{"line_number":123,"context_line":"    _resource_health_str \u003d \u0027health/v1/personalities?id\u003d\u0027"},{"line_number":124,"context_line":"    _resource_mapping \u003d \u0027personalities/v1/config/resource_mapping\u0027"},{"line_number":125,"context_line":"    _vol_to_host \u003d \u0027personalities/v1/personalities/block/%s/hosts/%s\u0027"},{"line_number":126,"context_line":"    _vol_to_hgroup \u003d \u0027personalities/v1/personalities/block/%s/groups/%s\u0027"},{"line_number":127,"context_line":"    _all_resources \u003d \u0027personalities/v1/personalities\u0027"},{"line_number":128,"context_line":"    _pool_str \u003d \u0027health/v1/pools\u0027"},{"line_number":129,"context_line":"    _stat_detail \u003d \u0027health/v1/statistics/current\u0027"},{"line_number":130,"context_line":"    _ip_ports_str \u003d \u0027osmgr/v1/ports/\u0027"},{"line_number":131,"context_line":"    _resource_count \u003d \u0027personalities/v1/personalities/block/countPerPool\u0027"},{"line_number":132,"context_line":"    _tatlin_version \u003d \u0027upmgr/v1/version\u0027"},{"line_number":133,"context_line":"    _api \u003d None"},{"line_number":134,"context_line":"    access_api_retry_count \u003d 1"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def __init__(self, tatlin_rest_api, api_retry_count,"}],"source_content_type":"text/x-python","patch_set":27,"id":"0d985ee0_62032d9b","line":133,"range":{"start_line":119,"start_character":0,"end_line":133,"end_character":15},"in_reply_to":"bc519c9d_255e660c","updated":"2022-07-25 12:00:40.000000000","message":"Done","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class TatlinAccessAPI:"},{"line_number":50,"context_line":"    session \u003d None"},{"line_number":51,"context_line":"    ip \u003d None"},{"line_number":52,"context_line":"    port \u003d None"},{"line_number":53,"context_line":"    username \u003d None"},{"line_number":54,"context_line":"    password \u003d None"},{"line_number":55,"context_line":"    verify \u003d False"},{"line_number":56,"context_line":"    _api_version \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, ip, port, user, passwd, verify):"},{"line_number":59,"context_line":"        self.ip \u003d ip"},{"line_number":60,"context_line":"        self.port \u003d port"}],"source_content_type":"text/x-python","patch_set":30,"id":"6b271f23_48e9caaf","line":57,"range":{"start_line":50,"start_character":0,"end_line":57,"end_character":0},"updated":"2022-07-28 08:48:14.000000000","message":"These can be directly declared and initialized in the __init__ method, don\u0027t see a need for defining them here.","commit_id":"ae5c2aeff7c88360e19e613fb21c4d0c4896152c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def get_tatlin_version(self):"},{"line_number":103,"context_line":"        if not self._api_version:"},{"line_number":104,"context_line":"            responce \u003d self.send_request(tatlin_api.TATLIN_VERSION,"},{"line_number":105,"context_line":"                                         {}, \u0027GET\u0027)"},{"line_number":106,"context_line":"            ver \u003d responce.json()[\u0027build-version\u0027].split(\u0027.\u0027)"},{"line_number":107,"context_line":"            self._api_version \u003d (int(ver[0]), int(ver[1]))"}],"source_content_type":"text/x-python","patch_set":30,"id":"f1a3a993_a42a84b7","line":104,"range":{"start_line":104,"start_character":12,"end_line":104,"end_character":20},"updated":"2022-07-28 08:48:14.000000000","message":"response","commit_id":"ae5c2aeff7c88360e19e613fb21c4d0c4896152c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":581,"context_line":"            message\u003d\u0027Unable to get host_id for host %s\u0027 % host_name)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"class TatlinClientV25 (TatlinClientCommon):"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    def update_qos(self, vol_id, iops, bandwith):"},{"line_number":587,"context_line":"        path \u003d tatlin_api.RESOURCE % vol_id"}],"source_content_type":"text/x-python","patch_set":30,"id":"76b8c969_153ac220","line":584,"range":{"start_line":584,"start_character":21,"end_line":584,"end_character":22},"updated":"2022-07-28 08:48:14.000000000","message":"nit: space not needed here\n\nThis works but so does defining it like this\n    class TatlinClientV25                   (TatlinClientCommon):\n    \nSo would be good to keep code consistent.","commit_id":"ae5c2aeff7c88360e19e613fb21c4d0c4896152c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":635,"context_line":"        return poll_resource, cluster_resources"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"class TatlinClientV23 (TatlinClientCommon):"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"    def export_volume(self, vol_id, eth_ports):"},{"line_number":641,"context_line":"        LOG.debug(\u0027Export ports %s for volume %s started\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"7985582b_31e9338c","line":638,"range":{"start_line":638,"start_character":21,"end_line":638,"end_character":22},"updated":"2022-07-28 08:48:14.000000000","message":"same, extra space","commit_id":"ae5c2aeff7c88360e19e613fb21c4d0c4896152c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":103,"context_line":"        if not self._api_version:"},{"line_number":104,"context_line":"            responce \u003d self.send_request(tatlin_api.TATLIN_VERSION,"},{"line_number":105,"context_line":"                                         {}, \u0027GET\u0027)"},{"line_number":106,"context_line":"            ver \u003d responce.json()[\u0027build-version\u0027].split(\u0027.\u0027)"},{"line_number":107,"context_line":"            self._api_version \u003d (int(ver[0]), int(ver[1]))"},{"line_number":108,"context_line":"        LOG.debug(\u0027Tatlin version: %s\u0027, str(self._api_version))"},{"line_number":109,"context_line":"        return self._api_version"}],"source_content_type":"text/x-python","patch_set":32,"id":"d91b4602_6defcead","line":106,"range":{"start_line":106,"start_character":18,"end_line":106,"end_character":26},"updated":"2022-07-28 08:48:14.000000000","message":"response","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":257,"context_line":"                        exp.message)"},{"line_number":258,"context_line":"            LOG.error(message)"},{"line_number":259,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":260,"context_line":"        return cred"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def get_host_group_info(self, group_id):"},{"line_number":263,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"3e0bda6c_504d6f4a","line":260,"range":{"start_line":260,"start_character":8,"end_line":260,"end_character":19},"updated":"2022-07-28 08:48:14.000000000","message":"i think we can return inside the try block. it doesn\u0027t make a difference but is similar to how other methods are formatted in this file.","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":301,"context_line":"        return response"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_resource_ports_array(self, volume_id):"},{"line_number":304,"context_line":"        ports \u003d self.get_volume_ports(volume_id)"},{"line_number":305,"context_line":"        if ports \u003d\u003d {}:"},{"line_number":306,"context_line":"            return []"},{"line_number":307,"context_line":"        res \u003d []"}],"source_content_type":"text/x-python","patch_set":32,"id":"e4f93a95_a484eb5a","line":304,"range":{"start_line":304,"start_character":8,"end_line":304,"end_character":13},"updated":"2022-07-28 08:48:14.000000000","message":"in case we don\u0027t have an error, what is the type of ports? is it a dictionary?","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":306,"context_line":"            return []"},{"line_number":307,"context_line":"        res \u003d []"},{"line_number":308,"context_line":"        for p in ports:"},{"line_number":309,"context_line":"            res.append(p[\u0027port\u0027])"},{"line_number":310,"context_line":"        LOG.debug(\u0027Volume %s port list %s\u0027, volume_id, res)"},{"line_number":311,"context_line":"        return res"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"403d68e2_66d44d89","line":309,"range":{"start_line":309,"start_character":23,"end_line":309,"end_character":32},"updated":"2022-07-28 08:48:14.000000000","message":"assuming ports is a dictionary, p will be it\u0027s key and p cannot be a dictionary type. So either the syntax here is wrong and this should be ports[p] OR ports is a list of dictionaries.","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":320,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":321,"context_line":"        return result"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def is_volume_exists(self, vol_id):"},{"line_number":324,"context_line":"        volume_path \u003d tatlin_api.RESOURCE % vol_id"},{"line_number":325,"context_line":"        LOG.debug(\u0027get personality statistic: volume_path\u003d%(v1)s \u0027,"},{"line_number":326,"context_line":"                  {\u0027v1\u0027: volume_path})"},{"line_number":327,"context_line":"        try:"},{"line_number":328,"context_line":"            volume_result, status \u003d self._access_api("},{"line_number":329,"context_line":"                volume_path, {}, \u0027GET\u0027,"},{"line_number":330,"context_line":"                pass_codes\u003d[requests.codes.not_found])"},{"line_number":331,"context_line":"            if status \u003d\u003d requests.codes.not_found:"},{"line_number":332,"context_line":"                message \u003d _(\u0027Volume %s does not exist\u0027 % vol_id)"},{"line_number":333,"context_line":"                LOG.debug(message)"},{"line_number":334,"context_line":"                return False"},{"line_number":335,"context_line":"        except TatlinAPIException as exp:"},{"line_number":336,"context_line":"            message \u003d _(\u0027Exception Unable to get volume info %s \u0027"},{"line_number":337,"context_line":"                        \u0027due to %s stat: %s\u0027 %"},{"line_number":338,"context_line":"                        (vol_id, exp.message, exp.code))"},{"line_number":339,"context_line":"            LOG.error(message)"},{"line_number":340,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":341,"context_line":"        LOG.debug(\u0027Volume %s exists\u0027, vol_id)"},{"line_number":342,"context_line":"        return True"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def get_volume(self, vol_id):"},{"line_number":345,"context_line":"        volume_path \u003d tatlin_api.RESOURCE % vol_id"},{"line_number":346,"context_line":"        LOG.debug(\u0027get personality statistic: volume_path\u003d%(v1)s\u0027,"},{"line_number":347,"context_line":"                  {\u0027v1\u0027: volume_path})"},{"line_number":348,"context_line":"        try:"},{"line_number":349,"context_line":"            volume_result, stat \u003d self._access_api("},{"line_number":350,"context_line":"                volume_path, {}, \u0027GET\u0027,"},{"line_number":351,"context_line":"                pass_codes\u003d[requests.codes.not_found])"},{"line_number":352,"context_line":"            if stat \u003d\u003d requests.codes.not_found:"},{"line_number":353,"context_line":"                message \u003d _(\u0027Unable to get volume info %s due to %s stat: %s\u0027 %"},{"line_number":354,"context_line":"                            (vol_id, \u0027Volume not found\u0027, \u0027404\u0027))"},{"line_number":355,"context_line":"                LOG.error(message)"},{"line_number":356,"context_line":"                raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":357,"context_line":"        except TatlinAPIException as exp:"},{"line_number":358,"context_line":"            message \u003d _(\u0027Unable to get volume info %s due to %s stat: %s\u0027 %"},{"line_number":359,"context_line":"                        (vol_id, exp.message, exp.code))"},{"line_number":360,"context_line":"            LOG.error(message)"},{"line_number":361,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":362,"context_line":"        return volume_result"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def get_pool_id_by_name(self, pool_name):"},{"line_number":365,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"2e36183a_db907be7","line":362,"range":{"start_line":323,"start_character":0,"end_line":362,"end_character":28},"updated":"2022-07-28 08:48:14.000000000","message":"apart from the return value, i don\u0027t see any difference in these two methods.\nMaybe better would be to combine the methods by adding a parameter, something like \"get_volume \u003d True/False\"\nIf get_volume is True then return volume else return if volume exists or not","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":426,"context_line":"        except TatlinAPIException:"},{"line_number":427,"context_line":"            return False"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        for p in result:"},{"line_number":430,"context_line":"            LOG.debug(\u0027Volume %s status: %s\u0027, id, p[\u0027status\u0027])"},{"line_number":431,"context_line":"            if p[\u0027status\u0027] !\u003d \u0027ready\u0027:"},{"line_number":432,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":32,"id":"5cb51dad_5c2e4618","line":429,"range":{"start_line":429,"start_character":17,"end_line":429,"end_character":23},"updated":"2022-07-28 08:48:14.000000000","message":"shouldn\u0027t the result return only one entry since we\u0027re querying with a unique ID\nEven if result returns a list, it should only have one element, result[0]","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":440,"context_line":"        except TatlinAPIException:"},{"line_number":441,"context_line":"            return False"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        for p in result:"},{"line_number":444,"context_line":"            LOG.debug(\u0027Volume status: %s\u0027, p[\u0027status\u0027])"},{"line_number":445,"context_line":"            return p[\u0027status\u0027]"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        return \u0027\u0027"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def set_port(self, vol_id, port):"},{"line_number":450,"context_line":"        path \u003d tatlin_api.RESOURCE % vol_id + \"/ports/\" + port"}],"source_content_type":"text/x-python","patch_set":32,"id":"d259438f_9eca729c","line":447,"range":{"start_line":443,"start_character":0,"end_line":447,"end_character":17},"updated":"2022-07-28 08:48:14.000000000","message":"assuming result will have only one element, would\u0027ve been better like this,\n\n    if result:\n        LOG.debug(\u0027Volume status: %s\u0027, p[\u0027status\u0027])\n        return result[0][\u0027status\u0027]\n    return \u0027\u0027","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"}],"cinder/volume/drivers/yadro/tatlin_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027pool_name\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027storage pool name\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027ip\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027IP address\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027login\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"27c21e3d_64721623","line":40,"range":{"start_line":40,"start_character":16,"end_line":40,"end_character":18},"updated":"2022-07-11 18:32:57.000000000","message":"Do not introduce duplicate config options. Use the common driver settings to stay consistent and reduce duplication.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027pool_name\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027storage pool name\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027ip\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027IP address\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027login\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ab7168c_1bee4580","line":40,"range":{"start_line":40,"start_character":16,"end_line":40,"end_character":18},"in_reply_to":"27c21e3d_64721623","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":284,"context_line":"            try:"},{"line_number":285,"context_line":"                i \u003d self.decr_counter(key)"},{"line_number":286,"context_line":"            except Exception as e:"},{"line_number":287,"context_line":"                LOG.debug(\u0027Exception while decrement counter %s\u0027 % e)"},{"line_number":288,"context_line":"                self._init_memcache_client()"},{"line_number":289,"context_line":"                i \u003d self.decr_counter(key)"},{"line_number":290,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fb1fef5_bda7770f","line":287,"range":{"start_line":287,"start_character":64,"end_line":287,"end_character":66},"updated":"2022-07-11 18:32:57.000000000","message":"Don\u0027t pre-format strings. Change ``%`` to ``,`` so formatting values are passed in as arguments to the logger, then the logger can take care of string formatting as needed. Do this for all LOG.x() calls throughout.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            try:"},{"line_number":285,"context_line":"                i \u003d self.decr_counter(key)"},{"line_number":286,"context_line":"            except Exception as e:"},{"line_number":287,"context_line":"                LOG.debug(\u0027Exception while decrement counter %s\u0027 % e)"},{"line_number":288,"context_line":"                self._init_memcache_client()"},{"line_number":289,"context_line":"                i \u003d self.decr_counter(key)"},{"line_number":290,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"45605001_72358b5d","line":287,"range":{"start_line":287,"start_character":64,"end_line":287,"end_character":66},"in_reply_to":"3fb1fef5_bda7770f","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def migrate_volume(self, context, volume, host):"},{"line_number":467,"context_line":"        \"\"\""},{"line_number":468,"context_line":"        Migrate volume. "},{"line_number":469,"context_line":"        Method checks if target volume will be on the same Tatlin/Pool "},{"line_number":470,"context_line":"        If not, re-type should be executed."},{"line_number":471,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"36e6559a_a656f4f0","line":468,"range":{"start_line":468,"start_character":22,"end_line":468,"end_character":24},"updated":"2022-07-11 18:32:57.000000000","message":"Remove trailing spaces. Also use correct documentation format of having a single line summary for a call, then a blank line, followed by a more detailed description of the call.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def migrate_volume(self, context, volume, host):"},{"line_number":467,"context_line":"        \"\"\""},{"line_number":468,"context_line":"        Migrate volume. "},{"line_number":469,"context_line":"        Method checks if target volume will be on the same Tatlin/Pool "},{"line_number":470,"context_line":"        If not, re-type should be executed."},{"line_number":471,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"e02d3bf1_757c0076","line":468,"range":{"start_line":468,"start_character":22,"end_line":468,"end_character":24},"in_reply_to":"36e6559a_a656f4f0","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"bd44e01824ba5c26495d9d5cca20c257022ea5fc","unresolved":true,"context_lines":[{"line_number":258,"context_line":"    def wait_volume_online(self, volume):"},{"line_number":259,"context_line":"        counter \u003d 0"},{"line_number":260,"context_line":"        while self.tatlin_api.get_volume_status(volume.name_id) !\u003d \u0027online\u0027 \\"},{"line_number":261,"context_line":"                and counter \u003c 15:"},{"line_number":262,"context_line":"            LOG.warning(\u0027Volume %s still not online\u0027, volume.name_id)"},{"line_number":263,"context_line":"            counter +\u003d 1"},{"line_number":264,"context_line":"            time.sleep(30)"}],"source_content_type":"text/x-python","patch_set":14,"id":"d82aad95_688f0b66","line":261,"range":{"start_line":261,"start_character":30,"end_line":261,"end_character":32},"updated":"2022-05-24 11:52:04.000000000","message":"As in line 245, a constant can be used instead of 15.","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ad8260b3f46572405e055ce00261fae553cd2cbb","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    def wait_volume_online(self, volume):"},{"line_number":259,"context_line":"        counter \u003d 0"},{"line_number":260,"context_line":"        while self.tatlin_api.get_volume_status(volume.name_id) !\u003d \u0027online\u0027 \\"},{"line_number":261,"context_line":"                and counter \u003c 15:"},{"line_number":262,"context_line":"            LOG.warning(\u0027Volume %s still not online\u0027, volume.name_id)"},{"line_number":263,"context_line":"            counter +\u003d 1"},{"line_number":264,"context_line":"            time.sleep(30)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ef84426a_09828a8a","line":261,"range":{"start_line":261,"start_character":30,"end_line":261,"end_character":32},"in_reply_to":"d82aad95_688f0b66","updated":"2022-05-25 10:07:31.000000000","message":"Done","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"bd44e01824ba5c26495d9d5cca20c257022ea5fc","unresolved":true,"context_lines":[{"line_number":289,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        while self.tatlin_api.is_volume_exists(volume.name_id) \\"},{"line_number":292,"context_line":"                and counter \u003c 240:"},{"line_number":293,"context_line":"            LOG.debug(\u0027Volume %s still exists, waiting for delete...\u0027,"},{"line_number":294,"context_line":"                      volume.name_id)"},{"line_number":295,"context_line":"            counter +\u003d 1"}],"source_content_type":"text/x-python","patch_set":14,"id":"9495fa73_9f1e1db3","line":292,"range":{"start_line":292,"start_character":30,"end_line":292,"end_character":33},"updated":"2022-05-24 11:52:04.000000000","message":"same comment as mentioned on line 261.\n\nOne query: check is performed upto 240 times; and sleep is for performed for 30 seconds.\nThus in worst case, code will execute for 120 mins.\nAs per my knowledge, cinder operations get timed-out within 10 mins.\nSo, 240 seems to quite high.","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6dfb8d424c51a633d5d7f06b22f5fb9ebd16d1a1","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        while self.tatlin_api.is_volume_exists(volume.name_id) \\"},{"line_number":292,"context_line":"                and counter \u003c 240:"},{"line_number":293,"context_line":"            LOG.debug(\u0027Volume %s still exists, waiting for delete...\u0027,"},{"line_number":294,"context_line":"                      volume.name_id)"},{"line_number":295,"context_line":"            counter +\u003d 1"}],"source_content_type":"text/x-python","patch_set":14,"id":"c0b85aa3_d1c4668b","line":292,"range":{"start_line":292,"start_character":30,"end_line":292,"end_character":33},"in_reply_to":"823d7ec1_23191b19","updated":"2022-05-26 15:50:55.000000000","message":"Done","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ad8260b3f46572405e055ce00261fae553cd2cbb","unresolved":true,"context_lines":[{"line_number":289,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        while self.tatlin_api.is_volume_exists(volume.name_id) \\"},{"line_number":292,"context_line":"                and counter \u003c 240:"},{"line_number":293,"context_line":"            LOG.debug(\u0027Volume %s still exists, waiting for delete...\u0027,"},{"line_number":294,"context_line":"                      volume.name_id)"},{"line_number":295,"context_line":"            counter +\u003d 1"}],"source_content_type":"text/x-python","patch_set":14,"id":"823d7ec1_23191b19","line":292,"range":{"start_line":292,"start_character":30,"end_line":292,"end_character":33},"in_reply_to":"9495fa73_9f1e1db3","updated":"2022-05-25 10:07:31.000000000","message":"thanks Raghavendra! will be fixed","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"bd44e01824ba5c26495d9d5cca20c257022ea5fc","unresolved":true,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        if self.tatlin_api.is_volume_exists(volume.name_id):"},{"line_number":299,"context_line":"            mess \u003d _(\u0027Unable to delete volume %s\u0027 % volume.name_id)"},{"line_number":300,"context_line":"            LOG.debug(mess)"},{"line_number":301,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":302,"context_line":"        LOG.debug(\u0027Delete volume finished for %s\u0027, volume.name_id)"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"049ed660_f89eb6c7","line":300,"range":{"start_line":300,"start_character":12,"end_line":300,"end_character":21},"updated":"2022-05-24 11:52:04.000000000","message":"can this be LOG.error ?","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ad8260b3f46572405e055ce00261fae553cd2cbb","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        if self.tatlin_api.is_volume_exists(volume.name_id):"},{"line_number":299,"context_line":"            mess \u003d _(\u0027Unable to delete volume %s\u0027 % volume.name_id)"},{"line_number":300,"context_line":"            LOG.debug(mess)"},{"line_number":301,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":302,"context_line":"        LOG.debug(\u0027Delete volume finished for %s\u0027, volume.name_id)"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"14fddd60_f611844e","line":300,"range":{"start_line":300,"start_character":12,"end_line":300,"end_character":21},"in_reply_to":"049ed660_f89eb6c7","updated":"2022-05-25 10:07:31.000000000","message":"Done","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"bd44e01824ba5c26495d9d5cca20c257022ea5fc","unresolved":true,"context_lines":[{"line_number":519,"context_line":"            # iops \u003d specs[\"total_iops_sec_max\"] \\"},{"line_number":520,"context_line":"            #     if \u0027total_iops_sec_max\u0027 in specs else \u00270\u0027"},{"line_number":521,"context_line":"            # bandwidth \u003d specs[\"total_bytes_sec_max\"] \\"},{"line_number":522,"context_line":"            #     if \u0027total_bytes_sec_max\u0027 in specs else \u00270\u0027"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"            LOG.debug(\u0027QOS spec IOPS: %s BANDWIDTH %s\u0027, iops, bandwidth)"},{"line_number":525,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"befc53e4_a7db51fc","line":522,"updated":"2022-05-24 11:52:04.000000000","message":"can above commented code be removed","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ad8260b3f46572405e055ce00261fae553cd2cbb","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            # iops \u003d specs[\"total_iops_sec_max\"] \\"},{"line_number":520,"context_line":"            #     if \u0027total_iops_sec_max\u0027 in specs else \u00270\u0027"},{"line_number":521,"context_line":"            # bandwidth \u003d specs[\"total_bytes_sec_max\"] \\"},{"line_number":522,"context_line":"            #     if \u0027total_bytes_sec_max\u0027 in specs else \u00270\u0027"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"            LOG.debug(\u0027QOS spec IOPS: %s BANDWIDTH %s\u0027, iops, bandwidth)"},{"line_number":525,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5390f8e9_358e2608","line":522,"in_reply_to":"befc53e4_a7db51fc","updated":"2022-05-25 10:07:31.000000000","message":"Done","commit_id":"e9b1204fdd177558d0c2dc772983e6f4f71b5a24"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":true,"context_lines":[{"line_number":765,"context_line":"    def remove_export(self, context, volume):"},{"line_number":766,"context_line":"        \"\"\"Entry for remove export"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        We never remove exports from Tatlin resources"},{"line_number":769,"context_line":"        \"\"\""},{"line_number":770,"context_line":"        pass"},{"line_number":771,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7b011f18_48b671f6","line":768,"updated":"2022-05-25 10:48:40.000000000","message":"nit: It would be great if this line is updated as:\nFor volumes we do not remove exports ...\nThis is because, there is remove_export function below for snapshot","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6dfb8d424c51a633d5d7f06b22f5fb9ebd16d1a1","unresolved":false,"context_lines":[{"line_number":765,"context_line":"    def remove_export(self, context, volume):"},{"line_number":766,"context_line":"        \"\"\"Entry for remove export"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        We never remove exports from Tatlin resources"},{"line_number":769,"context_line":"        \"\"\""},{"line_number":770,"context_line":"        pass"},{"line_number":771,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"13105af4_2af2d900","line":768,"in_reply_to":"7b011f18_48b671f6","updated":"2022-05-26 15:50:55.000000000","message":"thank you very much for your time and effort to understand the code. I will do my best to make it clearer and cleaner","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":true,"context_lines":[{"line_number":780,"context_line":"    def create_export_snapshot(self, context, snapshot, connector):"},{"line_number":781,"context_line":"        LOG.debug(\u0027Tatlin create snap export\u0027)"},{"line_number":782,"context_line":"        self._create_export(snapshot.id)"},{"line_number":783,"context_line":"        pass"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    def remove_export_snapshot(self, context, snapshot):"},{"line_number":786,"context_line":"        LOG.debug(\u0027Tatlin remove snap export\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1c459688_bf6db215","line":783,"range":{"start_line":783,"start_character":8,"end_line":783,"end_character":12},"updated":"2022-05-25 10:48:40.000000000","message":"nit: this can be removed","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6dfb8d424c51a633d5d7f06b22f5fb9ebd16d1a1","unresolved":false,"context_lines":[{"line_number":780,"context_line":"    def create_export_snapshot(self, context, snapshot, connector):"},{"line_number":781,"context_line":"        LOG.debug(\u0027Tatlin create snap export\u0027)"},{"line_number":782,"context_line":"        self._create_export(snapshot.id)"},{"line_number":783,"context_line":"        pass"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    def remove_export_snapshot(self, context, snapshot):"},{"line_number":786,"context_line":"        LOG.debug(\u0027Tatlin remove snap export\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"add00ecb_9b6bf60c","line":783,"range":{"start_line":783,"start_character":8,"end_line":783,"end_character":12},"in_reply_to":"1c459688_bf6db215","updated":"2022-05-26 15:50:55.000000000","message":"Done","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":true,"context_lines":[{"line_number":786,"context_line":"        LOG.debug(\u0027Tatlin remove snap export\u0027)"},{"line_number":787,"context_line":"        if snapshot.volume.attach_status !\u003d \u0027attached\u0027:"},{"line_number":788,"context_line":"            self._remove_export(snapshot.id)"},{"line_number":789,"context_line":"        pass"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":792,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":15,"id":"13e1683a_b9701482","line":789,"range":{"start_line":789,"start_character":8,"end_line":789,"end_character":12},"updated":"2022-05-25 10:48:40.000000000","message":"nit: same as line 783","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6dfb8d424c51a633d5d7f06b22f5fb9ebd16d1a1","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        LOG.debug(\u0027Tatlin remove snap export\u0027)"},{"line_number":787,"context_line":"        if snapshot.volume.attach_status !\u003d \u0027attached\u0027:"},{"line_number":788,"context_line":"            self._remove_export(snapshot.id)"},{"line_number":789,"context_line":"        pass"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":792,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":15,"id":"53e39b81_a8d4e047","line":789,"range":{"start_line":789,"start_character":8,"end_line":789,"end_character":12},"in_reply_to":"13e1683a_b9701482","updated":"2022-05-26 15:50:55.000000000","message":"Done","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#  License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#  under the License."},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"#  Copyright (C) 2021-2022 YADRO. All rights reserved."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"df08e3be_5d02e907","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":1},"updated":"2022-06-08 14:49:30.000000000","message":"Typically this copyright line is put before the license header in our code.","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#  License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#  under the License."},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":"#  Copyright (C) 2021-2022 YADRO. All rights reserved."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"29cb2db2_3945300b","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":1},"in_reply_to":"df08e3be_5d02e907","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    cfg.StrOpt(\u0027pool_name\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":41,"context_line":"               help\u003d\u0027storage pool name\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027ip\u0027,"},{"line_number":43,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027IP address\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027login\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"eeb828a9_f899b38e","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":19},"updated":"2022-06-08 14:49:30.000000000","message":"It would be better to use existing options like \"san_ip\" rather than defining new ones here.","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    cfg.StrOpt(\u0027pool_name\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":41,"context_line":"               help\u003d\u0027storage pool name\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027ip\u0027,"},{"line_number":43,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027IP address\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027login\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"f11437b7_7f1625da","line":42,"range":{"start_line":42,"start_character":15,"end_line":42,"end_character":19},"in_reply_to":"eeb828a9_f899b38e","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027ip\u0027,"},{"line_number":43,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027IP address\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027login\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Username\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027password\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"622b85c4_1ff9f317","line":45,"updated":"2022-06-08 14:49:30.000000000","message":"same ^","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027ip\u0027,"},{"line_number":43,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027IP address\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027login\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Username\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027password\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"fff72382_2a198c5d","line":45,"in_reply_to":"622b85c4_1ff9f317","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027login\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Username\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027password\u0027,"},{"line_number":49,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Password\u0027,"},{"line_number":51,"context_line":"               secret\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":20,"id":"de124158_06056524","line":48,"updated":"2022-06-08 14:49:30.000000000","message":"same ^","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.StrOpt(\u0027login\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Username\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027password\u0027,"},{"line_number":49,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Password\u0027,"},{"line_number":51,"context_line":"               secret\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":20,"id":"d9c52224_897f56e3","line":48,"in_reply_to":"de124158_06056524","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":49,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Password\u0027,"},{"line_number":51,"context_line":"               secret\u003dTrue),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027api_port\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027443\u0027,"},{"line_number":54,"context_line":"               help\u003d\u0027Port to use to access the Tatlin API\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027export_ports\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"62503ddd_9153d517","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":14},"updated":"2022-06-08 14:49:30.000000000","message":"This should be a PortOpt.","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027Password\u0027,"},{"line_number":51,"context_line":"               secret\u003dTrue),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027api_port\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027443\u0027,"},{"line_number":54,"context_line":"               help\u003d\u0027Port to use to access the Tatlin API\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027export_ports\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3499ed08_1280a4ec","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":14},"in_reply_to":"62503ddd_9153d517","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":71,"context_line":"               default\u003d10,"},{"line_number":72,"context_line":"               help\u003d\u0027Number of retry on Tatlin API\u0027),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027auth_method\u0027,"},{"line_number":74,"context_line":"               default\u003d\u0027NONE\u0027,"},{"line_number":75,"context_line":"               help\u003d\u0027Authentication method for iscsi (NONE/CHAP)\u0027),"},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027lba_format\u0027,"},{"line_number":77,"context_line":"               default\u003d\u0027512e\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"aa2b0117_720fb174","line":74,"range":{"start_line":74,"start_character":15,"end_line":74,"end_character":30},"updated":"2022-06-08 14:49:30.000000000","message":"Why is the default NONE?  I\u0027m not sure NONE should be supported at all if CHAP is available.","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"               default\u003d10,"},{"line_number":72,"context_line":"               help\u003d\u0027Number of retry on Tatlin API\u0027),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027auth_method\u0027,"},{"line_number":74,"context_line":"               default\u003d\u0027NONE\u0027,"},{"line_number":75,"context_line":"               help\u003d\u0027Authentication method for iscsi (NONE/CHAP)\u0027),"},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027lba_format\u0027,"},{"line_number":77,"context_line":"               default\u003d\u0027512e\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"2f5a5af7_fb137178","line":74,"range":{"start_line":74,"start_character":15,"end_line":74,"end_character":30},"in_reply_to":"aa2b0117_720fb174","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":532,"context_line":"        self._stats[\"consistencygroup_support\"] \u003d False"},{"line_number":533,"context_line":"        self._stats[\"consistent_group_snapshot_enabled\"] \u003d False"},{"line_number":534,"context_line":"        self._stats[\"QoS_support\"] \u003d True"},{"line_number":535,"context_line":"        self._stats[\"multiattach\"] \u003d False"},{"line_number":536,"context_line":"        self._stats[\u0027total_capacity_gb\u0027] \u003d \\"},{"line_number":537,"context_line":"            (int(pool_stat[\u0027capacity\u0027]) - int(pool_stat[\u0027failed\u0027])) / units.Gi"},{"line_number":538,"context_line":"        self._stats[\u0027tatlin_pool\u0027] \u003d self.pool_name"}],"source_content_type":"text/x-python","patch_set":20,"id":"6d4beb10_771f1b3e","line":535,"range":{"start_line":535,"start_character":37,"end_line":535,"end_character":42},"updated":"2022-06-08 14:49:30.000000000","message":"Any particular reason not to support multiattach?","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        self._stats[\"consistencygroup_support\"] \u003d False"},{"line_number":533,"context_line":"        self._stats[\"consistent_group_snapshot_enabled\"] \u003d False"},{"line_number":534,"context_line":"        self._stats[\"QoS_support\"] \u003d True"},{"line_number":535,"context_line":"        self._stats[\"multiattach\"] \u003d False"},{"line_number":536,"context_line":"        self._stats[\u0027total_capacity_gb\u0027] \u003d \\"},{"line_number":537,"context_line":"            (int(pool_stat[\u0027capacity\u0027]) - int(pool_stat[\u0027failed\u0027])) / units.Gi"},{"line_number":538,"context_line":"        self._stats[\u0027tatlin_pool\u0027] \u003d self.pool_name"}],"source_content_type":"text/x-python","patch_set":20,"id":"a1acc39c_64d868d3","line":535,"range":{"start_line":535,"start_character":37,"end_line":535,"end_character":42},"in_reply_to":"6d4beb10_771f1b3e","updated":"2022-06-09 13:04:57.000000000","message":"yes, we still don\u0027t have proper code to check multi-attaching to the same host by Nova, only by Cinder (for operations like clone/snapshot of the same volume).","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"13ca1ab6ecf53e26ee085db2432b28bada1cdb77","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        self._stats[\"consistencygroup_support\"] \u003d False"},{"line_number":533,"context_line":"        self._stats[\"consistent_group_snapshot_enabled\"] \u003d False"},{"line_number":534,"context_line":"        self._stats[\"QoS_support\"] \u003d True"},{"line_number":535,"context_line":"        self._stats[\"multiattach\"] \u003d False"},{"line_number":536,"context_line":"        self._stats[\u0027total_capacity_gb\u0027] \u003d \\"},{"line_number":537,"context_line":"            (int(pool_stat[\u0027capacity\u0027]) - int(pool_stat[\u0027failed\u0027])) / units.Gi"},{"line_number":538,"context_line":"        self._stats[\u0027tatlin_pool\u0027] \u003d self.pool_name"}],"source_content_type":"text/x-python","patch_set":20,"id":"2e875b2d_20935019","line":535,"range":{"start_line":535,"start_character":37,"end_line":535,"end_character":42},"in_reply_to":"a1acc39c_64d868d3","updated":"2022-07-11 06:47:10.000000000","message":"tested with multiattach, added relevant code snippet in terminate, thanks!","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":728,"context_line":"    def remove_export(self, context, volume):"},{"line_number":729,"context_line":"        \"\"\"Entry for remove export"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"        Fro volumes we don\u0027t remove exports"},{"line_number":732,"context_line":"        \"\"\""},{"line_number":733,"context_line":"        pass"},{"line_number":734,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"01805f69_5937cba0","line":731,"range":{"start_line":731,"start_character":8,"end_line":731,"end_character":11},"updated":"2022-06-08 14:49:30.000000000","message":"For*","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":728,"context_line":"    def remove_export(self, context, volume):"},{"line_number":729,"context_line":"        \"\"\"Entry for remove export"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"        Fro volumes we don\u0027t remove exports"},{"line_number":732,"context_line":"        \"\"\""},{"line_number":733,"context_line":"        pass"},{"line_number":734,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"c92e3888_9f511506","line":731,"range":{"start_line":731,"start_character":8,"end_line":731,"end_character":11},"in_reply_to":"01805f69_5937cba0","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"}],"cinder/volume/drivers/yadro/tatlin_exception.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ac0c1dbcdf051c43c4809728448c7b063bfa5288","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#  License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#  under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class TatlinAPIException(Exception):"},{"line_number":17,"context_line":"    path \u003d \u0027\u0027"},{"line_number":18,"context_line":"    code \u003d 500"},{"line_number":19,"context_line":"    message \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"1a270585_10fe2aed","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":34},"updated":"2022-07-24 23:49:51.000000000","message":"-1: This should inherit from cinder.exception.VolumeBackendAPIException","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc6fc0b2207c851f887e41f9d3d3cbf48c302118","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#  License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#  under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class TatlinAPIException(Exception):"},{"line_number":17,"context_line":"    path \u003d \u0027\u0027"},{"line_number":18,"context_line":"    code \u003d 500"},{"line_number":19,"context_line":"    message \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"a573f84b_283ccbde","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":34},"in_reply_to":"1a270585_10fe2aed","updated":"2022-07-25 12:00:40.000000000","message":"Done","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5e97f2a9e33941b7c99c88bcc6859f3dca2ab85c","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#  License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#  under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder.exception import VolumeBackendAPIException"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TatlinAPIException(VolumeBackendAPIException):"}],"source_content_type":"text/x-python","patch_set":32,"id":"6b2f1b7f_fc0a6df7","line":16,"updated":"2022-07-28 08:48:14.000000000","message":"Again, I don\u0027t think a separate file was needed here, could\u0027ve defined the exception in the driver on a class level like this https://github.com/openstack/cinder/blob/master/cinder/volume/drivers/rbd.py#L145-L146","commit_id":"6934463943f383c5c8d513720caf23f1cef83818"}],"cinder/volume/drivers/yadro/tatlin_fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    VERSION \u003d \"1.0\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # DRIVER_VOLUME_TYPE \u003d \u0027FC\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"39b63bd5_da808ba0","line":40,"updated":"2022-07-11 18:32:57.000000000","message":"Need ``CI_WIKI_NAME`` defined as well that points to the correct driver page under https://wiki.openstack.org/wiki/ThirdPartySystems for your CI details.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    VERSION \u003d \"1.0\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # DRIVER_VOLUME_TYPE \u003d \u0027FC\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4605ef0_f0c7ad64","line":40,"in_reply_to":"39b63bd5_da808ba0","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":75,"context_line":"            \u0027data\u0027: self._create_volume_data(port_result, fc_ports)"},{"line_number":76,"context_line":"        }"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        LOG.debug(_(\"TATLIN FC: Connection info for Tatlin FC %s\") % result)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        return result"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1272fed8_c2884570","line":78,"range":{"start_line":78,"start_character":18,"end_line":78,"end_character":20},"updated":"2022-07-11 18:32:57.000000000","message":"Log messages should not be translated. Remove use of _().","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            \u0027data\u0027: self._create_volume_data(port_result, fc_ports)"},{"line_number":76,"context_line":"        }"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        LOG.debug(_(\"TATLIN FC: Connection info for Tatlin FC %s\") % result)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        return result"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"73f2026f_9114496c","line":78,"range":{"start_line":78,"start_character":18,"end_line":78,"end_character":20},"in_reply_to":"1272fed8_c2884570","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":57,"context_line":"        LOG.debug(\u0027Init connection for volume %s with connector %s\u0027,"},{"line_number":58,"context_line":"                  volume.name_id, connector)"},{"line_number":59,"context_line":"        # self._sys_uuid \u003d connector[\u0027system uuid\u0027]"},{"line_number":60,"context_line":"        # LOG.debug(\u0027System UUID %s\u0027 % connector[\u0027system uuid\u0027])"},{"line_number":61,"context_line":"        # LOG.debug(\u0027POLL RES COUNT: %s\u0027, self._stats[\u0027pool_resource_count\u0027])"},{"line_number":62,"context_line":"        self._wwpns \u003d connector[\u0027wwpns\u0027]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"ab980ea9_815edb24","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":77},"updated":"2022-05-25 10:48:40.000000000","message":"can this commented code be removed","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6871bcffc085d78e6faaffc7d71c1fba4ceb375d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":57,"context_line":"        LOG.debug(\u0027Init connection for volume %s with connector %s\u0027,"},{"line_number":58,"context_line":"                  volume.name_id, connector)"},{"line_number":59,"context_line":"        # self._sys_uuid \u003d connector[\u0027system uuid\u0027]"},{"line_number":60,"context_line":"        # LOG.debug(\u0027System UUID %s\u0027 % connector[\u0027system uuid\u0027])"},{"line_number":61,"context_line":"        # LOG.debug(\u0027POLL RES COUNT: %s\u0027, self._stats[\u0027pool_resource_count\u0027])"},{"line_number":62,"context_line":"        self._wwpns \u003d connector[\u0027wwpns\u0027]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"039f0f29_9d152c21","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":77},"in_reply_to":"ab980ea9_815edb24","updated":"2022-05-27 08:33:42.000000000","message":"Done","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        current_host \u003d self.find_current_host(connector[\u0027wwpns\u0027])"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # LOG.debug(\u0027Found current host %s\u0027 % current_host)"},{"line_number":76,"context_line":"        self.add_volume_to_host(volume, current_host)"},{"line_number":77,"context_line":"        #"},{"line_number":78,"context_line":"        self._mapped_lun \u003d self._find_mapped_lun("}],"source_content_type":"text/x-python","patch_set":15,"id":"4ec311e3_6f1f5567","line":75,"updated":"2022-05-25 10:48:40.000000000","message":"nit: If this line is useful, please un-comment","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6871bcffc085d78e6faaffc7d71c1fba4ceb375d","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        current_host \u003d self.find_current_host(connector[\u0027wwpns\u0027])"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # LOG.debug(\u0027Found current host %s\u0027 % current_host)"},{"line_number":76,"context_line":"        self.add_volume_to_host(volume, current_host)"},{"line_number":77,"context_line":"        #"},{"line_number":78,"context_line":"        self._mapped_lun \u003d self._find_mapped_lun("}],"source_content_type":"text/x-python","patch_set":15,"id":"e5c23ae1_317ebc41","line":75,"in_reply_to":"4ec311e3_6f1f5567","updated":"2022-05-27 08:33:42.000000000","message":"Done","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":138,"context_line":"            LOG.error(\u0027Unable to get host information %s\u0027, exp.message)"},{"line_number":139,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":140,"context_line":"                message\u003d_(\u0027Tatlin API exception %s while getting host list\u0027 %"},{"line_number":141,"context_line":"                          exp.message))"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def get_wwpn(self, connector):"},{"line_number":144,"context_line":"        LOG.debug(\u0027get_wwpn connector %s\u0027, connector)"}],"source_content_type":"text/x-python","patch_set":20,"id":"a0391aba_44ffdf89","line":141,"range":{"start_line":141,"start_character":26,"end_line":141,"end_character":37},"updated":"2022-06-08 14:49:30.000000000","message":"Should have exp.message outside of the _() call.","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            LOG.error(\u0027Unable to get host information %s\u0027, exp.message)"},{"line_number":139,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":140,"context_line":"                message\u003d_(\u0027Tatlin API exception %s while getting host list\u0027 %"},{"line_number":141,"context_line":"                          exp.message))"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def get_wwpn(self, connector):"},{"line_number":144,"context_line":"        LOG.debug(\u0027get_wwpn connector %s\u0027, connector)"}],"source_content_type":"text/x-python","patch_set":20,"id":"b20799fb_22181514","line":141,"range":{"start_line":141,"start_character":26,"end_line":141,"end_character":37},"in_reply_to":"a0391aba_44ffdf89","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"521f6c383da2cfdf8a29161e6cff3bbd652846ca","unresolved":true,"context_lines":[{"line_number":30,"context_line":"@interface.volumedriver"},{"line_number":31,"context_line":"class TatlinFCVolumeDriver(TatlinCommonVolumeDriver,"},{"line_number":32,"context_line":"                           driver.FibreChannelDriver):"},{"line_number":33,"context_line":"    \"\"\"ACCESS Tatlin FC Driver."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Executes commands relating to FC."},{"line_number":36,"context_line":"    Supports creation of volumes."}],"source_content_type":"text/x-python","patch_set":22,"id":"5c68bc61_12195936","line":33,"updated":"2022-06-17 12:20:16.000000000","message":"This driver doesn\u0027t implement the terminate_connection method which is required to remove the zone mapping as example here:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/hpe/hpe_3par_fc.py#L366-L374","commit_id":"47073baab62144bd69cc207ec9f9bf74bd512fbc"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a8cf4f3aabb4d0b7a5f68d8027d90fdbb1905c87","unresolved":false,"context_lines":[{"line_number":30,"context_line":"@interface.volumedriver"},{"line_number":31,"context_line":"class TatlinFCVolumeDriver(TatlinCommonVolumeDriver,"},{"line_number":32,"context_line":"                           driver.FibreChannelDriver):"},{"line_number":33,"context_line":"    \"\"\"ACCESS Tatlin FC Driver."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Executes commands relating to FC."},{"line_number":36,"context_line":"    Supports creation of volumes."}],"source_content_type":"text/x-python","patch_set":22,"id":"729323fa_d2faf852","line":33,"in_reply_to":"18675b56_b8230b38","updated":"2022-06-17 14:24:02.000000000","message":"Done","commit_id":"47073baab62144bd69cc207ec9f9bf74bd512fbc"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"bfd4a043a281fd50e6121e080c950161a8ed0b1c","unresolved":true,"context_lines":[{"line_number":30,"context_line":"@interface.volumedriver"},{"line_number":31,"context_line":"class TatlinFCVolumeDriver(TatlinCommonVolumeDriver,"},{"line_number":32,"context_line":"                           driver.FibreChannelDriver):"},{"line_number":33,"context_line":"    \"\"\"ACCESS Tatlin FC Driver."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Executes commands relating to FC."},{"line_number":36,"context_line":"    Supports creation of volumes."}],"source_content_type":"text/x-python","patch_set":22,"id":"18675b56_b8230b38","line":33,"in_reply_to":"5c68bc61_12195936","updated":"2022-06-17 13:10:22.000000000","message":"Thank you very much for the comments and the suggestions! It reminds me we don\u0027t have fully functioning FC driver for the moment and no CI for it. I will remove FC code in current version of the patchset","commit_id":"47073baab62144bd69cc207ec9f9bf74bd512fbc"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"521f6c383da2cfdf8a29161e6cff3bbd652846ca","unresolved":true,"context_lines":[{"line_number":87,"context_line":"            LOG.debug(\u0027TATLIN FC: Connection info for Tatlin FC %s\u0027, result)"},{"line_number":88,"context_line":"            return result"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return _initialize_connection()"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _get_ports_portals(self):"},{"line_number":93,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"16704cb4_6ea84c98","line":90,"updated":"2022-06-17 12:20:16.000000000","message":"This driver isn\u0027t using the fiber channel zone manager utilities to add a new initiator target map to ensure that the attachment can be successful.\n\nAn example here:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/hpe/hpe_3par_fc.py#L156-L164\n\nThis driver should also use the fiber channel zone manager lookup service to determine if the mapping already exists. an example:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/hpe/hpe_3par_fc.py#L435","commit_id":"47073baab62144bd69cc207ec9f9bf74bd512fbc"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a8cf4f3aabb4d0b7a5f68d8027d90fdbb1905c87","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            LOG.debug(\u0027TATLIN FC: Connection info for Tatlin FC %s\u0027, result)"},{"line_number":88,"context_line":"            return result"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return _initialize_connection()"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _get_ports_portals(self):"},{"line_number":93,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"abd7d758_8ee9e9ae","line":90,"in_reply_to":"16704cb4_6ea84c98","updated":"2022-06-17 14:24:02.000000000","message":"Done","commit_id":"47073baab62144bd69cc207ec9f9bf74bd512fbc"}],"cinder/volume/drivers/yadro/tatlin_iscsi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from cinder import interface"},{"line_number":19,"context_line":"from cinder.i18n import _"},{"line_number":20,"context_line":"from cinder.volume import driver"},{"line_number":21,"context_line":"from .tatlin_common import TatlinCommonVolumeDriver"},{"line_number":22,"context_line":"from .tatlin_exception import TatlinAPIException"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"623aefbf_aeece149","line":21,"range":{"start_line":21,"start_character":5,"end_line":21,"end_character":19},"updated":"2022-07-11 18:32:57.000000000","message":"Use full path for the import (``cinder.volume.drivers.yadro.tatlin_common``).","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from cinder import interface"},{"line_number":19,"context_line":"from cinder.i18n import _"},{"line_number":20,"context_line":"from cinder.volume import driver"},{"line_number":21,"context_line":"from .tatlin_common import TatlinCommonVolumeDriver"},{"line_number":22,"context_line":"from .tatlin_exception import TatlinAPIException"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bd7376ae_5961663f","line":21,"range":{"start_line":21,"start_character":5,"end_line":21,"end_character":19},"in_reply_to":"623aefbf_aeece149","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"eaa9b4124c637096a64da5b9caaeecec60a4c865","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        super(TatlinISCSIVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":50,"context_line":"        if self.configuration:"},{"line_number":51,"context_line":"            self.backend_name \u003d (self.configuration.safe_get("},{"line_number":52,"context_line":"                \u0027volume_backend_name\u0027) or \u0027tatlin\u0027)"},{"line_number":53,"context_line":"        self.DRIVER_VOLUME_TYPE \u003d \u0027iSCSI\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @trace_time"}],"source_content_type":"text/x-python","patch_set":15,"id":"96ee6fed_484a6e02","line":52,"range":{"start_line":52,"start_character":43,"end_line":52,"end_character":49},"updated":"2022-05-25 10:48:40.000000000","message":"In tatlin_fc.py, \"TatlinFC\" is used as default backend name.\nOn the same lines, can this be \"TatlinISCSI\"?","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"6dfb8d424c51a633d5d7f06b22f5fb9ebd16d1a1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(TatlinISCSIVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":50,"context_line":"        if self.configuration:"},{"line_number":51,"context_line":"            self.backend_name \u003d (self.configuration.safe_get("},{"line_number":52,"context_line":"                \u0027volume_backend_name\u0027) or \u0027tatlin\u0027)"},{"line_number":53,"context_line":"        self.DRIVER_VOLUME_TYPE \u003d \u0027iSCSI\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @trace_time"}],"source_content_type":"text/x-python","patch_set":15,"id":"af3d4fb1_47e237ce","line":52,"range":{"start_line":52,"start_character":43,"end_line":52,"end_character":49},"in_reply_to":"96ee6fed_484a6e02","updated":"2022-05-26 15:50:55.000000000","message":"yes, definitely, thanks!","commit_id":"04289ee3a7cab0bbeb1af748e5086ef2253661d2"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","unresolved":true,"context_lines":[{"line_number":99,"context_line":"                    continue"},{"line_number":100,"context_line":"                if iface not in ports:"},{"line_number":101,"context_line":"                    ports[iface] \u003d []"},{"line_number":102,"context_line":"                ports[iface].append(ipaddr + \u0027:3260\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        return ports"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"ef340fda_56553224","line":102,"range":{"start_line":102,"start_character":36,"end_line":102,"end_character":42},"updated":"2022-07-13 12:04:22.000000000","message":"does it take into account ipv6 addresses?","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                    continue"},{"line_number":100,"context_line":"                if iface not in ports:"},{"line_number":101,"context_line":"                    ports[iface] \u003d []"},{"line_number":102,"context_line":"                ports[iface].append(ipaddr + \u0027:3260\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        return ports"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"446dd021_fd65acf8","line":102,"range":{"start_line":102,"start_character":36,"end_line":102,"end_character":42},"in_reply_to":"ef340fda_56553224","updated":"2022-07-14 08:55:41.000000000","message":"thanks Rajat,\nwe don\u0027t support IPv6 in mgmt/data path, should we still escape ipv6 here?","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","unresolved":true,"context_lines":[{"line_number":126,"context_line":"        target_portals \u003d []"},{"line_number":127,"context_line":"        LOG.debug(\u0027PortInf: %s\u0027, port_inf)"},{"line_number":128,"context_line":"        for port in port_inf:"},{"line_number":129,"context_line":"            LOG.debug(\u0027iscsi port %s\u0027, port)"},{"line_number":130,"context_line":"            if port[\u0027port\u0027] not in eth_ports.keys():"},{"line_number":131,"context_line":"                continue"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"08b08d72_0ba70883","line":129,"range":{"start_line":129,"start_character":12,"end_line":129,"end_character":44},"updated":"2022-07-13 12:04:22.000000000","message":"This is going to print a new debug message for each port and is likely to flood the debug logs with port messages. It would be better to log all ports in a single debug message","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        target_portals \u003d []"},{"line_number":127,"context_line":"        LOG.debug(\u0027PortInf: %s\u0027, port_inf)"},{"line_number":128,"context_line":"        for port in port_inf:"},{"line_number":129,"context_line":"            LOG.debug(\u0027iscsi port %s\u0027, port)"},{"line_number":130,"context_line":"            if port[\u0027port\u0027] not in eth_ports.keys():"},{"line_number":131,"context_line":"                continue"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"ea308ce6_aba2d339","line":129,"range":{"start_line":129,"start_character":12,"end_line":129,"end_character":44},"in_reply_to":"08b08d72_0ba70883","updated":"2022-07-14 08:55:41.000000000","message":"very good finding, it really fills up logs quickly, thanks!","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","unresolved":true,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"            luns \u003d [lun_id for _ in ips]"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            target_luns \u003d target_luns + luns"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"            if \u0027running\u0027 in port:"},{"line_number":143,"context_line":"                for r in port[\u0027running\u0027]:"}],"source_content_type":"text/x-python","patch_set":23,"id":"d0553e21_42228e47","line":140,"range":{"start_line":140,"start_character":24,"end_line":140,"end_character":37},"updated":"2022-07-13 12:04:22.000000000","message":"nit: addition assignment operators are better for these cases\ntarget_luns +\u003d luns","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"            luns \u003d [lun_id for _ in ips]"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            target_luns \u003d target_luns + luns"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"            if \u0027running\u0027 in port:"},{"line_number":143,"context_line":"                for r in port[\u0027running\u0027]:"}],"source_content_type":"text/x-python","patch_set":23,"id":"c77efe12_fea566bf","line":140,"range":{"start_line":140,"start_character":24,"end_line":140,"end_character":37},"in_reply_to":"d0553e21_42228e47","updated":"2022-07-14 08:55:41.000000000","message":"Done","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","unresolved":true,"context_lines":[{"line_number":140,"context_line":"            target_luns \u003d target_luns + luns"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"            if \u0027running\u0027 in port:"},{"line_number":143,"context_line":"                for r in port[\u0027running\u0027]:"},{"line_number":144,"context_line":"                    for w in port[\u0027wwn\u0027]:"},{"line_number":145,"context_line":"                        target_iqns.append(w)"},{"line_number":146,"context_line":"            else:"},{"line_number":147,"context_line":"                for w in port[\u0027wwn\u0027]:"},{"line_number":148,"context_line":"                    target_iqns.append(w)"}],"source_content_type":"text/x-python","patch_set":23,"id":"f2a8b186_46b0db6a","line":145,"range":{"start_line":143,"start_character":16,"end_line":145,"end_character":45},"updated":"2022-07-13 12:04:22.000000000","message":"r is not being used in the inner loop, if the purpose is to append a wwn * port[\u0027running\u0027] times then we can do it like this:\n\ntarget_iqns.extend([w for w in port[\u0027wwn\u0027]] * len(port[\u0027running\u0027])","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            target_luns \u003d target_luns + luns"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"            if \u0027running\u0027 in port:"},{"line_number":143,"context_line":"                for r in port[\u0027running\u0027]:"},{"line_number":144,"context_line":"                    for w in port[\u0027wwn\u0027]:"},{"line_number":145,"context_line":"                        target_iqns.append(w)"},{"line_number":146,"context_line":"            else:"},{"line_number":147,"context_line":"                for w in port[\u0027wwn\u0027]:"},{"line_number":148,"context_line":"                    target_iqns.append(w)"}],"source_content_type":"text/x-python","patch_set":23,"id":"c4f72d80_7ca8cc32","line":145,"range":{"start_line":143,"start_character":16,"end_line":145,"end_character":45},"in_reply_to":"f2a8b186_46b0db6a","updated":"2022-07-14 08:55:41.000000000","message":"thanks, shortened both cases","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","unresolved":true,"context_lines":[{"line_number":175,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def get_wwpn(self, connector):"},{"line_number":178,"context_line":"        if \"initiator\" in connector:"},{"line_number":179,"context_line":"            return connector[\u0027initiator\u0027]"},{"line_number":180,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":23,"id":"34556853_d11e98a0","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":19},"updated":"2022-07-13 12:04:22.000000000","message":"if a key isn\u0027t found in a dict, it automatically returns None\nthis can be written as,\n\n    return connector.get(\u0027initiator\u0027)","commit_id":"910733638c523367c8f5c017b41077b712f582a4"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        raise exception.VolumeBackendAPIException(message\u003dmess)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def get_wwpn(self, connector):"},{"line_number":178,"context_line":"        if \"initiator\" in connector:"},{"line_number":179,"context_line":"            return connector[\u0027initiator\u0027]"},{"line_number":180,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":23,"id":"37644ade_f8513e11","line":180,"range":{"start_line":178,"start_character":8,"end_line":180,"end_character":19},"in_reply_to":"34556853_d11e98a0","updated":"2022-07-14 08:55:41.000000000","message":"Done","commit_id":"910733638c523367c8f5c017b41077b712f582a4"}],"cinder/volume/drivers/yadro/tatlin_utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def trace_time(func):"},{"line_number":28,"context_line":"    @functools.wraps(func)"},{"line_number":29,"context_line":"    def decorated(*args, **kwargs):"},{"line_number":30,"context_line":"        startTime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":20,"id":"4a5ba336_4727e303","line":27,"updated":"2022-06-08 14:49:30.000000000","message":"Maybe just use Cinder\u0027s volume_utils.trace_time(), if it provides the right info?","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def trace_time(func):"},{"line_number":28,"context_line":"    @functools.wraps(func)"},{"line_number":29,"context_line":"    def decorated(*args, **kwargs):"},{"line_number":30,"context_line":"        startTime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":20,"id":"911c7051_5d259735","line":27,"in_reply_to":"4a5ba336_4727e303","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"040536ddf5b85eee1fb07fb44eb6a7b29649b435","unresolved":true,"context_lines":[{"line_number":43,"context_line":"class TatlinVolumeConnections:"},{"line_number":44,"context_line":"    \"\"\"Auxiliary class to keep current host volume connections counted\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    counters \u003d \u0027/tmp/tatlin-volume-connections/\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self):"},{"line_number":49,"context_line":"        LOG.debug(\u0027Initialize counters for volume connections\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"4f52f38d_f1a63edb","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":48},"updated":"2022-06-08 14:49:30.000000000","message":"This should use CONF.state_path/tatlin-volume-connections instead of /tmp/.","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"fc897fba43c99f9f1e58eebde5194c49fca9b91c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"class TatlinVolumeConnections:"},{"line_number":44,"context_line":"    \"\"\"Auxiliary class to keep current host volume connections counted\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    counters \u003d \u0027/tmp/tatlin-volume-connections/\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self):"},{"line_number":49,"context_line":"        LOG.debug(\u0027Initialize counters for volume connections\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"14f8b16c_6b2c0e70","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":48},"in_reply_to":"4f52f38d_f1a63edb","updated":"2022-06-09 13:04:57.000000000","message":"Done","commit_id":"fd629781d9c4e29fb0c16f753a91e2f231f0156d"}],"doc/source/configuration/block-storage/drivers/yadro-tatlin-volume-driver.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":50,"context_line":"   Setup data ETH ports you want to export volumes to."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"#. Hosts"},{"line_number":53,"context_line":"   "},{"line_number":54,"context_line":"   Create storage hosts and set ports of the initiators. One host must correspond to one initiator."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"#. Host Group"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7cac6cd6_931a2225","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":3},"updated":"2022-07-11 18:32:57.000000000","message":"Remove trailing spaces througout.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"   Setup data ETH ports you want to export volumes to."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"#. Hosts"},{"line_number":53,"context_line":"   "},{"line_number":54,"context_line":"   Create storage hosts and set ports of the initiators. One host must correspond to one initiator."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"#. Host Group"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3937fc05_2701a9a8","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":3},"in_reply_to":"7cac6cd6_931a2225","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bc9389fd551842e456d5c9022e12cce23a70c6b","unresolved":true,"context_lines":[{"line_number":110,"context_line":"``volume_driver``"},{"line_number":111,"context_line":" Volume driver name."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"``ip``"},{"line_number":114,"context_line":" TATLIN.UNIFIED management IP address or FQDN."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``login``"},{"line_number":117,"context_line":" TATLIN.UNIFIED user name."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"``password``"},{"line_number":120,"context_line":" TATLIN.UNIFIED user password."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``tat_api_retry_count``"},{"line_number":123,"context_line":" Number of repeated requests to TATLIN.UNIFIED."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f858c7b_4630650c","line":120,"range":{"start_line":113,"start_character":0,"end_line":120,"end_character":30},"updated":"2022-07-11 18:32:57.000000000","message":"Will need updating after moving to common driver configuration options.","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"16881f5076d0aced4701c06945ddee5fd8383f1e","unresolved":false,"context_lines":[{"line_number":110,"context_line":"``volume_driver``"},{"line_number":111,"context_line":" Volume driver name."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"``ip``"},{"line_number":114,"context_line":" TATLIN.UNIFIED management IP address or FQDN."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``login``"},{"line_number":117,"context_line":" TATLIN.UNIFIED user name."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"``password``"},{"line_number":120,"context_line":" TATLIN.UNIFIED user password."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``tat_api_retry_count``"},{"line_number":123,"context_line":" Number of repeated requests to TATLIN.UNIFIED."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3c63fe42_72a3d1d9","line":120,"range":{"start_line":113,"start_character":0,"end_line":120,"end_character":30},"in_reply_to":"5f858c7b_4630650c","updated":"2022-07-12 06:40:12.000000000","message":"Done","commit_id":"ec58573348ffcc837d41b1e16853868615843ed5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"66c43c7366e764c66fe8783c00cbe40db49d9c3a","unresolved":true,"context_lines":[{"line_number":66,"context_line":"Set up YADRO Cinder Driver"},{"line_number":67,"context_line":"------------------------------------"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Add the following configuration to `/etc/cinder/cinder.conf`:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"If you use Fibre Channel:"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"4bc78461_3bb6ee46","line":69,"range":{"start_line":69,"start_character":35,"end_line":69,"end_character":60},"updated":"2022-05-23 11:02:19.000000000","message":"nit: double backticks may be better. They give monospace font.\nsingle backticks give italics.","commit_id":"b4e12001b0168846050353c803e27b16e5f78e96"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"ad8260b3f46572405e055ce00261fae553cd2cbb","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Set up YADRO Cinder Driver"},{"line_number":67,"context_line":"------------------------------------"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Add the following configuration to `/etc/cinder/cinder.conf`:"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"If you use Fibre Channel:"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"b3db72cb_a0915259","line":69,"range":{"start_line":69,"start_character":35,"end_line":69,"end_character":60},"in_reply_to":"4bc78461_3bb6ee46","updated":"2022-05-25 10:07:31.000000000","message":"Done","commit_id":"b4e12001b0168846050353c803e27b16e5f78e96"}],"doc/source/reference/support-matrix.ini":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ac0c1dbcdf051c43c4809728448c7b063bfa5288","unresolved":true,"context_lines":[{"line_number":968,"context_line":"driver.vmware\u003dmissing"},{"line_number":969,"context_line":"driver.win_iscsi\u003dmissing"},{"line_number":970,"context_line":"driver.win_smb\u003dmissing"},{"line_number":971,"context_line":"driver.yadro\u003dcomplete"},{"line_number":972,"context_line":"driver.zadara\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":27,"id":"7b51d3e2_607ba818","line":971,"updated":"2022-07-24 23:49:51.000000000","message":"-1: You don\u0027t set SUPPORTS_ACTIVE_ACTIVE in your driver, which makes me wonder how carefully you\u0027ve tested it in an A/A configuration with cinder.  See\nhttps://opendev.org/openstack/cinder/src/commit/f8fa57a8b974f30cdda8367ebd470279871ea136/cinder/volume/driver.py#L387-L392","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"d4d42fafc8cdbebc4b4685fb9d73c003b4c46d40","unresolved":false,"context_lines":[{"line_number":968,"context_line":"driver.vmware\u003dmissing"},{"line_number":969,"context_line":"driver.win_iscsi\u003dmissing"},{"line_number":970,"context_line":"driver.win_smb\u003dmissing"},{"line_number":971,"context_line":"driver.yadro\u003dcomplete"},{"line_number":972,"context_line":"driver.zadara\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":27,"id":"f5f038e7_2f891f8c","line":971,"in_reply_to":"7b51d3e2_607ba818","updated":"2022-07-25 12:00:05.000000000","message":"added the variable, thanks! We always run our tests on active-active cinder setup internally, all of the hosts can serve storage requests independently and concurrently.","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"991d167cdc013a8670cda2476a9b87d30c049dad","unresolved":false,"context_lines":[{"line_number":968,"context_line":"driver.vmware\u003dmissing"},{"line_number":969,"context_line":"driver.win_iscsi\u003dmissing"},{"line_number":970,"context_line":"driver.win_smb\u003dmissing"},{"line_number":971,"context_line":"driver.yadro\u003dcomplete"},{"line_number":972,"context_line":"driver.zadara\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":27,"id":"3c556f29_a3a0e796","line":971,"in_reply_to":"f5f038e7_2f891f8c","updated":"2022-07-26 20:02:08.000000000","message":"Thanks for the info, good to know how you are testing.","commit_id":"7565b039717dd7d3c5263764c41eb5b36ccfe917"}],"releasenotes/notes/bp-yadro-tatlin-unified-driver-122218f077d70312.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c756b82eafa1c5ada187476376be0dd2ed6b405","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":"    Yadro Tatlin Unified: Added initial version of the driver."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"68e2658a_e599a3b6","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":62},"updated":"2022-07-13 12:04:22.000000000","message":"would be good to mention that we\u0027re adding the \u0027iSCSI\u0027 driver","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"},{"author":{"_account_id":13671,"name":"Vladislav Belogrudov","email":"v.belogrudov@yadro.com","username":"vb"},"change_message_id":"a31bce7f4a236c570fe309cdbedaa8c0692ca3dd","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":"    Yadro Tatlin Unified: Added initial version of the driver."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"c8864167_e372b600","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":62},"in_reply_to":"68e2658a_e599a3b6","updated":"2022-07-14 08:55:41.000000000","message":"Done","commit_id":"0d2746015c2b2ccea0ea6cec2baf9afe1b9fd833"}]}
